首页 > 解决方案 > AWS SAM(无服务器应用程序模型)和无服务器框架有什么区别?

问题描述

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

标签: amazon-web-servicesserverless-frameworkaws-serverless

解决方案


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


推荐阅读