Amazon S3 在 Ruby SDK 中通过 URL 获取 S3 对象



我想重命名(或移动)我的 S3 对象,我的 URL 像 https://s3.eu-west-2.amazonaws.com/sample-bucket/temp/sample-picture.jpg

Ruby SDK中是否有任何标准方法可以仅通过URL获取Aws::S3::Object,或者例如我必须通过正则表达式解析它?

在Java SDK中,有AmazonS3URI

.java

我还没有找到任何方法可以只获取 s3 url 并获取对象。我最终自己解析了它。

不,适用于 Ruby 的 AWS 开发工具包 v2-3 不支持此功能。

但是,这里有一个快速的代码片段可以解决问题(它松散地基于您引用的 Java 代码):

require 'aws-sdk-s3'
# @param uri [String] your fully-qualified URL
# @return head_object [Aws::S3::Types::HeadObjectOutput] metadata on object
def from_uri(uri)
# Parse the S3 URL into its bucket and object key components
uri = URI.parse(s3_url)
bucket_name = uri.host.split('.')[0]
object_key = uri.path[1..-1] # Remove leading slash
client = Aws::S3::Client.new
client.head_object({
bucket: bucket_name, 
key: object_key, 
})
data = from_uri("https://s3.eu-west-2.amazonaws.com/sample-bucket/temp/sample-picture.jpg")
puts data.to_h

您需要将此方法转换为类,并将客户端实例化提取到类 init 中,但这回答了您的问题。

另请注意:HEAD 操作从对象检索元数据,而不返回对象本身。

最新更新