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

如何在boto3 upload_file中指定Checksum实现S3文件上传校验?

问题解答

关于无需手动提供SHA256值的原因

当你在upload_file的ExtraArgs里指定ChecksumAlgorithm: "SHA256"时,boto3会自动完成本地文件的SHA256计算,并将校验和通过请求头传递给S3,不需要你手动计算和传入。S3收到文件后会重新计算校验和,与boto3传递的值对比,只有一致才会完成上传并将校验和存储在对象的元数据(x-amz-checksum-sha256)中。

校验和验证是否仅支持分块上传?

不是。upload_file方法会根据文件大小自动选择上传方式:

  • 当文件小于默认阈值(8MB)时,使用单PUT请求上传,boto3计算整个文件的SHA256并在请求头中携带,S3直接验证整体校验和
  • 当文件超过阈值时,自动触发分块上传,boto3会计算每个分块的SHA256,上传时传递给S3,最后S3合并分块后验证总校验和

两种场景下,只要指定ChecksumAlgorithm参数,都会触发校验和验证逻辑。

关于SSL错误的排查

你遇到的SSLError和校验和参数本身无关,更可能是以下原因:

  • 云服务商的S3兼容端点SSL证书存在问题(如过期、域名不匹配)
  • 本地环境的SSL证书存储缺失或过时
  • 网络连接中断、代理/防火墙拦截请求

可以尝试以下排查步骤:

  1. 更新本地SSL证书依赖包:
pip install --upgrade certifi
  1. 临时关闭SSL验证(仅用于测试,生产环境禁止):
from botocore.config import Config

s3_client = boto3.client(
    's3',
    config=Config(verify=False)
)
s3_client.upload_file(
    Bucket="my_bucket",
    Filename="local_filename",
    Key="remote_filename",
    ExtraArgs={"ChecksumAlgorithm": "SHA256"}
)
  1. 强制指定TLS版本(适配云服务商端点要求):
from botocore.config import Config

s3_client = boto3.client(
    's3',
    config=Config(tls_version='TLSv1.2')
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:57:34