15

我们正在开发项目,我们正在尝试在 nodejs 中构建无服务器应用程序。我遇到了 AWS SAM 和无服务器的术语。哪个最适合实现无服务器应用程序

4

2 回答 2

18

您可以查看这篇比较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 可用。

于 2018-09-08T02:19:40.367 回答
11

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。

于 2019-01-12T01:36:24.057 回答