问题描述
我希望对我在网上看到的一些术语进行澄清,因为它与 AWS 尤其是 lambda 相关。首先,我想知道命令 sam build/deploy
与设置 CodeBuild 作业相比如何工作。我是否需要 CodeBuild 作业来运行这些命令? sam deploy
命令专门查找哪些文件?它寻找 serverless.yml
或 template.yml
还是两者兼而有之?什么是 sam.yml
文件或它们是否过时?
我有一个带有用于 lambda 的 CodeBuild 管道的应用程序,但我正在扩展我的存储库以包含多个 lambda 并考虑在每个 lambda 目录中放置一个 serverless.yml
文件,但我不想创建一个CodeBuild 作业和每个作业的 buildspec
。我假设 sam deploy
搜索所有 template.yml
和 serverless.yml
文件并将您的堆栈构建为一个整体(并且只更新需要更新的内容?)
如果对 API Gateway 感到好奇,应用程序在 Node 中。任何见解将不胜感激。
解决方法
我会尽量给出简短的回答:
-
sam deploy
的作用:它将压缩代码并在.aws-sam
文件夹中创建 cloudformation yaml 文件并运行 cloudformation deploy。 - 我们是否需要 CodeBuild 来运行相同的部署:我们仍然需要一些服务器来运行 sam deploy 或在安装了节点的情况下构建,它可以是本地机器或远程服务器或 CodeBuild 环境。立>
- 我们需要多个模板吗?所有 Lambda 都可以在一个模板中创建。但是cloudformation 有150 个资源的限制。如果我们在单个模板中有太多的函数和 API,我们很容易达到这个限制。每个 api 可能会转换为多个云形成资源。例如:1 个 lambda 函数可以是 iam 角色、cloudwatch 日志、api 路由、方法、集成、事件源等。
-
sam deploy
是否总是寻找template.yaml
默认情况下是,但可以通过传递 --template-filesam deploy --template-file template-x.yml
轻松覆盖
- 仅更新更改的资源? Cloudformation 更新堆栈仅更新更改的资源。