我正在使用Cloudformation无服务器转换,我正在尝试弄清楚如何以及何时使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav id="navbar">
<div class="dropdown-btn">Go To...</div>
<ul class="navbar-tab">
<li class="navbar-tab-1 selected">Home</li>
<li class="navbar-tab-1 select">Searches
<ul class="hover-list select">
<li><a>Search</a></li>
<li><a>Rocks</a></li>
</ul>
</li>
<li class="navbar-tab-1 select">Engagement Rings
<ul class="hover-list select">
<li><a>Verragio</a></li>
</ul>
</li>
<li class="navbar-tab-1 select">Services
<ul class="hover-list select">
<li><a href="">Repair</a></li>
</ul>
</li>
</ul>
</nav>
或AWS::Serverless::Function
。出于某种原因,Lambda版本用于AWS中的SAM示例。这非常令人困惑。 SAM github。然后还有AWS::Lambda::Function
框架本身,它实际上是一个servlerless
框架。所有这些让我非常困惑。
答案 0 :(得分:17)
首先,让我解释一下这些。
AWS无服务器堆栈 - AWS提供无服务器技术的组合,包括API网关,Lambda,S3等。
当Lambda最初推出时,使用Cloudformation使用这些技术开发无服务器应用程序是一项挑战。问题是由于为API Gateway和Lambda编写Cloudformation的复杂性。
这就是无服务器框架的用武之地。
无服务器框架 - 一个开源DevOps框架,它使用名为serverless.yml的简单文件简化了API网关和Lambda的定义。由于无服务器框架使用约定优于配置,因此只需几行代码即可定义Lambda,API网关等。在无服务器框架下,生成基于serverless.yml中定义的数据的Cloudformation。此外,无服务器框架支持多云提供商。
后来AWS引入了他们自己的简化脚本语言AWS SAM(注意:AWS SAM不是像目前这样具有插件和扩展支持的无服务器的框架),以降低定义CloudFormation作为无服务器框架的替代方案的复杂性。
AWS::Lambda::Function
是用于定义Lambda函数的Cloudformation语法。
AWS::Serverless::Function
是用于定义Lambda函数的AWS SAM语法,该函数在执行AWS SAM时按照惯例在Cloudformation(AWS::Lambda::Function
)和相关资源内部创建Lambda函数。
答案 1 :(得分:4)
AWS::Serverless::Function
用于与AWS SAM一起使用,而AWS::Lambda::Function
用于普通Cloudformation。它们本质上都是对Lambda函数进行建模,但它只是针对不同的框架,因此它们具有不同的名称或多或少相同的东西。
从概念上讲,无服务器或Lambda函数之间没有区别。无服务器是AWS称为Lambda(和API网关)的通用术语。
无服务器框架只是一个基于无服务器原则的软件项目,可以与AWS Lambda(以及其他)一起使用。它与其他框架(例如Chalice或Zappa(在AWS Lambda上运行的基于Python的无服务器框架)都没有太大区别。)
答案 2 :(得分:0)
在框架方面,两者之间并没有太大的区别,但是从技术上讲,两者之间的区别很小,如下所示:
无服务器:它创建IAM角色,S3存储桶,Cloudformation模板,创建,更新和部署代码。可以从命令调用程序。
更重要的一点是,当我们想删除功能和所有相关服务(例如S3,IAM角色等)时,可以使用单行命令来完成。在AWS Lambda中,我们需要一个一个地手动删除每个服务
AWS Lambda:它允许执行代码段,以响应其他AWS资源(例如AWS CloudWatch警报),NoSQL表中的DynamoDB更改,S3存储桶中的上传事件等活动引起的触发。< / p>
AWS Lambda函数具有局限性,建议您减小代码大小并将较大的函数分解为较小的函数。