【问题标题】:How can I attach SNS notification to aws_appautoscaling_policy for ECS target tracking in terraform?如何将 SNS 通知附加到 aws_appautoscaling_policy 以在 terraform 中进行 ECS 目标跟踪?
【发布时间】:2018-11-08 04:21:16
【问题描述】:

如果我有以下 terraform 和可用的 SNS 主题 ARN,是否可以将 cloudwatch 通知事件附加到 AWS 在幕后创建的警报?

resource "aws_ecs_service" "service_definition" {
  name                               = "${var.servicename}"
  cluster                            = "${var.name}"
  task_definition                    = "${var.task_definition_arn}"
  desired_count                      = "${var.desired_count}"
  deployment_minimum_healthy_percent = "${var.deployment_minimum_healthy_percent}"

  ordered_placement_strategy {
    field = "attribute:ecs.availability-zone"
    type  = "spread"
  }
}

resource "aws_appautoscaling_target" "ecs_target" {
  max_capacity       = "${var.container_max_count}"
  min_capacity       = "${var.desired_count}"
  resource_id        = "service/${var.clustername}/${var.servicename}"
  role_arn           = "${var.ecs_iam_role}"
  scalable_dimension = "ecs:service:DesiredCount"
  service_namespace  = "ecs"

  depends_on = ["aws_ecs_service.service_definition"]
}

resource "aws_appautoscaling_policy" "ecs_scale-memory" {
  name               = "${var.servicename}_scale-memory"
  policy_type        = "TargetTrackingScaling"
  resource_id        = "service/${var.clustername}/${var.servicename}"
  scalable_dimension = "ecs:service:DesiredCount"
  service_namespace  = "ecs"

  target_tracking_scaling_policy_configuration {
    target_value       = "${var.target_container_memory_percent}"
    scale_in_cooldown  = "${var.target_scalein_cooldown_seconds}"
    scale_out_cooldown = "${var.target_scaleout_cooldown_seconds}"

    predefined_metric_specification {
      predefined_metric_type = "ECSServiceAverageMemoryUtilization"
    }
  }

  depends_on = ["aws_appautoscaling_target.ecs_target"]
}

AWS 为跟踪事件创建两个警报:

  • TargetTracking-service/clustername/servicename-AlarmHigh-GUID 值
  • TargetTracking-service/clustername/servicename-AlarmLow-GUID 值

这些具有通过附加的 ecs_target 扩展至所需计数的操作。我只是想为这些附加(通过 Terraform)一个 SNS 通知(就像一个可以为 EC2 扩展事件做的那样)。

【问题讨论】:

    标签: terraform amazon-cloudwatch aws-ecs


    【解决方案1】:

    由于操作被定义为aws_cloudwatch_metric_alarm 资源的一部分,它们无法独立管理。即使是aws cli equivalent 也需要将这些操作作为设置警报的一部分。由于这部分在您的情况下是抽象的,因此您无法添加 SNS 主题警报。您最好的选择可能是为每个通知 SNS 主题的警报创建一个额外的警报。您可以使用describe-alarms 了解如何配置内置警报,然后在 Terraform 中复制它们。

    【讨论】:

      猜你喜欢
      • 2013-01-19
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      相关资源
      最近更新 更多