Google App Engine のapp.yaml 設定

性能とか、アップロード対象外の設定とか





ランタイム(使用する言語)を設定する


# 言語 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フォルダ以下をアップロード対象に含めない設定。



環境変数を設定する



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

2018年2月28日水曜日