我想使用对象的sha256和作为etag。我使用以下代码来尝试指定etag:
aws s3 cp foo-lambda.zip s3://foo-bucket/lambda-code/foo-lambda/foo-lambda.zip --metadata ETag=FkyOB6C4wZQz5w9ClCMKxnK8A0iqCk4RWSO0Epbbc4I= --profile foo-profile
此操作在没有错误消息或警告的情况下成功。但是,AWS S3控制台中的etag与此值不匹配;相反,它是zip的MD5和。我已经尝试删除该对象,并再次以相同的结果上传它。
编辑:下面是命令行的更多信息
aws s3api head-object --bucket foo-bucket --key lambda-code/foo-lambda/foo-lambda.zip --profile foo-profile
响应
{
"AcceptRanges": "bytes",
"ContentType": "application/zip",
"LastModified": "Mon, 01 May 2017 18:17:11 GMT",
"ContentLength": 584,
"ETag": "\"729439461018d55c885e56b858e54676\"",
"Metadata": {
"etag": "FkyOB6C4wZQz5w9ClCMKxnK8A0iqCk4RWSO0Epbbc4I="
}
}
所以请注意,ETag
值是错误的,但是Metadata.etag
值是我想要的值。
发布于 2017-05-01 18:44:36
Amazon将etag用于系统中的各种任务。您必须继续使用元数据,就像您在问题中提议的那样。
ETag 实体标记是对象的散列。ETag只反映对对象内容的更改,而不是对其元数据的更改。ETag可能是对象数据的MD5摘要,也可能不是。它是否是取决于如何创建对象以及如何加密对象,如下所述:
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html
https://stackoverflow.com/questions/43724240
复制相似问题