我想重命名(或移动)我的 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 操作从对象检索元数据,而不返回对象本身。