KMS 加密后 Aws S3 etag 与 md5 不匹配

Ric*_*ard 1 checksum amazon-s3 amazon-web-services md5sum aws-kms

全部 - 我们正致力于将一些机密和监管信息从本地 UNIX 文件系统迁移到 S3。

使用 AWS EC2 实例使用“aws s3 cp--sse aws:kms --sse-kms-key-id.......”命令将文件复制到 S3 中。

我注意到的是 etag 与 unix md5sum 不同。如果我不使用 kms 密钥加密数据,则完全相同。

我需要验证上传以确保数据在上传到 S3 时没有损坏,我如何验证我的文件是否完整,因为 etag 由于加密而不匹配。

任何帮助真的很感激!

PS:我的文件不是> 5gb,我知道分段上传的问题,它不适用于我....

Joh*_*ley 6

在 AWS S3 中,etag 不是 MD5 校验和。如果碰巧过去就是这种情况,但 AWS 警告不要依赖此方法进行完整性检查。

在以下链接中是我所指的文字:

The ETag may or may not be an MD5 digest of the object data.

实体标签是对象的散列。ETag 仅反映对象内容的更改,而不反映其元数据。ETag 可能是也可能不是对象数据的 MD5 摘要。它是否取决于对象是如何创建的以及它是如何加密的,如下所述:

  • 由 PUT 对象、POST 对象或复制操作或通过 AWS 管理控制台创建并由 SSE-S3 或纯文本加密的对象具有作为其对象数据的 MD5 摘要的 ETag。

  • 由 PUT 对象、POST 对象或复制操作或通过 AWS 管理控制台创建并由 SSE-C 或 SSE-KMS 加密的对象具有不是其对象数据的 MD5 摘要的 ETag。

  • 如果对象是通过分段上传或部分复制操作创建的,则 ETag 不是 MD5 摘要,无论加密方法如何。

通用响应头

  • 上传前计算MD5。包含标头“content-md5: value”。MD5值是base64编码的。AWS S3 将验证上传的数据是否匹配。https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html (2认同)