GAE/Go の嫌なところ2018年4月

Google App Engine (GAE) + Go の組み合わせはとても良くて、これでクイックにWebアプリが始められる!って感じなんだけどまだいくつかなんとかしてほしい点があるのでこの時点でメモっておく

カスタムドメイン+ワイルドカード証明書ができない

https://<service_name>.example.com みたいなサブドメインで行き先サービスを分けるというのができない

app.yml の書き方忘れる

最後の url: /.* script: _go_app とは一体何なのか、おまじない呪文みたいな認識になってる

runtime: go
api_version: go1

handlers:
- url: /.*
  script: _go_app

外部ライブラリを使った場合のデプロイが面倒

Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) - 詩と創作・思索のひろば に書かれている通り、vendor/ ディレクトリを置いてるとまずデプロイが通らない

GAE/Go では syscall や unsafe パッケージのインポートが許されていない。たとえばプロジェクトルート以下に vendor ディレクトリを作っていて、その下に置いたサードパーティ製のライブラリがこれら利用不可のパッケージを利用していた場合、アプリケーションから利用していなくても開発サーバの起動やデプロイができなくなることになる。

また上に書かれてる意外に gcloud コマンドを使ってデプロイを試みると cannot import internal package... みたいなエラーが出てしまって進まない。 最新の gcloud コマンドではダメで、旧式の goapp だと通るというひっどい仕様になっていてこれが非常にひどい。ひどかったので qiita に記事もかいた

GAE/Go (+dep) を gcloud コマンドを使わずに CI でデプロイ - Qiita

gcloud ツール系が Python 2 依存

Python 3 が入ってると syntax error で死ぬ。Python 3 にしてほしいというよりは全部 Go でかきなおして欲しい。Googleさんがんばって・・

参考になった資料