始めに

以前、以下の記事で書いたように、EC2起動時に自信を監視するCW AlarmをUserdata使用で作成しました。
https://cloudpack.media/61026

今回は、それの延長で、EC2が終了される前にCW Alarmも一緒に削除する仕組みを作りました。
起動時にはUserdataで仕込むことができますが、終了時にはそういったオプションはないと思うので、Systemdを活用しました。

Shell

# Service 作成
sudo vi dele.service

-------
[Unit]
## 説明
Description=delete
## shutdownされる前に実行
Before=shutdown.target

[Service]
## シングルジョブを行い終了する
Type=oneshot
## systemd はプロセスが終了した後もサービスがアクティブだとみなす。 
## この設定が今回必要だったかは不明
RemainAfterExit=true
## 終了時のシェル
ExecStop=/home/xx/shutdownScript.sh

[Install]
## shutdown時に動かすサービスなのだから、shutdown.targetでは?
## と思ったが、なぜか通らなかったので、multi-user.targetに。
WantedBy=multi-user.target
-------

sudo mv dele.service /etc/systemd/system/dele.service
sudo mkdir /home/xx/

# スクリプト作成
sudo vi shutdownScript.sh

-----------
#!/bin/bash
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_DEFAULT_REGION=
aws cloudwatch delete-alarms --alarm-names ec2-$InstanceId-cpu-alarm
-----------

sudo mv shutdownScript.sh /home/xx/
sudo chmod u+x /home/xx/shutdownScript.sh

sudo systemctl daemon-reload
sudo systemctl start dele --now
sudo systemctl enable dele
Created symlink /etc/systemd/system/multi-user.target.wants/dele.service → /etc/systemd/system/dele.service.

テストとして、EC2をterminateさせると、作成したAlarmが消えていると思います。

参考

https://qiita.com/comwing65/items/3386a061aeb3d2f81b81
https://kernhack.hatenablog.com/entry/2014/12/08/000708

参考にさせていただきました。ありがとうございます。

備考

Linux、本当に難しいのと、かなり奥が深いことを実感しました。
何か間違っている記載ありましたら教えていただけると嬉しいです。

元記事はこちら

https://qiita.com/namely_/items/637568274b78ac2ace3c
著者:@namely_


アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアコンサルティングパートナーであるアイレットに、ぜひお任せください。

AWS 運用・保守サービスページ:
https://cloudpack.jp/service/aws/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://cloudpack.jp/contact/form/