28934
AWS CloudWatchでカスタムメトリッックス等アラートの設定をしました。  
アラートテストをして閾値を超えたら初回はアラートメールが飛ぶことを確認できました。  
その後も閾値を超え続けた状態の場合メールが飛び続けるようにしたいです。  
状態が続く限りメールを飛ばす方法をご存知であれば教えてください。
CC BY-SA 3.0
2016-09-15T06:20:08.577
28899
2016-09-16T14:50:02.320
10851
question
aws
AWS CloudWatchのアラートメール状態が続く限りメールを飛ばしたい
CloudWatchにそういった機能は無いと思いますので 別のツールを使うか作り込むかになると思います。

ご希望のものとは違うかもしれませんが AWS SDK や CLI を使ってアラームの状態を取得してSNS
トピックスをパブリッシュするスクリプトを定期的に動かせば実現できる気がします。

アラームの情報は `describe-alarms` で参照できます。

```

    $ aws cloudwatch describe-alarms --alarm-names rds-cpu-credit-balance
    {
        "MetricAlarms": [
            {
                "EvaluationPeriods": 1,
                "AlarmArn": "arn:aws:cloudwatch:ap-northeast-1:*************:alarm:rds-cpu-credit-balance",
                "StateUpdatedTimestamp": "2016-09-16T03:28:20.937Z",
                "AlarmConfigurationUpdatedTimestamp": "2016-06-21T07:44:02.621Z",
                "ComparisonOperator": "LessThanThreshold",
                "AlarmActions": [
                    "arn:aws:sns:ap-northeast-1:*************:rds-alram"
                ],
                "Namespace": "AWS/RDS",
                "StateReasonData": "{\"version\":\"1.0\",\"queryDate\":\"2016-09-16T03:28:20.922+0000\",\"startDate\":\"2016-09-16T03:23:00.000+0000\",\"statistic\":\"Average\",\"period\":300,\"recentDatapoints\":[299.17],\"threshold\":300.0}",
                "Period": 300,
                "StateValue": "ALARM",
                "Threshold": 300.0,
                "AlarmName": "rds-cpu-credit-balance",
                "Dimensions": [
                    {
                        "Name": "DBInstanceIdentifier",
                        "Value": "mydatabase"
                    }
                ],
                "Statistic": "Average",
                "StateReason": "Threshold Crossed: 1 datapoint (299.17) was less than the threshold (300.0).",
                "InsufficientDataActions": [],
                "OKActions": [
                    "arn:aws:sns:ap-northeast-1:*************:rds-alram"
                ],
                "ActionsEnabled": true,
                "MetricName": "CPUCreditBalance"
            }
        ]
    }
    
```

  * `StateValue` はアラームの状態 (ALARM, OK, INSUFFICIENT_DATA)
  * `AlarmActions` は SNS Topics の ARN 

SNSのパブリッシュは `publish` コマンドで行います。  
`AlarmActions` で確認した ARN を指定して 件名とメッセージを指定します。

```

    $ aws sns publish --topic-arn arn:aws:sns:ap-northeast-1:*************:rds-alram --subject "Alarm test" --message "hello aws."
    {
        "MessageId": "....................."
    }
    
```

するとこんなメールが通知されます

```

    Subject: Alarm test
    
    hello aws.
    
    --
    If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:
    https://sns.ap-northeast-1.amazonaws.com/unsubscribe.html?SubscriptionArn=arn:aws:sns:.....
    
    Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support
    
```
CC BY-SA 3.0
2016-09-16T14:50:02.320
28934
2016-09-16T14:50:02.320
5008
28899
answer