最近,我开始学习AWS云形成(CF)和AWS无服务器应用程序模型(SAM)。我发现在模板文件的语法方面存在差异。例如,要在SAM中创建Lambda资源,我们需要声明以下内容:
Resources:
HelloLambda:
Type: AWS::Serverless::Function
而在CF中,我们以此声明:
Resources:
HelloLambda:
Type: AWS::Lambda::Function
对于Lambda而言,不仅具有很少的属性/属性,而且在SAM和CF方面也有所不同。
我仍然无法摆脱困惑。我有一些疑问,如果您能消除我的疑问,我将不胜感激:-
资源:HelloLambda:类型:AWS :: Serverless :: Function
干杯,
- 如果CF已经像AWS Cloud的IaC(基础架构即代码)那样做得很好,对SAM的需求是什么?
它简化了涉及lambda和API网关的开发,这是一种非常流行的组合。在纯CFN中做同样的事情,将需要额外的步骤(例如,集成方法的手动设置),而这是许多人不需要或不需要知道如何做的。SAM还具有自定义命令行工具,该工具可帮助您在本地运行和测试lambda + api网关,并提供CFN无法提供的测试事件数量,或通过CodeDeploy隐藏与功能部署相关的复杂性。仅使用CFN不能轻松做到这一点。
- 为什么有人会更喜欢SAM而不是CF?
轻松地在本地测试事物的能力以及与CodeDeploy的简化集成非常有用。因此,这对于希望更加专注于为应用程序编写代码,而不是花大量时间从头开始设置所有内容的人来说是一件好事,这是DevOps的工作。
最后,例如,我可以使用SAM资源(语法上的)来以CF编写,反之亦然,例如,我可以在普通CF模板中使用以下语法声明Lambda吗,反之亦然:-
SAM模板可以包含CFN资源,但不能包含其他资源。SAM中的“资源”部分:
- 本部分类似于AWS CloudFormation模板的“资源”部分。在AWS SAM模板中,此部分除了AWS CloudFormation资源之外,还可以包含AWS SAM资源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句