hubotを使用してチャットボットからAWSのAPIを叩く

投稿者: | 2017年7月25日

チャットボットから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を使用していれば他のチャットツールでも記述方法は同じです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA