我正在 AWS 中构建一个分布式应用程序,包括基本资源(iam 等)、数据仓库,但主要是无服务器资源,如 lambdas、sns、mongodb、..
为了通过 OTAP 部署它,我正在研究 AWS 工具,主要在此处概述。
这意味着 CodeCommit 中的 1 个 repo 将触发 CodePipeline,它将在正确的位置包含这些组件(实现订单控制):
- 部署 CF 堆栈
- 使用 CodeBuild 打包(AWS sam 包)一个 SAM 资源-> 为每个 SAM 资源一个
- 使用构建步骤创建变更集 -> 每个 SAM 资源一个
- 使用构建步骤执行变更集 -> 每个变更集一个
因此,作为一个例子,我需要一个 buildspec.yml 用于该 .js 文件旁边的每个 lambda,并且 lambda 还需要在 SAM 模板中构建(它自己的或分组的)。还有一个 build-change-set 步骤和 execute-change-set 步骤。
我的问题: 如果在此设置中,对于整个分布式应用程序的 1 个 repo,我更改了 1 个微小的愚蠢的东西,例如许多 lambdas 中的 1 个超时,那么这个重建是否会重新部署应用程序的所有元素?
如果没有,谢天谢地,但它是如何工作的?CodeCommit 将所有源的整个 zip 发送到 S3,而不是仅更改。因此,所有元素都将被触发,并且在堆栈(CF 或 SAM)的部署过程中,底层技术可能是智能的,并且只执行需要更改的操作。但是,仍然会触发 CodePipeline 中的所有元素(并且有很多元素),这在目标是尽快完成整个部署的情况下效率低下。
如果是,那会很糟糕,然后我会在管道中找到另一个使用自定义代码(lambdas)的解决方案,仅从 CodeCommit API 中提取更改并执行 cretae-change-set 并执行。使用具有主要缺点的 aws sdk 会导致订单控制以及一些诸如“aws sam 包”之类的东西在 sdk 中不可用。