AWS S3 批处理操作 - 很难搞定
AWS S3 batch operation - Got Dinged Pretty Hard
我们使用新推出的 AWS S3 batch operation 将我们的 S3 存储桶(大约有 15 TB 的数据)备份到 Glacier S3。在备份之前,我们已经估算了带宽和存储成本,并且还考虑了 Glacier 的强制性 90 天存储要求。
然而,与我们的估计成本相比,实际成本是巨大的。我们以某种方式忽略了上传请求成本,每 1000 个请求的运行成本为 0.05 美元。我们有数百万个文件,每个文件上传都被视为一个请求,我们正在考虑花费数千美元:(
我想知道是否有任何方法可以避免这种情况?
"backup"的概念挺有意思的
传统上,数据存储在一个磁盘上,备份是必不可少的,因为单个point-of-failure。
然而,Amazon S3 将数据存储在跨多个可用区(实际上是多个数据中心)的多个设备上,这就是它们如何获得 99.999999999% 的耐用性和 99.99% 的可用性。 (请注意,持久性意味着保留数据的可能性,这与可用性并不完全相同,可用性意味着访问数据的能力。我想区别在于在停电期间,数据可能无法访问,但它没有丢失。)
因此,在设备出现故障时进行备份的传统概念已在 S3 中得到处理,全部用于标准成本。 (有一个较旧的 Reduced Redundancy 选项只复制到 2 个可用区而不是 3 个,但不再推荐这样做。)
接下来是备份的概念,以防意外删除 对象。当一个对象在 S3 中被删除时,它是不可恢复的。但是,在存储桶上启用版本控制将保留多个版本,包括已删除的对象。这在需要保留对象的先前历史记录或可能需要撤消删除的地方非常有用。缺点是存储成本包括 所有保留的版本。
S3 中还有新的对象锁定 功能,其中对象可以被锁定一段时间(例如 3 年)而不能删除它们。这对于信息必须保留一段时间的情况是理想的,它可以避免意外删除。 (还有一个相同的 合法保留 功能,但如果您有适当的权限,可以 on/off 转换。)
最后,如果愤怒的员工决定报复您的公司没有储备他们最喜欢的咖啡口味,则有可能 故意恶意删除 。如果 AWS 用户拥有必要的权限,他们可以从 S3 中删除数据。为了防止这种情况,你应该限制谁有这样的权限,并可能将它与版本控制结合起来(这样他们可以删除一个对象的当前版本,但它实际上被系统保留)。
这也可以通过使用 Amazon S3 存储桶的Cross-Region 复制 来解决。一些组织使用它来将数据复制到另一个 AWS 账户 拥有的 存储桶中,因此没有人能够从两个账户中删除数据。这更接近真正备份的概念,因为副本与原始副本分开 (account-wise)。与数据丢失的潜在成本相比,额外的存储成本是微乎其微的。另外,如果您将副本存储桶配置为使用 Glacier Deep Archive 存储 class,成本会非常低。
您复制到 Glacier 是另一种形式的备份(并且提供比 long-term 中的 S3 更便宜的存储),但它需要定期更新持续备份的基础(例如,通过使用支持 S3 和 Glacier 的备份软件)。 “每 1000 个请求 5 美分”的成本意味着它更适合用于 存档 (例如大的 zip 文件)而不是许多小文件。
底线:您的备份需求可能很简单,只需打开版本控制并限制哪些用户可以从存储桶中完全删除对象(包括所有过去的版本)。或者,创建一个存储桶副本并将其存储在 Glacier Deep Archive 存储 class.
中
我们使用新推出的 AWS S3 batch operation 将我们的 S3 存储桶(大约有 15 TB 的数据)备份到 Glacier S3。在备份之前,我们已经估算了带宽和存储成本,并且还考虑了 Glacier 的强制性 90 天存储要求。
然而,与我们的估计成本相比,实际成本是巨大的。我们以某种方式忽略了上传请求成本,每 1000 个请求的运行成本为 0.05 美元。我们有数百万个文件,每个文件上传都被视为一个请求,我们正在考虑花费数千美元:(
我想知道是否有任何方法可以避免这种情况?
"backup"的概念挺有意思的
传统上,数据存储在一个磁盘上,备份是必不可少的,因为单个point-of-failure。
然而,Amazon S3 将数据存储在跨多个可用区(实际上是多个数据中心)的多个设备上,这就是它们如何获得 99.999999999% 的耐用性和 99.99% 的可用性。 (请注意,持久性意味着保留数据的可能性,这与可用性并不完全相同,可用性意味着访问数据的能力。我想区别在于在停电期间,数据可能无法访问,但它没有丢失。)
因此,在设备出现故障时进行备份的传统概念已在 S3 中得到处理,全部用于标准成本。 (有一个较旧的 Reduced Redundancy 选项只复制到 2 个可用区而不是 3 个,但不再推荐这样做。)
接下来是备份的概念,以防意外删除 对象。当一个对象在 S3 中被删除时,它是不可恢复的。但是,在存储桶上启用版本控制将保留多个版本,包括已删除的对象。这在需要保留对象的先前历史记录或可能需要撤消删除的地方非常有用。缺点是存储成本包括 所有保留的版本。
S3 中还有新的对象锁定 功能,其中对象可以被锁定一段时间(例如 3 年)而不能删除它们。这对于信息必须保留一段时间的情况是理想的,它可以避免意外删除。 (还有一个相同的 合法保留 功能,但如果您有适当的权限,可以 on/off 转换。)
最后,如果愤怒的员工决定报复您的公司没有储备他们最喜欢的咖啡口味,则有可能 故意恶意删除 。如果 AWS 用户拥有必要的权限,他们可以从 S3 中删除数据。为了防止这种情况,你应该限制谁有这样的权限,并可能将它与版本控制结合起来(这样他们可以删除一个对象的当前版本,但它实际上被系统保留)。
这也可以通过使用 Amazon S3 存储桶的Cross-Region 复制 来解决。一些组织使用它来将数据复制到另一个 AWS 账户 拥有的 存储桶中,因此没有人能够从两个账户中删除数据。这更接近真正备份的概念,因为副本与原始副本分开 (account-wise)。与数据丢失的潜在成本相比,额外的存储成本是微乎其微的。另外,如果您将副本存储桶配置为使用 Glacier Deep Archive 存储 class,成本会非常低。
您复制到 Glacier 是另一种形式的备份(并且提供比 long-term 中的 S3 更便宜的存储),但它需要定期更新持续备份的基础(例如,通过使用支持 S3 和 Glacier 的备份软件)。 “每 1000 个请求 5 美分”的成本意味着它更适合用于 存档 (例如大的 zip 文件)而不是许多小文件。
底线:您的备份需求可能很简单,只需打开版本控制并限制哪些用户可以从存储桶中完全删除对象(包括所有过去的版本)。或者,创建一个存储桶副本并将其存储在 Glacier Deep Archive 存储 class.
中