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

使用版本控制

版本控制是在相同的存储桶中保留对象的多个变量的方法。对于 Amazon S3 桶中存储的每个对象,您可以使用版本控制功能来保存、检索和还原它们的各个版本。使用版本控制能够轻松从用户意外操作和应用程序故障中恢复数据。

例如,在一个存储桶中,您可以拥有两个具有相同键的对象,但版本 ID 却不同,例如 photo.gif (版本 111111) 和 photo.gif (版本 121212)。

通过启用了版本控制的存储桶可以恢复因意外删除或覆盖操作而失去的对象。例如:

  • 如果删除对象 (而不是永久移除它),则 Amazon S3 会插入删除标记,该标记将成为当前对象版本。您始终可以恢复以前的版本。有关更多信息,请参阅 删除数据元版本

  • 如果覆盖对象,则会导致存储桶中出现新的对象版本。您始终可以恢复以前的版本。

重要

如果您在不受版本控制的存储桶中具有对象到期生命周期策略,并且希望在启用版本控制时保持相同的永久删除行为,则必须添加非当前版本到期策略。非当前版本到期生命周期策略将管理在受版本控制的存储桶中删除非当前对象版本的行为。(启用版本控制的存储桶会维护一个当前对象版本,以及零个或零个以上非当前对象版本。)有关更多信息,请参阅如何为 S3 存储桶创建生命周期策略? (在 Amazon Simple Storage Service 控制台用户指南 中)。

存储桶可处于以下三种状态之一:非版本化 (默认) 、启用版本控制或暂停版本控制。

重要

一旦您对存储桶启用了版本控制,它将无法返回到无版本控制状态。但是,您可以在该存储桶上暂停版本控制。

版本控制状态将应用到该存储桶中的所有 (不是某些) 对象。您第一次对存储桶启用版本控制后,该存储桶中的对象将在之后一直受版本控制,并具有唯一的版本 ID。请注意以下几点:

  • 在您设置版本控制状态之前存储在存储桶中的对象具有版本 ID null。启用版本控制时,存储桶中的现有对象不会更改。更改的是 Amazon S3 在以后的请求中处理这些对象的方式。有关更多信息,请参阅 在启用了版本控制的存储桶中管理对象

  • 存储桶拥有者 (或任何具有适当权限的用户) 可以暂停版本控制以停止累积对象版本。暂停版本控制时,存储桶中的现有对象不会更改。更改的是 Amazon S3 在以后的请求中处理对象的方式。有关更多信息,请参阅 管理已暂停版本控制的存储桶中的对象

如何对存储桶配置版本控制

可以使用以下任何方法配置存储桶版本控制:

  • 使用 Amazon S3 控制台配置版本控制。

  • 使用 AWS 开发工具包以编程方式配置版本控制

    控制台和开发工具包都调用 Amazon S3 为管理版本控制而提供的 REST API。

    注意

    如果需要,也可以直接从代码中调用 Amazon S3 REST API。但是,这可能会比较繁琐,因为需要您编写代码对请求进行身份验证。

    您创建的每个存储桶都具有关联的 versioning 子资源 (请参阅存储桶配置选项)。默认情况下,您的存储桶无版本控制,因而 versioning 子资源会存储空的版本控制配置。

    Copy
    <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </VersioningConfiguration>

    要启用版本控制,请向 Amazon S3 发送一个请求,在请求中指定包含状态的版本控制配置。

    Copy
    <VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> </VersioningConfiguration>

    要暂停版本控制,请将状态值设置为 Suspended

存储桶拥有者 (创建存储桶的 AWS 账户,即根账户) 和授权用户可以配置存储桶的版本控制状态。有关许可的更多信息,请参阅管理对 Amazon S3 资源的访问权限

有关配置版本控制的示例,请参阅启用存储桶版本控制的示例

MFA 删除

您可以选择配置存储桶以启用 MFA (Multi-Factor Authentication) 删除 (这需要对以下任一操作额外进行身份验证),从而另外增加一层安全性。

  • 更改存储桶的版本控制状态

  • 永久删除对象版本

MFA 删除需要结合使用两种形式的身份验证:

  • 您的安全凭证

  • 在已批准的身份验证设备上显示的有效序列号、空格和 6 位代码的组合

MFA 删除因而因此可在某些情况下 (例如在安全凭证受损时) 提供更高的安全性。

要启用或禁用 MFA 删除,请使用对存储桶配置版本控制时所用的相同 API。Amazon S3 将 MFA 删除配置存储在用于存储存储桶版本控制状态的相同 versioning 子资源中。

Copy
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>VersioningState</Status> <MfaDelete>MfaDeleteState</MfaDelete> </VersioningConfiguration>

要使用 MFA 删除,您可以使用硬件或虚拟 MFA 设备来生成身份验证代码。以下示例显示了在硬件设备上显示的生成的身份验证代码。

注意

MFA 删除和受 MFA 保护的 API 访问的功能旨在提供对不同方案的保护。您可以在存储桶上配置 MFA 删除,以确保存储桶中的数据无法被意外删除。受 MFA 保护的 API 访问用于在访问敏感的 Amazon S3 资源时,强制执行其他身份验证因素 (MFA 代码)。您可以要求使用 MFA 创建的临时凭证来完成针对这些 Amazon S3 资源的任何操作。有关示例,请参阅添加存储桶策略以要求进行 MFA 身份验证

有关如何购买和激活身份验证设备的更多信息,请参阅 http://www.amazonaws.cn/iam/details/mfa/

注意

该存储桶的拥有者 (创建存储桶的 AWS 账户,根账户) 和所有授权 IAM 用户都可以启用版本控制,但只有存储桶拥有者 (根账户) 才能启用 MFA 删除。

有关更多信息,请参阅以下主题: