

# 使用 S3 分批操作启用 S3 对象锁定
<a name="batch-ops-object-lock"></a>

可以将 Amazon S3 批量操作与 S3 对象锁定结合使用，以便同时为许多 Amazon S3 对象管理保留或启用法定保留。您可以在清单中指定目标对象的列表并将该列表提交到分批操作以完成操作。有关更多信息，请参阅[S3 对象锁定保留](batch-ops-retention-date.md)和[S3 对象锁定依法保留](batch-ops-legal-hold.md)。

以下示例说明如何创建具有 S3 批量操作权限的 AWS Identity and Access Management（IAM）角色并更新角色权限，来创建启用对象锁定的任务。还必须有一个 `CSV` 清单来标识 S3 批量操作任务的对象。有关更多信息，请参阅 [指定清单](batch-ops-create-job.md#specify-batchjob-manifest)。

要使用以下示例，请将 *`user input placeholders`* 替换为您自己的信息。

## 使用 AWS CLI
<a name="batchops-example-cli-object-lock"></a>

1. 创建 IAM 角色并为 S3 分批操作分配运行权限。

   所有 S3 分批操作任务都必须执行此步骤。

   ```
   export AWS_PROFILE='aws-user'
   
   read -d '' batch_operations_trust_policy <<EOF
   {
     "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "batchoperations.s3.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   EOF
   aws iam create-role --role-name batch_operations-objectlock \
   --assume-role-policy-document "${batch_operations_trust_policy}"
   ```

1. 设置要运行的 S3 分批操作和 S3 对象锁定。

   在此步骤中，允许角色执行以下操作：

   1. 在包含您希望在其上运行分批操作的目标对象的 S3 存储桶上运行对象锁定。

   1. 读取清单 CSV 文件和对象所在的 S3 存储桶。

   1. 将 S3 分批操作任务的结果写入报告存储桶。

   ```
   read -d '' batch_operations_permissions <<EOF
   {
       "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:GetBucketObjectLockConfiguration",
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-completion-report-bucket}}/*"
               ]
           }
       ]
   }
   EOF
   
   aws iam put-role-policy --role-name batch_operations-objectlock \
   --policy-name object-lock-permissions \
   --policy-document "${batch_operations_permissions}"
   ```

## 使用适用于 Java 的 AWS 开发工具包
<a name="batchops-examples-java-object-lock"></a>

可以使用适用于 Java 的 AWS SDK 创建具有 S3 批量操作权限的 IAM 角色，并更新角色权限来创建启用对象锁定的任务。您还必须有一个 `CSV` 清单来标识 S3 分批操作任务的对象。有关更多信息，请参阅 [指定清单](batch-ops-create-job.md#specify-batchjob-manifest)。

执行以下步骤：

1. 创建 IAM 角色并为 S3 分批操作分配运行权限。所有 S3 分批操作任务都必须执行此步骤。

1. 设置要运行的 S3 分批操作和 S3 对象锁定。

   允许角色执行以下操作：

   1. 在包含您希望在其上运行分批操作的目标对象的 S3 存储桶上运行对象锁定。

   1. 读取清单 CSV 文件和对象所在的 S3 存储桶。

   1. 将 S3 分批操作任务的结果写入报告存储桶。

有关演示如何通过将 S3 批量操作与适用于 Java 的 AWS SDK 结合使用来创建 IAM 角色以启用 S3 对象锁定的代码示例，请参阅《AWS SDK for Java 2.x Code Examples》**中的 [CreateObjectLockRole.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/batch/CreateObjectLockRole.java)。