

# 使用清单报告跨 Amazon Web Services 账户 复制对象
<a name="specify-batchjob-manifest-xaccount-inventory"></a>

可以使用 Amazon S3 批量操作对 Amazon S3 对象执行大规模批量操作。可以使用 S3 批量操作创建**复制** (`CopyObject`) 任务，以便在同一账户内复制对象或将对象复制到不同的目标账户。

可以使用 Amazon S3 清单创建清单报告，然后使用该报告创建要使用 S3 批量操作复制的对象列表（清单）。有关在源账户或目标账户中使用 CSV 清单的信息，请参阅 [使用 CSV 清单跨 Amazon Web Services 账户 复制对象](specify-batchjob-manifest-xaccount-csv.md)。

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

Amazon S3 清单报告可配置为传输到另一个 Amazon Web Services 账户。如果这样做，则在目标账户中创建任务时，将支持 S3 批量操作读取清单报告。

有关 Amazon S3 清单源桶和目标桶的更多信息，请参阅 [源存储桶和目标存储桶](storage-inventory.md#storage-inventory-buckets)。

设置清单的最简单方法是使用 Amazon S3 控制台，不过您也可以使用 Amazon S3 REST API、Amazon Command Line Interface (Amazon CLI) 或 Amazon SDK。

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

**为由不同账户拥有的源桶和目标桶设置 Amazon S3 清单**

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在左侧导航窗格中，选择**存储桶**。

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

1. 为源存储桶配置清单报告。有关如何使用控制台配置清单或如何加密清单列表文件的信息，请参阅[配置 Amazon S3 清单](configure-inventory.md)。

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

   为输出格式选择 **CSV**。

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

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

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

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

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

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

1. 在目标账户中创建一个基于 S3 分批操作信任策略的角色。有关该信任策略的更多信息，请参阅[信任策略](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust)。

   有关创建角色的更多信息，请参阅《IAM 用户指南》**中的[创建向 Amazon Web Services 服务委派权限的角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-service.html)。

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

   然后选择 **Create policy (创建策略)** 以将以下策略附加到该角色。要使用此策略，请将 *`user input placeholders`* 替换为您自己的信息。

------
#### [ JSON ]

****  

   ```
   {
     "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` 到目标对象存储桶中的权限。

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

   以下是源账户的桶策略的示例。要使用此策略，请将 *`user input placeholders`* 替换为您自己的信息。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowBatchOperationsSourceObjectCOPY",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
               },
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetObjectAcl",
                   "s3:GetObjectTagging",
                   "s3:GetObjectVersionAcl",
                   "s3:GetObjectVersionTagging"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
           }
       ]
   }
   ```

------

1. 在清单报告可用后，在目标账户中创建一个 S3 批量操作**复制** (`CopyObject`) 任务，并从目标清单存储桶中选择清单报告。您需要您在目标账户中创建的 IAM 角色的 ARN。

   有关创建任务的一般信息，请参阅 [创建 S3 批量操作任务](batch-ops-create-job.md)。

   有关使用控制台创建任务的信息，请参阅[创建 S3 批量操作任务](batch-ops-create-job.md)。