毎朝AWS使用料金を教えてくれるチャットボットを作成

投稿者: | 2017年8月17日

今回もチャットボットネタになります。
毎朝AWSの使用料を教えてくれるボットを作成しました。
環境はRocketChat、ボットフレームワークはhubotになります。
毎朝10時になると昨日と今月の使用料金をチャットでお知らせしてくれます。
以下、ボットのスクリプトです。

cronJob = require('cron').CronJob
module.exports = (robot) ->
  cronjob = new cronJob('0 0 10 * * 1-5', () =>
    AWS = require("aws-sdk")
    AWS.config.loadFromPath("/home/rocketchat/hubot/scripts/credentials.json")
    AWS.config.update({region: 'us-east-1'})
    watch = new AWS.CloudWatch()
    startDate = new Date();
    endDate = new Date();
    startDate.setDate(endDate.getDate() - 1);
    params = {
      Namespace: 'AWS/Billing',
      MetricName: 'EstimatedCharges',
      StartTime: startDate,
      EndTime: endDate,
      Period: 3000,
      Statistics: ['Maximum'],
      Dimensions: [{ Name: 'Currency', Value: 'USD'}]
    }
    watch.getMetricStatistics params,(err,data) ->
      if err
        msg.send "error"
      else
        maxCharge = data.Datapoints[0].Maximum;
        minCharge = data.Datapoints[0].Maximum;
        for i in [1..data.Datapoints.length]
          if data.Datapoints[i]?
            if data.Datapoints[i].Maximum > maxCharge
              maxCharge = data.Datapoints[i].Maximum
            if data.Datapoints[i].Maximum < minCharge
              minCharge = data.Datapoints[i].Maximum
        dailyCharge = maxCharge - minCharge
        envelope = room: "bot"
        robot.send envelope, "今月使用料 $#{maxCharge}"
        robot.send envelope, "昨日使用料 $#{dailyCharge} @all"
  )
  cronjob.start()

これをhubotのscripts以下に配置し、プロセスを再起動すると動き出します。

なお、このスクリプトは以前作成した月額使用料を取得するjavascriptとcronモジュールを組み合わせて使用しています。
それぞれについて詳しく知りたい方は下記の記事を参考ください。
hubotで指定時間になったら発言するスクリプト
http://protocol.nekono.tokyo/2017/08/10/hubot%E3%81%A7%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E6%99%82%E9%96%93%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%82%89%E7%99%BA%E8%A8%80%E3%81%99%E3%82%8B%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/
AWSの月額使用料をjavascriptで取得
http://protocol.nekono.tokyo/2017/08/03/aws%E3%81%AE%E6%9C%88%E9%A1%8D%E4%BD%BF%E7%94%A8%E6%96%99%E3%82%92javascript%E3%81%A7%E5%8F%96%E5%BE%97/
このチャットボットは不要なインスタンスの消し忘れ等を予防するために作成しました。
日々の使用料をチャットに書き込むことでリソースの使用量を監視し、共有することができます。
大きな変化があった際にその場ですぐにチャット上でメンバーに原因を確認することができます。

コメントを残す

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

CAPTCHA