今回もチャットボットネタになります。
毎朝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/
このチャットボットは不要なインスタンスの消し忘れ等を予防するために作成しました。
日々の使用料をチャットに書き込むことでリソースの使用量を監視し、共有することができます。
大きな変化があった際にその場ですぐにチャット上でメンバーに原因を確認することができます。