两个for_each在地形资源模块



我是新手。试图在一个资源模块中使用两个for_each

resource "aws_cloudwatch_event_rule" "event_rule" {
name                = "${local.service_name}-trigger"
description         = "Schedule for synthetic tests lambda function"
for_each = var.cron_schedule
schedule_expression = each.value.cron_schedule
for_each = var.enable_event_schedule_trigger
is_enabled = each.value.enable_event_schedule_trigger
}
resource "aws_cloudwatch_event_target" "target_lambda" {
target_id = "${local.service_name}"
arn       = aws_lambda_function.synthetictests.arn
rule      = aws_cloudwatch_event_rule.event_rule.name
}

但是出现以下错误。

The argument "for_each" was already set at lambda_trigers.tf:4,3-11. Each
argument may be set only once.

变量
variable "cron_schedule" {
type        = list(string)
description = "Cron schedule of lambda trigger via event bridge"
default     = []
}
variable "enable_event_schedule_trigger" {
type    = list(bool)
default = ["false"]
description = "flag to enable or disable event trigger. Disabled by 
default"
}

请建议。

可以使用zipmap:

resource "aws_cloudwatch_event_rule" "schedule_rule" {
name                = "${local.service_name}-trigger"
description         = "Schedule for synthetic tests lambda function"
for_each            = zipmap(var.cron_schedule, var.enable_event_schedule_trigger)
schedule_expression = each.key
is_enabled          = each.value
}

既然aws_cloudwatch_event_rule使用了,aws_cloudwatch_event_target可能也应该使用它:

resource "aws_cloudwatch_event_target" "target_lambda" {
for_each = aws_cloudwatch_event_rule.event_rule
target_id = "${local.service_name}"
arn       = aws_lambda_function.synthetictests.arn
rule      = each.value.name
}

最新更新