在 terraform 中为 Lambda 环境变量重新使用 "common variables"

Re-use "common variables" in terraform for Lambda environment variables

假设我有多个具有自己特定环境变量的 lambda,但也共享一个公共环境变量列表,我如何在一个位置定义公共环境变量并将其“传播”到 lambda 的环境变量定义中?

在 Javascript 中,你可以使用扩展运算符,所以像这样

COMMON_VARS = {
  COMMON_VAR_1 = var.common_var_1
  COMMON_VAR_2 = var.common_var_2
}

resource "aws_lambda_function" "lambda_1" {
  ...
  environment {
    variables = {
      LAMBDA_VAR_1      = var.lambda_var_1
      ...COMMON_VARS
    }
  }
  ...
}

resource "aws_lambda_function" "lambda_2" {
  ...
  environment {
    variables = {
      LAMBDA_VAR_2      = var.lambda_var_2
      ...COMMON_VARS
    }
  }
  ...
}

请注意,所有 var.* 变量都将在 variable 块中定义。

您可以使用merge组合常用变量和新变量:

resource "aws_lambda_function" "lambda_1" {
  ...
  environment {
    variables = merge(var.COMMON_VARS, {
      LAMBDA_VAR_1      = var.lambda_var_1
    })
  }
  ...
}

resource "aws_lambda_function" "lambda_2" {
  ...
  environment {
    variables = merge(var.COMMON_VARS, {
      LAMBDA_VAR_2      = var.lambda_var_2
    })
  }
  ...
}