我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
在 Amazon S3 中的现有对象上启用和验证其他校验和
在数据迁移或数据传输期间验证数据完整性是一种数据持久性最佳实践,可确保您的数据在到达目的地时没有错误且不会损坏。验证数据完整性的一种方法是通过校验和,您基本上可以将其视为数据的数字指纹,可用于跟踪传输期间或静态数据的任何变化。许多媒体和娱乐组织以及政府机构使用校验和进行端到端的数据完整性验证并维护证据保管链。
在这篇博客中,我们将深入探讨如何向现有 Amazon S3 对象添加额外的校验和,如何向不启用额外校验和而上传的新创建的对象添加额外的校验和,以及如何使用 Amazon S3 计算的校验和信息验证本地文件的完整性,以验证两个文件之间的数据完整性。
借助本指南,您可以使用这些信息自信地验证在 Amazon S3 中传输和存储的数据在整个生命周期内的完整性。此功能很重要,因为您可以验证资产在复制时是否被更改,可以加快数据的完整性检查,并且可以确认每个字节都是在不做更改的情况下传输的,从而可以保持端到端的数据完整性。
为现有 Amazon S3 对象添加和验证校验和
Amazon S3 最近增加了
正如介绍中提到的,在这篇博客文章中,我们重点关注三个关键领域:
- 向 Amazon S3 中的现有对象添加校验和。
- 集成自动机制,向未指定校验和的后续上传添加校验和。
- 根据原始本地数据验证 Amazon S3 中对象的校验和。
接下来,让我们开始吧。
第 1 部分:向 Amazon S3 中的现有对象添加校验和
有两种情况可以在不指定校验和算法的情况下为上传的数据添加校验和。在这两种情况下,我们都将使用
第 1a 部分:准备环境
为了准备环境,我们创建了一个新的存储桶并通过 亚马逊云科技 管理控制台上传文件。这只是为了创建一个模拟示例,因此我们可以向对象追溯添加校验和。
- 在亚马逊 S3 中创建存储桶。
a. 登录
b. 然后,选择 创建存储桶 。
c. 在 “ 常规配置 ” 部分的 “ 存储桶名称 ” 框中,键入存储桶名称。
-
- 在 Amazon S3 的所有现有存储桶名称中,您选择的存储桶名称必须是唯一的。帮助确保唯一性的一种方法是使用组织名称作为存储桶名称的前缀。存储桶名称必须符合某些规则。有关更多信息,请查看
Amazon S3 用户指南中的 存储桶限制和限制 。
- 在 Amazon S3 的所有现有存储桶名称中,您选择的存储桶名称必须是唯一的。帮助确保唯一性的一种方法是使用组织名称作为存储桶名称的前缀。存储桶名称必须符合某些规则。有关更多信息,请查看
d. 选择 A WS 区域 。
e. 向下浏览页面并保持所有其他默认选项不变。
f. 选择 “ 创建存储桶 ” 按钮。Amazon S3 成功创建您的存储桶后,控制台会在存储桶 面板中显示您的空 存储桶 。
- 创建文件夹。
a. 在 Bucket s 部分中,选择您刚刚创建的新存储桶的名称。
b. 然后,在 “ 对象 ” 部分中,选择 “ 创建” 文件夹 。
c. 在 “文件夹 ” 部分的 “文件夹名称” 区域中,命名新的文件夹 数据 。
d. 将 服务器端加密 选项保留为 Amazon S3 托管密钥 (SSE-S3) , 然后选择 创建文件夹。
3。将一些数据文件上传到新的 Amazon S3 存储桶。
a. 在 “ 对象 ” 部分中,选择数据文件夹 的 名称 。
b. 然后,选择 “上 载 ” 按钮。
c. 在 “上 载 ” 页面上,选择 “ 添加文件 ” 。
d. 按照
e. 文件上传完毕后,选择 “上 传 ” 按钮。
f. 然后,您将看到 Uplo a d: 状态 页面,显示您的上传是否已成功完成。如果上传成功,请选择 “关 闭 ” 按钮。
将数据上传到新存储桶后,请在您使用的同一
然后,您将看到另一个页面,其中包含有关您的对象的其他细节。 向下导航到 “ 其他校验和 ” 部分,您将看到 “ 其他校验和 ” 已设置为 关闭。
第 1b 部分:向现有对象添加校验和
现在,我们将设置一些资源,以便在接下来的演练中使用。例如,我们将设置一个
运行:
git clonehttps://github.com/aws-samples/amazon-s3-checksum-verification cd amazon-s3-checksum-verification
这会将代码下载到您的本地计算机。
为了向所有现有的 Amazon S3 对象添加校验和,我们使用
- 创建包含以下详细信息的 CSV 文件:
Examplebucket,objectkey1
例如
s3-integrity-demo,data/filename.img
- 准备环境时,将文件上传到您在上文第 1a 部分中创建的存储桶的根目录。
注意: 如果您要大规模执行此操作,我们建议您
有了清单文件(无论是我们在上面创建的 CSV 还是亚马逊 S3 清单清单)后,我们就会使用以下步骤创建一个 Amazon S3 批量操作任务。
- 登录 亚马逊云科技 管理控制台并打开 Amaz
on S3 控制台 。 - 在 Amazon S3 控制台中, 在左侧导航窗格中选择 批量操作 。然后,选择 “ 创建作业 ” 按钮。接下来,选择要 在其中创建任务的 亚马逊云科技 区域 。
- 在 清单 格式下的 清单 部分中 ,选择 CSV 作为清单格式的类型。如果您选择 亚马逊 S3 库存报告 ,请输入亚马逊 S3 作为 CSV 格式库存报告的一部分生成的清单.json 对象的路径。或者,如果您想使用 最新版本以外的版本,则可以 为清单对象添加所需的 清单对象版本 ID 。如果您选择 CSV ,请在 清单对象 部分输入 CSV 格式的清单对象的路径。清单对象必须遵循控制台中描述的格式,有关更多详细信息,请参阅
有关支持格式的 文档 。如果您想使用最新版本以外的版本,则可以选择包含清单对象的版本 ID。然后,选择 “ 下一步 ” 。 - 按如下方式填写表格:
a. 在 “ 操作 ” 下 ,选择 “ 复制 ” 。
b. 在 “ 复制 目标 ” 区域的 “目标 ” 中,输入您之前创建的不带前缀的存储桶名称,例如
c. 检查, 我确认同名的现有对象将被覆盖 。
d. 在 “ 其他校验和” 部分 下选择 “ 用新的校验 和函数替换 ”,然后选择您选择的算法, 例如 SHA256。 然后,选择 “ 下一步 ” 。
5。取消选中 “ 生成完成报告 ”。
6。 选择从现有 IAM 角色
中选择, 然后选择包含 s3batch Role 的角色... 7. 要 查看 ,请验证设置。如果需要进行更改,请选择 “ 上一 步” 。否则,请选择 创建作业 。
创建作业后,将其选中,然后选择 “ 运行作业 ” 。任务完成后,您可以通过选择最初在 Amazon S3 控制台中上传的对象来验证结果。在这里,您将能够看到该对象启用了其他校验和,使用了哪种算法来计算校验和,以及计算了哪些校验和值。
第 2 部分:在新上传的对象上自动启用校验和
为了向新上传的数据添加校验和,我们配置了一个 Amazon S3 事件,为添加到存储桶中的任何对象调用我们之前创建的 Lambda 函数。
- 登录 亚马逊云科技 管理控制台并打开 Amaz
on S3 控制台 。 - 在 Bucket s 部分中,选择要为其启用事件的存储桶的名称。注意,必须直接选择对象名称,而不是单选按钮。然后,选择 “ 属性 ” 。
- 向下导航到 事件通知 部分,然后选择 创建事件通知 。
- 在 “ 常规配置 ” 部分中, 为您的 事件通知指定描述性事件名称 。输入您为 前缀 创建的文件夹名称 ,例如 数据 。
- 在 “ 事件类型 ” 部分中,选择 pu t 和 p os t 。通过做出这些选择,这将仅对新的和更新的 Amazon S3 对象启用校验和。
- 在页面上进一步向下导航至 目的地 部分。保持该部分的默认值不变。 在 Lambda 函数 下拉菜单中,选择包含 checksumLambda 的 Lambda 函数...
7。选择 “ 保存更改 ” 。
现在,当对象上传到 Amazon S3 时,Lambda 函数将执行复制对象操作,在此期间,它将根据在上文第 1b 部分中部署初始 CloudFormation 脚本期间指定的算法添加额外的校验和。您可以通过将新文件上传到数据文件夹并检查校验和是否成功启用来对此进行测试。
第 3 部分:验证本地文件是否与 Amazon S3 生成的哈希值相匹配
现在,我们已经完成了两个应用额外校验和的程序。
- 使用批处理向现有对象添加校验和。
- 添加自动机制,无需指定校验和即可向上传的新采集数据添加校验和。
现在,我们将介绍如何使用校验和信息对照数据的本地副本验证 Amazon S3 中的数据。
在此示例中,我们使用简单的 python 脚本查询 Amazon S3 中的校验和详细信息,并使用此信息对本地文件执行相同的操作以验证数据匹配。
- 从 Github 克隆代码并进入存储库:
git clonehttps://github.com/aws-samples/amazon-s3-checksum-verification cd amazon-s3-checksum-verification
- 安装脚本所需的 python 软件包:
pip install -r requirements.txt
- 按照
本指南 配置 亚马逊云科技 cli 证书 。 - 运行以下命令检查文件完整性。
./integrity-check.py --bucketName <your bucketname> --objectName <prefix/objectname-in-s3> --localFileName <local file name>
- 您应该会看到确认数据匹配的确认信息。例如:
PASS: Checksum match! - s3Checksum: GgECtUetQSLtGNuZ+FEqrbkJ3712Afvx63E2pzpMKnk= | localChecksum: GgECtUetQSLtGNuZ+FEqrbkJ3712Afvx63E2pzpMKnk=
integrity-check.py 函数使用
正在清理
本练习产生的唯一持续费用是 S3 中文件的 Amazon S3 存储费用,以及如果您继续上传更多对象,则会收取 Lambda 调用的费用。如果您不想产生任何额外费用,则应删除为测试创建的 S3 存储桶和 CloudFormation 脚本。
结论
在跨工作流程迁移和使用资产时,客户希望确保文件不会因网络损坏、硬盘故障或其他意外问题而被更改。将大量数据迁移到 Amazon S3 的客户应执行数据完整性检查,以此作为持久性最佳实践。
在这篇文章中,我们向您展示了如何:
- 向现有的 Amazon S3 对象添加额外的校验和。
- 在不启用其他校验和的情况下向上传的新创建的对象添加额外的校验和。
- 使用 Amazon S3 计算的校验和信息验证本地文件的完整性,以验证两个文件之间的数据完整性。
总而言之,Amazon S3 使用校验和值来验证您上传到 Amazon S3 或从 Amazon S3 下载的数据的完整性。我们鼓励您使用这些信息自信地验证 Amazon S3 中传输和存储的数据在整个生命周期内的完整性,以保持端到端数据的完整性。
有关附加校验和功能的更多详细信息,我们建议您阅读
感谢您阅读这篇文章。如果您有任何意见或问题,请将其留在评论部分。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。