

# 替换访问控制列表（ACL）
<a name="batch-ops-put-object-acl"></a>

可以使用 Amazon S3 批量操作对 Amazon S3 对象执行大规模批量操作。**替换访问控制列表（ACL）**操作会替换在清单中列出的每个对象的访问控制列表（ACL）。使用 ACL，您可以定义谁可以访问某个对象，以及他们可以执行哪些操作。

**注意**  
Amazon S3 中的大多数现代使用案例不再需要使用 ACL。我们建议您将 ACL 保持为禁用状态，除非有需要单独控制每个对象的访问权限的情况。禁用 ACL 后，您可以使用策略来控制对存储桶中所有对象的访问权限，无论是谁将对象上传到您的存储桶。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

S3 批量操作支持您定义的自定义 ACL 以及 Amazon S3 随预定义的访问权限集提供的标准 ACL。

如果清单中的对象位于受版本控制的存储桶中，您可将 ACL 应用到每个对象的特定版本。为此，请为清单中的每个对象指定版本 ID。如果您没有包括任何对象的版本 ID，S3 批量操作将 ACL 应用到对象的最新版本。

有关 Amazon S3 中 ACL 的更多信息，请参阅[访问控制列表 (ACL) 概述](acl-overview.md)。

**S3 阻止公有访问**  
如果您要限制对存储桶中所有对象的公共访问权限，建议您使用 Amazon S3 屏蔽公共访问权限，而不是使用 S3 批量操作来应用 ACL。阻止公有访问可以在各个存储桶或整个账户的范围进行，并且只需一个简单的操作，立即生效。当您的目标是控制对某个存储桶或账户中所有对象的公共访问权限时，此行为使 Amazon S3 屏蔽公共访问权限成为更好的选择。仅当您需要将自定义 ACL 应用到清单中的每个对象时，才使用 S3 批量操作。有关 S3 阻止公有访问的更多信息，请参阅 [阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

**S3 对象所有权**  
如果清单中的对象位于存储桶中，而该存储桶对于对象所有权使用**强制存储桶拥有者**设置，则**替换访问控制列表（ACL）**操作只能指定向存储桶拥有者授予完全控制权限的对象 ACL。在这种情况下，**替换访问控制列表（ACL）**操作无法将对象 ACL 权限授予其它 Amazon Web Services 账户或组。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

## 限制和局限性
<a name="batch-ops-put-object-acl-restrictions"></a>

使用批量操作来替换 ACL 时，以下限制和局限性适用：
+ 您指定用于运行**替换访问控制列表（ACL）**任务的 Amazon Identity and Access Management（IAM）角色必须有权执行基础 Amazon S3 `PutObjectAcl` 操作。有关所需权限的更多信息，请参阅《Amazon Simple Storage Service API 参考》**中的 [https://docs.amazonaws.cn/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.amazonaws.cn/AmazonS3/latest/API/API_PutObjectAcl.html)。
+ S3 分批操作使用 Amazon S3 `PutObjectAcl` 操作，将指定的 ACL 应用到清单中的每个对象。因此，适用于基础 `PutObjectAcl` 操作的所有限制和局限性也适用于 S3 批量操作**替换访问控制列表（ACL）**任务。
+ 单个替换访问控制列表作业可以支持包含多达 200 亿个对象的清单。