【发布时间】:2020-05-06 17:59:53
【问题描述】:
我正在从事一个项目,目标是从亚马逊 S3 提取报告。目前我正在尝试访问 S3 位置以检查我的可用存储桶列表。
我在 python 中工作,我已经在提示符中设置了所有凭据:aws configure。
当我尝试列出所有存储桶的代码时,在我的 python 文件中:
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print (bucket.name)
我收到此错误:
Traceback(最近一次调用最后一次): 文件“C:\Users\bakpovo\testAmazon.py”,第 3 行,在 对于 s3.buckets.all() 中的存储桶: iter 中的文件“C:\Users\bakpovo\AppData\Local\Programs\Python\Python38\lib\site-packages\boto3\resources\collection.py”,第 83 行 对于 self.pages() 中的页面: 文件“C:\Users\bakpovo\AppData\Local\Programs\Python\Python38\lib\site-packages\boto3\resources\collection.py”,第 161 行,分页 pages = [getattr(client, self._py_operation_name)(**params)] _api_call 中的文件“C:\Users\bakpovo\AppData\Local\Programs\Python\Python38\lib\site-packages\botocore\client.py”,第 276 行 return self._make_api_call(operation_name, kwargs) _make_api_call 中的文件“C:\Users\bakpovo\AppData\Local\Programs\Python\Python38\lib\site-packages\botocore\client.py”,第 586 行 raise error_class(parsed_response, operation_name) botocore.exceptions.ClientError:调用ListBuckets操作时发生错误(AccessDenied):访问被拒绝
有人知道发生了什么吗?我的证书不好吗?
谢谢
【问题讨论】:
-
1.您是否能够使用
aws s3终端/shell 命令读取/列出存储桶? 2. 运行aws configure后,您是否拥有有效的共享凭证文件~/.aws/credentials? 3. Ref boto3.amazonaws.com/v1/documentation/api/latest/guide/… 你有什么会阻止 boto3 使用共享凭证文件(例如环境变量集)吗? -
您是否将凭据创建为
default个人资料?如果您有多个 s3 帐户/配置文件,设置命名配置文件然后创建会话会很有用:session = boto3.Session(profile_name=<NAME HERE>) s3 = session.resource("s3") -
您好@Tom,感谢您的回复。我已经在我的终端中使用了“aws s3 ls s3”来列出清单,但我遇到了同样的错误。是的,我的凭据文件有效。我认为我没有一些环境变量。我只有一个 S3 位置以及密钥和访问密钥 ID
-
您好@Alex,感谢您的回答...我没有默认创建我的凭据,我只是配置了访问密钥 ID 和秘密访问密钥。我的 s3 位置如下所示:s3://aps-external-xxxx/aps-downloadxxx-xxx-43f7ee306fd2/
-
如果
aws s3 ls s3无法正常工作并出现同样的错误,则说明您的凭据设置不正确。