S3中是否存在标准元数据键用于存储大对象的MD5SUM?

时间:2016-06-15 19:19:46

标签: amazon-s3

S3支持为ETag标头中的大多数对象返回MD5SUM。但是对于以块的形式上传的对象,ETag不再是MD5SUM - 它仍可用于检查完整性,但我确实需要MD5SUM。

我想将MD5SUM存储在对象元数据中,以便我可以在大型对象上轻松检索它。然而,在我为此构建一个密钥之前 - 是否有其他软件正在使用的标准软件?

1 个答案:

答案 0 :(得分:2)

我没有能够识别的标准,坦率地说,为S3编写的软件太多并不是很好 - S3提供了Content-MD5上传标题之类的机制确保S3会断然拒绝在传输过程中损坏的上传内容......一些开发人员似乎并不打扰 - 所以先例可能不值得关注,无论如何。

但我在多个层面上都遇到过同样的问题。

但请注意,如果您知道上传过程中使用的部件大小,则可以从本地文件计算S3上传的S3多部分标签(同样,为了保存这个标准,标题标题会尖叫一下)信息,如果您不保留或使用标准值,则会丢失信息)。如果每个部分以二进制(不是十六进制)连接它们,取md5,取md5(这次是十六进制)加上-加上部分数量,瞧,你有多部分etag。

我的(未发布的,内部使用的)工具,名为“pedantic uploader”,使用x-amz-meta-content-md5hex来存储整个文件的十六进制编码的md5,以及x-amz-meta-content -sha256hex存储sha256。我最初使用的是x-amz-meta-content-md5,但这可能是模糊的,因为它可能是base64编码的。

如果对象使用Content-Encoding: gzip,则gzip中有效内容的属性也会通过我的代码在元数据中记录,其中包含x-amz-meta-identity-content-md5hex和未压缩的密钥字节计数为x-amz-meta-identity-content-length,“identity”表示压缩前未编码的有效负载。我将上传部分大小以字节存储为x-amz-meta-multipart-part-size,因为我预先计算了S3应该为etag生成的内容,将其保存为x-amz-meta-expect-etag。 / p>

不确定这是否有帮助。