【发布时间】:2017-11-06 16:08:32
【问题描述】:
让我们想象一下这样的情况:
我们有 node.js 应用程序,它在服务器端呈现视图并将 html 发送到浏览器。在生成的 html 中,我们几乎没有静态资源(如图像、样式表等)。
为什么我应该(或不)选择 S3 而不是 Lambda 来提供此内容?
以下是我看到的利弊:
性能
我很确定从 S3 提供内容比从 Lambda 提供内容要快得多(没有需要执行的脚本)...
...直到我执行了一些平均 10 个请求的测试(文件大小约为 44kB):
- API GW + S3:285 毫秒
- API GW + Lambda:290 毫秒
- S3:135 毫秒
如您所见,通过 API GW 从 Lambda 提供内容与从 S3 提供内容没有区别。唯一显着的区别是直接链接到 s3 和之前的两个测试之间。
Lambda 1 : S3 1
费用
这里 Lambda 绝对胜出。
首先,我们有 1 000 000 个请求的免费分类, 其次是定价:
- S3:每 10,000 个请求 0.004 USD
- Lambda:每 10,000 个请求大约 0,002000624:
(每 100 万次请求 0.20 美元 + 每 100 毫秒 0.000000208 美元)
所以在定价方面 Lambda 胜出。
总结
我的观察表明,Lambda 甚至是提供静态内容的更好方法(速度与 S3 相似,价格便宜两倍)。
我有什么遗漏的吗?
【问题讨论】:
-
您关于计算(或)数据传输的计算可能是正确的,但在 Lambda 案例中,您的“静态内容”会是什么?我不清楚。
-
我只是用 .zip 包把它提供给云端
-
我希望您知道 CloudFront 的成本高于 S3(除非您需要更快的响应时间)。我对 CloudFront 配置没有太多经验,但根据我的理论知识,它不需要一个“存储”来同步“静态内容”吗?
-
哦.. 我想到的是 CloudFormation,而不是 CloudFront :) 抱歉
-
CloudFormation 对于内容的“存储”毫无用处。那么,现在您需要一种方法来保持“静态内容”正确吗?这就是 S3 的用途。 Lamda 和 S3 用于 2 个不同/不同的目的。
标签: amazon-web-services amazon-s3 aws-lambda