我想要重命名(或移动)我的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,例如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 并获取对象的方法。最终我只能自己解析它。
不,AWS SDK for Ruby 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