簡體   English   中英

無法使用 ruby​​ 腳本從亞馬遜 s3 中刪除文件

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

我正在使用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

文檔告訴它應該是這樣的:

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

筆記

  • 方括號,
  • 對象的鍵不包括域和
  • 不是創建Aws::S3::Resource的實例而是創建AWS::S3的實例

它應該是:

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

使用 aws-sdk v2:我必須這樣做:(參見文檔

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

delete已棄用,而支持batch_delete

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

如果您使用 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