はじめに
GoogleAppEngine(以降、GAE)のStandard Environmentで、Go言語を使った際につまずいたポイントについて、いくつかの手がかりを残しておこうと思います。
- GAEのプロジェクトでは、ローカル環境で開発後、デプロイを行う
- ローカル開発用SDKが充実しているが、 GoogleCloudSDK と、 AppEngineSDK の2種類が必要となる
- データの保存先
- ローカル環境での場合、基本的にローカルに保存される
- しかし、Cloud Storageの場合のみ、GAEサービス上のstagingバケットに保存するようにする
- ADC(Google Application Default Credentials)認証
- ローカル環境から、透過的にGAEサービスにアクセスするために、ADCという仕組みがある
- gcloudコマンドを利用し、Googleアカウントの情報を記録することで、アプリケーションから簡単にGAEのリソースにアクセスすることができる
- GOPATHの設定
- 割とどこにおいても良いと書いてあるが、glideというパッケージ管理ツールを利用する関係で、プロジェクトディレクトリ直下を指定している
- パッケージ管理には、glideを利用する
ローカル開発環境(Mac)の準備
- Python 2.7.x
- Google Cloud SDK v140.0.0
- 必須コンポーネント(bg, core, gsuite, gcloud)
- App Engine SDK v1.9.48
- glide(パッケージ管理ツール)
$ brew install glide
リソース(Datastore, Cloud Storage, Memcache)のアクセス先
元々、DatastoreはGAE用に設計されていたが、CloudStorageは別のサービスとしてリリースされていた。
GAE用のBlobStoreは廃止される予定なので、ちぐはぐになっている。
- ローカル環境
- Datastore: ローカル
- Cloud Storage: stagingバケット
- Memcache: ローカル
- 運用環境
- Datastore: GAE
- Cloud Storage: 運用バケット(staging.が付いていない)
- Memcache: GAE
ADC(Google Application Default Credentials)認証
-
初回のみ(Googleアカウントの認証と、プロジェクトを紐付ける)
$ gcloud init
-
認証関係の確認や再設定
$ gcloud {info|auth|list}
$ gcloud auth login
$ gcloud auth application-default login
GOPATHの設定例
.bash_profile
# Glide
export GO15VENDOREXPERIMENT=1
# GOPATHは,プロジェクト配下に設定
export GOPATH=$HOME/IdeaProjects/goapp/
export PATH=$PATH:$HOME/google-cloud-sdk/platform/google_appengine/goroot/bin/
export PATH=$PATH:$HOME/go_appengine/
# The next line updates PATH for the Google Cloud SDK.
if [ -f {ホームディレクトリ}/google-cloud-sdk/path.bash.inc ]; then
source '{ホームディレクトリ}/google-cloud-sdk/path.bash.inc'
fi
# The next line enables shell command completion for gcloud.
if [ -f {ホームディレクトリ}/google-cloud-sdk/completion.bash.inc ]; then
source '{ホームディレクトリ}/google-cloud-sdk/completion.bash.inc'
fi
Glideパッケージ管理ツール
$ glide create # 初回のみ、glide.ymlを生成
$ glide get github.com/Masterminds/glide # パッケージを取得
$ glide install # lockファイルを更新せずにインストール
$ glide update # lockファイルを更新してインストール
$ glide up # glide installとたぶん同じ