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

Boto3如何合并TransferConfig与Config配置?

解决Boto3中同时使用TransferConfig与Config的问题

这两个配置不属于同一层级,没法直接合并传给S3资源的config参数,得分开使用:

  • botocore.client.Config是客户端/资源的全局配置,负责重试策略、签名版本这类基础客户端行为
  • TransferConfig是S3传输操作(上传、下载等)专属的配置,只在执行具体传输任务时生效

正确用法步骤

  1. 先创建带有Config的S3资源/客户端
  2. 在调用上传、下载等传输方法时,单独传入TransferConfig参数

修改后的代码示例

from boto3.s3.transfer import TransferConfig
from botocore.client import Config
import boto3

# 初始化两种配置
transfer_config = TransferConfig(max_concurrency=10, ...)  # 填入你的传输配置参数
config = Config(retries={'max_attempts': 5}, region_name='us-east-1', ...)  # 填入你的客户端配置参数

# 创建带全局Config的S3资源
s3 = boto3.Session().resource("s3", config=config)

# 执行传输操作时传入TransferConfig
bucket = s3.Bucket('your-bucket-name')
# 上传文件示例
bucket.upload_file('local-file-path', 's3-object-key', Config=transfer_config)
# 下载文件示例
bucket.download_file('s3-object-key', 'local-file-path', Config=transfer_config)

如果使用S3客户端而非资源,用法类似:

s3_client = boto3.Session().client("s3", config=config)
s3_client.upload_file('local-file-path', 'your-bucket-name', 's3-object-key', Config=transfer_config)

注意事项

TransferConfig仅对upload_file、download_file、upload_fileobj、download_fileobj这类依赖TransferManager的方法生效,不属于全局配置,每次调用这些方法时都可以按需传入不同的TransferConfig。

内容的提问来源于stack exchange,提问作者prosto.vint

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:45:02