AWS S3 批量操作 - 很难

hvs*_*hvs 1 amazon-s3 amazon-web-services amazon-glacier

我们使用新引入的 AWS S3批量操作将 S3 存储桶(其中包含约 15 TB 的数据)备份到 Glacier S3 。在备份之前,我们估算了带宽和存储成本,并考虑了 Glacier 的 90 天强制存储要求。

然而,与我们的估计成本相比,实际成本是巨大的。我们不知何故忽略了上传请求的成本,每 1000 个请求的成本为 0.05 美元。我们有数百万个文件,每个文件上传都被视为一个请求,我们正在考虑价值数千美元的支出:(

我想知道是否有什么办法可以避免这种情况?

Joh*_*ein 5

“备份”的概念很有趣。

传统上,当数据存储在一个磁盘上时,备份是必不可少的,因为单点故障并不好。

然而,Amazon S3 将数据存储在跨多个可用区(实际上是多个数据中心)的多个设备上,这就是它们获得99.999999999% 耐用性和 99.99% 可用性的方式的方式。(请注意,持久性意味着保留数据的可能性,这与可用性不太一样,可用性意味着访问数据的能力。我想区别在于,在停电期间,数据可能无法访问,但它可以没有丢失。)

因此,在设备发生故障时进行备份的传统概念已在 S3 中得到处理,所有这些都是标准成本。(有一个较旧的减少冗余选项,仅复制到 2 个可用区而不是 3 个,但不再建议这样做。)

接下来是备份的概念,以防意外删除对象。当对象在 S3 中被删除时,它是不可恢复的。但是,在存储桶上启用版本控制将保留多个版本,包括已删除的对象。当需要保留对象的先前历史记录或可能需要撤消删除时,这非常有用。缺点是存储成本包括保留的所有版本。

S3 中还有新的对象锁定功能,可以将对象锁定一段时间(例如 3 年)而无法删除它们。这对于必须保留信息一段时间并避免意外删除的情况来说是理想的选择。(还有相同的合法保留功能,但如果您有适当的权限,则可以打开/关闭。)

最后,如果愤怒的员工因为没有库存他们最喜欢的咖啡口味而决定对您的公司进行报复,则可能会被故意恶意删除。如果 AWS 用户拥有必要的权限,他们可以从 S3 中删除数据。为了防止这种情况,您应该限制谁拥有此类权限,并可能将其与版本控制结合起来(这样他们就可以删除对象的当前版本,但它实际上由系统保留)。

也可以通过使用Amazon S3 存储桶的跨区域复制来解决此问题。一些组织使用此功能将数据复制到不同 AWS 账户拥有的存储桶,这样任何人都无法从两个账户中删除数据。这更接近真正备份的概念,因为副本与原始副本(按帐户)分开。与数据丢失的潜在成本相比,额外的存储成本是微乎其微的。另外,如果您将副本存储桶配置为使用Glacier Deep Archive存储类,则成本可能会非常低。

到 Glacier 的副本是另一种形式的备份(从长远来看,提供比 S3 更便宜的存储),但需要定期更新才能成为连续备份(例如,通过使用支持 S3 和 Glacier 的备份软件) )。“每 1000 个请求 5c”成本意味着它更适合用于存档(例如大型 zip 文件)而不是许多小文件。

底线:您对备份的需求可能就像打开版本控制并限制哪些用户可以从存储桶中完全删除对象(包括所有过去的版本)一样简单。或者,创建存储桶副本并将其存储在 Glacier Deep Archive 存储类中。