#GCP
Google Cloud Funtions(GCF)を試してみる。まずは Quickstart 通りにやってみる。
‘Before you begin’ の途中までは GUI でぽちぽちしていく。
Google Cloud SDK が必要みたいなのでインストールする。ここのページのダウンロードリンクから tar.gz をダウンロード。
全然使わないので、tar
のオプションが覚えられない。
$ tar zxvf google-cloud-sdk-170.0.1-darwin-x86_64.tar.gz
# インストールスクリプト実行
$ ./google-cloud-sdk/install.sh
こういうのって毎回どこに置くのか悩む。。。どこに置くのが正解なんだろう。今回はとりあえず /usr/local/etc
とかに置いておこう。
$ mv google-cloud-sdk /usr/local/etc
# /usr/local/bin/gcloud に bin/gcloud のシンボリックリンクを貼っておく
$ ln -s /usr/local/etc/google-cloud-sdk/bin/gcloud /usr/local/bin/gcloud
# init
$ gcloud init
質問は適当に答える。
これで gcloud
コマンドは終わったので、Quickstart に戻ってこれる。
$ gcloud components update beta && gcloud components install
これでセットアップはおしまいっぽい。
ソースコードは Cloud Storage に置くらしいのでバケットを作成する。バケットは gsutil
コマンドが必要らしいので、これもシンボリックリンクを貼る。
最低限しか使う予定ないから、gcloud
コマンドしか使わないのかと思ってたけど、他にも使うならパス通しておいてもよかったかも。まぁいいか。
$ ln -s /usr/local/etc/google-cloud-sdk/bin/gsutil /usr/local/bin/gsutil
$ gsutil mb -p [PROJECT_ID] gs://[BUCKET_NAME]
[PROJECT_ID]は使用するプロジェクトのID、[BUCKET_NAME]は適当。
この Quickstart はトリガーが Pub/Sub のやつでデプロイしてるみたい。今回は HTTP をトリガーにしたいので、ドキュメント見てたら、HTTP 用のチュートリアルがあるではないか!
HTTP Tutorial | Cloud Functions Documentation | Google Cloud Platform
これのコード書くところとデプロイのところからやりますか。
とりあえず HelloWorld をやりたいので、チュートリアルと同じコードを書く。
/**
* HTTP Cloud Function.
*
* @param {Object} req Cloud Function request context.
* @param {Object} res Cloud Function response context.
*/
exports.helloGET = function helloGET (req, res) {
res.send('Hello World!');
};
Goolge Cloud Functions Emulator でローカルで試せるみたいなので使ってみる。
$ mkdir ~/gcf_http
$ cd ~/gcf_http
$ yarn init
$ yarn add @google-cloud/functions-emulator -D
これで準備は完了。
# start
$ $(yarn bin)/functions start
# deploy
$ $(yarn bin)/functions deploy helloGET --trigger-http
# call
$ $(yarn bin)/functions call helloGET
#=> Warning: You're using Node.js v8.9.1 but Google Cloud Functions only supports v6.11.1.
#=> ExecutionId: 1f45b802-a339-4b74-85b4-4f9d3e4a729c
#=> Result: Hello World!
動いてるけど、GCF は v6.11.1 なのか。。。node
のバージョンマネージャー的なもの使ってなかったので、後で何か入れとこう。
ログも見れるみたい。
$ $(yarn bin)/functions logs read
止めとく。
$ $(yarn bin)/functions stop
下記のコマンドでデプロイする。
$ gcloud beta functions deploy helloGET --stage-bucket [YOUR_STAGING_BUCKET_NAME] --trigger-http
デプロイしたら URL
とか色々な情報が返ってくる。試しに叩いてみる。
$ curl "https://[YOUR_REGION]-[YOUR_PROJECT_ID].cloudfunctions.net/helloGET"
#=> Hello World!
できた!やっと hello world が終わった。
ちなみに GitHub とかにあるものからもデプロイできるみたい。