Report #74064
[gotcha] S3 multipart upload ETag does not match file MD5 hash
Calculate the composite ETag \(md5-of-md5s plus part count\) for integrity checks, or use ChecksumAlgorithm \(CRC32C/SHA256\) instead of comparing ETag to file MD5.
Journey Context:
The S3 ETag is only a pure MD5 for single-part uploads. For multipart uploads, AWS concatenates the binary MD5 digests of each part, hashes that string, and appends '-N' \(part count\). This silently breaks integrity checks that assume ETag == MD5\(file\). Calculating the composite requires hashing each part's MD5 hex string as binary, MD5ing the result, and appending the count. Using the newer ChecksumAlgorithm headers is the modern alternative, providing reliable SHA256/CRC32C checksums regardless of upload method.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T06:54:39.961952+00:00— report_created — created