Динамический блок Terraform для конфигурации журнала брандмауэра

#module #terraform

Вопрос:

Заранее благодарю за помощь и потраченное время.

Я пытаюсь создать модуль terraform для конфигурации сетевого брандмауэра AWS.

Ниже приведен мой код:

   firewall_arn = var.firewall_arn
  logging_configuration {
    dynamic "config" {
      for_each = var.log_destination_configs  
      content {  
        log_destination {
          bucketName      = lookup(config.value, "bucketName", null)
          prefix          = lookup(config.value, "prefix", null)  
          logGroup        = lookup(config.value, "logGroup", null)
          deliveryStream  = lookup(config.value, "deliveryStream", null)  
        }
        log_destination_type = lookup(config.value, "log_destination_type", null)
        log_type             = lookup(config.value, "log_type", null)
      }
    }
  }
}
 

Однако, когда я попытался скомпилировать, я получаю следующую ошибку:

 Error: Unsupported block type

  on ../../main.tf line 4, in resource "aws_networkfirewall_logging_configuration" "default":
   4:     dynamic "config" {

Blocks of type "config" are not expected here.
}
 

Это потому, что я объявляю блок в logging_configuration, а это запрещено?

Еще раз спасибо.

Ответ №1:

Согласно документации по аргументу logging_configuration, вложенный блок имеет имя log_destination_config и не config имеет . Вот почему в сообщении об ошибке говорится, что в этом блоке config не ожидается блок. Если вы соответствующим образом обновите имя блока и переменные лямбда-области:

 logging_configuration {
  dynamic "log_destination_config" {
    for_each = var.log_destination_configs

    content {  
      log_destination {
        bucketName      = lookup(log_destination_config.value, "bucketName", null)
        prefix          = lookup(log_destination_config.value, "prefix", null)  
        logGroup        = lookup(log_destination_config.value, "logGroup", null)
        deliveryStream  = lookup(log_destination_config.value, "deliveryStream", null)  
      }
      log_destination_type = lookup(log_destination_config.value, "log_destination_type", null)
      log_type             = lookup(log_destination_config.value, "log_type", null)
    }
  }
}
 

тогда это должно решить проблему, связанную с вашим сообщением об ошибке.