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

调用AWS S3 get-object-attributes接口无法获取文件SHA1校验和

核心原因

S3的SHA1、CRC32/CRC32C、SHA256这类额外校验和,不是所有对象默认自带的属性。2022年上线的是额外校验和的功能支持,不代表S3会自动给所有存量、新上传的对象计算全量哈希值——只有上传对象时显式指定了对应校验和算法、要求S3计算存储对应哈希的对象,调用接口传Checksum参数才能拿到对应值。
你传ETag能正常返回,是因为ETag是S3所有对象默认生成的内置属性,和额外校验和的生成逻辑完全独立,不存在依赖关系。

解决步骤
  • 先排查目标对象的上传配置:如果是2022年校验和功能上线前就存到桶里的存量对象,或者新上传时没有加--checksum-algorithm SHA1参数指定要计算SHA1的对象,本身就没存对应的哈希值,接口自然不会返回相关字段。
  • 要给现有对象补上SHA1校验和,不需要重新上传本地文件,直接在S3侧执行同对象复制即可,参考命令:
aws s3api copy-object \
  --bucket <bucketName> \
  --copy-source <bucketName>/<fileName> \
  --key <fileName> \
  --checksum-algorithm SHA1 \
  --metadata-directive COPY
  • 复制操作完成后,再执行你之前写的get-object-attributes命令,返回结果里就会出现ChecksumSHA1字段,对应的值就是你要的SHA1哈希。
  • 注意:如果目标对象是分片上传的,直接拿到的校验和是各分片哈希按规则拼接后计算的结果,不是单文件整体的SHA1,需要对照你上传时的分片大小逐块计算拼接后,才能和本地文件的哈希值匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:16:01