You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在中国大陆地区使用boto3访问AWS S3存储桶?

解决boto3访问AWS中国区S3存储桶的初始化问题

AWS中国区(北京/宁夏)与全球区属于独立基础设施,boto3默认使用全球区服务端点,因此访问中国区存储桶时需显式指定对应区域和端点,以下是具体修改方案:

方案一:代码中直接指定区域和端点

在初始化Session或Client时,明确传入中国区的region_name和endpoint_url:

# 示例:访问北京区域(cn-north-1)的存储桶
session = boto3.session.Session(
    aws_access_key_id='XYZ',
    aws_secret_access_key='ABC',
    region_name='cn-north-1'
)
# 显式指定中国区S3端点
client = session.client(
    's3',
    endpoint_url='https://s3.cn-north-1.amazonaws.com.cn'
)
# 后续业务代码保持不变
listing = client.list_objects(Bucket='你的中国区存储桶名称')

不同中国区的区域标识和对应端点:

  • 北京区域:region_name='cn-north-1',端点https://s3.cn-north-1.amazonaws.com.cn
  • 宁夏区域:region_name='cn-northwest-1',端点https://s3.cn-northwest-1.amazonaws.com.cn

如果使用S3 Resource方式,同样需要指定端点:

s3_resource = session.resource(
    's3',
    endpoint_url='https://s3.cn-north-1.amazonaws.com.cn'
)
bucket = s3_resource.Bucket('你的中国区存储桶名称')
for obj in bucket.objects.all():
    print(obj.key)

方案二:通过AWS配置文件设置(无需修改代码)

在本地~/.aws/config(Windows系统路径为C:\Users\<用户名>\.aws\config)中添加中国区专属配置:

[profile china-s3]
region = cn-north-1
endpoint_url = https://s3.cn-north-1.amazonaws.com.cn
aws_access_key_id = XYZ
aws_secret_access_key = ABC

之后代码中直接调用该配置文件:

session = boto3.session.Session(profile_name='china-s3')
client = session.client('s3')
listing = client.list_objects(Bucket='你的中国区存储桶名称')

注意事项

  • 确认使用的IAM密钥为AWS中国区账号生成,全球区密钥无法在中国区使用
  • 存储桶需创建在对应的中国区区域内,跨区域访问会报错

内容的提问来源于stack exchange,提问作者user124114

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:25:09