

# S3 对象锁定保留
<a name="batch-ops-retention-date"></a>

可以使用 Amazon S3 批量操作对 Amazon S3 对象执行大规模批量操作。可以使用**对象锁定保留**操作，通过*监管*模式或*合规*模式来为对象应用保留日期。这些保留模式会应用不同级别的保护。可将任一保留模式应用于任意对象版本。与依法保留类似，保留日期可防止覆盖或删除对象。Amazon S3 存储在对象的元数据中指定的*保留到期日*，并保护指定的对象版本，直到保留期到期。

可以将 S3 批量操作与对象锁定结合使用，以便同时管理许多 Amazon S3 对象的保留日期。可以在清单中指定目标对象的列表，并将该清单提交到批量操作以完成操作。有关更多信息，请参阅 S3 对象锁定[保留期限](object-lock.md#object-lock-retention-periods)。

具有保留日期的任务 S3 分批操作将持续运行，直至达到完成、取消或失败状态。当要通过单个请求添加、更改或移除许多对象的保留日期时，建议使用 S3 批量操作和 S3 对象锁定保留。

在处理清单中的任何密钥之前，分批操作会验证是否已在您的存储桶上启用对象锁定。要执行操作和验证，批量操作需要 AWS Identity and Access Management（IAM）角色中的 `s3:GetBucketObjectLockConfiguration` 和 `s3:PutObjectRetention` 权限，来支持批量操作代表您调用对象锁定。有关更多信息，请参阅 [对象锁定注意事项](object-lock-managing.md)。

有关将此操作与 REST API 结合使用的信息，请参阅《Amazon Simple Storage Service API 参考》**的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) 操作中的 `S3PutObjectRetention`。

有关使用此操作的 AWS Command Line Interface（AWS CLI）示例，请参阅[使用 AWS CLI](batch-ops-object-lock-retention.md#batch-ops-cli-object-lock-retention-example)。有关 适用于 Java 的 AWS SDK 示例，请参阅[使用适用于 Java 的 AWS SDK](batch-ops-object-lock-retention.md#batch-ops-examples-java-object-lock-retention)。

## 限制和局限性
<a name="batch-ops-retention-date-restrictions"></a>

使用批量操作来应用对象锁定保留期时，以下限制和局限性适用：
+ S3 批量操作不会进行任何存储桶级别的更改。
+ 必须在执行任务的存储桶上配置版本控制和 S3 对象锁定。
+ 清单中列出的所有对象都必须位于同一个存储桶中。
+ 除非清单中明确指定了版本，否则该操作将适用于最新版本的对象。
+ 您需要在 IAM 角色中拥有 `s3:PutObjectRetention` 权限，才能使用**对象锁定保留**任务。
+ 需要 `s3:GetBucketObjectLockConfiguration` IAM 权限，才能确认为您正在对其执行任务的 S3 存储桶启用了对象锁定。
+ 只能在应用 `COMPLIANCE` 模式保留日期的情况下延长对象的保留期，并且不能缩短此保留期。
+ 单个 S3 对象锁定保留作业可以支持包含多达 200 亿个对象的清单。