本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 S3 Batch Replication 将数据从 S3 存储桶复制到另一个账户和区域
由 Appasaheb Bagali (AWS)、Lakshmikanth B D ()、Purushotham G K (AWS)、Shubham Harsora () 和 Suman Rajotia (AWS) 创作 AWS AWS
摘要
此模式说明了在设置存储桶后,如何使用亚马逊简单存储服务 (Amazon S3) Simple Storage Batch Replication 将一个 S3 存储桶的内容自动复制到另一个 S3 存储桶,无需任何手动干预。源存储桶和目标存储桶可以位于相同 AWS 账户 或不同区域中。
S3 Batch Replication 为您提供了一种复制配置到位之前存在的 Amazon S3 对象、之前复制过的对象以及复制失败的对象的方法。此方法使用 S3 Batch 操作作业。作业完成后,您将收到一份完成报告。
在需要将新对象从源存储桶持续自动迁移到目标存储桶的场景中,您可以使用 S3 Batch Replication。对于一次性迁移,您可以改用 AWS Command Line Interface (AWS CLI),如模式中所述,使用将数据从 S3 存储桶复制到另一个账户和区域 AWS CLI。
先决条件和限制
架构
AWS 服务
最佳实践
以下来自 re AWS : Invent 2022 的视频讨论了使用 Amazon S3 复制实现监管合规、数据保护和提高应用程序性能的最佳实践。
操作说明
任务 | 描述 | 所需技能 |
---|
创建跨账户复制IAM策略。 | 在 AWS 来源账户中: 打开 IAM控制台。 创建新IAM策略。 在策略编辑器部分 JSON,选择并粘贴以下代码。 {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GetSourceBucketConfiguration",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:GetBucketAcl",
"s3:GetReplicationConfiguration",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::source-bucket-name",
"arn:aws:s3:::source-bucket-name/*"
]
},
{
"Sid": "ReplicateToDestinationBuckets",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:*Object",
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
],
"Resource": [
"arn:aws:s3:::destination-bucket-name*",
"arn:aws:s3:::destination-bucket-name/*"
]
},
{
"Sid": "PermissionToOverrideBucketOwner",
"Effect": "Allow",
"Action": [
"s3:ObjectOwnerOverrideToBucketOwner"
],
"Resource": [
"arn:aws:s3:::destination-bucket-name*",
"arn:aws:s3:::destination-bucket-name/*"
]
}
]
}
本政策包括三项声明: GetSourceBucketConfiguration 提供对复制配置和对象版本的访问权限,以便在源存储桶上进行复制。
ReplicateToDestinationBuckets 提供复制到目标存储桶的权限。您可以在数组中指定多个目标存储桶。 PermissionToOverrideBucketOwner 提供对的访问权限,ObjectOwnerOverrideToBucketOwner 以便目标存储桶可以拥有目标账户中从源账户复制的对象。
选择 “下一步”,提供策略名称(如)cross-account-bucket-replication-policy ,然后选择 “创建策略”。
有关更多信息,请参阅IAM文档中的创建IAM策略。 | 云管理员、AWS管理员 |
为跨账户复制创建IAM角色。 | 在 AWS 来源账户中: 在IAM控制台上,使用以下信息创建IAM角色: 在可信实体类型中选择 AWS 服务。 要获得服务,请选择 S3。 对于用例,请选择 S3 Batch 操作。 选择您在上一步中创建的策略。
提供角色名称,例如 cross-account-bucket-replication-role,然后选择创建角色。
有关更多信息,请参阅IAM文档中的创建IAM角色。 | 云管理员、AWS管理员 |
任务 | 描述 | 所需技能 |
---|
针对源账户中的源存储桶创建复制规则。 | 在 AWS 来源账户中: 打开 Amazon S3 控制台。 导航到源存储桶,然后选择 “管理” 选项卡。 使用以下配置创建复制规则: 提供规则名称,例如s3-replication-rule 。 对于 Status(状态),选择 Enabled(已启用)。 对于规则范围,请选择应用于存储桶中的所有对象。 对于目标,选择在其他账户中指定存储桶,然后输入目标 AWS 账户 编号和存储桶名称。 选择将对象所有权更改为目标存储桶所有者的选项。 对于IAM角色,请选择您之前在源账户中创建的角色。 对于其他复制选项,请选择所有可用选项。它们提供了快速复制内容、通过 Amazon CloudWatch 指标监控复制进度、复制删除标记和复制元数据更改的能力。 选择保存。
如果您有多个目标存储桶,请创建其他复制规则。
有关更多信息,请参阅 Amazon S3 文档中的在源存储桶和目标存储桶由不同账户拥有时配置复制。 | AWS管理员、云管理员 |
任务 | 描述 | 所需技能 |
---|
对目标存储桶应用存储桶策略。 | 必须对目标账户中的 AWS 每个目标存储桶单独执行此步骤。 在 AWS 目标账户中: 打开 Amazon S3 控制台,导航到目标存储桶,然后选择 “权限” 选项卡。 通过提供以下JSON代码编辑存储桶策略,然后保存策略:
{
"Version": "2012-10-17",
"Id": "PolicyForDestinationBucket",
"Statement": [
{
"Sid": "Permissions on objects and buckets",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SourceAWSAccountNumber:role/IAM-Role-created-in-step1-in-source-account"
},
"Action": [
"s3:List*",
"s3:GetBucketVersioning",
"s3:PutBucketVersioning",
"s3:ReplicateDelete",
"s3:ReplicateObject"
],
"Resource": [
"arn:aws:s3:::destination-bucket",
"arn:aws:s3:::destination-bucket/*"
]
},
{
"Sid": "Permission to override bucket owner",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SourceAWSAccountNumber:role/IAM-Role-created-in-step1-in-source-account"
},
"Action": "s3:ObjectOwnerOverrideToBucketOwner",
"Resource": "arn:aws:s3:::destination-bucket/*"
}
]
}
本政策包括两项声明: | AWS管理员、AWS系统管理员、云管理员 |
任务 | 描述 | 所需技能 |
---|
验证复制是否正常运行。 | 向源存储桶添加对象。 验证新对象是否出现在目标账户的 S3 存储桶中。 查看 CloudWatch 指标: 在源存储桶中,选择 “指标” 选项卡。 在 “复制指标” 部分,选择复制规则。 请选择 Display charts (显示图表)。这些图表通过显示待复制的操作、复制延迟和待复制的字节来反映复制的状态。
有关更多信息,请参阅 Amazon S3 文档 CloudWatch中的使用亚马逊监控指标。 | AWS管理员、云管理员 |
相关资源