我正试图在路径上列出并从桶中下载文件夹,例如:" 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/
它有效......
有什么建议吗?
非常感谢。
答案 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