我们正在开发项目,我们正在尝试在 nodejs 中构建无服务器应用程序。我遇到了 AWS SAM 和无服务器的术语。哪个最适合实现无服务器应用程序
2 回答
您可以查看这篇比较SAM 和 Serverless 的文章
该页面上列出的主要区别如下
Serverless Framework是一个框架, 可以轻松为包括 AWS、Google Cloud、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 进行存储,使用 API Gateway 创建无服务器 HTTP 端点。
另一个区别是 SAM Local 允许您在本地运行 Lambda 函数并在本地启动 API 网关。这使得开发和测试 Lambda 函数变得更加容易,而无需将它们部署到 AWS。使用无服务器框架,您还可以从命令行调用 Lambda 函数,但前提是它们已部署到 AWS 并通过 API Gateway 可用。
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。