Я создавал тревогу из облачных часов в моем стеке ELB следующим образом:
module "elb_sg" {
source = "git@github.com:terraform-aws-modules/terraform-aws-security-group.git"
name = "${local.name}-elb-sg"
description = "Allow internet inbound traffic"
vpc_id = "${data.terraform_remote_state.vpc.vpc_id}"
ingress_with_cidr_blocks = "${data.null_data_source.elb_sg_rules.*.inputs}"
tags = "${local.tags}"
# Open egress for all
egress_with_cidr_blocks = "${local.open_egress}"
}
# ELB
module "elb" {
source = "git@github.com:terraform-aws-modules/terraform-aws-elb.git"
name = "${local.name}"
subnets = ["${split(",",local.elb_subnets)}"]
internal = "${var.internal}"
security_groups = "${local.elb_security_group_ids}"
cross_zone_load_balancing = "${var.cross_zone_load_balancing}"
idle_timeout = "${var.idle_timeout}"
connection_draining = "${var.connection_draining}"
connection_draining_timeout = "${var.connection_draining_timeout}"
listener = ["${var.listener}"]
access_logs = ["${var.access_logs}"]
health_check = ["${var.health_check}"]
tags = "${local.tags}"
}
# Cloudwatch alarms
data "aws_elb" "classic_lb" {
count = "${module.elb.this_elb_name != "" ? 1 : 0}"
name = "${module.elb.this_elb_name}"
}
resource "aws_cloudwatch_metric_alarm" "low_healthy_host_count_alarm" {
count = "${var.create_alarm ? 1 : 0}"
# alarm_name = "${module.elb.this_elb_name}-HealthyHostCount"
alarm_name = "${data.aws_elb.classic_lb.name}-HealthyHostCount"
dimensions {
# LoadBalancerName = "${module.elb.this_elb_name}"
LoadBalancerName = "${data.aws_elb.classic_lb.name}"
}
...
}
Однако я попытался использовать data source
, а также прямой доступ к модулю, например ${module.elb.this_elb_name}
, для получения имени ELB как он существует в AWS (а не в моем локальном, поскольку иногда AWS может обрезать длинные имена). Но оба раза при нацеливании только на сигнал тревоги, например terraform plan -target=aws_cloudwatch_metric_alarm.low_healthy_host_count_alarm
, я получаю и другие ресурсы, которые мне не нужны.
Terraform will perform the following actions:
+ aws_cloudwatch_metric_alarm.low_healthy_host_count_alarm
id: <computed>
actions_enabled: "true"
...
~ module.elb_sg.aws_security_group.this
...
~ module.elb.module.elb.aws_elb.this
access_logs.#: "0" => "1"
access_logs.0.bucket: "" => "test-logs"
access_logs.0.enabled: "" => "true"
access_logs.0.interval: "" => "60"
...
Plan: 1 to add, 2 to change, 0 to destroy.
Проблема исчезает, когда я использую жестко закодированное имя или local.name
для elb в измерении и alarm_name в моем будильнике cloudwatch.
Может кто-нибудь точно объяснить, что вызывает такое поведение ? Спасибо.