我在boto3上遇到了一个问题,我不能仅仅通过提供bucket名称来列出bucket中的所有对象。当我只提供bucket名称时,我会遇到访问被拒绝的问题。但是,我可以使用aws s3 ls s3://bucket_name
,并且可以查看所有对象
import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('bucket_name')
for file in my_bucket.objects.all():
print(file.key)
上述gode拒绝访问
aws s3 ls s3://bucket_name --recursive
这段代码有效,它列出了从顶级前缀开始的所有内容
在boto3中,如果我指定一个特定的前缀,向下两级我可以列出所有对象。像这样
for file in my_bucket.objects.filter(Prefix="dir_name/sub_dir"):
print(file.key)
据我所知,我正在使用IAM角色凭据,因为没有凭据文件或env。变量在我的机器上设置。我试图列出的桶在我的AWS帐户之外
让我困惑的是,为什么AWS CLI和boto3的行为略有不同。我相信我有正确的列表桶策略,因为我可以使用AWS CLI进行列表。这是一个有缺陷的假设吗
目前没有回答
相关问题 更多 >
编程相关推荐