繁体   English   中英

AWS CLI 和 BOTO3 SDK(权限问题)

[英]AWS CLI and BOTO3 SDK (permissions issue)

我可以使用 aws cli 下载一个 s3 文件夹,如下所示:

aws s3 cp --recursive s3://bucketname/custom-folder /tmp

但我无法列出 boto3 库中的文件夹文件:

import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket')
for obj in bucket.objects.all():
    print(obj.key)

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

但是,如果我知道特定路径,我可以下载特定文件,我知道这是因为 bash 命令正常工作:

s3.download_file(Bucket='mybucket',Key='custom-folder/1.gz',Filename='/tmp/1.gz')

我的问题是:

如何在没有读取/列出 S3 存储桶中文件的权限的情况下在 Boto3 中递归下载一个文件夹????

谢谢!

--recursive命令实际上需要列出文件才能知道要复制哪些文件。 因此,您似乎被授予列出文件的权限,但仅限于custom-folder

您可以使用以下方法进行测试:

aws s3 ls s3://bucketname/custom-folder

如果可行,您可以使用以下方法修改您的 Python 应用程序:

for obj in bucket.objects.filter(Prefix='custom-folder/'):

这应该将列表请求限制为该文件夹。

如果这有问题,您可能需要使用 API 调用的客户端版本而不是资源版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM