我有一个变量列表( lambda函数的名称)。我想在aws lambda上生成lambda函数。它们大多具有相同的配置,但其中1种配置的内存大小和环境变量不同。在完成块资源( for_each调用该块)之后,如何调用该引用来更改配置。
这是模块lambda中的文件main.tf。
resource "aws_lambda_function" "lambda_function" {
function_name = <existed var>
s3_bucket = <existed var>
s3_key = <existed var>
runtime = <existed var>
handler = <existed var>
memory_size = 512
timeout = 30
role = <existed var>
environment {
variables = {
ENV = "${var.env}"
POOL_ID = "${var.pooid}"
}
}
这是根级别的main.tf文件
module "aws_lambda_nodejs" {
source = "../../Modules/Lambda"
for_each = var.lambda_nodejs_api_path_part
env = var.env
function_name = each.key
s3_bucket = module.aws_s3_bucket.lambda_bucket_id
s3_key = "${each.key}.zip"
runtime = var.nodejs_runtime
handler = var.nodejs_handler
role = module.bootstrap.lambda_role_arn
aws_api_gateway_rest_api_id = module.aws_api_gateway.aws_api_gateway_rest_api_id
aws_api_gateway_method = "*/"
aws_api_gateway_resource_path = each.value
aws_region = var.aws_region
account_id = var.account_id
pooid = var.pooid
}
我的目标是: var.lambda_nodejs_api_path_part = "functionA","functionB","functionC",..etc
职能A
{
memory_size = 1536,
environment = {
ENV=dev,
poolId=eyjudb123,
configpath="/env/cfg"
}
}
其他功能
{
memory_size = 512,
environment = {
ENV=dev,
poolId=eyjudb123,
}
}
发布于 2022-04-22 06:56:55
在完成块资源( for_each调用该块)之后,如何调用该引用来更改配置。
这不是Terraform的工作方式。在Terraform中,您只为每个资源定义一次所需的状态。然后Terraform为您管理获取该状态的资源。没有像“首先对所有资源执行此操作,然后对其他资源执行此操作”这样的迭代方法。
为了达到你的目标,你可能要做的是
根模块main.tf
module "aws_lambda_nodejs" {
source = "../../Modules/Lambda"
for_each = var.lambda_nodejs_api_path_part
env = var.env
function_name = each.key
memory_size = each.key == "function A" ? 1536 : 512
...
}
Modules/Lambda/main.tf
resource "aws_lambda_function" "pabx_function" {
...
memory_size = var.memory_size
...
}
Modules/Lambda/variables.tf
variable "memory_size" {
type = number
}
https://stackoverflow.com/questions/71962880
复制相似问题