概览
各组织都在不断创建数字资产并将其迁移到
Amazon S3。这些资产包括图像、二进制文件、后期制作渲染等,所有这些都对业务至关重要。由于资产会跨工作流迁移和使用,您想要确保文件不会因为网络损坏、硬盘驱动器故障或其他意外问题而更改。如今,该行业使用算法逐字节扫描文件,为其生成唯一的指纹,即校验和。
使用校验和,您可以验证资产在复制时是否未被更改。执行校验和包括使用算法按顺序迭代文件中的每个字节。
Amazon S3 提供多种校验和选项,以加速数据完整性检查。这些功能在客户上传对象时计算文件的校验和。将大量数据迁移到 Amazon S3 的客户希望执行这些完整性检查,以此作为持久性最佳实践,并确认每个字节都是在不更改的情况下传输的。这使客户能够保持端到端的数据完整性。校验和是在上传对象的那一刻创建的,并在对象的整个生命周期内保持不变。下载对象时,最后会验证相同的校验和,以提供端到端的数据完整性。Amazon S3 支持的额外算法包括:SHA-1、SHA-256、CRC32 和 CRC32-C。借助这些新的数据完整性检查功能,您可以验证您的文件在数据传输期间或上传或下载过程中是否未被更改。
您将学到的内容
- 将文件上传到 Amazon S3
- 比较 Amazon S3 上与您的本地文件的校验和以验证数据完整性
先决条件
您需要一个 AWS 账户才能完成本教程。
访问此支持页面,了解有关如何创建和激活新 AWS 账户的详细信息。
实施
第 1 步:创建 Amazon S3 存储桶
- 1.2 – 创建 S3 存储桶
- 从左侧的 Amazon S3 菜单中选择存储桶,然后选择创建存储桶按钮。
- 1.3
- 为您的存储桶输入一个全局唯一的描述性名称。选择您希望在其中创建存储桶的 AWS 区域。默认的屏蔽公共访问权限设置适合此工作负载,因此保留该部分的设置。
- 您可以将其余选项保留为默认值,导航到页面底部,然后选择创建存储桶。
第 2 步:上传文件并指定校验和算法
现在,您的存储桶已创建并配置,您可以上传文件并让 Amazon S3 计算校验和。
- 2.2
- 接下来,选择对象选项卡。然后在对象部分中,选择上传按钮。
- 2.3 – 添加文件
- 选择添加文件按钮,然后从文件浏览器中选择要上传的文件。
- 2.4 – 扩展属性
- 向下浏览页面,找到属性部分。然后,选择属性并展开该部分。
- 2.5 – 选择额外校验和
- 在“额外校验和”下,选择“开启”选项,然后选择 SHA-256。
如果您的对象小于 16MB,并且您已经计算出 SHA-256 校验和(base64 编码),则可以在“预先计算的值”输入框中提供该校验和。要将此功能用于大于 16MB 的对象,您可以使用 CLI 或 SDK。当 Amazon S3 收到对象时,会使用指定的算法计算校验和。如果校验和值不匹配,Amazon S3 会生成错误并拒绝上传,如屏幕截图所示。
- 2.6 – 上传
- 向下浏览页面,然后选择上传按钮。
- 2.7
- 上传完成后,选择关闭按钮。
第 3 步:验证校验和
- 3.1
- 通过选择文件名来选择已上传的文件。这将带您进入属性页面。
- 3.2 – 找到校验和值
- 向下浏览属性页面,您将找到额外校验和部分。
- 该部分显示 Amazon S3 在上传时计算和验证的 base64 编码校验和。
- 3.3 – 比较
- 要比较本地计算机中的对象,请打开终端窗口并导航到文件所在的位置。
- 使用像 shasum 这样的实用工具来计算文件。以下命令对同一个文件执行 sha256 计算,并将十六进制输出转换为 base64:shasum -a 256 image.jpg | cut -f1 -d\ | xxd -r -p | base64
- 比较时,此值应与 Amazon S3 控制台中的值相匹配。
第 4 步:清理
在以下步骤中,您将清理在本教程中创建的资源。最佳实践是删除您不再使用的资源,以免产生意外费用。
- 4.2 – 删除测试存储桶
- 最后,您需要删除已创建的测试存储桶。回到您的账户中的存储桶列表。选择为本教程创建的存储桶左侧的单选按钮,然后选择删除按钮。查看警告消息。如果要继续删除此存储桶,请在删除存储桶确认框中输入存储桶的名称,然后选择删除存储桶。
结论
恭喜! 您已经学会了如何将文件上传到 Amazon S3、计算额外校验和,以及如何比较 Amazon S3 上与您的本地文件的校验和以验证数据完整性。
后续步骤
要了解有关校验和的更多信息,请访问以下资源。
了解结尾校验和
Amazon S3 还引入了结尾校验和,这是 AWS SDK 的一项新功能。使用结尾校验和,SDK 会在将您的文件上传到 Amazon S3 时一次性计算校验和。在 Building scalable checksums 博客文章中阅读有关该功能的更多信息。