Google App Engine(Standard環境)をローカルでテストしたい

1 min読了の目安(約1400字TECH技術記事

経緯

ずいぶん昔に構築したGoogle App Engine(以下GAE)のプロジェクト(Python2系)を最新のGo 1.12+に移行しようとしたところ、どうも最新の環境では昔あったローカル実行の為のdev_appserver.pyが利用できない様子(Go 1.11までなら利用できるっぽい?)。

公式曰く、最新の環境ではGAEに強く依存したライブラリを利用しない方向性になってるから普通にgo runしろとのことだけど、それでは静的ファイルの配信ができず、動作確認としてはどうも中途半端。

という訳で、静的ファイルの配信を行ってくれる仕組みを自前で作ることにした。

作ったもの

これ

このプログラムは2つのことをする。

  • app.yamlを元に、静的ファイルをルーティングする。
  • app.yamlを元に、動的ページのリバースプロキシとして動作する。

以下はやってくれない。

  • Datastore、Memcache、タスクキューなどのGoogle App Engine 特有のAPIのサポート。

gaemu

使い方

  1. アプリケーションサーバーの起動

    まず各言語のそれぞれの方法でアプリケーションサーバーを起動する。

    Go言語でいうと

    go build | ./main.exe`
    

    Pythonだと

    python main.py
    

    かな。

    それでそれがhttp://localhost:8080で起動したとする。

  2. gaemuの起動
    gaemuの実行ファイルをダウンロードしてきて、実行できるようにPATHを通して、以下のようにコマンドを実効する。

    gaemu -a "http://localhost:8080" -y "../YOUR_APP_PATH/app.yaml"

    -yオプションで指定しているYOUR_APP_PATHはapp.yamlがあるディレクトリ、-aオプションで指定しているのは①の工程で起動したアプリケーションサーバーのURL。

  3. 動作確認
    -pで別途指定しなければ、デフォルトではgaemuはhttp://localhost:8081で起動する。
    こんな感じに。
    ss

まとめ

こういうのくらい公式で用意して欲しいところだけど、Google的にはいちいちデプロイしましょうって方向性なのかな。Flexible Environmentならこの手の悩みは少ないだろうけど。