将现有的SNS主题分配给Terraform中的警报

时间:2019-03-14 20:45:52

标签: amazon-web-services terraform amazon-sns

我有一个现有的SNS主题,但我不想参考Terraform进行管理,因此可以在aws_cloudwatch_metric_alarm.alarm_actions列表中进行分配。尝试执行计划或应用时,我收到以下消息:

  

变量aws_sns_topic.my-alerts.arn中引用的未知资源“ aws_sns_topic.my-alerts”

根据消息的猜测,我想我必须以某种方式创建SNS资源,但是我不确定如何将其附加/引用到现有主题中。

我正在引用数据块中的现有主题:

data "aws_sns_topic" "my-alerts" {
  name = "my-alerts"
}

然后尝试稍后在警报中使用:

resource "aws_cloudwatch_metric_alarm" "app-health-alarm" {
  alarm_name                = "app-health-alarm"
  comparison_operator       = "GreaterThanOrEqualToThreshold"
  evaluation_periods        = "2"
  metric_name               = "ApplicationComponetHealthRequestFailing"
  namespace                 = "ApplicationComponetHealth"
  period                    = "300"
  statistic                 = "Average"
  dimensions                = {
                                component="my-app"
                              }
  threshold                 = "1"
  alarm_description         = "Checks the health of the app"
  datapoints_to_alarm       = "2"
  alarm_actions             = ["${aws_sns_topic.my-alerts.arn}"]
}

1 个答案:

答案 0 :(得分:0)

引用数据源时,您需要在其前面加上data.

因此您的情况应该是:

resource "aws_cloudwatch_metric_alarm" "app-health-alarm" {
  alarm_name                = "app-health-alarm"
  comparison_operator       = "GreaterThanOrEqualToThreshold"
  evaluation_periods        = "2"
  metric_name               = "ApplicationComponetHealthRequestFailing"
  namespace                 = "ApplicationComponetHealth"
  period                    = "300"
  statistic                 = "Average"
  dimensions                = {
                                component="my-app"
                              }
  threshold                 = "1"
  alarm_description         = "Checks the health of the app"
  datapoints_to_alarm       = "2"
  alarm_actions             = ["${data.aws_sns_topic.my-alerts.arn}"]
}