サービスの各バージョンは、サービスの名前とバージョンを指定する
.yaml ファイルで定義します。YAML ファイルは通常、その中で定義するサービスと同じ名前にしますが、必ずしもそうする必要はありません。複数のバージョンのサービスをデプロイする場合は、同じディレクトリ内に複数の yaml ファイルを(バージョンごとに 1 つずつ)作成します。
通常、サービスごとにディレクトリを作成し、そこにサービスの YAML ファイルと関連するソースコードを配置します。オプションのアプリケーションレベルの構成ファイル(dispatch.yaml、cron.yaml、index.yaml、queue.yaml)は、最上位のアプリ ディレクトリに配置されます。以下の例には、3 つのサービスが示されています。service1 と service2 では、ソースファイルは YAML ファイルと同じレベルに配置されています。service3 には、2 つのバージョンの YAML ファイルがあります。
小さいシンプルなプロジェクトでは、すべてのアプリファイルを 1 つのディレクトリに配置します。
すべての YAML ファイルには、バージョン パラメータを含める必要があります。デフォルト サービスを定義するには、service: default パラメータを明示的に記述するか、このパラメータをファイルに記述しないようにします。
サービスごとの構成ファイルによって、特定のサービスまたはバージョンのスケーリング タイプとインスタンス クラスを定義します。指定するスケーリング タイプに応じて、異なるスケーリング パラメータを使用します。スケーリングを指定していない場合は、デフォルトで自動スケーリングになります。スケーリングおよびインスタンス クラス設定については、app.yaml リファレンス セクションをご覧ください。
各サービスには、サーバー効率を高めるために、URL リクエストから特定のスクリプトへのマッピング設定や、静的ファイルを識別する設定を指定することもできます。このような設定も yaml ファイルに記述します。説明については、app.yaml リファレンス セクションをご覧ください。
デフォルト サービス
すべてのアプリケーションにはデフォルト サービスが 1 つあります。デフォルト サービスは、app.yaml の service: default 設定を使用して定義できますが、必ずしも定義する必要はありません。デフォルト サービスには、サービスに関連するすべての構成パラメータが適用されます。
オプションの構成ファイル
以下の構成ファイルを使うと、アプリのすべてのサービスに適用されるオプション機能を制御できます。
dispatch.yamlqueue.yamlindex.yamlcron.yamldos.yaml
これらの構成ファイルの更新を App Engine にデプロイするには、そのファイルが配置されているディレクトリから次のコマンドを実行します。
gcloud app deploy [CONFIG_FILE]
例
ウェブ リクエストを処理するデフォルト サービスと、モバイル リクエストとバックエンド処理を処理する 2 つのサービスの合計 3 つのサービスがあるアプリケーションの YAML ファイルを構成する例を示します。
最初に、すべてのウェブ関連のリクエストを処理する app.yaml という名前の構成ファイルを次の内容で定義します。
runtime: python27
api_version: 1
threadsafe: true
このアプリの GCP Console プロジェクト ID が simple-sample の場合、この構成では自動スケーリングと http://simple-sample.appspot.com という公開アドレスを持つデフォルト サービスが作成されます。
次に、モバイルウェブ リクエストを処理するサービスを作成する例を示します。この例ではモバイル ユーザーのために、最大保留待ち時間は 1 秒とし、常に少なくとも 2 つのインスタンスがアイドル状態であるようにします。これを構成するため、次の内容で mobile-frontend.yaml 構成ファイルを作成します。
service: mobile-frontend
runtime: python27
api_version: 1
threadsafe: true
automatic_scaling:
min_idle_instances: 2
max_pending_latency: 1s
このファイルによって作成されるサービスは、http://mobile-frontend.simple-sample.appspot.com でアクセスできます。
最後に、静的なバックエンド処理を実行するため、my-service という名前のサービスを追加します。この処理は、Datastore から BigQuery にデータをエクスポートする継続的なジョブになります。処理量は比較的一定であるため、1 つの常駐サービスを用意するだけで十分です。また、これらのジョブは大容量のインメモリ処理を実行する必要があるため、サービスのメモリ設定を増やすこともできます。これを設定するには、my-service.yaml 設定ファイルに次の内容を書き込みます。
service: my-service
runtime: python27
api_version: 1
threadsafe: true
instance_class: B8
manual_scaling:
instances: 1
このファイルによって作成されるサービスは、http://my-service.simple-sample.appspot.com でアクセスできます。
manual_scaling: の設定に注目してください。instances: パラメータは App Engine に、このサービスのために作成するインスタンスの数を通知します。

