メインコンテンツまでスキップ

Google Cloud Platform

Functions

babel 関係のセットアップ

{
"main": "dist/index.js",
"scripts": {
"build": "babel src --out-dir dist --ignore **/__tests__/**",
"deploy": "yarn build && gcloud beta functions deploy helloGET --trigger-http",
"deploy:local": "yarn build && functions deploy helloGET --trigger-http"
}
}

コマンド

ファイル

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

デプロイ

# web
gcloud beta functions deploy helloGET --trigger-http
# local
functions deploy helloGET --trigger-http

説明

gcloud beta functions describe helloGET

ローカルデプロイ関係

# node6 しか対応していない。yarn でエラーが出る場合はnpmでインストールするとよい
npm install -g @google-cloud/functions-emulator

# ローカルサーバの開始と終了
functions start
functions stop
functions kill (ハングした時)

# 一覧
functions list

# ファンクションの呼び出し
functions call helloGET --data='{"message":"Hello World"}'
functions call helloGET --file=/path/to/data.json

# ログ
functions logs read
functions status # ログファイルの場所を確認する

# デバッグツールの利用
# https://github.com/GoogleCloudPlatform/cloud-functions-emulator/wiki/Debugging-functions
functions inspect helloGET # chrome-devtools
functions logs read # chrome-devtools 用の URI をコピーしてブラウザで開く
functions reset helloWorld #デバッグモードを離脱
functions reset helloWorld --keep # デバッグモードを維持したまま再起動。URI は変わる。

Cloud Run

デプロイ用スクリプト(カレントディレクトリにDockerfileがある前提)

#/bin/sh

image_name="my_image"
gcp_project_id='my-gcp-project-1234'
gcr_host='asia.gcr.io'

set -e

case $1 in
'production'|'staging')
tag=$1
;;
*)
echo '引数が不正です'
exit 1
;;
esac

full_image_name="$image_name:$tag"
gcr_destination="$gcr_host/$gcp_project_id/$full_image_name"

docker build --target RUNNER -t "$full_image_name" .
docker tag "$full_image_name" "$gcr_destination"
docker push "$gcr_destination"