ランタイム(使用する言語)を設定する
# 言語 goの他にjava, pythonなど
runtime: go
アクセス時の挙動を設定する
handlersは- url: xxxxにアクセスされたときの挙動を定義する。
handlers: - url: /public static_dir: public
static_dir: xxxxx
と指定することで静的ディレクトリの設定が可能。
上記はpublic以下に直接アクセスできるようになる。
jsやcss、画像などを配置するときに利用する。
GAEへアップロードしないファイルを設定する
skip_files:
- node_modules/
- node_modules/
正規表現で表記できる。
上記はnode_modulesフォルダ以下をアップロード対象に含めない設定。
環境変数を設定する
env_variables: PASS: 'password'
プログラム上から例えばgoなら
import "os" //... if v := os.Getenv("MY_VAR"); v != "" { //... }を使用して取得できる。
接続情報など見られたくない定数を埋め込むときに使用する。
使いすぎないように性能を抑える
デフォルトだと若干無駄というか富豪的にリソースを使用しているらしい
instance_class: F1 automatic_scaling: min_idle_instances: automatic max_idle_instances: 1 min_pending_latency: 3000ms max_pending_latency: automatic max_concurrent_requests: 80
・一番性能が低いF1を仕様
・待機するインスタンスは最大1つ
・3000ms超えたらインスタンス起動
と言った設定
スケーリングを手動に変えたり必要ならもっと性能を上げることも可能
料金は以下(東京がちょっと高い)
https://cloud.google.com/appengine/pricing
app.yml一例
runtime: go api_version: go1 # アクセスがあったときの挙動 handlers: # 静的ファイル - url: /public static_dir: public - url: /.* script: _go_app # アップロード対象外のファイル skip_files: - node_modules/ # 一番性能が低い 28インスタンス時間 instance_class: F1 # 待機するインスタンスは最大1つ 3000ms超えたらインスタンス起動 automatic_scaling: min_idle_instances: automatic max_idle_instances: 1 min_pending_latency: 3000ms max_pending_latency: automatic max_concurrent_requests: 80
参考
https://cloud.google.com/appengine/docs/flexible/java/configuring-your-app-with-app-yaml?hl=ja
https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml?hl=ja
http://msitter29.hatenablog.com/entry/2016/03/28/205828