

# 使用 CSV 清单跨 AWS 账户 复制对象
<a name="specify-batchjob-manifest-xaccount-csv"></a>

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

可以使用存储在源账户中的 CSV 清单，通过 S3 批量操作跨 AWS 账户复制对象。要使用 S3 清单报告作为清单，请参阅[使用清单报告跨 AWS 账户 复制对象](specify-batchjob-manifest-xaccount-inventory.md)。

有关清单文件的 CSV 格式的示例，请参阅[创建清单文件](batch-ops-create-job.md#create-manifest-file)。

以下过程显示了当使用 S3 批量操作任务通过存储在源账户中的 CSV 清单文件将对象从源账户复制到目标账户时，如何设置权限。

**使用 CSV 清单跨 AWS 账户复制对象**

1. 在目标账户中创建一个基于 S3 批量操作信任策略的 AWS Identity and Access Management（IAM）角色。在此过程中，*目标账户*是对象要复制到的账户。

   有关信任策略的更多信息，请参阅[信任策略](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust)。

   有关创建角色的更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/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）、标签和版本的权限。它还授予对目标对象存储桶中的 `PUT` 对象、ACL、标签和版本的权限。

1. 在源账户中，为包含清单的存储桶创建存储桶策略，来向您在上一步中创建的角色授予对源清单存储桶中 `GET` 对象和版本的权限。

   此步骤可让 S3 批量操作通过使用可信角色来读取清单。将存储桶策略应用于包含清单的存储桶。

   以下是要应用于源清单存储桶的存储桶策略的示例。要使用此策略，请将 *`user input placeholders`* 替换为您自己的信息。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceManifestRead",
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::111122223333:user/ConsoleUserCreatingJob",
             "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
           ]
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
       }
     ]
   }
   ```

------

   此策略还授予权限来允许要在目标账户中创建任务的控制台用户通过相同的存储桶策略具有源清单存储桶中的相同权限。

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 分批操作任务。您需要您在目标账户中创建的角色的 Amazon Resource Name (ARN)。有关创建作业的更多信息，请参阅[创建 S3 批量操作任务](batch-ops-create-job.md)。