Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon S3 Object Lock概述

保留模式

Amazon S3 Object Lock提供两种保留模式:监管和合规性。这些保留模式对对象应用不同级别的保护。可将任意一种保留模式应用于受 S3 Object Lock保护的任意对象版本。

监管 模式中,除非用户具有特殊权限,否则用户不能覆盖或删除对象版本,或更改其锁定设置。使用监管模式,您可以保护对象,以免被大多数用户删除,但您仍可向部分用户授予在必要时更改保留设置或删除对象的权限。您还可以在创建合规性模式保留周期之前使用监管模式测试保留周期设置。为了覆盖或删除监管模式保留设置,用户必须具有 s3:BypassGovernanceMode 权限,并且必须在需要覆盖监管模式的任何请求中显式包含 x-amz-bypass-governance-retention:true 作为请求标题。

合规性模式中,任何用户都不能覆盖或删除受保护的对象版本,包括 AWS 账户中的根用户。在合规性模式下锁定对象后,其保留模式便无法更改,其保留周期也不能缩短。合规性模式确保在保留周期内无法覆盖或删除对象版本。

注意

您在施加或更改对象锁定时更新对象版本的元数据不会覆盖对象版本或重置其 Last-Modified 时间戳。

保留周期

保留周期可在固定时间内保护对象版本。当您对对象版本施加保留周期时,Amazon S3 会在该对象版本的元数据中存储时间戳,以指示保留周期的到期时间。在保留周期到期后,便可覆盖或删除对象版本,除非您还对该对象版本施加了依法保留。

可以显式方式或通过存储桶默认设置对对象版本施加保留周期。当您以显式方式对对象版本应用保留周期时,需为对象版本指定“Retain Until Date”(保留到期日期)。Amazon S3 将“Retain Until Date”(保留到期日期) 存储在对象版本的元数据中,并将在保留周期到期之前一直保护对象版本。

在使用存储桶默认设置时,不需指定“Retain Until Date”(保留到期日期)。而应指定放入存储桶的每个对象版本应被保护的持续时间,以天或年为单位。当您将对象放入存储桶时,Amazon S3 通过将该对象版本的创建时间戳加上指定的持续时间来计算其“Retain Until Date”(保留到期日期),并将“Retain Until Date”(保留到期日期) 存储在对象版本的元数据中。然后,该对象版本将得到保护,与您对该对象版本施加带保留周期的锁定完全相同。

注意

如果您将对象版本放入存储桶的请求包含显式保留模式和周期,则这些设置将覆盖该对象版本的任何存储桶默认设置。

与所有其他 S3 Object Lock设置一样,保留周期适用于各个对象版本。单个对象的不同版本可以具有不同的保留模式和周期。

例如,如果您将 15 天的对象放入 30 天保留周期,并将一个保留周期为 60 天的同名对象 PUT 到 S3 中,您的 PUT 操作将成功,Amazon S3 将创建一个保留周期为 60 天的新对象版本。较旧版本将保持其原来的保留周期,并且可在 15 天内删除。

可在对对象版本应用保留设置后延长保留周期。要执行此操作,您需对该对象版本提交新锁定请求,其“Retain Until Date”(保留到期日期) 比当前为该对象版本配置的保留到期日期晚。Amazon S3 将用更长的新周期替换现有的保留周期。有权实施对象保留周期的任何用户都可为在任一模式下锁定的对象版本延长保留周期。

S3 Object Lock还允许您对对象版本实施依法保留。与保留周期相似,依法保留可防止对象版本被覆盖或删除。但是,依法保留没有关联的保留周期,在删除之前将一直有效。拥有 s3:PutObjectLegalHold 权限的任何用户均可自由实施和删除依法保留。

依法保留与保留周期无关。只要包含对象的存储桶已启用 S3 Object Lock,您便可实施和删除依法保留,无论指定的对象版本是否已设置保留周期。对对象版本实施依法保留不会影响该对象版本的保留模式或保留周期。例如,如果您对某一对象版本实施依法保留,同时该对象版本也受保留周期保护,然后该保留周期过期,那么该对象不会失去其 WORM 保护。依法保留将继续保护该对象,直至授权用户明确将其删除。与之相似,如果您在对象版本的保留周期生效时删除依法保留,该对象版本将一直受保护,直至保留周期过期。

