与 CloudFront 结合使用时,AWS S3 标准不频繁访问与减少冗余存储 class?

AWS S3 Standard Infrequent Access vs Reduced Redundancy storage class when coupled with CloudFront?

我正在使用 CloudFront 缓存和分发我当前存储在标准存储中的 S3 上的所有缩略图 class。由于 CloudFront 缓存原件并仅每 24 小时访问一次,因此使用比标准更便宜的存储 class 是有意义的:标准不频繁访问 (IA) 或减少冗余 (RR)。但是我不确定哪个更合适,性价比更高。

Standard-IA 的存储成本最低(比 Standard class 便宜 58%,比 RR 便宜 47%),但请求比 Standard 和 RR 高 60%。但是,在计算成本时,存储在 Standard-IA class 中的所有 128kb 以下的文件都四舍五入为 128kb,这适用于我的大多数缩略图。

同时,RR class 中的存储仅比 Standard 便宜 20%,但其请求成本比 Standard-IA 便宜 60%。

我不确定哪一个在实践中最具成本效益,希望任何有使用这两种经验的人提供一些反馈。

Since CloudFront caches originals and accesses them only every 24 hours

如果需要,您实际上可以让 CloudFront 缓存更长时间。您只需要将元数据添加到设置缓存控制 header 的 objects,并且根据 S3 documentation 您可以指定最长 100 年的年龄。你只需在几秒钟内设置一个 max-age,所以如果你真的想让你的 objects 缓存 100 年:

Cache-Control: max-age=3153600000

至于您关于 SIA 与 RR 的主要问题,您几乎已经了解了两者之间的所有差异。这只是计算使用一种与另一种的成本的问题。您只需要 运行 进行一些计算,然后查看成本估算值。如果您有 100 张缩略图都在 128K 以下,那么 SIA 将向您收取 100 * 128K 字节的费用,而 RR 只会向您收取这 100 张缩略图的总大小的费用。同样,如果您在 CloudFront 中设置了相当高的缓存超时,那么您每天可能只会从 S3 中看到 10 次提取,因此 SIA 会向您收取每天检索 10 * 128K 字节的费用,而 RR 只会向您收取这 10 个缩略图的大小。

根据缩略图的大小和数量以及您预期的流量使用一些实数应该很容易得出成本估算。

仅供参考,您可能还想看一下 these slideshows and/or these videos 中的一些内容。这些都来自 Amazon 的 re:Invent 会议,这些链接应该为您提供这些会议上特定于 S3 的演示文稿。

你的提问前提有问题。 CloudFront 可能 将您的对象缓存一段时间这一事实实际上与选择 S3 存储 class.

无关

REDUCED_REDUNDANCY 有时更便宜¹ 因为 S3 将您的数据存储在更少的物理设备上,在某种程度上降低了可靠性以换取更低的价格......并且在事件中的失败,该对象在统计上更有可能被 S3 丢失。如果 S3 由于冗余减少而丢失对象,CloudFront 将在某个时候开始返回错误。

选择这种存储方式的决定因素class是对象是否易于更换。

Reduced Redundancy Storage (RRS) is an Amazon S3 storage option that enables customers to reduce their costs by storing noncritical, reproducible data at lower levels of redundancy than Amazon S3’s standard storage. It provides a cost-effective, highly available solution for distributing or sharing content that is durably stored elsewhere, or for storing thumbnails, transcoded media, or other processed data that can be easily reproduced.

https://aws.amazon.com/s3/reduced-redundancy/

STANDARD_IA(不经常访问)由于不同的原因而更便宜:存储节省被检索费用抵消。如果某个对象每月 下载一次以上 ,合并费用将超过 STANDARD 的费用。它适用于真正不常访问的对象。由于 CloudFront 有多个边缘位置,每个边缘位置都有自己独立的缓存²,一个对象是否 "currently stored in" CloudFront 不是一个简单 yes/no 答案的问题。也不可能通过指定较大的 Cache-Control: max-age 值来 "game the system"。 CloudFront 对其缓存存储不收费,因此只有在您指定的到期时间之前从缓存中清除对象才是明智的。事实上,轶事观察证实了文档所指出的,由于相对缺乏 "popularity."

