terraform 中的“环境中至少有一个字段”错误

Ant*_*ong 4 terraform terraform-provider-aws terraform0.12+

当我尝试应用 terraform 以创建 lambda 函数时,出现此错误:

 Error: At least one field is expected inside environment
Run Code Online (Sandbox Code Playgroud)

这是我的 terraform 模块:

resource "aws_lambda_function" "lambda" {
  function_name = var.lambda_filename
  description = var.description
  runtime = "python3.6"
  environment {
    variables = var.variables
  }
}
Run Code Online (Sandbox Code Playgroud)

var.variables设置为空时抛出此错误。

我该如何解决?

我正在使用 terraform 0.12.6 和 aws provider 2.25.0

Ant*_*ong 10

我找到了一个解决方案:dynamic在最新版本的 terrafrom 中使用

resource "aws_lambda_function" "lambda" {
  function_name = var.lambda_filename
  description = var.description
  runtime = "python3.6"

  dynamic "environment" {
    for_each = local.environment_map
    content {
      variables = environment.value
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

environment_map创建这种方式:

locals {
  environment_map = var.variables == null ? [] : [var.variables]
}
Run Code Online (Sandbox Code Playgroud)