CLI使ってCloudWatchAlarmのSNS設定変更を調査しました


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

第三シスの趙(@realdapeng)です。
久しぶりの投稿です。

今まで、CloudWatchAlarmを使って、EBSのDisk容量を監視しています。
突然通知先のSNSトピックを変更する要件が来ましたので、
効率且つシンプルの作業方法を調査して見ました。

そもそも、手修正でしたら?だめ?

  • 二つのAWSアカウント、トータル100以上のCloudWatchAlarmに対して、手作業が効率的な方法ではないと思います。

  • AWSマネコンまでのアクセスルート下記となり、遅いです。
    リモートデスクトップ → AWS Workspaces → 踏み台サーバ → AWSマネコン

CLIを調査して、使ってみる

put-metric-alarm
Creates or updates an alarm and associates it with the specified metric, metric math expression, or anomaly detection model.

調査してみると、CloudWatchAlarm設定変更の関数はありません。
変更は作成と同じの関数【put-metric-alarm】となり、上書き更新の形になります。

下記CLI DOCSから提供のサンプルより説明します。

CPU使用率が70%を超えた時にSNS【SNS_Topic_01 】に送信する、CloudWatchAlarmを作成する。

aws cloudwatch put-metric-alarm 
--alarm-name cpu-mon 
--alarm-description "Alarm when CPU exceeds 70%" 
--metric-name CPUUtilization 
--namespace AWS/EC2 
--statistic Average 
--period 300 
--threshold 70 
--comparison-operator GreaterThanThreshold 
--dimensions  Name=InstanceId,Value=i-02abcdefg0123 
--evaluation-periods 2 
--alarm-actions arn:aws:sns:ap-northeast-1:123456789012:SNS_Topic_01 
--unit Percent

SNS【SNS_Topic_02】に変更したい時、【alarm-actions】のSNSのみ変更して、これ以外の内容は前のままで、再実行すれば、SNSトピックを変更できます。

aws cloudwatch put-metric-alarm
--alarm-name cpu-mon
--alarm-description "Alarm when CPU exceeds 70%"
--metric-name CPUUtilization
--namespace AWS/EC2
--statistic Average
--period 300
--threshold 70
--comparison-operator GreaterThanThreshold
--dimensions  Name=InstanceId,Value=i-02abcdefg0123
--evaluation-periods 2
--alarm-actions arn:aws:sns:ap-northeast-1:123456789012:SNS_Topic_02
--unit Percent

最後に

マネコンより画面操作が速く、手操作の単純ミスも避けるので、AWSの大量リソース設定変更するとき、CLIを使用することを推薦です。

参照

AWS CLI Command Reference
https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html

Last modified: 2024-02-07

Author