Amazon S3 版本控制:是什么、如何、为什么
2023-06-08 08:00:00
·
飞浪
·
Christophe Limpalair
在启用版本控制之前,您应该了解一些事项。我们已经详细解释了这些事项,了解更多信息
使用 Amazon S3 时如何保护重要资产和数据?版本控制功能可以很好地回答这个问题。默认情况下,当您将对象上传到 S3 时,该对象将被冗余存储以提供 99.999999999% 的耐用性。这意味着,对于存储在 S3 上的 10,000 个对象,您可以预期每 10,000,000 年(平均)会丢失一个对象。这些概率相当高,那么我们为什么还需要回答这个问题呢?因为虽然支持 S3 的底层基础设施提供了很高的耐用性,但它无法保护您免于覆盖对象甚至删除这些对象。或者可以吗?默认情况下不是,但如果我们启用版本控制,它就可以。
什么是版本控制?
版本控制会自动跟进同一对象的不同版本。例如,假设您有一个对象(object1)当前存储在存储桶中。在默认设置下,如果您将 object1 的新版本上传到该存储桶,则 object1 将被新版本替换。然后,如果您意识到自己搞砸了并想要恢复以前的版本,除非您在本地计算机上有备份,否则您就没那么幸运了。启用版本控制后,旧版本仍存储在您的存储桶中,并且它具有唯一的版本 ID,因此您仍然可以查看、下载或在应用程序中使用它。
如何启用版本控制?
当我们设置版本控制时,我们会在存储桶级别进行。因此,我们不是为单个对象启用它,而是在存储桶中启用它,并且该存储桶中的所有对象都会从该点开始自动使用版本控制。我们可以从 AWS 控制台或 SDK 和 API 调用在存储桶级别启用版本控制。一旦我们启用版本控制,上传到该存储桶的任何新对象都将收到一个版本 ID。此 ID 用于唯一标识该版本,我们可以使用它在任何时间点检索该对象。如果在启用版本控制之前,该存储桶中已经有对象,那么这些对象的版本 ID 将仅为“null”。那么删除对象呢?当我们使用版本控制执行此操作时会发生什么?如果我们尝试删除该对象,所有版本都将保留在存储桶中,但 S3 将在该对象的最新版本处插入一个删除标记。这意味着如果我们尝试检索该对象,我们将收到 404 Not Found 错误。但是,我们仍然可以通过指定 ID 来检索先前的版本,这样它们就不会完全丢失。如果我们愿意,我们可以通过指定版本 ID 来删除特定版本。如果我们对最新版本(即默认版本)执行此操作,则 S3 将自动将下一个版本设置为默认版本,而不是给我们一个 404 错误。这只是恢复对象先前版本的一个选项。假设您将一个已经存在的对象上传(即 PUT)到 S3。该新版本将成为默认版本。然后假设您想要将先前版本设置为默认版本。您可以删除最新版本的特定版本 ID(因为请记住,这不会给我们 404,而删除对象本身会)。或者,您也可以将所需的版本 COPY 回同一个存储桶。复制对象会执行 GET 请求,然后执行 PUT 请求。任何时候,只要您在启用了版本控制的 S3 存储桶中发出 PUT 请求,它就会触发该对象成为最新版本,因为它会为其提供一个新的版本 ID。因此,这些就是我们通过启用版本控制可以获得的一些好处。我们可以保护我们的数据不被删除,也不被意外覆盖。我们还可以使用它来保留不同版本的日志以供我们自己记录。
还有什么?
在启用版本控制之前,您应该了解一些事项。首先,一旦启用版本控制,就无法完全禁用它。但是,您可以将存储桶置于“版本控制暂停”状态。如果这样做,新对象将收到版本 ID 为 null。其他已有版本的对象将继续拥有这些版本。其次,由于您存储了同一对象的多个版本,您的账单可能会增加。这些版本占用空间,而 S3 目前按每 GB 收取一定费用。有一种方法可以帮助抵消这种情况。这是另一个称为生命周期管理的功能。生命周期管理可让您决定在一定时间后版本会发生什么。例如,如果您存储了重要的日志,并且您有这些日志的多个版本(具体取决于这些日志中存储了多少数据),这可能会占用大量空间。您可以保留到某个日期的日志,然后将它们移动到 Amazon Glacier,而不是存储所有这些版本(其中一些版本可能是几个月前的)。 Amazon Glacier 便宜得多,但限制了您访问数据的速度,因此它最适合用于您可能不会实际使用但仍需要存储以备将来需要的数据。通过实施这种策略,如果您拥有大量对象,则可以真正削减成本。此外,同一对象的不同版本可以具有不同的属性。例如,通过指定版本 ID,我们可以使该版本可供互联网上的任何人公开访问,但其他版本仍是私有的。此时,如果您对 S3 版本控制有任何疑问,请随时在评论中提问。如果您想试用 Amazon S3 版本控制,并且您是会员,请查看此动手实验室。它对您来说没有任何额外费用,您也不必担心弄乱任何东西,因为实验室可以随时清理并重新启动。如果您有兴趣了解有关 S3 的更多信息,例如如何优化性能、如何使用存储桶策略、如何加密数据等等,请查看AWS 认证开发人员课程。如果您目前不是会员?我很乐意邀请您加入 Linux 学院!
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~