amazon-web-services - 我可以在 SAM 模板中使用 AWS Cloud Formation 资源语法吗?反之亦然?

标签 amazon-web-services aws-cloudformation aws-sam

最近,我开始学习 AWS Cloud Formation (CF) 和 AWS Serverless Application Model (SAM)。我发现其模板文件中的语法存在差异。例如,要在 SAM 中创建 Lambda 资源,我们将声明如下内容:-

Resources:
  HelloLambda:
    Type: AWS::Serverless::Function

而在 CF 中,我们这样声明:-

Resources:
  HelloLambda:
    Type: AWS::Lambda::Function

不仅仅是 SAM 中的 Lambda 属性/特性与 CF 中的不同。

我仍然无法清醒过来并感到困惑。我有一些疑问,如果您能消除我的疑虑,我将不胜感激:-

  1. 如果 CF 已经作为 AWS 云的 IaC(基础设施即代码)做出了伟大的贡献,那么 SAM 还需要什么?
  2. 为什么有人更喜欢 SAM 而不是 CF?
  3. 最后,我可以使用 SAM 资源(语法)在 CF 中编写,反之亦然,例如,我可以在普通 CF 模板中使用以下语法声明 Lambda,反之亦然:-

资源: 你好 lambda : 类型:AWS::Serverless::Function

干杯,

最佳答案

  1. What was the need for SAM, if CF was already doing great things as IaC (Infrastructure as Code) for AWS Cloud?

它简化了涉及lambda 和 API 网关(一种非常流行的组合)的开发。在纯 CFN 中执行相同的操作需要额外的步骤(例如,手动设置集成方法),而许多人不希望或不需要知道如何执行这些步骤。此外,SAM 还具有自定义命令行工具,可帮助您在本地运行和测试 lambda+api 网关,并提供 test events 的数量。无法通过 CFN 获得,或者通过 CodeDeploy 隐藏与功能部署相关的复杂性。仅使用 CFN 无法轻松做到这一点。

  1. Why somebody would prefer to SAM instead of CF?

能够在本地轻松测试事物并与 CodeDeploy 进行简化集成非常有用。因此,对于那些想要更多地专注于为应用程序编写代码的人来说,这很有好处,而不是花大量时间从头开始设置一切,这更多的是 DevOps 工作。

Any finally, can I use the SAM resources (syntactical) to write in CF or vice-versa, for instance, can I declare a Lambda using the following syntax in a normal CF template or vice-versa:-

SAM 模板可以包含 CFN 资源,但反之则不然。 Resources SAM 中的部分:

  1. This section is similar to the Resources section of AWS CloudFormation templates. In AWS SAM templates, this section can contain AWS SAM resources in addition to AWS CloudFormation resources.

关于amazon-web-services - 我可以在 SAM 模板中使用 AWS Cloud Formation 资源语法吗?反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63978387/

相关文章:

python - 无法使用python连接AWS EC2上的MongoDb

typescript - AWS CDK 管道构造 : Codebuild error 254

aws-cloudformation - AWS云信息模板: how to provide StreamName for Kinesis resource?

python - AWS sam build 不构建 lambda 函数

java - AWS 网络负载均衡器 (NLB) 是否支持 ALPN?

amazon-web-services - 如何在 AWS API Gateway 中将对象转换为 JSON?

aws-cloudformation - 部署我的 AWS API Gateway 时失败并显示 "The domain name you provided already exists",但我在任何地方都找不到它

amazon-web-services - AWS CloudFormation - 从其他模板导入条件

amazon-web-services - AWS CloudFormation 停留在 CREATE_IN_PROGRESS

aws-cloudformation - SAM 创建新角色和新政策