CloudWatch AlarmですでにALARM状態のアラームでアラームを手動発生させる

2021.12.02

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、Amazon CloudWatch AlarmですでにALARM状態のアラームでアラームを手動発生させる方法を確認してみました。

アラームを手動発生させてみる

OK状態のアラームの場合

CloudWatchメトリクスに設定したアラームのアクションが、期待通りに動作するかどうかテストをしたい場合があります。

その時点でアラームがOK状態である場合は、以下のエントリで紹介されている方法でアラームの手動発生が可能です。

実際に試してみます。

OK状態のアラームtestAlarm2を対象とします。

set-alarm-stateコマンドを実行します。--state-valueALARMを指定することにより手動でALARM状態にさせます。

$ aws cloudwatch set-alarm-state \
  --alarm-name testAlarm2 \
  --state-value ALARM \
  --state-reason "test"

ALARM状態となりました。

履歴にも記録されています。

アクションによるメール通知も届きました。

ALARM状態のアラームの場合

では下記のようにテストをしたいアラームがすでにALARM状態である場合はどうすれば良いでしょうか。

方法としては、OK状態に変更した後にすぐにALARM状態に変更するです。

set-alarm-stateコマンドを2回連続で実行します。1回目の実行では--state-valueOKとし、2回目の実行ではALARMとします。

$ aws cloudwatch set-alarm-state \
  --alarm-name testAlarm \
  --state-value OK \
  --state-reason "test"

$ aws cloudwatch set-alarm-state \
  --alarm-name testAlarm \
  --state-value ALARM \
  --state-reason "test"

アラームの状態がALARM->OK->ALARMと変更できています。

アクションによるメール通知も届きました。

OK、ALARMいずれの状態でもアラームを発生させる

ちなみに後者のALARM状態のアラームの場合の2回変更コマンドを実行する方法は、OK、ALARMいずれの状態でも使用可能です。

なのでアラームのテストをスクリプトなどで自動化したい場合は、その時点でのアラームの状態によらず、OK状態にするコマンドとALARM状態にするコマンドを実行すれば、アラーム状態チェック処理を設けなくてもアラームを発動させられます。

おわりに

Amazon CloudWatch AlarmですでにALARM状態のアラームでアラームを手動発生させる方法を確認してみました。

最近アラームのテストをJestで実装する機会があり、アラームの状態がOKとALARMのいずれでもアラームを発生させる方法を考える必要があったのですが、解決できて良かったです。

参考

以上