Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用ruby脚本从amazon s3中删除文件_Ruby_Amazon Web Services_Amazon S3_Rubygems - Fatal编程技术网

无法使用ruby脚本从amazon s3中删除文件

无法使用ruby脚本从amazon s3中删除文件,ruby,amazon-web-services,amazon-s3,rubygems,Ruby,Amazon Web Services,Amazon S3,Rubygems,我正在使用删除保存在AmazonS3帐户中的一个bucket中的文件,但是我不明白为什么我能够使用下面的代码从s3 bucket中删除所需的文件 这是我的密码 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::Re

我正在使用删除保存在AmazonS3帐户中的一个bucket中的文件,但是我不明白为什么我能够使用下面的代码从s3 bucket中删除所需的文件

这是我的密码

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
应该是:

objs = bucket.objects('https://s3.amazonaws.com/some-bucket/38ac8226-fa72-4aee-8c3d-a34a1db77b91/some_image.jpg')
objs.each {|obj| 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的实例

    • 使用aws sdk v2:我必须这样做:(请参阅)

      delete
      被弃用,取而代之的是
      batch\u delete


      有用的帖子:

      您的解决方案将从bucket中删除所有文件。但您不是提供了一个特定的文件作为密钥吗?另一种方法是提供bucket(包含文件)名称作为键(您在上面的评论中指出了这一点),然后:
      file_to_del=objs.detect{{obj | obj.name==“您的文件名”};file_to_del.delete
      我已经从s3中删除了对象,但对于这个问题,我并不感到抱歉。虽然你的答案有一个bug,但它解决了我的问题。你在这里指定的链接帮助我认识到了我的错误。@SachinSingh:你能解释一下我代码中的bug吗?当我纠正这个问题时,这将有助于未来的读者。我已经将它更正为
      s3.bucket['some-bucket']
      s3.bucket['some-bucket']
      ,意味着没有名为
      bucket
      的方法,它是
      bucket
      。请注意,s3.bucket['name'].object('key')。删除接口来自aws sdk的v1。V2使用s3.bucket('name')。对象('key')。删除。
      $s3.bucket("my-bucket").objects(prefix: 'my_folder/').batch_delete!