首页 > 解决方案 > Terraform AWS Lambda CI/CD 与单独存储库中的函数代码

问题描述

我有一个存储库,其中包含我所有的 terraform 代码,包括aws_apigatewayv2_api资源和其他相关资源,如阶段。我想为此 API Gateway 的每个路由设置 lambda 集成,但我不希望 lambda 运行时代码与我的基础架构位于同一存储库中。我希望每个 lambda 的代码都有自己的存储库和独立的 CI/CD 管道,这样对 lambda 的代码更改不需要 terraform 来查看应用时的其余基础设施(基本上,一个单独的 terraform 状态每个 lambda)。问题是,我不知道如何做到这一点,同时允许每个 lambda 各自的aws_apigatewayv2_integration资源同时查看它需要的 theaws_api_gatewayv2和 the 。aws_lambda_function

这些是我唯一的选择吗?

我不喜欢这些选项中的任何一个,因为我要么失去了运行时代码和基础设施的分离,要么失去了 lambdas 的 terraform 与核心 terraform 保持同步的能力。是否有第三种解决方案,理想情况下可以让我保持这两种期望的品质?

标签: amazon-web-servicesaws-lambdacontinuous-integrationterraforminfrastructure-as-code

解决方案


第三种解决方案是使用 Terraform 之外的无服务器框架,我过去使用 Terraform 来管理 Lambda 和 API 网关,不需要它的头痛。

使用Terraforminfra的文件夹和/或无服务器框架的文件夹。serverlessapp

如今,Mono Repo 越来越受欢迎。

记住:

  • Terraform最适合管理更持久的共享基础架构
  • 无服务器非常适合管理特定于应用程序的基础架构。

例子:


推荐阅读