百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

“我将 AWS 的数据传输成本,降低了 99%!”

ninehua 2025-03-01 14:56 33 浏览

本文作者发现,在 AWS 上传输数据有一种方法,可大幅降低传输成本——利用 S3:“如果成本是你最关心的问题,这个方法可以有效降低 99% 以上的成本。”

原文链接:https://www.bitsand.cloud/posts/slashing-data-transfer-costs/

作者 | Daniel Kleinstein
翻译 | 郑丽媛
出品 | CSDN(ID:CSDNnews)

在 AWS 上不小心花太多钱的方式有很多,其中最简单的一种就是不小心传输了数据。截至目前,AWS 对数据传输的收费标准如下:

(1)从 AWS 到公共互联网的数据传输费用从 0.09 美元/GB(弗吉尼亚州北部)到 0.154 美元/GB(开普敦)不等,因此每 1TB 的数据传输费用约为 90-154 美元。

(2)从一个 AWS 区域到另一个 AWS 区域的数据传输费用从 0.02 美元/GB 到 0.147 美元/GB 不等,因此从未离开 AWS 网络的每 1TB 数据的传输费用约为 20-147 美元。

在这两种传输中,你只需要支付出口费用——也就是说,你只要为离开 AWS 区域的数据付费,无需支付传入数据的费用。现在,让我们来看更棘手的数据传输方式:

(3)在同一 AWS 区域内可用区之间的数据传输,每个方向(不论是传入还是传出)的成本为 0.01 美元/GB,这一定价在所有地区都是一样的。因此,在两个相同区域的可用区之间传输 1TB 数据时,出口和入口的费用分别为 10 美元和 10 美元,总计 20 美元。

以上价格在所有主流云提供商之间都差不多。数据传输的价格很容易累加,对云提供商来说这是一个利润极高的收入来源——甚至由于利润很高,Cloudflare 推出了与之竞争的 R2 存储,其特点就是零出口费,同时还发表了一些激烈言辞,抨击 AWS 收取出口费用。

一般来说,AWS 推荐在多个可用区中设置资源,这是确保可靠性和可用性的最佳做法。但这种方式很容易导致资金流入跨区成本的“熔炉”中:任何涉及在不同可用区资源之间发送数据的应用程序,都会产生此类费用。

所以,我们能鱼与熊掌兼得吗?换句话说,我们能否在建立跨可用区基础设施的同时,避免支付跨可用区的数据传输费用?

使用 S3 避免数据传输成本

S3 有一个重要特性——S3 中的大多数存储类,都以区域粒度而非可用区粒度来存储它们的存储桶。AWS 会在后台该区域内至少三个可用区内复制这些数据,这也就是 S3 具有超高持久性和可用性的原因之一。

(注:有两种存储类别,S3 One Zone- infrequency Access 和新推出的 S3 Express One Zone,这两种都只将数据存储在单个可用区中。二者之中,你支付的存储费用可能较低,但要以可用性为代价。例如,S3 One Zone-Infrequent Access 的成本为 0.01 美元/GB,其可用性为 99.5%,而 S3 Infrequent Access 的成本为 0.0125 美元/GB,但其可用性为 99.99%。)

这意味着,标准 S3 存储桶中的数据对其所在区域的所有 AWS 可用区都“平等”可用——对于 S3 来说,从 us-east-1a 或 us-east-1b 下载数据并无区别。

不过,S3 还有一个重要特点:对于标准存储类别,从 S3 下载数据是免费的,只有在区域之间或到公共互联网下载数据时才会产生标准传输费用。此外,任何存储类别上传至 S3 也是免费的!(在数据传输方面,你发出的 S3 API 请求会产生费用,但相对较少)

现在,假设我想在 us-east-1a 或 us-east-1b 的两个 EC2 实例之间传输 1TB 的数据。从上文可以看到,如果我直接传输数据,将花费 20 美元。但如果我从一个实例上传数据到 S3,然后从另一个实例下载呢?

结果是:上传免费,下载也免费,但 S3 存储不是免费的,每月费用为 0.023 美元/GB,即 23 美元/TB。另外,这是以小时为单位收费的,因此我们可以设计我们的上传/下载,使数据在 S3 中的停留时间不超过一小时。假设一个月有 720 个小时,这意味着我们需要支付 23 美元的 1/720,约合 0.03 美元。(记住,我们要在使用完毕后删除存储!)

这样算下来,这次数据传输的费用仅为 0.03 美元,而不是 20 美元——非常棒!如果用具体数字来表示:假设数据传输速率低于一小时,那么我们已经将数据传输费用从 0.02 美元/GB(出口 0.01 美元,入口 0.01 美元),降低到了 0.000032 美元/GB,仅为原始费用的 0.15%!举个极端的例子,用这种方法传输 1PB 的数据大约只需 32 美元,而用标准方法则需要 20000 美元。

