EC2 Run Command によるSNS通知についての簡単な紹介と、この機能を利用した Cloud Automator との連携について説明します。
EC2 Run Command によるSNS通知について
EC2 Run Command によるSNS通知の設定は、AWS マネジメントコンソール画面の 「EC2→コマンド→コマンド履歴」 にて新規にコマンドを実行する際に行えます。
EC2 Run Command を実行するための事前準備などは、公式のドキュメントをご確認ください。以降は、EC2 インスタンス上でEC2 Run Command が実行可能な状態を前提として記述していきます。
「コマンドを実行」ボタンをクリックして設定を開始します。Linux上でシェルスクリプトを実行するドキュメントを選択します。
コマンドを実行するEC2 インスタンスを選択して、実際に実行するコマンドを記述します。今回はAmazon Linuxにnginxを新規にインストールして起動を行うコマンドを実行してみます。
yum install -y nginx
chkconfig nginx on
service nginx start
最後にコマンドの実行結果用のS3バケットと、通知を行うための SNS Topic ARN と、このSNS通知を実行するための IAM Role ARN を指定します。
IAM Role については権限が適切に設定されていないと、SNSへの正常に通知が行われないので注意が必要です。
またIAM Roleの権限が適切なのにもかかわらず、以下のようなエラーが出る場合は 信頼関係 が不足している可能性が考えられます。 公式のドキュメントをご確認ください。
実行が成功すると以下の画面が表示され、指定した SNS Topic に通知がされているかと思います。
事前に多少の準備が必要ですが、1度作業を行えばあとは簡単にコマンドを実行してSNSで通知を行うことができます。コマンドの実行ではEC2にSSH接続せずに実行できるので、実行結果の通知を活用することでより確実かつ簡単に操作を行えるようになります。
Cloud Automatorとの連携
EC2 Run Command によるSNS通知についての紹介をしましたが、SNSの通知先を Cloud Automator にすることで、Cloud Automator が用意している様々なアクションを行うことができます。
例えば、今回のようにEC2インスタンスで何かコマンドを実行して、成功したらSNSで通知するようにすると、Cloud Automatorの「AMIを作成」アクションが動作して指定したEC2インスタンスからAMIを作成したり、ELBにアタッチしたりすることが出来ます。
- こちらの記事を参考にSNSトリガーを使用したジョブを作成します。
- 以下のように EC2 Run Command による SNS 通知に利用する SNS Topic に Cloud Automator で払い出されたエンドポイントを Subscription として追加するだけで利用可能です。
コマンドが実行されてSNSへの通知が行われると、それをトリガーとしてジョブが実行されます。