简体   繁体   English

无法使用 ruby​​ 脚本从亚马逊 s3 中删除文件

[英]unable to delete file from amazon s3 using ruby script

I am using aws-sdk-ruby for deleting a file saved in a bucket in my amazon s3 account, but i can't figure out why i am able to delete the desired file from S3 bucket using the following code.我正在使用aws-sdk-ruby删除保存在我的 amazon s3 帐户中存储桶中的文件,但我无法弄清楚为什么我能够使用以下代码从 S3 存储桶中删除所需的文件。

this is my code这是我的代码

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

The documentation tells that it should look like this: 文档告诉它应该是这样的:

s3 = Aws::S3.new
bucket = s3.buckets['some-bucket']
object = bucket.objects['38ac8226-fa72-4aee-8c3d-a34a1db77b91/some_image.jpg']
object.delete

Note笔记

  • the square brackets,方括号,
  • that the object's key doesn't include the domain and对象的键不包括域和
  • instead of creating an instance of Aws::S3::Resource create an instance of AWS::S3不是创建Aws::S3::Resource的实例而是创建AWS::S3的实例

it should be:它应该是:

objs = bucket.objects('https://s3.amazonaws.com/some-bucket/38ac8226-fa72-4aee-8c3d-a34a1db77b91/some_image.jpg')
objs.each {|obj| obj.delete}

With the aws-sdk v2: I had to do this: (see Doc )使用 aws-sdk v2:我必须这样做:(参见文档

$s3.bucket("my-bucket").objects(prefix: 'my_folder/').batch_delete!

( delete is deprecated in favor of batch_delete ) delete已弃用,而支持batch_delete

Useful post: https://ruby.awsblog.com/post/Tx1H87IVGVUMIB5/Using-Resources有用的帖子: https : //ruby.awsblog.com/post/Tx1H87IVGVUMIB5/Using-Resources

If you use API version 3 (aws-sdk-s3 (1.81.1)) you should do something like below:如果您使用 API 版本 3 (aws-sdk-s3 (1.81.1)),您应该执行以下操作:

s3 = Aws::S3::Client.new
s3.delete_object(bucket: 'bucket_name', key: 'bucket_folder/file.txt')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM