Cloud FunctionsとPubSubを使ってGCPの予算アラートをslackに通知
背景
GCPの予算アラートをslackに通知したいが、GCPの予算のアラートに無駄金を使わないために、GCPのサーバレスの機能を使って実現したい。
手順
PubSub
ただ名前を作るだけ。GCPに閉じているのでAPIキーなどは必要なし。
Slack で Web Hook
次のページを参考にして作る。
Cloud Functions
トリガーは前述の pubsub で作ったトピックに設定にする。
基本的にはここを、
Cloud Pub/Sub Tutorial | Cloud Functions Documentation | Google Cloud
しかし、内容的(slack通知など)にはここを参照
const { IncomingWebhook } = require("@slack/client"); /** * Background Cloud Function to be triggered by Pub/Sub. * * @param {object} event The Cloud Functions event. * @param {function} callback The callback function. */ exports.helloPubSub = (event, callback) => { const pubsubMessage = event.data; const name = pubsubMessage.data ? Buffer.from(pubsubMessage.data, 'base64').toString() : '{}'; const data = JSON.parse( name ); if (typeof data.costAmount === "undefined" || typeof data.budgetAmount === "undefined" || data.costAmount <= data.budgetAmount ) { callback(); } else { const body = { attachments: [{ text: `Price: ${name}!`, }] }; const webhook = new IncomingWebhook('https://hooks.slack.com/services/XXXXXXX'); webhook.send(body, (err, res) => { if (err) { console.error(err); } if (res) { console.log(res); } callback(); }); } };
GCP でお支払い設定
次を参考に www.topgate.co.jp
pubsub のトピックに紐づける。