AWS SAM(无服务器架构模式)与无服务器框架之间有什么区别?

时间:2018-09-07 19:07:41

标签: amazon-web-services serverless-framework aws-serverless

我们正在研究项目,我们正在努力在Node.js中构建无服务器应用程序。我谈到了AWS SAM和Serverless。哪种方法最适合实现无服务器应用程序

2 个答案:

答案 0 :(得分:5)

您可以将本文与SAM and Serverless进行比较

该页面上列出的主要区别如下

  

无服务器框架是一个易于编写的框架   适用于众多提供商(包括AWS)的事件驱动功能   Google Cloud,Kubeless等。对于每个提供商,一系列事件   可以配置为调用该函数。该框架是开放的   来源并定期接收更新。

     

AWS无服务器应用程序模型(SAM)是   CloudFormation的前端,可轻松编写无服务器   AWS中的应用程序。支持三种不同的资源   类型:Lambda,DynamoDB和API网关。使用SAM Local,Lambda和   API网关可以通过使用Docker容器在本地运行。

     

这两个框架的共同点是它们生成CloudFormation。在   换句话说:它们都抽象了CloudFormation,因此您需要   编写更少的代码来构建无服务器应用程序(对于SAM)   并部署Lambda函数(适用于SAM和无服务器)。的   最大的不同是Serverless是为部署FaaS而编写的   (功能即服务)对不同的提供程序起作用。 SAM上   另一方面是专门用于AWS的抽象层   FaaS以及DynamoDB用于存储,API网关用于创建   无服务器HTTP端点。

     

另一个区别是SAM Local允许您运行Lambda   在本地运行,并在本地启动API网关。这使它   更容易开发和测试Lambda函数,而无需将其部署到   AWS。使用无服务器框架,您还可以调用Lambda   命令行中的所有功能,但前提是它们已部署到AWS   并可以通过API网关使用。

答案 1 :(得分:3)

SAM和SF之间的最大区别:

1)SAM仅适用于AWS; SF支持多个后端,因此它支持多/混合云应用程序的部署。 SF还支持kubernetes后端。

2)对于AWS,SAM和SF模板都可以编译为Cloudformation(CF)。 SAM可以使用本质上是CF宏的Transform。

3)SAM用Python编写; SF用Java语言编写。

4)SF具有允许您运行任何代码(包括非Javascript)的插件;这实际上意味着有可能超越Cloudformation(CF)的局限性,因为始终有CF尚不支持的某些东西(新事物)。插件系统也非常灵活,非常有用。

5)SF变量系统更加灵活,它允许您基于其他参数(例如阶段)的存在进行动态包含; SAM变量更接近CF。