1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 问题出在boto3如何处理不同的aws区域上。这可能是在AWS GovCloud上使用时才会出现的问题。最初,我没有为S3配置区域,但根据文档 ,可以设置一个名为AWS_S3_REGION_NAME
的可选环境变量。
AWS_S3_REGION_NAME(可选,默认为None) 要使用的AWS S3区域的名称(例如eu-west-1)
我通过使用stackoverflow答案尝试通过boto3手动连接到s3来得出这个结论。我注意到他们在创建会话时包含了“region_name”参数,这提示我要确保在我的 app.settings 和环境变量中适当地设置了区域。
如果有人知道为什么需要设置这个来实现GovCloud功能,但显然商业功能不需要这个,请告诉我一声。
我还必须在app.settings中指定AWS_S3_SIGNATURE_VERSION
,以便boto3知道使用签名版本4。根据文档:
从boto3版本1.13.21起,用于生成预签名URL的默认签名版本仍然是v2。为了能够通过预签名URL访问所有区域的s3对象,请明确将此设置为s3v4。将其设置为使用其他版本,例如s3。请注意,只有某些区域支持旧版s3(也称为v2)版本。
这个stackoverflow响应中的一些额外信息详细说明了自2014年1月之后部署的新S3区域仅支持签名版本4。[AWS文档公告](https://
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 7 个月前