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

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

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

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モジュールを読み込みます。

[shell] child_process = require ‘child_process’
[/shell]

簡単です。

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

[shell] module.exports = (robot) ->
robot.respond /ec2 check/i, (msg) ->
msg.send “EC2のステータスを取得します・・・。”
[/shell]

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

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

実行するコマンドの説明です。長いですが行っていることは簡単です。
[shell] aws ec2 describe-instances –filter ‘Name=tag:xxxx,Values=xxxx’ –query ‘Reservations[].Instances[][InstanceId,State.Name]’
[/shell] aws ec2 describe-instancesコマンドは、EC2の状態を取得できるコマンドです。

以下オプション
[shell] –filter ‘Name=tag:xxxx,Values=xxxx’
[/shell] AWSにあるEC2でタグキーがxxxxでタグ値がxxxxと指定しているEC2に絞り込んでいます。うまくタグを利用する事によりhubot側でEC2のリストを持たなくて良くなります。
[shell] –query ‘Reservations[].Instances[][InstanceId,State.Name]’
[/shell] AWSコマンドの結果は、JSON形式で取得できますが、必要の無い情報がたくさんあるので–queryオプションにより結果を絞り込んでいます。
今回は、インスタンスIDとステータスをEC2の台数分取得するように指定しています。

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

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

child_process.execでコマンドを実行することにします。
[shell] child_process.exec “コマンド”, (error, stdout, stderr) ->
[/shell] child_process.execは非同期通信で、結果が返ってくると3つの値とともにコールバックされます。
[shell] child_process.exec “aws ec2 describe-instances –filter ‘Name=tag:xxxx,Values=xxxx’ –query ‘Reservations[].Instances[][InstanceId,State.Name]'”, (error, stdout, stderr) ->
if !error
obj = JSON.parse(stdout)
for val in obj
msg.send val[0] + ” : ” + val[1] [/shell] まずエラーを確認して、次にstdoutにAWSコマンドの結果が入っているためそちらをJSONパースして、後はお好きなようにという感じです。

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

最後に

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

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

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

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