😸

GAE Go (2nd Gen) スタンダード環境で Go 1.20 を使う

2023/09/24に公開

GAE Go ランタイムのサポートスケジュール

GAE スタンダード環境で古い Go ランタイムのサポート期限が迫っている。
ランタイム サポートのスケジュール  |  Google App Engine スタンダード環境のドキュメント  |  Google Cloud

自分が関わっているプロジェクトでは go115 を使用していて、2024年1月30日までに Go 1.19 以上に更新する必要がある。
そもそも新しい Go を使いたかったのだが、多くのパッケージが appengine に依存していて、Go 1.16 以上では dev_appserver を使った開発で appengine が使えなかったため、アップデートを様子見していた。

go120 を指定するとエラー

期限も迫ってきたので重い腰を上げてアップデートしようと思ったところ、どうやら google cloud sdk のバージョンアップで Go 1.20 も dev_appserver で利用できることがわかった。
ただし、そのままでは datastore が利用できず以下のようなエラーが発生する。

service bridge HTTP failed: Post "http://appengine.googleapis.internal:10001/rpc_http": dial tcp: lookup appengine.googleapis.internal: no such host

解決方法

google app engine - service bridge HTTP failed error when using dev_appserver.py - Stack Overflow

リンク先に書いてあるとおりで、報告済みのバグなのでしばらく待てば修正されると思われる。
当分の間は該当ファイルを少し編集すればエラーはできなくなる。

google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/http_runtime.py

# Runtimes which need
_RUNTIMES_NEED_VM_ENV_VARS = [
    'go111',
    'go114',
    'go115',
    'go120', # <--- 使いたいランタイムを追加
]

Discussion