Google Cloud Functionsとは
サーバーを準備、管理しなくてもコードを実行できるサーバーレスなコンピューティングサービス。AWSでいうLambdaに該当する。コードが実行される時間に対してのみ、最も近い100ミリ秒単位で課金される。
※2017年12月17日時点ではBeta版
Google Cloud Functionsで関数を作成
1. GCPコンソールのメニューから「Cloud Functions」を選択
2. 「関数を作成」ボタンを押下
3. 関数の詳細を入力
入力内容は以下の通り。
入力項目 | 説明 |
---|---|
名前 | 任意の関数の名前を入力。ここで設定した名前は変えることはできない |
割り当てられるメモリ | 関数実行時に割り当てられる最大メモリサイズ |
トリガー | 何をトリガーにこの関数を実行させるかを選択 |
ソースコード | 関数のソースコードをどう管理・編集するかを選択 |
ステージ バケット | コードをステージングするCloud Storageを指定 |
上記を入力したら「作成する」ボタン押下する。
しばらくすると、以下のような形で関数ができあがる。
Slackのトークンを確認
Slack APIのTokenの取得・場所を参考に、Slackのトークンを控える。
スクリプトの作成
Cloud FunctionsはNode.jsのランタイムで実行される。そのため、スクリプトはNode.jsでの実装となる。
index.js
const request = require('request');
// デフォルトでhelloWorldで作成されるのでよしなに変更する
exports.helloWorld = function helloWorld(req, res) {
var headers = {
'Content-Type':'application/json'
}
var options = {
url: 'https://slack.com/api/chat.postMessage',
method: 'POST',
headers: headers,
json: true,
form: {
token: '控えてあるSlackのトークン',
channel: '通知を送りたいSlackのチャンネル名',
username: 'Slackに通知を送るユーザ名',
text: 'Slackに通知するメッセージ'
}
}
request(options, function (error, response, body) {
// 必要に応じてコールバック処理
})
res.status(200).send('Success');
};
package.json
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"request": "^2.81.0"
}
}
通知が飛ぶか試してみる
URLは「関数の詳細」の「トリガー」タブで確認できるので、ブラウザ等のHTTPクライアントで、上記で作成した関数をコールする。