确保 S3 中的文件如其所声称的那样的一种方法是下载该文件,获取其校验和,并将结果与您期望的校验和进行匹配。
AWS 是否提供任何允许这种情况发生的服务without用户需要先下载文件吗? (即理想情况下,一个简单的请求/url 提供 S3 文件的校验和,以便可以对其进行验证before文件已下载)
到目前为止我尝试过的
我可以想到一个 DIY 解决方案
- 创建一个接受 API 端点
POST
使用 S3 文件 url 进行请求
- 让 API 运行 lambda 来生成文件的校验和
- 响应校验和值
这可能有效,但已经有点复杂,并且需要进一步考虑,例如大文件可能需要很长时间才能生成校验和(例如 > 60 秒)
我希望 AWS 有一些简单的方法来验证 S3 文件?
有一个ETag
针对每个对象创建,这是对象内容的 MD5。
不过,似乎也有一些例外。
From 常见响应标头 - Amazon Simple Storage Service:
ETag:实体标签是对象的哈希值。 ETag 仅反映对象内容的更改,而不反映其元数据的更改。 ETag 可能是也可能不是对象数据的 MD5 摘要。是否取决于对象的创建方式以及加密方式,如下所述:
通过 PUT 对象、POST 对象或复制操作或通过 AWS 管理控制台创建并通过 SSE-S3 或明文加密的对象具有 ETag是 MD5 摘要他们的对象数据。
由 PUT 对象、POST 对象或复制操作或通过 AWS 管理控制台创建并由 SSE-C 或 SSE-KMS 加密的对象具有以下 ETag:不是 MD5 摘要他们的对象数据。
如果对象是通过分段上传或分段复制操作创建的,则 ETag不是 MD5 摘要,无论加密方法如何。
此外,分段上传的 ETag 计算可能很复杂。看:s3cmd - 计算大于 5GB 的文件的 Amazon-S3 Etag 的算法是什么? - 堆栈溢出
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)