Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

对象版本控制

通过版本控制,您可以在一个存储桶中保留多个对象版本,例如, my-image.jpg (版本 111111) 和 my-image.jpg (版本 222222)。您可能想要启用版本控制来防止自己意外覆盖和删除版本,或存档对象,以便您可以检索早期版本的对象。

注意

SOAP API 不支持版本控制。HTTP 上的 SOAP 支持已弃用,但是仍可在 HTTPS 上使用。对于 SOAP 将不支持新 Amazon S3 功能。

对象版本控制可与 对象生命周期管理 结合使用,允许您在控制您的相关存储成本的同时,自定义您的数据保留需求。有关使用 AWS 管理控制台 创建生命周期策略的信息,请参阅如何创建 S3 存储桶的生命周期策略? (在 Amazon Simple Storage Service 控制台用户指南 中)。

如果您在不受版本控制的存储桶中具有对象到期生命周期策略,并且希望在启用版本控制时保持相同的永久删除行为,则必须添加非当前版本到期策略。非当前版本到期生命周期策略将管理在受版本控制的存储桶中删除非当前对象版本的行为。(启用版本控制的存储桶会维护一个当前对象版本,以及零个或零个以上非当前对象版本。)

您必须在您的存储桶上显式启用版本控制。默认情况下,版本控制处于禁用状态。无论您是否已启用版本控制,您的存储桶中的每个对象都具有版本 ID。如果未启用版本控制,则 Amazon S3 将版本 ID 值设置为空。如果已启用版本控制,则 Amazon S3 为对象指定唯一版本 ID 值。在存储桶上启用版本控制时,该存储桶中的现有对象 (如果有) 不会发生更改:版本 ID (空) 、内容和权限保持为相同。

已在存储桶级别上完成启用和暂停版本控制。启用存储桶的版本控制时,向其添加的所有对象将具有唯一版本 ID。唯一版本 ID 可随机生成,包括 Unicode、UTF-8 编码、准备就绪的 URL、不透明字符串,长度最大为 1024 个字节。示例版本 ID 是 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo。仅 Amazon S3 可以生成版本 ID。无法对其进行编辑。

注意

为了获得简易性,我们将在我们的所有示例中使用较为简短的 ID。

当您在启用版本控制的存储桶中通过 PUT 放入对象时,不会覆盖非当前版本。下图显示了当将新版本的 photo.gif PUT 在已包含具有相同名称的对象的存储桶中时,原始对象 (ID = 111111) 将保留在该存储桶中,Amazon S3 将生成新版本 ID (121212),并将较新版本添加到该存储桶。

此功能将防止您意外覆盖或删除对象,并向您提供检索早期版本的对象的机会。

DELETE 对象时,所有版本都将保留在存储桶中,且 Amazon S3 将插入删除标记,如下图所示。

删除标记将成为对象的当前版本。默认情况下,GET 请求将检索最新存储的版本。在当前版本为删除标记时,执行简单 GET Object 请求将返回 404 Not Found 错误,如下图所示。

但是,您可以通过指定对象版本 ID,通过 GET 获取非当前版本的对象。在下图中,我们 GET 特定对象版本 111111。即使该对象版本不是当前版本,Amazon S3 也会返回它。

您可以通过指定要删除的版本来永久删除对象。只有 Amazon S3 存储桶的拥有者才能永久删除某个版本。下图显示了 DELETE versionId 如何永久删除存储桶中的对象以及 Amazon S3 不会插入删除标记。

您可以通过配置存储桶来启用 MFA (Multi-Factor Authentication) 删除,从而增加额外的安全性。执行此操作时,存储桶拥有者必须在任何请求中包含两种形式的身份验证,以删除版本或更改存储桶的版本控制状态。有关详细信息,请参阅 MFA 删除

重要

如果您注意到启用版本控制后,Amazon S3 对存储桶的 PUT 或 DELETE 对象请求的 HTTP 503 慢速响应数量显著增加,那么存储桶中可能有一个或多个对象有数以百万计的版本。有关更多信息,请参阅 Amazon S3 疑难解答

有关详细信息,请参阅使用版本控制