hubotと戯れてみる #7 slackとhubotでAWSを操作する。EC2の状態を取得する

hubotと戯れてみる #7 slackとhubotでAWSを操作する。EC2の状態を取得する
■ 店頭より得で、予約しやすいオンラインショップ。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE

slackからhubot経由でAWSを操作するシリーズ2回目。
前回は、AWS cliの準備までを説明しました。

今回は、slackからhubot経由でEC2の状態を取得するまでを実装します。

シリーズ目次

#6  slackとhubotでAWSを操作するための準備 
#7  slackとhubotでAWSを操作する。EC2の状態を取得する ← 今ここ
#8  slackとhubotでAWSを操作する。EC2の起動・停止を行う
#9  slackとhubotでAWSを操作する。ELBの起動・停止を行う
#10 slackとhubotでAWSを操作する。停止していたEC2を起動しELBに登録する。

#6~#10「slackとhubotでAWSを操作する」は、動画のようになります。

EC2の状態を取得する

こんな結果になります。

1.外部ファイルを実行するためにchild_processモジュールを読み込みます。

簡単です。

2.”ec2 check”で、hubotが反応するようにします。

今までと変わりありません。簡単です。

3.hubotからコマンドを実行する前にコマンドの説明

実行するコマンドの説明です。長いですが行っていることは簡単です。

aws ec2 describe-instancesコマンドは、EC2の状態を取得できるコマンドです。

以下オプション

AWSにあるEC2でタグキーがxxxxでタグ値がxxxxと指定しているEC2に絞り込んでいます。うまくタグを利用する事によりhubot側でEC2のリストを持たなくて良くなります。

AWSコマンドの結果は、JSON形式で取得できますが、必要の無い情報がたくさんあるので–queryオプションにより結果を絞り込んでいます。
今回は、インスタンスIDとステータスをEC2の台数分取得するように指定しています。

※一度オプション–filter –queryを付けずに直接実行してみると良いかと思います。

4.hubotからコマンドを実行します。

child_process.execでコマンドを実行することにします。

child_process.execは非同期通信で、結果が返ってくると3つの値とともにコールバックされます。

まずエラーを確認して、次にstdoutにAWSコマンドの結果が入っているためそちらをJSONパースして、後はお好きなようにという感じです。

hubotからAWSコマンドを実行し、結果をslackに渡す感覚がつかめたかと思います。他のコマンドも同じようにできますのでアイディア次第で色々できるはずです。簡単です。

最後に

slackからEC2の起動と停止のデモを披露しました。そこそこ受けたのではと思います。

こちらの動画と同様なことをしたのですが営業の方たちは、こういった技術のかけらみたいなもののデモに普段接していないようで、新鮮に映ったらしいです。

もっとこういう機会があったらと思いました。

■最新のiPhoneの購入・機種変更なら店頭より得で、予約しやすいオンラインショップ。
機種の頭金や使わないオプションパックをつけて年間何万円も損していませんか?
オンラインショップなら故障のサポートもしっかりしていて最低限の費用。待たされることもありません。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE
がお得です。