【问题标题】:unable to delete file from amazon s3 using ruby script无法使用 ruby​​ 脚本从 amazon s3 中删除文件
【发布时间】:2015-02-09 21:14:25
【问题描述】:

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

【问题讨论】:

    标签: ruby amazon-web-services amazon-s3 rubygems


    【解决方案1】:

    documentation 告诉它应该是这样的:

    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 的实例

    【讨论】:

    • 虽然你的回答有问题,但它解决了我的问题。你在此处指定的链接帮助我意识到我的错误。
    • @SachinSingh:你能解释一下我代码中的错误吗?当我纠正这个问题时,它将对读者有所帮助。
    • 我已将s3.bucket['some-bucket'] 更正为s3.buckets['some-bucket'],表示没有名为bucket 的方法,它是buckets。
    • 请注意,s3.buckets['name'].object('key').delete 接口来自 aws-sdk v1。 V2 使用 s3.bucket('name').object('key').delete.
    【解决方案2】:

    应该是:

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

    【讨论】:

    • 您的解决方案将删除存储桶中的所有文件。
    • 但是您不是提供特定文件作为密钥吗?替代方法是提供存储桶(具有文件)名称作为键(您在上面的评论中指出),然后:file_to_del = objs.detect { |obj| obj.name == "YOUR FILE NAME"}; file_to_del.delete
    • 我已经从 s3 中删除了对象,但很抱歉实际上不是这个问题。
    【解决方案3】:

    使用 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

    【讨论】:

      【解决方案4】:

      如果您使用 API 版本 3 (aws-sdk-s3 (1.81.1)),您应该执行以下操作:

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

      【讨论】:

        猜你喜欢
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 2018-05-17
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-05
        相关资源
        最近更新 更多