不仅如此,S3 还可以无限扩展。因此,用这种方法可以非常方便地将数据从一个 AZ(Availability Zone,可用区)复制到另一个 AZ 中的任意多个实例中,第二个 AZ 中的数千个实例也都可以下载相同的 S3 对象,且占用的时间与下载单个实例相同。S3 存储成本将保持不变,下载成本也将保持免费,这也很棒!

值得一提的是,S3 还有一个重要特性:单个对象不能超过 5TB。因此,如果使用这种方法传输超过 5TB 的文件,则需要对文件进行分片。此外,单个上传文件的大小也不能超过 5GB,如果文件大于 5GB,则需要使用多部分上传(S3 会在后台自动处理)。

演示

接下来,让我们看看实际情况,并为之惊叹。当我第一次想到这个方法时,尽管其背后的所有基本原理都很可靠,但如此大幅节约的成本还是令人难以置信——直到我在成本资源管理器中看到结果时,我才真的敢相信。

我想从一个干净的 AWS 账户开始,这样我们在检查定价时就不会有任何干扰因素。因此,我为演示的每个部分创建了两个账户:

在每个账户中:我们将设置两个 EC2 实例,一个在 us-east-1a 中,另一个在 us-east-1b 中;我们将把两个实例都放在公共子网中,这样就可以轻松地通过 SSH 进入它们;还在实例中随机生成一个 1TB 的文件,以将其传输到另一个实例中。

我们将进行以下这两个实验:

(1)在第一个实验中,我们把两个实例分别放置在两个可用区中带有私有子网的 VPC 中。我们将在实例上,连接到私有子网的接口上,设置一个 netcat 服务器。然后,一个实例将 1TB 的文件传输到另一个实例中。

(2)在第二个实验中,我们将把两个实例放在一个具有 S3 网关端点的 VPC 中,然后创建一个 S3 存储桶,一个实例将把 1TB 的文件上传到存储桶中。上传完成后,另一个实例将下载这个 1TB 文件(然后将其删除!)。

在这两个实验中,我们都将 1TB 的数据从 us-east-1a 传输到 us-east-1b 中。在此之后,我们将等待 AWS 的成本资源管理器更新产生的成本,看看这种方法是否真的有效。

结果

几个小时后,成本资源管理器更新了计费数据。对于标准的数据传输方式,我们原本预计其成本为 20 美元,但最终花费了 21.49 美元(期间,由于我不小心停止了传输,不得不重新启动,导致了部分额外成本,另外创建的文件在技术上为 1024GB,因此基本价格为 20.48 美元):

我们真正想看的实验是基于 S3 的数据传输,我们预计其存储成本仅为几美分,实际结果如下:

只要 8 美分!!!让我们深入了解一下 S3 存储成本的详细情况,同时扩大我们的筛选范围,确保不存在数据传输费用:

的确,我们可以看到没有数据传输成本!但有些奇怪的是,唯一可用的 S3 使用类型与存储无关.....让我们筛选 S3 并按使用类型分组:

实际上,我们根本不需要支付任何存储费用。按理说,我们需要对 S3 请求收费:PUT 请求每 1000 次收费 0.005 美元,GET 请求每 1000 次收费 0.0004 美元,按照上传和下载 1TB 文件所需的请求量相加,得出最终费用。但令人震惊的是,这个过程真的没有存储成本——就好像 S3 不收取任何临时存储费用一样?这很不像 AWS,但我不知道该如何解释。我本来怀疑可能是 S3 免费层隐藏了成本,但我的 S3 存储免费层完全不受实验影响,没有消耗任何成本。

不管怎样,我们已经证明了这个方法是有效的。最后,让我们总结一下。

结论

在幕后,AWS会自动在可用性区之间复制S3数据——不管这对AWS来说可能会产生什么费用,都会被隐藏在你为数据支付的存储成本中。因此,在最根本的层面上,这种方法正在解锁免费的跨区成本——因为在你将数据上传到 S3 时,实际上就已经支付了跨区成本!事实上,如果你将数据一直保留在 S3 中,最终你将支付比跨区成本更多的费用,但通过立即在传输后删除它,你就可以节省 99% 的成本。

这种方法有一些明显的缺点:它不能直接替代现有的数据传输代码,它的延迟可能也比直接传输要高得多。但如果成本是你最关心的问题,那么这种方法可以有效降低 99% 以上的成本。

