Terraform 可重用变量块

LLL*_*LLL 6 terraform

我的 terraform 配置中有两个 lambda,我希望它们具有完全相同的环境变量。

我不想每次修改一个 lambda 环境块时都需要修改它。是否有可能有某种可重用的块?

所以代替这个:

resource "aws_lambda_function" "f1" {
   <..>
   environment {
    variables = {
      ENV_STAGE = "${lower(var.environment)}" # all of these will always be same for both lambdas
      A = "A"
    }
  }
}

resource "aws_lambda_function" "f2" {
  <..>
  environment {
    variables = {
      ENV_STAGE = "${lower(var.environment)}"
      A = "A"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它会是这样的:

env = {
    variables = {
      ENV_STAGE = "${lower(var.environment)}"
      A = "A"
    }
 }

resource "aws_lambda_function" "f1" {
  <..>
  environment = env
}

resource "aws_lambda_function" "f2" {
  <..>
  environment = env
}
Run Code Online (Sandbox Code Playgroud)

dte*_*ech 4

你需要一个当地人街区

locals {
  shared_env_variables = {
    ENV_STAGE = "${lower(var.environment)}"
    A = "A"
  }
}

resource "aws_lambda_function" "f1" {
  environment {
    variables = merge(local.shared_env_variables, {
       ONLY_FOR_F1: "something"
    })
  }
}

resource "aws_lambda_function" "f2" {
  environment {
    variables = local.shared_env_variables
  }
}
Run Code Online (Sandbox Code Playgroud)

更高级的事情,例如基于地图创建资源,可以使用for_each