存储桶配置

为了使用 S3 Object Lock,您需要先为存储桶启用对象锁定。您还可以选择配置将应用于存储桶中放置的新对象的默认保留模式和保留周期。

启用对象锁定

在锁定任何对象之前,您必须配置要使用 Amazon S3 Object Lock的存储桶。要为 S3 Object Lock配置存储桶,需要指定要启用 S3 Object Lock的存储桶的创建时间。为 S3 Object Lock配置存储桶后,便可使用保留周期和/或依法保留锁定该存储桶中的对象。

注意

  • 您只能为新存储桶启用 S3 Object Lock。如果您需要为现有存储桶启用 S3 Object Lock,请联系 AWS Support。

  • 如果您创建存储桶时启用了 S3 Object Lock,Amazon S3 将自动为该存储桶启用版本控制。

  • 如果您创建存储桶时启用了 S3 Object Lock,您将无法为该存储桶禁用对象锁定或暂停版本控制。

默认保留设置

为存储桶启用 S3 Object Lock会使该存储桶可以存储受保护的对象,但不会自动保护您放入存储桶的对象。如果您要自动保护放入存储桶的对象版本,则可配置默认保留周期。除非您在创建对象时为其明确指定了不同的保留模式和保留周期,否则默认设置将应用于放入存储桶的所有新对象。

提示

如果您要对放入存储桶的所有新对象版本实施存储桶默认保留模式和保留周期,则可设置存储桶默认设置并拒绝用户实施对象保留设置的权限。然后,Amazon S3 将对放入存储桶的新对象版本应用默认保留模式和保留周期,并拒绝所有要放入包含保留模式和设置的对象的请求。

存储桶默认设置需要提供模式和周期。存储桶默认模式为监管或合规性,如保留模式中所述。不将默认保留周期描述为时间戳,而将其描述为以天或年为单位的时间段。当您将对象放入具有默认保留周期的存储桶时,S3 Object Lock 将通过将该对象版本的创建时间戳加上默认保留周期来计算“Retain Until Date”(保留到期日期)。Amazon S3 会将得到的时间戳存储为该对象版本的保留到期日期,就像您手动计算时间戳并将其施加于对象版本一样。

默认设置仅应用于放入存储桶的新对象。对存储桶实施默认保留设置不会对该存储桶中已存在的对象实施任何保留设置。

重要

对象锁定仅应用于单个对象版本。如果您将对象放入具有默认保留周期的存储桶,并且您没有为该对象明确指定保留周期,则 Amazon S3 创建的对象将具有与存储桶默认设置匹配的保留周期。创建对象后,其保留周期将与存储桶的默认保留周期无关。更改存储桶的默认保留周期不会改变该存储桶中任何对象的现有保留周期。

所需权限

S3 Object Lock操作需要下表所列的权限。

S3 对象锁定权限

运算 所需权限
创建或修改对象版本的保留模式和周期 s3:PutObjectRetention
创建或修改对象版本的依法保留 s3:PutObjectLegalHold
获取对象版本的保留模式和周期 s3:GetObjectRetention
获取对象版本的依法保留状态 s3:GetObjectLegalHold
绕过监管保留模式 s3:BypassGovernanceRetention
获取存储桶的对象锁定配置 s3:GetBucketObjectLockConfiguration
创建或修改存储桶的对象锁定配置 s3:PutBucketObjectLockConfiguration

限制

使用跨区域复制 (CRR) 无法从已启用 S3 Object Lock的存储桶进行复制。如果您尝试使用为 S3 Object Lock配置的源存储桶设置 CRR 规则,请求将失败。但可将已启用 S3 Object Lock的存储桶用作 CRR 规则的目标存储桶。这样您便可以对复制的对象应用 WORM 保护。有关 CRR 的更多信息,请参阅 跨区域复制