Из документов Terraform - https://www.terraform.io/docs /providers/aws/r/cloudwatch_event_target.html

Я не вижу возможности сопоставить несколько целей одному и тому же правилу Cloudwatch. Требуется только поле arn, которое принимает один ресурс. Я пытаюсь сопоставить 5 лямбд с тем же правилом Cloudwatch. Terraform поддерживает это?

РЕДАКТИРОВАТЬ: Как я могу прикрепить только 5 лямбд? Если я создал 15 лямбд, я хочу прикрепить 5 к 3 правилам облачного наблюдения.

0
covfefe 29 Май 2019 в 22:21

2 ответа

Лучший ответ

Работай! Я должен был разделить количество правил на 5, когда я назначил цели правилам. Примерно так это выглядит:

resource "aws_cloudwatch_event_rule" "arule" {
  count       = "${ceil(length(var.lambda_arns) / 5.0)}"  // Needs to be 5.0 to force float computation
  name        = "${var.rule_name}${format("-%d", count.index)}"
  is_enabled  = true
}

resource "aws_cloudwatch_event_target" "atarget" {
  depends_on = ["aws_cloudwatch_event_rule.arule"]
  count = "${length(var.lambda_arns)}"
  rule  = "${aws_cloudwatch_event_rule.arule.*.name[count.index / 5]}"
  arn   = "${var.lambda_arns[count.index]}"
}

Я создал правила событий на основе количества лямбд (то есть, если есть 10 лямбд, создаются 2 правила).

Я создал цели, основываясь на количестве лямбд (то есть, если есть 10 лямбд, создается 10 целей).

Я назначил цели пропорционально среди правил, разделив count.index на 5 (та же логика, которая использовалась для определения количества правил).

0
covfefe 31 Май 2019 в 22:56

Предполагая, что вы создали все свои lambas, используя один и тот же ресурс terraform со счетчиком, вы можете использовать счет также:

resource "aws_cloudwatch_event_target" "cw_target" {
    count = length(aws_lambda_function.my_lambdas)
    rule = "${aws_cloudwatch_event_rule.my_rule.name}"
    arn = "${aws_lambda_function.my_lambdas.*.arn[count.index]}"
}
0
Stargazer 29 Май 2019 в 19:41