,对象有时会从 CloudFront 中清除

选择此存储的决定因素 class 是增加的数据传输(检索)费用是否足够低以证明它们所抵消的存储费用节省是合理的。除非该对象预计每月下载少于一次或两次,否则此存储 class 并不代表成本节省。

Standard/Infrequent 应该为您确实不希望经常需要的东西保留访问权限,例如 tarball 和数据库转储以及在首次访问后不太可能查看的图像,例如(借用一个例子来自我的世界) proof-of-purchase/receipt 由客户扫描并提交以申请退款。一旦回扣获得批准,我们不太可能需要再次查看该收据,但我们确实需要将其存档。你好,Standard_IA。 (请注意,在文件存储 30 天后,S3 会自动为我执行此操作,使用存储桶上的生命周期策略)。

Standard - IA is ideally suited for long-term file storage, older data from sync and share, backup data, and disaster recovery files.

https://aws.amazon.com/s3/faqs/#sia

旁注:另一种节省存储成本的机制是 gzip -9 存储前的内容,并设置 Content-Encoding: gzip。多年来,我一直在使用 S3 这样做,并且仍在等待我的第一张支持票来报告无法处理它的浏览器。即使是据称已经压缩的内容(例如 .xlsx 电子表格)通常也会缩小一点,您压缩的每个字节都意味着略微降低存储 和下载带宽 费用.

从根本上说,如果您的内容很容易替换,例如调整大小的图像,但您仍然拥有原始图像……或者可以很容易地从源数据重新运行的报告……或者在其他地方备份的内容(AWS 基本上总是我的云服务的第一选择,但我确实将我的 S3 资产备份存储在另一个云提供商的存储服务中,例如)......那么减少冗余是一个不错的选择。


¹ REDUCED_REDUNDANCY 有时更便宜 仅在某些地区 截至 2016 年底。在此之前,它是价格低于 STANDARD,但由于 S3 price reductions announced in November, 2016,在某些 AWS 区域,STANDARD 存储 class 是竞争定价的奇怪世界的一个奇怪怪癖现在比 REDUCED_REDUNDANCY ("RRS") 稍微 贵。例如,在 us-east-1,标准从 0.03 美元/GB 降低到 0.023 美元/GB,但 RRS 保持在 0.024 美元/GB...留下 没有 使用 RRS 的明显理由在那个地区。定价页面的结构给人的印象是,RRS 可能不再被 AWS 视为当前一代产品。事实上,它比 STANDARD_IAGLACIER 都更老。它不太可能被完全弃用或淘汰,但如果它不再是他们的主要产品,他们可能不会倾向于将其成本降低到与其他存储 classes 一致的程度。

² "CloudFront has multiple edge locations, each with its own independent cache" 在技术上仍然是正确的说法,但 CloudFront 悄然开始推出,然后在 2016 年底宣布了一些重大的架构变化,引入了regional edge caches. It is now, in a sense, "less true" that the global edge caches are indepenent. They still are, but it makes less of a difference, since CloudFront is now a two-tier network, with the global (outer tier) edge nodes sometimes fetching content from the regional (inner tier) edge nodes, instead of directly from the origin server. This should have the impact of increasing the likelihood of an object being considered to be "in" the cache, since a cache miss in the outer tier might be transformed into a hit by the inner tier, which is also reported to have more available cache storage space than some or all of the outer tier. It is not yet clear from external observations how much of an impact this has on hit rates on S3 origins, as the documentation indicates the regional edges are not used for S3 (only custom origins) but it seems less than clear that this universally holds true, particularly with the introduction of Lambda@Edge。这可能很重要,但在撰写本文时,我认为它不会对我对此处提出的问题的回答产生任何影响。material。