Aws lambda CloudFront的Terraform lambda_函数_关联作为模块内的可选列表
我们将静态堆栈(CloudFront、S3等)定义为不同项目的可配置模块。现在,其中一些需要edge 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
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可以解决这些限制。