如何访问terraform中for_each之后的特定项



我有一个变量列表(lambda函数的名称)。我想在aws上生成函数。它们中的大多数具有相同的配置,但其中一个具有不同的内存大小和环境变量。在我完成块资源(for_each调用该块)之后,我如何调用该引用来更改配置?

这是主文件。模块lambda

中的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}"
}
}

这是主要的。根目录下的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",…等] 函数

{
memory_size = 1536, 
environment = {
ENV=dev, 
poolId=eyjudb123, 
configpath="/env/cfg"
}
} 

其他功能

{
memory_size = 512, 
environment = {
ENV=dev, 
poolId=eyjudb123,
}
}

在我完成块资源(for_each调用该块)之后,我如何调用该引用来更改配置

这不是Terraform的工作原理。在Terraform中,您可以为每个资源定义所需的状态,并且只定义一次。然后,Terraform会为您管理该状态下的资源。没有像这样的迭代方法:"首先对所有资源这样做,然后对其他资源那样做">

为了达到你的目标,你可能想要做的是

  • 将内存大小作为一个额外的变量添加到lambda模块中。
  • 为不同的实例传递不同的值给变量。

根模块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
...
}

模块/λ/main.tf

resource "aws_lambda_function" "pabx_function" {
...
memory_size = var.memory_size
...
} 

模块/λ/variables.tf

variable "memory_size" {
type = number
}

最新更新