使用清单报告跨 Amazon Web Services 账户 复制对象 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用清单报告跨 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 清单
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. 确定(或创建)用于存储清单报告的目标清单存储桶。在此过程中,目标账户 是同时拥有目标清单桶和对象要复制到的桶的账户。

  4. 为源存储桶配置清单报告。有关如何使用控制台配置清单或如何加密清单列表文件的信息,请参阅配置 Amazon S3 清单

    配置清单报告时,请指定要将该列表存储在其中的目标存储桶。源桶的清单报告将发布到目标桶。在此过程中,源账户 是拥有源桶的账户。

    为输出格式选择 CSV

    输入目标桶的信息时,请选择 Buckets in another account(另一个账户中的桶)。然后,输入目标清单桶的名称。或者,可以输入目标账户的账户 ID。

    在保存清单配置后,控制台会显示类似于以下内容的一条消息:

    Amazon S3 无法在目标桶上创建桶策略。要求目标桶拥有者添加以下桶策略,以允许 Amazon S3 在该桶中放置数据。

    然后,控制台会显示可用于目标桶的桶策略。

  5. 复制显示在控制台上的目标桶策略。

  6. 在目标账户中,将复制的桶策略添加到存储清单报告所在的目标清单桶。

  7. 在目标账户中创建一个基于 S3 分批操作信任策略的角色。有关该信任策略的更多信息,请参阅信任策略

    有关创建角色的更多信息,请参阅《IAM 用户指南》中的创建向 Amazon Web Services 服务委派权限的角色

    输入角色的名称(以下示例角色使用名称 BatchOperationsDestinationRoleCOPY)。选择 S3 服务,然后选择 S3 批量操作使用案例,这会将信任策略应用于该角色。

    然后选择 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 到目标对象存储桶中的权限。

  8. 在源账户中,为源存储桶创建存储桶策略,该策略向您在上一步中创建的角色授予 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/*" } ] }
  9. 在清单报告可用后,在目标账户中创建一个 S3 批量操作复制 (CopyObject) 任务,并从目标清单存储桶中选择清单报告。您需要您在目标账户中创建的 IAM 角色的 ARN。

    有关创建任务的一般信息,请参阅 创建 S3 批量操作任务

    有关使用控制台创建任务的信息,请参阅创建 S3 批量操作任务