Ошибка "по крайней мере одно поле внутри среды" в terraform

Когда я попытался применить терраформу для создания лямбда-функции, я получил эту ошибку:

 Error: At least one field is expected inside environment

Вот мой модуль terraform:

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

Эта ошибка возникает, когда var.variables установлено в ноль.

Как я могу это исправить?

Я использую terraform 0.12.6 и провайдера AWS 2.25.0

2 ответа

Я нахожу решение: используйте dynamic в последней версии террафром

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
    }
  }
}

environment_map создан таким образом:

locals {
  environment_map = var.variables == null ? [] : [var.variables]
}

Добавляя к решению выше, также не забудьте установить значение по умолчанию для вашей переменной равным нулю. Например.

      variable variables {
  type    = map
  default = null
  description = "My map" 
}
Другие вопросы по тегам