访问孟买区域S3 Bucket遇400错误:需使用AWS4-HMAC-SHA256
解决AWS S3孟买区域的AWS4-HMAC-SHA256授权错误
这个问题我碰到过好几次了——孟买(ap-south-1)是AWS的较新区域,只支持AWS4-HMAC-SHA256签名机制,而你用的旧版boto库默认用的是老的AWS2签名,这就直接导致了这个400错误。下面是具体的解决步骤:
1. 确保你的boto版本支持AWS4签名
首先检查当前boto版本,非常旧的版本(低于2.6.0)不支持AWS4签名:
pip show boto
如果版本过低,执行升级:
pip install --upgrade boto
2. 在代码中指定使用S3v4签名
在创建S3连接时,显式指定signature_version='s3v4'和正确的区域region_name='ap-south-1',示例代码如下:
import boto from boto.s3.connection import S3Connection # 替换成你的密钥和桶名 conn = S3Connection( aws_access_key_id='YOUR_AWS_ACCESS_KEY', aws_secret_access_key='YOUR_AWS_SECRET_KEY', is_secure=True, # 必须启用HTTPS signature_version='s3v4', region_name='ap-south-1' ) bucket = conn.get_bucket('your-bucket-name')
3. 全局配置(可选)
如果不想在每个连接里重复设置,可以修改boto的配置文件(通常是~/.boto),添加以下内容来全局启用S3v4签名:
[Boto] signature_version = s3v4 [s3] region = ap-south-1
补充说明
AWS在2014年之后推出的新区域(比如ap-south-1、eu-central-1等)都不再兼容旧的AWS2签名,必须使用AWS4-HMAC-SHA256。这是为了提升安全性和区域独立性,所以只要访问这些新区域,就必须确保签名版本正确。
内容的提问来源于stack exchange,提问作者Rahul Verma
相关产品推荐
相关产品推荐

