首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我应该(n不)对静态内容使用S3而不是Lambda

为什么我应该(n不)对静态内容使用S3而不是Lambda
EN

Stack Overflow用户
提问于 2017-06-06 03:41:53
回答 2查看 914关注 0票数 0

让我们想象一下这样的情况:

我们有node.js应用程序,它在服务器端渲染视图,并将html发送到浏览器。在生成的html中,我们只有很少的静态资源(如图像、样式表等)。

为什么我应该(或不应该)选择S3而不是Lambda来提供这些内容?

下面是我看到的利弊:

性能

我非常确定从S3提供内容要比从Lambda提供内容快得多(没有需要执行的脚本)……

...Until I执行了一些测试(文件大小~44kB),平均10个请求:

  • API GW + S3: 285ms
  • API GW +λ: 290ms
  • S3: 135ms

正如您所看到的,通过API从Lambda提供内容与从S3提供内容没有区别。唯一显著的区别是直接连接到s3和之前的两个测试之间。

Lambda 1: S3 1

成本

在这里,Lambda取得了绝对的胜利。

首先,我们有1,000,000个请求的免费分类,其次是定价:

  • S3:$0.004每10,000 requests
  • Lambda:约为0,002000624每10,000次请求:

(每一百万次请求$0.2+每100ms$0.000000208)

因此,在定价方面,Lambda胜出。

总结

我的观察表明,即使是静态内容,Lambda也是更好的服务方式(速度与S3相似,价格便宜两倍)。

我是不是漏掉了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-06 07:43:57

我相信你犯了几个错误。

S3请求定价为每万次请求0.004美元,即每万次请求0.4美元。是这样的。

Lambda是每百万次调用0.20美元,外加CPU时间。同意。

但是我相信你已经忽略了一个事实,你不能在没有API Gateway的情况下从Internet调用Lambda函数,这是每百万次请求额外的3.50美元。

提供来自Lambda的静态内容的净成本为每百万次请求3.70美元,外加CPU时间。»

这使得S3的成本大大降低。

然后,考虑带宽成本:当与S3结合使用时,CloudFront比单独使用S3更快,具有更高的每次请求成本,但带宽成本也略低。如果您将您的CloudFront分发限制为价格类别100,那么在某些情况下,您实际上会比只使用S3支付更少的费用。

最便宜地域的S3下载带宽为0.09美元/GB。

最便宜级别的CloudFront下载带宽为0.085美元/GB。

从S3到CloudFront的带宽是空闲的(例如,对于缓存未命中)。

与单独使用S3相比,结合使用CloudFront和S3,每GB的下载成本降低了0.005美元。CloudFront每10,000次请求收费0.0075美元,比S3高出0.0035美元...但是,如果我们假设缓存命中率为50%,则数字如下所示:

每10,000个对象$0.0075 CF + ($0.004 S3 * 0.5命中率)= $0.0095...为了简单起见,让我们将其四舍五入为0.01美元。

现在,我们可以看到,10K对象的请求成本正好被节省的2 2GB下载所抵消,所以如果您的对象大于2G/10K = 2M/10 =200KB/每个,那么使用带有S3的CloudFront实际上比单独使用S3稍微便宜一些。如果不是,成本仍然太接近而不是很明显,并且,正如前面提到的,下载周转时间要短得多。

此外,CloudFront还支持HTTP/2。

²假设API Gateway + Lambda。由于这个答案已经写好了,现在还有两种方法允许Lambda函数返回静态(或动态)内容: Lambda函数的CloudFront's Lambda@Edge feature supports generating HTTP responses,但是该函数运行在一个特殊的、只支持Node.js的轻量级“边缘”容器中。但是,这里的最小运行时间是50ms,而不是标准的100ms。Application Load Balancers also support using a Lambda function as a target,这些是标准容器中的标准Lambda调用,因此支持所有的运行时。这两者都可能比API Gateway更具成本效益,尽管也必须考虑ALB本身的基准成本,除非您已经有了ALB。两者都被限制在1MB的响应体(在Lambda@Edge上,这需要一个“原始请求”触发器),这比API Gateway的限制要小。

票数 2
EN

Stack Overflow用户

发布于 2019-03-22 04:35:57

您可能需要考虑的另一个重要因素是λ冷启动时间,这将影响您的性能。对于静态资源,它可能会显著增加页面加载时间。如果您的lambda碰巧是基于vpc的,这会变得更糟,这需要附加一个新的ENI,这需要更长的时间来创建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44376491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档