26
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Cloud FunctionsからSlackへ通知を送る

Last updated at Posted at 2017-12-16

Google Cloud Functionsとは

ダウンロード.png

サーバーを準備、管理しなくてもコードを実行できるサーバーレスなコンピューティングサービス。AWSでいうLambdaに該当する。コードが実行される時間に対してのみ、最も近い100ミリ秒単位で課金される。
※2017年12月17日時点ではBeta版

Google Cloud Functionsで関数を作成

1. GCPコンソールのメニューから「Cloud Functions」を選択

キャプチャ.PNG

2. 「関数を作成」ボタンを押下

キャsプチャ.PNG

3. 関数の詳細を入力

キャプsssチャ.PNG

入力内容は以下の通り。

入力項目 説明
名前 任意の関数の名前を入力。ここで設定した名前は変えることはできない
割り当てられるメモリ 関数実行時に割り当てられる最大メモリサイズ
トリガー 何をトリガーにこの関数を実行させるかを選択
ソースコード 関数のソースコードをどう管理・編集するかを選択
ステージ バケット コードをステージングするCloud Storageを指定

上記を入力したら「作成する」ボタン押下する。
しばらくすると、以下のような形で関数ができあがる。
キャプチャ.PNG

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クライアントで、上記で作成した関数をコールする。
キャプsチャ.PNG

こんな感じで通知が届けばOK。
キャプチsャ.PNG

参考

26
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?