2018年8月31日金曜日

Google Cloud Functions を使ってみる

概要

Google Cloud Functions は AWS Lambda のようなサービスです
Nodejs などのスクリプトをアップロードしそれをクラウド上でキックすることができます
今回は Nodejs を使って Google Cloud Functions を試してみました
ちなみに Python3.7 もベータですが対応しているようです

Google Cloud Functions は有料のサービスになるので以下の内容を試す場合は留意の上実施してください (と言っても 200 万回コールしない限り無料なので大丈夫だと思いますが)

環境

  • Google Cloud Scripts (2018/08/27 時点)
  • Google Cloud Shell (2018/08/27 時点)

API を有効化

Google Cloud Scripts の API を有効にしましょう
cloud_script1.png

作業ディレクトリの作成

以下の作業は Google Cloud Shell 上で行います

  • mkdir ~/gcf_hello_world
  • cd ~/gcf_hello_world

スクリプトの作成

  • vim index.js
exports.helloGET = (req, res) => {
  res.send('Hello World!');
};

スクリプトのデプロイ

  • gcloud beta functions deploy helloGET --trigger-http

helloGET という名前でデプロイします
コンソールで確認すると以下の通りです
cloud_script2.png

動作確認

スクリプトは専用の URL を GET でコールすることで呼び出すことができます

  • gcloud beta functions describe helloGET

でデプロイしたスクリプトの詳細を取得しましょう
すると httpsTrigger の欄に URL が表示されるのでそれにアクセスしみましょう

  • curl https://us-central1-[project_id].cloudfunctions.net/helloGET

すると「Hello World!」と表示されると思います

HTTP をコールしてみる

少し応用して自分でスクリプトを作成してみます
IFTTT の maker チャネルの URL を呼び出すスクリプトを作成してみます

  • npm init
  • npm install request --save
  • vim index.js
const request = require('request');

exports.testMaker = (req, res) => {
  request.post('https://maker.ifttt.com/trigger/[event]/with/key/[your-maker-key]', function (error, response, body) {
    console.log('error:', error);
  });
  res.status(200).send("Success");
}
  • gcloud beta functions deploy testMaker --trigger-http

cloud_script3.png

  • gcloud beta functions describe testMaker

で後は表示された URL にアクセスすれば Maker チャネルの webhook がコールされます
Google Cloud Functions ではサードパーティ製のライブラリは package.json を追加してあげるだけで使えるようになるようです

お掃除

  • gcloud beta functions delete testMaker

or コンソールから直接スクリプトを削除すれば OK です
Google Cloud Functions の料金は月に 200 万回コールしないと発生しないのでそのままでも料金はかからないと思います

最後に

Google Cloud Functions を試してみました
基本は Nodejs ですが Python もサポートされたので他の言語もそのうちサポートするかもしれません

package.json を使えば自由にサードパーティ製のライブラリが使えるのは嬉しい点です

今回は紹介しませんでしたが他にもリクエストを処理する方法や他の GCP サービスと連携する方法、Github と連携して CI/CD する方法、Webhook として利用する方法などかなり応用が効くようです

Nodejs でサーバサイドを構築しているのであれば移行することで今流行りのサーバレスアーキテクチャの波に乗れるかもしれません

参考サイト

0 件のコメント:

コメントを投稿