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