AWS S3批处理操作-很难做到

时间:2019-05-15 23:40:16

标签: amazon-web-services amazon-s3 amazon-glacier

我们使用了新推出的AWS S3 batch operation将拥有约15 TB数据的S3存储桶备份到Glacier S3。在备份之前,我们已经估算了带宽和存储成本,还考虑了Glacier的90天强制存储要求。

但是,实际成本与我们的估计成本相比是巨大的。我们以某种方式忽略了UPLOAD请求的成本,每1000个请求运行$ 0.05。我们有数百万个文件,每个文件上传都被视为一个请求,我们正在寻找价值几千美元的:(

我想知道是否有任何方法可以避免这种情况?

1 个答案:

答案 0 :(得分:2)

“备份”的概念非常有趣。

传统上,在将数据存储在一个磁盘上的情况下,必须进行备份,因为具有单个故障点不是很好。

但是,

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存储类中。