

# 将 S3 分批操作与 S3 对象锁定保留合规模式结合使用
<a name="batch-ops-compliance-mode"></a>

以下示例基于上述创建信任策略以及在对象上设置 S3 分批操作和 S3 对象锁定配置权限的示例而构建。此示例将保留模式设置为 `COMPLIANCE`，并将 `retain until date` 设置为 2025 年 1 月 1 日。此示例将创建一个任务，该任务以清单存储桶中的对象为目标，并在您标识的报告存储桶中报告结果。

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

## 使用 Amazon CLI
<a name="batch-ops-cli-object-lock-compliance-example"></a>

以下 Amazon CLI 示例说明如何使用批量操作跨多个对象应用 S3 对象锁定保留合规模式。

**Example — 跨多个对象设置 S3 对象锁定保留合规模式**  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-01T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::ReportBucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "amzn-s3-demo-completion-report-bucket/compliance-objects-batch-operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Set compliance retain-until to 1 Jul 2030";
```

**Example — 将 `COMPLIANCE` 模式的 `retain until date` 延长至 2025 年 1 月 15 日**  
以下示例将 `COMPLIANCE` 模式的 `retain until date` 延长至 2025 年 1 月 15 日。  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-15T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/compliance-objects-batch_operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Extend compliance retention to 15 Jan 2025";
```

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

以下适用于 Java 的 Amazon SDK 示例说明如何使用批量操作跨多个对象应用 S3 对象锁定保留合规模式，包括将保留模式设置为具有保留截止日期的 COMPLIANCE 和延长 COMPLIANCE 模式保留截止日期。

有关如何使用批量操作通过适用于 Java 的 Amazon SDK 对多个对象应用 S3 对象锁定保留合规模式的示例，请参阅《Amazon S3 API Reference》**中的 [Use CreateJob with an Amazon SDK or CLI](https://docs.amazonaws.cn/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html)。