

# S3 バッチ操作を使用した S3 オブジェクトロックの有効化
<a name="batch-ops-object-lock"></a>

Amazon S3 バッチオペレーションを S3 Object Lock とともに使用すると、一度に多くの Amazon S3 オブジェクトの保持を管理したり、リーガルホールドを有効にしたりできます。マニフェストでターゲットオブジェクトのリストを指定し、そのマニフェストをジョブの完了のためにバッチ操作に送信します。詳細については、「[S3 オブジェクトロックの保持](batch-ops-retention-date.md)」および「[S3 オブジェクトロックのリーガルホールド](batch-ops-legal-hold.md)」を参照してください。

以下の例では、S3 バッチオペレーションアクセス許可を持つ AWS Identity and Access Management (IAM) ロールを作成し、そのロールのアクセス許可を更新して Object Lock を有効化するジョブを作成する方法を示します。S3 バッチオペレーションジョブのオブジェクトを識別する `CSV` マニフェストも必要です。詳細については、「[マニフェストの指定](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}"
   ```

## AWS SDK for Java の使用
<a name="batchops-examples-java-object-lock"></a>

S3 バッチオペレーション許可を持つ IAM ロールを作成し、AWS SDK for Java を使用して Object Lock を有効にするジョブを作成するためにロールの許可を更新できます。S3 バッチ操作ジョブのオブジェクトを識別する `CSV` マニフェストも必要です。詳細については、「[マニフェストの指定](batch-ops-create-job.md#specify-batchjob-manifest)」を参照してください。

以下のステップを実行します。

1. IAM ロールを作成し、実行する S3 バッチ操作のアクセス許可を割り当てます。このステップは、すべての S3 バッチ操作ジョブで必要です。

1. S3 オブジェクトロックを使用して S3 バッチ操作を実行するように設定します。

   ロールに以下のことを許可します。

   1. バッチ操作を実行するターゲットオブジェクトを含む S3 バケットでオブジェクトロックを実行します。

   1. マニフェスト CSV ファイルとオブジェクトがある S3 バケットを読み取る。

   1. S3 バッチ操作ジョブの結果をレポートバケットに書き込みます。

AWS SDK for Java で S3 バッチオペレーションを使用して S3 Object Lock を有効にするために IAM ロールを作成する方法を示すコード例については、「*AWS SDK for Java 2.x のコード例*」の「[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)」を参照してください。