首页 > 解决方案 > 为什么 S3 ETag 有多余的字符?

问题描述

我使用 s3api put-object 使用 aws cli 上传了一个文件,响应如下:

{
    "ETag": "\"7bd173e5150f57f8ffe94ad61cd5ea9d\""
}

当我用 md5 在本地计算哈希时,我得到了这个:

173e5150f57f8ffe94ad61cd5ea9d

为什么 ETag 前面多了 3 个字符?这是一个小文件 (8KB),因此它是一个单独的部分上传。

标签: amazon-web-servicesamazon-s3

解决方案


它实际上并没有 2 个额外的字符。这里发生了两件事。

ETag需要"引号括起来,所以对象的 ETag 是"7bd173e5150f57f8ffe94ad61cd5ea9d"-- 引号是 ETag 的一部分。

而且,这个输出是JSON,其中字符串需要被包裹在"... 所以"字符串中的字符必须用反斜杠转义 - 例如 5 个字符的字符串"foo"(显示的引号字符是字符串本身的一部分,而不是简单地包含字符串),在 JSON 中,表示为"\"foo\"".


推荐阅读