AWS SAM(无服务器应用程序模型)和无服务器框架有啥区别?
Posted
技术标签:
【中文标题】AWS SAM(无服务器应用程序模型)和无服务器框架有啥区别?【英文标题】:What's the difference between AWS SAM (Serverless Application Model) and serverless framework?AWS SAM(无服务器应用程序模型)和无服务器框架有什么区别? 【发布时间】:2019-02-13 03:37:29 【问题描述】:我们正在进行项目,我们正在尝试在 nodejs 中构建无服务器应用程序。我遇到了 AWS SAM 和无服务器的术语。哪个最适合实现无服务器应用程序
【问题讨论】:
【参考方案1】:你可以查看这篇文章比较SAM and Serverless
该页面上列出的主要区别如下
无服务器框架是一个易于编写的框架 包括 AWS 在内的无数供应商的事件驱动功能, 谷歌云、Kubeless 等。对于每个提供者,一系列事件 可以配置为调用该函数。框架是开放的 来源并定期接收更新。
AWS 无服务器应用程序模型 (SAM) 是 CloudFormation 的前端,可以轻松编写无服务器 AWS 中的应用程序。支持三种不同的资源 类型:Lambda、DynamoDB 和 API Gateway。使用 SAM Local、Lambda 和 API Gateway 可以通过使用 Docker 容器在本地运行。
这两个框架的共同点是它们生成 CloudFormation。在 换句话说:它们都抽象 CloudFormation,因此您需要 编写更少的代码来构建无服务器应用程序(在 SAM 的情况下) 并部署 Lambda 函数(用于 SAM 和无服务器)。这 最大的不同是 Serverless 是为了部署 FaaS 而写的 (功能即服务)功能对不同的提供者。 SAM 上 另一方面是专门针对 AWS 的抽象层,它不仅使用 FaaS,还有用于存储的 DynamoDB 和用于创建 无服务器 HTTP 端点。
另一个区别是 SAM Local 允许您运行 Lambda 在本地运行并在本地启动 API 网关。这使它 更容易开发和测试 Lambda 函数,而无需将它们部署到 AWS。使用无服务器框架,您还可以调用 Lambda 命令行中的函数,但前提是它们部署到 AWS 并可通过 API Gateway 获得。
【讨论】:
。我对无服务器一词完全感到困惑。你已经给了我明确的答案。【参考方案2】:SAM 和 SF 的最大区别:
1) SAM 仅适用于 AWS; SF 支持多个后端,因此它支持多/混合云应用程序的部署。 SF 还支持 kubernetes 后端。
2) 对于 AWS,SAM 和 SF 模板都编译为 Cloudformation (CF)。 SAM 能够使用 Transform,本质上是 CF 的宏。
3) SAM 是用 Python 编写的; SF 是用 javascript 编写的。
4) SF 有允许您运行任何代码(包括非Javascript)的插件;这实际上意味着可以超越 Cloudformation (CF) 的限制,因为总有一些东西(新的)在 CF 中尚不支持。插件系统也非常灵活,非常有用。
5) SF 变量系统更灵活,允许您根据其他参数的存在(例如阶段)进行动态包含; SAM 变量更接近于 CF。
【讨论】:
以上是关于AWS SAM(无服务器应用程序模型)和无服务器框架有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Lambda 上的无服务器应用程序中存储和使用 HTML 模板(使用 AWS SAM)?
在本地测试 Elasticache 和无服务器 AWS Lambda