我正在使用aws-sdk-ruby删除我的amazon s3帐户中保存在存储桶中的文件,但我无法弄清楚为什么我能够使用以下代码从S3存储桶中删除所需文件。
这是我的代码
require 'aws-sdk-v1'
require 'aws-sdk'
ENV['AWS_ACCESS_KEY_ID'] = "XXXXXXX"
ENV["AWS_SECRET_ACCESS_KEY"] = '/ZZZZZZZZ'
ENV['AWS_REGION'] = 'us-east-1'
s3 = Aws::S3::Resource.new
bucket = s3.bucket('some-bucket')
obj = bucket.object('https://s3.amazonaws.com/some-bucket/38ac8226-fa72-4aee-8c3d-a34a1db77b91/some_image.jpg')
obj.delete
答案 0 :(得分:6)
查看documentation IMO,它看起来应该是这样的:
bucket = s3.buckets['some-bucket']
obj = bucket.objects['38ac8226-fa72-4aee-8c3d-a34a1db77b91/some_image.jpg']
obj.delete
注意方括号并且对象的键不包含域,而不是创建Aws::S3::Resource
的实例创建AWS::S3
的实例
答案 1 :(得分:0)
它应该是:
objs = bucket.objects('https://s3.amazonaws.com/some-bucket/38ac8226-fa72-4aee-8c3d-a34a1db77b91/some_image.jpg')
objs.each {|obj| obj.delete}
答案 2 :(得分:0)
使用aws-sdk v2:我必须这样做:(见Doc)
$s3.bucket("my-bucket").objects(prefix: 'my_folder/').batch_delete!
(delete
已弃用,取而代之的是batch_delete
)
有用的帖子:https://ruby.awsblog.com/post/Tx1H87IVGVUMIB5/Using-Resources