我真心希望这个方法对你有用,我认为它说明了在 AWS 中你可以节省多少成本——有这么多的服务,这么多的功能,这么多的价格点,几乎总有更多节省的空间。

相关推荐

单打独斗的产品设计师工作流程总结

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。我从入行开始就在一个做自己产品的小公司工作,到现在已经三年了。刚开始工作的时候什么也不懂,老板说让出效果图,就开始直接...

毕业生必备软件!6套APP构建我的产品设计工作流

工欲善其事,必先利其器。思维和方法论固然超级重要,但是掌握并制定适合自己的工作流也可以成倍提升效率。好的软件加上熟练的使用可以帮助解决遇到的所有问题,不仅可以减轻大脑和身体的负担,更可以让产品设计师在...

如何在APP原型上写需求?(app原型设计规范)

你有没有过这样的经历——辛辛苦苦写了半天的文档,结果开发一眼没看,做需求的时候又把文档里的内容问了一遍?如果你也有这样的经历,那么在APP原型上写需求,或许能帮你解决这个问题。为什么要把需求直接写在...

产品经理工具箱|原型及交互设计工具

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。世界上最实在最方便的原型设计及交互工具:国外的谷歌,facebook等大型互联网公司的交互工具就是上面最原始,最有效最...

交互设计利器汇总:实用工具大揭秘!

近年来,页面交互设计有了很好的发展,越来越受到人们的重视。如果你想成为一名页面交互设计师,除了对平面设计和产品设计有一定的了解外,更重要的是要知道哪个软件适合页面交互设计。本文将带您了解5款流行的页面...

Taro - 京东凹凸实验室出品的小程序多端开发工具,内置 UI 组件库

可以支持转换到微信/京东/百度/支付宝/字节跳动/QQ小程序以及H5端,同时也支持使用Vue语法了。关于Taro凹凸实验室(O2Lab)来自京东零售集团,创建于2015年10月,是...

开发2小时,修bug2周,我用Trae做了个小程序

在当今快速发展的科技时代,AI技术的崛起为开发者带来了前所未有的机遇与挑战。一方面,AI极大地降低了技术门槛,让更多的创意得以快速实现;另一方面,它也提升了竞争维度,促使人们在认知、方法和时间效率上不...

好用的10款免费原型设计工具(免费的原型设计软件)

对产品经理或UI/UX设计师来说,一款好的原型设计工具至关重要。好的原型设计软件能够帮助你快速构建还原度高且信息架构清晰明了的原型图,还能极大减低工作中与同事的沟通成本,更高效地推进工作。那么,一款好...

用局域网内部分享Axure原型,这里有详细的步骤

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。用axure做好原型,想分享给别人,有几个方法:生成本地文件,发送本地文件,但是文件有更新,就要重新发送用axure自...

Axure制作App原型应该怎样设置尺寸?原型尺寸对照表!

最近有几位小伙伴儿都提出同样一个疑问:想用Axure设计一个APP原型放到真实的移动设备中演示,但不知道应该使用什么尺寸?若要解释清楚像素和分辨率需要的篇幅比较长,请大家参考百度百科。这里老枪搜集...

200套数据可视化大屏模版Axure高保真原型

超炫可视化大屏模版来了,Axure高保真原型。关注微信公众号“素材帮帮站”,发送消息100051,获取素材下载地址。查看往期文章,获取更多免费素材。

Axure RP 8 Beta版正式上线(axure rp8是什么软件)

AxureSoftwareSolution公司于美国当地时间8月12日宣布其旗下产品AxureRP的v8版本的测试版正式上线。以下是其官方博客关于对AxureRP8Beta版的介绍:今天,...

PM小技术:使用SAE发布在线Axure文档

俗话说,不会写代码的产品经理不是好的射鸡湿。关于产品经理与技术之间的微妙关系,扯开了讲可是长篇大论,比如知乎上这个问题:IT行业产品经理(尤其是创业的)需要懂技术吗?懂到什么程度?,以及这个:产品经...

『原型资源』Axure自带图标库不够用,第三方经典图标库来袭

今天小编为大家带来第三方经典图标库,己确认内容可用现推荐给大家。直接上手就可不用自己画哈~获取原型文档请与班主任联系!先睹为快,合适再拿走不谢:图标太多,截取部分给大家参考o(* ̄︶ ̄*)o免费领取资...

Axure RP 8 测试版:将于今年夏天到来

我们一直在努力的开发AxureRP8。我认为这是对现有客户以及刚接触Axure的人的一个重要版本。我们希望看到你使用这些新特性,所以我们对现有客户免费升级。所有有AxureRP授权的客户包括标准...