Dud*_*udo 2 ruby ruby-on-rails amazon-s3 amazon-web-services aws-sdk
因此,首先,我将向您介绍我要完成的工作。我在S3上托管了一堆照片。它们是汽车照片,由VIN组织。在创建时,我并不总是拥有VIN,所以我制作了一个假冒的VIN。稍后,当使用正确的VIN更新时,我想更新S3上的文件夹名称。无法重命名S3中的内容,因此我必须使用新名称进行复制,然后删除原始名称。!现在我要如何失败...
creds = ::Aws::Credentials.new(Settings.aws.access_key_id, Settings.aws.secret_access_key)
s3 = ::Aws::S3::Client.new(region: 'us-west-1', credentials: creds)
bucket = Settings.aws.bucket
s3.copy_object(bucket: bucket, copy_source: "#{bucket}/foo", key: 'bar')
s3.delete_object(bucket: bucket, key: "#{bucket}/foo")
Run Code Online (Sandbox Code Playgroud)
这Aws::S3::Errors::NoSuchKey: The specified key does not exist.在调用copy_object时不起作用。copy_source是一个文件夹,因此它不能像常规对象一样工作。
因此,我环顾四周,发现必须致电:
s3 = ::Aws::S3::Resource.new(region: 'us-west-1', credentials: creds)
bucket = bucket = s3.bucket(Settings.aws.bucket)
bucket.objects.with_prefix('foo/').each do |object|
object.copy_from(copy_source: "#{bucket}/foo")
end
Run Code Online (Sandbox Code Playgroud)
这不起作用...请注意,我现在正在打电话::Resource,因为我不知道如何从中获取存储桶::Client。有了上面,我就感到NoMethodError: undefined method 'with_prefix' for #<Aws::Resources::Collection:0x007fad587255a8>困惑,因为我阅读的所有内容似乎都指向该解决方案。
我正在使用AWS开发工具包的v2。不确定我是否正在寻找v1解决方案?
copy_from老实说,我不知道如何工作……我真正想要的是copy_to文档中似乎没有的内容。
小智 5
该“对象”的AWS-SDK V2“桶”类的方法返回一个集合的ObjectSummary(参见:http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Bucket.html#objects-instance_method)。
要查询带有前缀的对象列表,您应该使用:
bucket.objects({prefix: 'some_prefix'})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |