【问题标题】:list all items under a key of my bucket of AWS S3列出我的 AWS S3 存储桶的键下的所有项目
【发布时间】:2016-09-04 01:56:47
【问题描述】:

在 AWS S3 中,我有一个名为 my-bucket 的存储桶,带有 AWS Ruby SDK,我可以通过 ruby​​ 代码列出 my-bucket 下的所有项目:

require 'aws-sdk'

s3 = Aws::S3::Resource.new(region: 'us-west-2')

bucket = s3.bucket('my-bucket')

# Show only the first 50 items
bucket.objects.limit(50).each do |item|
  puts "Name:  #{item.key}"
  puts "URL:   #{item.presigned_url(:get)}"
end

这很好。但是在my-bucket下我在S3中有如下文件结构:

my-bucket/
    customers/
         products/
              - data1.txt
              - data2.txt
              ...

我的问题是:

Q1.使用AWS Ruby SDK,如何列出my-bucket/customers/products/下的所有项目?

Q2. 我该如何检查,例如my-bucket/customers/products/data3.txt 存在吗?

【问题讨论】:

    标签: ruby amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    第一季度。使用 AWS Ruby SDK,我如何列出下面的所有项目 我的桶/客户/产品/?

    bucket.objects({prefix: "customers/products/"})

    第二季度。我如何检查例如我的桶/客户/产品/data3.txt 存在吗?

    使用 S3 Object #exists? 方法,如:

    bucket.objects["customers/products/data3.txt"].exists?

    【讨论】:

    • 谢谢,data3.txt 部分可以使用通配符吗?例如,我想检查customers/products/下是否存在以.txt结尾的文件?
    • 不,您必须获取具有该前缀的所有对象的列表,然后在返回的列表中扫描任何具有“.txt”后缀的对象。
    • 嗯...对于您答案中的第二行代码,我收到此错误 ``method_missing': undefined method []' for #<Aws::Resources::Collection:0x007fa50440d228> ,然后,我更改为 bucket.objects({prefix:"customers/products/data3.txt"}).exists? 但我收到错误@ 987654330@exists?'`,知道为什么吗?
    • 它在 SDK 文档中定义:docs.aws.amazon.com/sdkforruby/api/Aws/S3/… 我不是 Ruby 程序员,我只是指出 AWS 开发工具包中的方法,您需要使用这些方法来完成您的任务关于问题。我建议您花时间阅读文档。
    • 只需将方括号更改为大括号即可解决问题:)
    猜你喜欢
    • 2015-10-23
    • 2022-01-23
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2020-05-22
    • 2011-12-23
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多