Aws lambda CloudFront的Terraform lambda_函数_关联作为模块内的可选列表

Aws lambda CloudFront的Terraform lambda_函数_关联作为模块内的可选列表,aws-lambda,amazon-cloudfront,terraform,terraform-provider-aws,Aws Lambda,Amazon Cloudfront,Terraform,Terraform Provider Aws,我们将静态堆栈(CloudFront、S3等)定义为不同项目的可配置模块。现在,其中一些需要edge Lambda,我想让它们也可以配置(和可选(!)) 我们使用的模块如下: module "static" { .. lambda_function_associations = [ { event_type = "viewer-request" lambda_arn = "${aws_lambda_function.onex_lambda_viewer_req

我们将静态堆栈(CloudFront、S3等)定义为不同项目的可配置模块。现在,其中一些需要edge Lambda,我想让它们也可以配置(和可选(!))

我们使用的模块如下:

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}"
    },
  ]
 ..
}
default_cache_behavior {
    ..
    lambda_function_association = ["${var.lambda_function_associations}"]
    ..
}
CloudFront的默认缓存行为定义如下:

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}"
    },
  ]
 ..
}
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
难道没有办法让它们随意工作吗?我真的不想在添加边lambda时复制整个堆栈

显然,类似这样的功能适用于lb_health_check配置块:


提前谢谢

我最近偶然发现了同样的问题。这是由a引起的,它阻止我们将动态值传递给模块内的嵌套块

我找到的唯一解决方法是复制资源声明,并根据
count
变量中的条件创建一个资源(在此处传递一个静态变量,例如
关联lambda\u函数


您可以在此

中找到更多详细信息和示例您找到解决方案了吗?@fboulay还没有,这仍在功能分支中,目前没有时间进行更多调查。谢谢!当然,使用count可以解决这些限制。