优化Amazon S3 存储成本:S3 智能分层配合S3 Glacier 即时检索获得成本节约

334dd046a038cc8300570218670b8539.png

e72cbd25415b72b362c3309ee0b21f1b.gif

点击上方【凌云驭势 重塑未来】

一起共赴年度科技盛宴!

01

背景

S3 Glacier Instant Retrieval (S3 GIR)存储类型是2021年 re:Invent 新发布的存储类型,原有的异步方式取回数据的 Glacier 存储类型则改名为 S3 Glacier Flexible Retrieval。新发布的 S3 Glacier Instant Retrieval 的存储费用与 S3 Glacier Flexible Retrieval 相近,在此基础上提供了立刻可取的性能,适合每年访问2-3次数据场景下的海量数据存储。

S3 Glacier Instant Retrieval 的特点如下:

▌从费用方面评估:以亚马逊云科技宁夏区域为例,异步取回的 S3 Glacier Flexible Retrieval 价格是0.027054元/GB,新的 S3 Glacier Instant Retrieval 是0.03006元/GB。成本增加不足1分钱,保持在同一个数量级。

▌从数据取回时间评估:原有 S3 Glacier Flexible Retrieval 是异步机制,取回数据需要几分钟到几小时,即便使用加急检索并支付额外费用,也需要几分钟才能返回数据。而 S3 Glacier Instant Retrieval 存储类型是访问数据立刻可用。

▌从性能方面而言,S3 官网 FAQ 中提到 S3 Glacier Instant Retrieval 提供与 S3 Standard 和 S3 Standard-IA 存储类相同的毫秒延迟和高吞吐量性能。

S3 官网 FAQ:

https://www.amazonaws.cn/s3/faqs/#Amazon_S3_Glacier_Instant_Retrieval_storage_class

基于以上特点,本文将分析 S3 Glacier Instant Retrieval 存储类的最佳使用场景,并结合 S3 智能分层特性优化成本。

02

是否使用智能分层的的对比

1/ 

数据集假设和基础费用对比

由于智能分层的特性要求文件大小大于 128KB,因此本文测算的场景定义如下:

● 数据集容量是 50TB,即 50000GB;

● 平均文件大小 1MB,且单个文件大于 128KB;

● 文件在年初被一次性全量写入,并保存12个月满1年;

● 一年期间数据经历几次读取,每次读取是全量读取。

为更好的对比成本,这里将读写等基础费用列表如下。

ea17970618148eb763419692802a00e6.jpeg

2/ 

不使用智能分层、直接将数据保存在 Glacier Instant Retrieval 存储类

▌(1)基础费用

如果直接将文件保存到 S3 Glacier Instant Retrieval,则主要成本如下(以宁夏区域为例):

● 写入费(PUT、COPY 或 POST 请求):每1000个请求 ¥0.0981

● 存储成本:每 GB ¥0.03006/月

● 读取费(GET、SELECT 及所有其他请求):每10000个请求 ¥0.4905

● 数据检索:每 GB ¥0.1911

注意:如果数据写入到 S3 标准层,而后通过生命周期转换存储级别为 S3 Glacier Instant Retrieval,那么还要收取转换费每1000个请求 ¥0.0981。由于本例的测算直接写入 S3 Glacier Instant Retrieval 因此没有生命周期转换费。

由此可以看到,上传文件时候,直接声明写入 S3 Glacier Instant Retrieval 存储类,从写入的那一刻即第一天起,存储空间成本上就获得了显著的降低。不过,由此产生的写入费是 S3 Standard 标准级别的24倍,而后读取时候产生的读取收费是 S3 Standard 标准级别的36倍,并额外收取读取 S3 Standard 标准级别并不存在的数据检索费。在此场景下,如果数据在几个月内多次读取将产生大量访问费用,这部分开销甚至可能超过存储容量上节约出来的费用。

▌(2)访问场景测算

为了进一步测算多次读取后产生的升本影响,我们模拟一年内数据分别被全量读写1次到10次,其成本计算后如下表。

862fa7a8059e09d5d31b5cfdd926adc6.jpeg

以本文的数据样本为例,当每年数据读写6次后,S3 Glacier Instant Retrieval总体成本和使用 S3 标准类相当。读取次数大于6次后,读写越多总体成本越高。

▌(3)结论

综上所述,直接使用 S3 Glacier Instant Retrieval 的场景需要有明确的数据冷热特征,或需要人为的定义数据访问方式,确保数据读取频率足够低才能产生成本节约。如果已经预期要到发生大量频繁读取,建议先将数据从 S3 Glacier Instant Retrieval 复制回到 S3 标准类,然后对 S3 标准层发起频繁访问即可。

