Aws S3与特定路径的连接

时间:2017-02-02 11:22:07

标签: ruby amazon-s3 aws-sdk

我正试图在路径上列出并从桶中下载文件夹,例如:" aaa / bbb /"使用aws-sdk gem v2。但是,我无法弄清楚如何去做。

这就是我的尝试:

require 'aws-sdk'

Aws.config.update({
  region: 'us-west-2',
  credentials: Aws::Credentials.new('akid', 'secret')
})        

s3 = Aws::S3::Resource.new

# reference an existing bucket by name
bucket = s3.bucket('aaa')

bucket.objects(prefix: '/bbb/').each do |folder|
  p folder
end

它说:拒绝访问(Aws :: S3 ::错误:: AccessDenied)

但是,如果我改为使用命令行AWS CLI,并执行:

aws s3 ls aaa/bbb/

它有效......

有什么建议吗?

非常感谢。

2 个答案:

答案 0 :(得分:1)

S3中的约定是桶的键空间的“根”是一个零长度的空字符串......它不像某些人自然假设的那样bbb/

您要查找的前缀将表示为/bbb/,而不是{{1}}。

答案 1 :(得分:0)

根据您要提交的凭证文件略有不同:

require 'aws-sdk'

Aws.config.update({
  region: 'us-west-2',
  credentials: Aws::Credentials.new('akid', 'secret')
})

也许尝试这样列出存储桶的内容:

s3.list_objects(bucket:'aaa').each do |response|
  puts response.contents.map(&:key)
end