Я хочу добавить сигнал тревоги, который срабатывал, когда в балансировщике нагрузки приложения, созданном средой Elastic Beanstalk, слишком много ошибок 5xx.
Среда EB создается скриптом terraform. Я могу узнать имя балансировщика нагрузки только после того, как terraform создал ресурс aws_elastic_beanstalk_environment .
На этой странице говорится, что эластичное окружение бобов имеет выход, который называется elb_load_balancers
. Я думаю, что я, вероятно, могу использовать этот вывод для создания ресурса aws_cloudwatch_metric_alarm .
Следующий скрипт terraform - это то, что я сделал сейчас. Не работает
resource "aws_cloudwatch_metric_alarm" "alarm_5xx" {
alarm_name = "EB 5XX Alarm"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "1"
metric_name = "HTTPCode_ELB_5XX_Count"
namespace = "AWS/ApplicationELB"
period = "60"
statistic = "Sum"
threshold = "10"
dimensions = {
# How can I put the name of the dynamically generated load balancer here?
LoadBalancer = "${aws_elastic_beanstalk_environment.my_eb_environment_name.elb_load_balancers}" # This line doesn't work
}
alarm_description = "This metric monitors number of 5xx erros in the application load balancer"
}
При запуске terraform apply -target=aws_cloudwatch_metric_alarm.alarm_5xx
приведенный выше скрипт генерирует следующую ошибку:
* aws_cloudwatch_metric_alarm.alarm_5xx: Resource 'aws_elastic_beanstalk_environment.my_eb_environment_name' does not have attribute 'elb_load_balancers' for variable 'aws_elastic_beanstalk_environment.my_eb_environment_name.elb_load_balancers'
Я тоже пробовал
resource "aws_cloudwatch_metric_alarm" "alarm_5xx" {
alarm_name = "EB 5XX Alarm"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "1"
metric_name = "HTTPCode_ELB_5XX_Count"
namespace = "AWS/ApplicationELB"
period = "60"
statistic = "Sum"
threshold = "10"
dimensions = {
LoadBalancer = "${aws_elastic_beanstalk_environment.RightestCARE-Api-Prod-Terraform.load_balancers}" # This line doesn't work
}
alarm_description = "This metric monitors number of 5xx erros in the application load balancer"
}
Но это приводит к ошибке ниже:
* aws_cloudwatch_metric_alarm.alarm_5xx: dimensions (LoadBalancerName): '' expected type 'string', got unconvertible type '[]interface {}'