aws-lambda - 如何使用 Terraform 启用单个 Lambda 函数的部署?
问题描述
我正在使用 Terraform 自动部署 Lambda 函数。目标是能够部署单个 Lambda 函数或存储库中的所有函数。我能够从如下结构部署许多功能:
├── README.md
├── js
│ ├── README.md
│ ├── jsFunction1/
│ │ └── main.tf
│ └── jsFunction2/
│ └── main.tf
├── py
│ ├── README.md
│ ├── pyFunction1/
│ │ └── main.tf
│ └── pyFunction2/
│ └── main.tf
└── terraform
├── README.md
├── common/
├── global/
├── main.tf
├── modules/
├── prod/
└── stage/
目标是能够js/jsFunction1
独立部署(无需为任何其他函数构建包),同时还terraform/main.tf
能够在存储库中部署所有 lambda 函数(在构建之后)。这样开发人员就可以通过对单个功能的更改来更新阶段部署,而不必担心他们可能拥有开发人员未处理的功能的不正确版本。
我希望做的是为每个 Lambda 函数创建一个后端,以便开发人员可以terraform apply
从源文件夹中使用。我看不到如何导入从terraform/
模块部署的 Lambda 函数的状态。您能告诉我导入资源的状态是一种合理的方法还是推荐一种更好的方法来实现部署许多 Lambda 函数之一的能力?
这是main.tf
从js/jsFunction1
module "jsFunction1" {
source = "../../terraform/modules/lambda"
source_path = "${path.module}/dist"
lambda_function_name = "jsFunction1"
lambda_handler = "lambdaAdapter.handler"
}
在和main.tf
下的每个文件夹中都有类似的内容。这是来自文件夹js
py
main.tf
terraform
module "jsFunction1" {
source = "./../js/jsFunction1"
}
module "jsFunction2" {
source = "./../js/jsFunction2"
}
module "pyFunction1" {
source = "./../py/pyFunction1"
}
module "pyFunction2" {
source = "./../py/pyFunction2"
}
解决方案
推荐阅读
- python - 带有 info_types 的 Python 错误中的 Google Cloud DLP API 图像编辑
- php - 在 PHP 中创建字母数字范围
- mysql - MySQL 在 null 时用另一列替换列
- bootstrap-4 - 100% 居中的背景宽度
- html - 如何调试响应式图像的 srcset 和尺寸,例如适用哪种媒体条件?
- angular - 路由器插座在自定义组件中不起作用
- node.js - pm2 没有启动 index.js 服务器
- python - Python3查找pickle中的功能数量
- php - Laravel 5.7 护照返回未经身份验证总是在 AWS 服务器上
- angular - 如何在 ngbootstrap 中关闭其他打开的下拉菜单