チャットボットからAWSのAPIを叩きます。
フレームワークはhubotを使用しますので「coffee script」で記述します。
scripsのディレクトリにボットスクリプトを作成します。
$ ./scripts/getInstances.coffee
ボットスクリプトを記述します。
下記の例は起動中のインスタンス名を表示するものとなります。
module.exports = (robot) -> robot.hear /AWS$/i, (msg) -> AWS = require("aws-sdk") AWS.config.loadFromPath("/home/rocketchat/hubot/scripts/credentials.json") AWS.config.update({region: 'ap-northeast-1'}) ec2 = new AWS.EC2() params = { Filters: [ { Name: 'instance-state-name', Values: ['running'] },] } ec2.describeInstances params,(err,data) -> if err msg.send "error" else for i in [0..data.Reservations.length] if (data.Reservations[i]) instance = data.Reservations[i].Instances[0].Tags[0].Value msg.send "running #{instance}"
前回作成したjavascriptでAPIを叩くスクリプトをcoffeeで書き直しています。
クレデンシャルの設定等はそちらを参考ください。
hubotを再起動します。
$ /etc/init.d/hubot restart
チャットボットが存在するチャンネルで「AWS」と発言するとボットが応答します。
なお、チャットツールにRocketChatを使用してますが環境の違いはフレームワークが吸収しています。
なのでhubotを使用していれば他のチャットツールでも記述方法は同じです。