本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS CLI 将数据从 S3 存储桶复制到其他账户和区域
由 Appasaheb Bagali (AWS) 和 Purushotham G K (AWS) 编写
摘要
此示例介绍了以下操作:将数据从 AWS 源账户的 Amazon Simple Storage Service (Amazon S3) 存储桶迁移至其他 Amazon Web Services account(相同或不同 AWS 区域中)中的目标 S3 存储桶。
源 S3 存储桶通过使用附加资源策略,可允许 AWS Identity and Access Management (IAM) 访问。目标账户中的用户必须代入拥有源存储桶 PutObject
和 GetObject
权限的角色。最后,运行 copy
和 sync
命令,将数据从源 S3 存储桶传输至目标 S3 存储桶。
账户拥有他们上传至 S3 存储桶的对象。如果您跨账户和地区复制对象,则将复制对象的权限授予目标账户。若要更改对象所有权,您可将其访问控制列表(ACL)更改为 bucket-owner-full-control
。但是,我们建议您向目标账户授予编程跨账户权限,因为 ACLs 可能很难管理多个对象。
警告这种情况需要具有编程访问权限和长期证书的 IAM 用户,这会带来安全风险。为帮助减轻这种风险,我们建议仅向这些用户提供执行任务所需的权限,并在不再需要这些用户时将其移除。必要时可以更新访问密钥。有关更多信息,请参阅《IAM 用户指南》中的 更新访问密钥。 |
此模式涵盖一次性迁移。对于需要将新对象从源存储桶持续自动迁移到目标存储桶的场景,您可以改用 S3 Batch Replication,如使用 S3 Batch Replic ation 将数据从 S3 存储桶复制到另一个账户和区域模式中所述。
先决条件和限制
位于相同或跨不同 AWS 区域中的两个活跃 Amazon Web Services account。
源账户中的现有 S3 存储桶。
如果您的源存储桶或目标 Amazon S3 存储桶启用了默认加密,则必须修改 AWS Key Management Service (AWS KMS) 密钥权限。有关更多信息,请参阅有关此主题的AWS re:Post 文章
。 熟悉跨账户权限。
架构

工具
Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
AWS 命令行界面(AWS CLI)是一种开源工具,它可帮助您通过命令行 Shell 中的命令与 Amazon Web Services 交互。
AWS Identity and Access Management (AWS IAM) 通过控制验证和授权使用您 AWS 资源的用户,帮助您安全地管理对您 AWS 资源的访问。
最佳实践
IAM 中的安全最佳实践(IAM 文档)
应用最低权限权限(IAM 文档)
操作说明
Task | 描述 | 所需技能 |
---|---|---|
创建 IAM 用户并获取访问密钥。 |
| AWS DevOps |
创建基于 IAM 身份的策略。 | 使用以下权限,创建名为
注意根据您的用例修改源存储桶和目标存储桶名称。 这种基于身份的策略允许此角色用户访问源存储桶和目标存储桶。 | AWS DevOps |
创建一个 IAM 角色。 | 使用以下信任策略,创建名为
注意根据您的用例,修改信任策略中目标 IAM 角色或用户名的亚马逊资源名称 (ARN)。 此信任策略允许新创建 IAM 用户代入 | AWS DevOps |
Task | 描述 | 所需技能 |
---|---|---|
创建并附加 S3 存储桶策略。 | 登录源账户的 AWS 管理控制台 并打开 Amazon S3 控制台。选择源 S3 存储桶,然后选择权限。在存储桶策略下,选择编辑,然后粘贴以下存储桶策略。选择保存。
注意请确保包含目标账户的 AWS 账户 ID,并根据您的要求配置存储桶策略模板。 此基于资源的策略允许目标角色 | 云管理员 |
Task | 描述 | 所需技能 |
---|---|---|
创建目标 S3 存储桶。 | 登录您的目标账户的 AWS 管理控制台,打开 Amazon S3 控制台,然后选择创建存储桶。根据您的要求创建 S3 存储桶。有关更多信息,请参阅 Amazon S3 文档中的创建存储桶。 | 云管理员 |
Task | 描述 | 所需技能 |
---|---|---|
使用新创建的用户凭证配置 AWS CLI。 |
| AWS DevOps |
代入 S3 迁移角色。 |
有关更多信息,请参阅 AWS Knowledge Center | AWS 管理员 |
将数据从源 S3 存储桶复制并同步至目标 S3 存储桶。 | 当您代入 复制(详情请参阅 AWS CLI 命令参考
同步(详情请参阅 AWS CLI 命令参考
| 云管理员 |
故障排除
事务 | 解决方案 |
---|---|
调用 |
|
相关资源
创建 S3 存储桶(Amazon S3 文档)
Amazon S3 存储桶策略与用户策略(Amazon S3 文档)
IAM 身份(用户、组和角色)(IAM 文档)
cp 命令
(AWS CLI 文档) sync 命令
(AWS CLI 文档)