CloudWatch Alarmの更新(CloudFormation)

cloudwatchアイキャッチ画像

前回作成したCloudWatch Alarmがインスタンスタイプ変更でアラームが聞かなくなったのでCloudFormationを用いて更新します。

今回はインスタンスタイプ変更に伴い、テンプレートを修正します。

テンプレートの修正

vi cloudwatch-alarm-v2.yaml

以下のように、InstanceType の値を変更します。

Parameters:

  TargetInstanceId:
    Type: AWS::EC2::Instance::Id
    Default: i-02cadded2fbe4a7b9

  InstanceType:
    Type: String
    Default: t3.small  # ← ここを変更

  SnsTopicArn:
    Type: String
    Default: arn:aws:sns:ap-northeast-1:215398796763:miotk-sns

現在のテンプレート取得

現在CloudFormationに登録されているテンプレートを取得します。

aws cloudformation get-template \
  --stack-name CloudWatch-Alarm-1 \
  --query 'TemplateBody' \
  --output text \
  > current-template.yaml

差分確認

変更前後のテンプレートを比較し、差分を確認します。

diff current-template.yaml cloudwatch-alarm-v2.yaml

👉 InstanceType のみ変更されていることを確認します。

変更セットの作成

変更内容を事前に確認するため、変更セットを作成します。

aws cloudformation create-change-set \
  --stack-name CloudWatch-Alarm-1 \
  --template-body file://cloudwatch-alarm-v2.yaml \
  --change-set-name cw-alarm-update

変更内容の確認

Cfnのダッシュボードに移動し「CloudWatch-Alarm-1」スタックに先ほど作成した変更セットができていることを確認します。

リソースの変更タブより今回の変更箇所を確認します。
テーブルビューより、インスタンスタイプの値のみ変更になっていることを確認します。

今回アクションがModifyで、期待値以外の箇所のみ変更が確認できましたので、デプロイに進みます。
下記コマンドを実行

aws cloudformation execute-change-set \
  --stack-name CloudWatch-Alarm-1 \
  --change-set-name cw-alarm-update

今回変更したCloudWatch AlarmのInstance Typeが変更にしていることを確認します。

動作確認

CloudWatchコンソールにて、以下を確認します。

  • CloudWatch Alarmのディメンションが更新されていること
  • InstanceType が変更後の値になっていること