使用清单报告跨 Amazon Web Services 账户 复制对象
可以使用 Amazon S3 批量操作对 Amazon S3 对象执行大规模批量操作。可以使用 S3 批量操作创建复制 (CopyObject
) 任务,以便在同一账户内复制对象或将对象复制到不同的目标账户。
可以使用 Amazon S3 清单创建清单报告,然后使用该报告创建要使用 S3 批量操作复制的对象列表(清单)。有关在源账户或目标账户中使用 CSV 清单的信息,请参阅 使用 CSV 清单跨 Amazon Web Services 账户 复制对象。
Amazon S3 清单生成桶中的对象的清单。生成的列表将发布到输出文件。进行清点的桶称为源桶,其中存储清单报告文件的桶称为目标桶。
Amazon S3 清单报告可配置为传输到另一个 Amazon Web Services 账户。如果这样做,则在目标账户中创建任务时,将支持 S3 批量操作读取清单报告。
有关 Amazon S3 清单源桶和目标桶的更多信息,请参阅 源存储桶和目标存储桶。
设置清单的最简单方法是使用 Amazon S3 控制台,不过您也可以使用 Amazon S3 REST API、Amazon Command Line Interface (Amazon CLI) 或 Amazon SDK。
以下控制台过程包含用于设置 S3 分批操作任务的权限的概要步骤。在此过程中,您将对象从源账户复制到目标账户,并将清单报告存储在目标账户中。
为由不同账户拥有的源桶和目标桶设置 Amazon S3 清单
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在左侧导航窗格中,选择存储桶。
-
确定(或创建)用于存储清单报告的目标清单存储桶。在此过程中,目标账户 是同时拥有目标清单桶和对象要复制到的桶的账户。
-
为源存储桶配置清单报告。有关如何使用控制台配置清单或如何加密清单列表文件的信息,请参阅配置 Amazon S3 清单。
配置清单报告时,请指定要将该列表存储在其中的目标存储桶。源桶的清单报告将发布到目标桶。在此过程中,源账户 是拥有源桶的账户。
为输出格式选择 CSV。
输入目标桶的信息时,请选择 Buckets in another account(另一个账户中的桶)。然后,输入目标清单桶的名称。或者,可以输入目标账户的账户 ID。
在保存清单配置后,控制台会显示类似于以下内容的一条消息:
Amazon S3 无法在目标桶上创建桶策略。要求目标桶拥有者添加以下桶策略,以允许 Amazon S3 在该桶中放置数据。
然后,控制台会显示可用于目标桶的桶策略。
-
复制显示在控制台上的目标桶策略。
-
在目标账户中,将复制的桶策略添加到存储清单报告所在的目标清单桶。
-
在目标账户中创建一个基于 S3 分批操作信任策略的角色。有关该信任策略的更多信息,请参阅信任策略。
有关创建角色的更多信息,请参阅《IAM 用户指南》中的创建向 Amazon Web Services 服务委派权限的角色。
输入角色的名称(以下示例角色使用名称
)。选择 S3 服务,然后选择 S3 批量操作使用案例,这会将信任策略应用于该角色。BatchOperationsDestinationRoleCOPY
然后选择 Create policy (创建策略) 以将以下策略附加到该角色。要使用这一策略,请将
替换为您自己的信息。user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowBatchOperationsDestinationObjectCOPY
", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectVersionAcl", "s3:PutObjectAcl", "s3:PutObjectVersionTagging", "s3:PutObjectTagging", "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*", "arn:aws:s3:::amzn-s3-demo-source-bucket
/*", "arn:aws:s3:::amzn-s3-demo-manifest-bucket
/*" ] } ] }该角色使用策略授予
batchoperations.s3.amazonaws.com
权限来读取目标桶中的清单。该角色还授予GET
源对象存储桶中对象、访问控制列表(ACL)、标签和版本的权限。并且,该角色还授予将对象、ACL、标签和版本PUT
到目标对象存储桶中的权限。 -
在源账户中,为源存储桶创建存储桶策略,该策略向您在上一步中创建的角色授予
GET
源存储桶中对象、ACL、标签和版本的权限。此步骤允许 S3 分批操作通过可信角色获取源桶中的对象。以下是源账户的桶策略的示例。要使用这一策略,请将
替换为您自己的信息。user input placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowBatchOperationsSourceObjectCOPY
", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::DestinationAccountNumber
:role/BatchOperationsDestinationRoleCOPY
" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket
/*" } ] } -
在清单报告可用后,在目标账户中创建一个 S3 批量操作复制 (
CopyObject
) 任务,并从目标清单存储桶中选择清单报告。您需要您在目标账户中创建的 IAM 角色的 ARN。有关创建任务的一般信息,请参阅 创建 S3 批量操作任务。
有关使用控制台创建任务的信息,请参阅创建 S3 批量操作任务。