以上如果不希望对以上存储的生命周期做手工管理,则可以引入 S3 智能分层特性。

3/ 

使用 S3 智能分层自动将数据下沉到 S3 Intelligent-Tiering – Archive Instant Access Tier(S3-INT AIA)

▌(1)基础费用

在 S3 Glacier Instant Retrieval 存储类发布后,S3智能分层存储支持的存储分级也新增了名为 S3 Intelligent-Tiering – Archive Instant Access Tier(S3-INT AIA)这一级别的存储。当数据保存在 S3 智能分层存储级别时,S3 将根据文件最后访问时间来决定存储级别并适用不同费率:

● 写入费(PUT、COPY、POST 或 LIST 请求):每1000个请求 ¥ 0.00405

● 刚写入的30天内,存储费按照 S3 标准级(S3-INT Frequent Access)收费,每 GB ¥0.1755/月

● 文件最后一次被访问的30天内,存储费按照 S3 标准级(S3-INT Frequent Access)收费,每 GB ¥0.1755/月

● 文件最后一次访问后的30-90天将按照 S3 不频繁访问级别(S3-INT Infrequent Access)收费,每 GB ¥0.1030029/月

● 文件最后一次访问后的90天以上将按照 S3 归档立刻取回级别(S3-INT Archive Instant Access)收费,每 GB ¥0.03006/月

● 不过之前数据存储在那一层、以及最后被访问之后多少天,只要数据被再次访问,数据将被移动到 S3 智能分层标准级(S3-INT Frequent Access),未来30天重新按照 S3-INT Frequent Access 存储级别收费

● 以上所有场景的读取费(GET、SELECT 及所有其他请求):每1000个请求 ¥ 0.00135

● 数据检索:不收取

结合以上可看出,使用 S3 智能分层,写入时候成本就是按照标准层写入费用计算。读取时候不管数据当前保存在哪一层,始终按照 S3 标准层的读取费用去计算,因此即便发生多次读取费用也很少,不会发生前文描述的当读取次数大于7次后 S3 Glacier Instant Retrieval 存储类成本反而高于 S3 标准类的情况。

另外请注意,S3 智能分层有如下适用范围和限制请予以考虑:

● 收取文件管理费。费用定义是每1000个对象收取 ¥0.016675。小于 128KB 级别的文件不被在内;

● 小于 128KB 的数据将始终保存在频繁访问层。

▌(2)访问场景测算

在享受到读取费用的好处后,对智能分层存储的调度逻辑可观察到:

● 第一个月新写入数据时候按照标准层存储因此存储费用最高,满30天没有被访问后的转为不频繁访问层,由此第二个月存储费降低;

● 满90天没被访问后,第4个月又显著降低;

● 当文件被读取时,文件将回到 S3-INT FA 存储层级收费;

● 直到再次经过下一个90天移动到 S3-INT AIA 按照最低存储成本计费。

这个逻辑的特点是,1年内读写频率足够低才会节省费用,如果隔一个月进行一次读取,那么数据还没有满足90天下沉的条件就又返回到最贵的标准层计费了。如此反复读取,意味着几乎全年数据都保存在标准层,也就没有实现成本节约的效果。

接下来我们模拟下这种场景,分别安排在不同的月份读取数据,测算访问频度对智能分层存储费的影响。

以下模拟数据在1月写入,然后在1月读取1次,后续没有读取的场景,成本节约为59%。

5ff136a8600f000d46b07376a63722a1.jpeg

以下模拟数据在1月写入,然后在1月、3月、5月、7月、9月、11月各读写1次的场景,成本节约为11%。

c12965853dbb54e5c00cf4ae054d9839.jpeg

以下模拟数据在1月写入,然后在1月、7月、11月各读写1次的场景,成本节约为35%。

30e6703f301d4be5a5242d7241e11bee.jpeg

以下模拟数据在1月写入,1月读取10次,7月当月读写了10次,其他月份无读取的场景,成本节约为44%。

f37d96cfd8fc1633ab639004cd971e80.jpeg

通过以上的场景可以看出,使用 S3 智能分层存储节约费用的秘诀是数据足够“冷”,或者两次访问间隔尽可能长。如果要对数据进行多次读写,建议集中在某窗口内(例如一个月)内集中完成数次读写,然后剩下的时间由 S3 智能分层自动的降低存储级别节省费用。

▌(3)结论

综上所述,S3 智能分层是大多数存储和数据分析场景下降低成本的好选择。

03

将新数据存储和现有数据保存到 S3智能分层

1/ 

修改上传文件代码中的声明直接上传到 S3 智能分层

以Python代码为例:

