Я хочу создать несколько триггеров CloudwatchLog для моей лямбды и хочу сделать это динамически.
У меня есть набор aws журналов, таких как:
"/aws/lambda/log_group_1"
"/aws/lambda/log_group_2"
"/aws/lambda/log_group_3"
И для каждого из этих logGroups я должен создать следующий конфиг, так что все триггеры на месте. (Пример для первого случая)
variable "api_1_log_group" {
description = "Log Group - Api 1"
default = "/aws/lambda/log_group_1"
}
data "aws_cloudwatch_log_group" "log_group_1"
name = "${var.api_1_log_group}"
}
resource "aws_lambda_permission" "api_1_trigger" {
statement_id = "AllowExecutionFromCloudWatch"
action = "lambda:InvokeFunction"
function_name = var.my_lambda
principal = "logs.${var.region}.amazonaws.com"
source_arn = "${data.aws_cloudwatch_log_group.log_group_1.arn}"
}
resource "aws_cloudwatch_log_subscription_filter" "api_1" {
depends_on = ["aws_lambda_permission.api_1_trigger"]
name = "api_1"
log_group_name = "${var.api_1_log_group}"
filter_pattern = ""
destination_arn = var.my_lambda
}
По-видимому, в версии terraform> 12.0, for и forEach. Но я не могу понять, как я могу использовать их для создания желаемой настройки инфраструктуры с помощью массива, например, logGroupNames , вместо того, чтобы повторять этот код для каждого создания триггера.
В этом ссылка от Terraform также упоминается, что в более поздней версии Terraform будет поддерживаться динамическое создание ресурсов c из списков и пока не поддерживается, когда оно публикуется (и оно публикуется в июле 2018 года, поэтому я думаю, что оно должно уже возможно) HashiCorp Terraform 0.12 Предварительный просмотр: для и для каждого