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

使用发送到目标账户的清单报告来跨 Amazon Web Services 账户 复制对象

您可以使用 Amazon S3 清单创建清单报告,然后使用该报告创建要使用 S3 分批操作复制的对象列表。有关在源账户或目标账户中使用 CSV 清单的信息,请参阅 使用存储在源账户中的 CSV 清单跨 Amazon Web Services 账户 复制对象

Amazon S3 清单生成桶中的对象的清单。生成的列表将发布到输出文件。进行清点的桶称为源桶,其中存储清单报告文件的桶称为目标桶

Amazon S3 清单报告可配置为传输到另一个 Amazon Web Services 账户。这将在目标账户中创建任务时允许 S3 分批操作读取清单报告。

有关 Amazon S3 清单源桶和目标桶的更多信息,请参阅 源存储桶和目标存储桶

设置清单的最简单方法是使用 Amazon Web Services Management Console,不过您也可以使用 REST API、Amazon Command Line Interface (Amazon CLI) 或 Amazon 开发工具包。

以下控制台过程包含用于设置 S3 分批操作任务的权限的概要步骤。在此过程中,您将对象从源账户复制到目标账户,并将清单报告存储在目标账户中。

为由不同账户拥有的源桶和目标桶设置 Amazon S3 清单
  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 选择要将清单报告存储在其中的目标桶。

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

  3. 配置一个清单以列出源桶中的对象并将该列表发布到目标清单桶。

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

    有关如何使用控制台配置清单或如何加密清单列表文件的信息,请参阅配置 Amazon S3 清单

    为输出格式选择 CSV

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

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

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

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

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

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

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

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

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

    然后选择 Create policy (创建策略) 以将以下策略附加到该角色。

    { "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:::ObjectDestinationBucket/*", "arn:aws:s3:::ObjectSourceBucket/*", "arn:aws:s3:::ObjectDestinationManifestBucket/*" ] } ] }

    该角色使用策略授予 batchoperations.s3.amazonaws.com 权限来读取目标桶中的清单。它还授予对源对象桶中的 GET 对象、访问控制列表 (ACL)、标签和版本的权限。此外,还授予对目标对象桶中的 PUT 对象、ACL、标签和版本的权限。

  7. 在源账户中,为源桶创建一个桶策略,该策略向您在上一步中创建的角色授予源桶中的 GET 对象、ACL、标签和版本的权限。此步骤允许 S3 分批操作通过可信角色获取源桶中的对象。

    以下是源账户的桶策略的示例。

    { "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:::ObjectSourceBucket/*" } ] }
  8. 在清单报告可用后,在目标账户中创建一个 S3 分批操作 PUT 对象复制任务,同时从目标清单桶中选择清单报告。您需要在目标账户中创建的角色的 ARN。

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

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