なにこれ
タイトルの通り。
GCP初めて。
クイックスタート: gcloud コマンドライン ツールの使用を参考しながら自分用に削除したり、付け足ししたりしてます。
環境準備
- GCPのプロジェクトを新規で立てる
- Cloud Shellを起動する
- Google Cloud SDKを最新に更新する
sudo gcloud components update
- Google Cloud SDKのベータ版機能をインストールする
sudo gcloud components install beta
Hello World!を返す関数をデプロイする
プログラムはGo言語でサクッと書く。
package functions
import (
"fmt"
"net/http"
)
func HelloWorldHTTP(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
fmt.Fprintln(w, "Hello World!")
default:
http.Error(w, "Not Allowed", http.StatusMethodNotAllowed)
}
}
コマンドでデプロイする
gcloud functions deploy HelloWorldHTTP --runtime go111 --trigger-http
関数を新規登録する時には確認有り
Allow unauthenticated invocations of new function [HelloWorldHTTP]?
(y/N)?
デプロイ完了したら以下が表示される。
Deploying.function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
entryPoint: HelloWorldHTTP
httpsTrigger:
url: hogehoge
labels:
deployment-tool: cli-gcloud
name: projects/hogehoge/locations/us-central1/functions/HelloWorldHTTP
runtime: go111
serviceAccountEmail: hogehoge@appspot.gserviceaccount.com
sourceUploadUrl: hogehoge
status: ACTIVE
timeout: 60s
updateTime: '2019-12-14T15:49:56Z'
versionId: '1'
動作確認
curl -X GET [url]
Hello World!
curl -X POST -d "hoge" [url]
Not Allowed
できてるー。
所感とか雑多なメモ
- 簡単なAPI作成するのにめっちゃ便利。安いし。料金のドキュメント
- 2019/12/14時点ではGoのランタイムは1.11が最新っぽい。1.12, 1.13は動かず。実行環境のドキュメント
- Cloud Shell便利。だけどこいつ何者?
-
asia-northeast1
リージョンにデプロイしたい - 日本語ドキュメントが全体的にAWSよりわかりやすい気がする。Cloud Functionsのドキュメント
- コード変更変更してからデプロイまでするフローどうやって管理するんだ?