у нас есть статический стек (CloudFront, S3, ..), определенный как настраиваемый модуль для различных проектов. Теперь некоторые из них нуждаются в граничных лямбдах, и я тоже хотел сделать их настраиваемыми (и необязательными (!)).
Мы используем модуль следующим образом:
module "static" {
..
lambda_function_associations = [
{
event_type = "viewer-request"
lambda_arn = "${aws_lambda_function.onex_lambda_viewer_req.qualified_arn}"
},
{
event_type = "viewer-response"
lambda_arn = "${aws_lambda_function.onex_lambda_viewer_res.qualified_arn}"
},
]
..
}
и поведение кэша по умолчанию CloudFront определяется следующим образом:
default_cache_behavior {
..
lambda_function_association = ["${var.lambda_function_associations}"]
..
}
и наша переменная в модуле:
variable "lambda_function_associations" {
type = "list"
default = []
}
Применяя этот стек, я получаю:
Error: module.static.aws_cloudfront_distribution.web: "default_cache_behavior.0.lambda_function_association.0.event_type": required field is not set
Error: module.static.aws_cloudfront_distribution.web: "default_cache_behavior.0.lambda_function_association.0.lambda_arn": required field is not set
Нет ли способа заставить их работать опционально? Я действительно не хочу дублировать весь стек при добавлении лямбда-ребер.
Видимо, что-то подобное работает для блоков конфигурации lb_health_check:
https://github.com/hashicorp/terraform/issues/17292#issuecomment-393984861
Заранее спасибо!