import boto3


BucketName = 's3int-workshop'
LocalFileName = "image1.jpg"
FileData = open(LocalFileName, 'rb')


client = boto3.client('s3')
response = client.put_object(
    ACL = 'private',
    Body = FileData,
    Bucket = BucketName,
    Key = LocalFileName,
    ContentType = 'image/jpeg',
    StorageClass = 'INTELLIGENT_TIERING'
)

左滑动查看更多

在上传参数中,指定 StorageClass = ‘INTELLIGENT_TIERING’ 即可将文件保存为智能分层类型。

由于修改上传代码只对新上传的文件有效,存量文件如果要修改存储类型则还是要通过生命周期规则实现。

2/ 

使用生命周期将现有数据转换到 S3 智能分层

找到要修改的 S3 存储桶。可看到其中有两个存量文件。如下截图。

6afb9b2569ebf15fbab03fd5bc37bc5b.png

点击 Management 管理标签页,点击 Create lifecycle rule 创建生命周期规则按钮。如下截图。

07a14a5d2043dbb942cf9fa664279b93.png

输入规则的名称立刻转换为 INT,这里可以使用中文,然后选中下方的 Apply to all objects in the bucket 对存储桶内所有对象有效的按钮。在下方的第二次确认对话框内,选中 I acknowledge that this rule will apply to all objects in the bucket.表示确认本规则将对存储桶内所有文件发起转换。接下来向下滚动页面。如下截图。 注意:慎重使用 Apply to all objects in the bucket 选项,本选项将对存储桶内所有文件发起转换。请慎重使用以免出现海量对象被错误转换。

2aa609c5aa2601efbd551d90d85f1cb5.png

在页面中间部分,生命周期规则位置,选择 Move current version 移动当前版本和 Move noncurrent versions 移动非当前版本两个选项。这表示如果本存储桶使用了版本管理功能,那么最新版和历史版本都将被更换存储类型。如下截图。

bce06ca7a3a79b2c65f0e0b0f0565fb5.png

在配置生命周期规则的位置,将转换当前版本的条件设置为目标创建后0天,即立刻转换,将转换类型选择为 S3-INT。此外,将转换历史版本的条件设置为目标创建后0天,将转换类型也选择选择为 S3-INT。如下截图。

716f4bd038c766316afc20a36f440646.png

将页面移动到最下方,点击创建规则。如下截图。

74036defe2e6e5fec6795bf012b70d71.png

创建规则完成。如下截图。

4b1a7d0b9305d81de16c70b9839adbc4.png

在经过24小时后,可看到文件级别已经变成了 INT 类型。

4959b5e1f65da59e533ba37de88ad338.png

注意:当转换规则填写的是第0天时候,刚上传的文件依然会被保存为 Standard 存储类。经过24-48小时,才会自动转为 S3-INT 存储类。因此如果希望文件上传后立刻保存为 S3-INT 存储类,则还是需要修改上传代码,在代码中指定将文件上传到智能分层。

04

结论

通过本文档模拟的场景可看出,有效的使用 S3 智能分层搭配 S3 Glacier Instant Retrieval,可显著节约存储成本。

05

参考文档

为存储桶配置生命周期:

https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html

https://aws.amazon.com/cn/premiumsupport/knowledge-center/s3-lifecycle-rule-delay/

本篇作者

b1c6e2985ab84fe3159810fb6861aa9b.jpeg

刘辛酉

亚马逊云科技解决方案架构师,曾服务于 Parallels、Siemens,在 Atos 担任管理服务部首席架构师。拥有十余年数据中心、互联网技术经验,长期为制造、汽车等行业头部客户提供IT咨询和服务。加入亚马逊云科技后负责零售、快消、食品和制造等行业。擅长硬件、网络等领域设计。

2c6a958f8cda61b7220d79637c4518d5.jpeg

杨昌君

亚马逊云科技解决方案架构师,曾服务于某 IDC&云服务提供商。拥有数据中心,互联网,云计算技术经验,2021年加入亚马逊云科技,负责零售,快消,餐饮等行业,对快消零售行业业务场景。擅长 CI/CD,Devops 等技术。

e06c2115ffe8fe5fd51bd69e9eed73d7.png

2022亚马逊云科技 re:Invent 全球大会

中国行现已开启!

👇👇👇点击下方图片即刻注册👇👇👇

c50ed565e89c279ea0723567658b0112.jpeg

d2e536c2cf19e11e8463bb8b0a855dc7.gif

8b1d5a115c0f9039a4798413133a8978.gif

听说,点完下面4个按钮

就不会碰到bug了!

75fcf2c342df78d3a7b7e61b2b60ef44.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值