Terraform создает правило Cloudwatch с несколькими целями - PullRequest
0 голосов
/ 29 мая 2019

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

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

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

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Работай! Мне пришлось разделить количество правил на 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 голосов
/ 29 мая 2019

Предполагая, что вы создали все свои ламбы, используя один и тот же ресурс 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]}"
}
...