无服务器功能和Lambda功能之间有什么区别

问题描述 投票:18回答:2

我正在玩Cloudformation无服务器转换,并试图找出如何以及何时使用AWS::Serverless::FunctionAWS::Lambda::Function。出于某种原因,Lambda版本用于AWS中的SAM示例。这非常令人困惑。 SAM github。然后还有servlerless框架本身,它实际上是一个nodejs框架。所有这些让我非常困惑。

amazon-web-services aws-lambda serverless
2个回答
17
投票

首先,让我解释一下这些。

AWS无服务器堆栈 - AWS提供无服务器技术的组合,包括API Gateway,Lambda,S3等。

最初引入Lambda时,使用Cloudformation使用这些技术开发无服务器应用程序是一项挑战。问题是由于为API Gateway和Lambda编写Cloudformation的复杂性。

这就是无服务器框架的用武之地。

无服务器框架 - 一个开源DevOps框架,它使用名为serverless.yml的简单文件简化了API网关和Lambda的定义。由于无服务器框架使用约定优于配置,因此只需几行代码即可定义Lambda,API网关等。在无服务器框架下,生成基于serverless.yml中定义的数据的Cloudformation。此外,Serverless Framework还支持多个云提供商。

后来AWS引入了他们自己的简化脚本语言AWS SAM(注意:AWS SAM不是像目前一​​样的带有插件和扩展支持的无服务器的框架),以降低定义CloudFormation作为无服务器框架的替代方案的复杂性。

AWS::Lambda::Function是用于定义Lambda函数的Cloudformation语法。

AWS::Serverless::Function是用于定义Lambda函数的AWS SAM语法,该函数在执行AWS SAM时按照惯例在Cloudformation(AWS::Lambda::Function)和相关资源内部创建Lambda函数。


4
投票

AWS::Serverless::Function适用于与AWS SAM一起使用,而AWS::Lambda::Function适用于普通Cloudformation。它们本质上都是对Lambda函数进行建模,但它只是针对不同的框架,因此具有不同的名称或多或少相同的东西。

从概念上讲,无服务器或Lambda函数之间没有区别。无服务器是AWS称为Lambda(和API网关)的通用术语。

无服务器框架只是一个基于无服务器原则的软件项目,可以与AWS Lambda(以及其他)一起使用。它与其他框架(例如Chalice或Zappa(在AWS Lambda上运行的基于Python的无服务器框架)完全没有太大区别)。

© www.soinside.com 2019 - 2024. All rights reserved.