設定ファイル

サービスの各バージョンは、サービスの名前とバージョンを指定する .yaml ファイルで定義します。YAML ファイルは通常、その中で定義するサービスと同じ名前にしますが、必ずしもそうする必要はありません。複数のバージョンのサービスをデプロイする場合は、同じディレクトリ内に複数の yaml ファイルを(バージョンごとに 1 つずつ)作成します。

通常、サービスごとにディレクトリを作成し、そこにサービスの YAML ファイルと関連するソースコードを配置します。オプションのアプリケーションレベルの構成ファイル(dispatch.yamlcron.yamlindex.yamlqueue.yaml)は、最上位のアプリ ディレクトリに配置されます。以下の例には、3 つのサービスが示されています。service1service2 では、ソースファイルは YAML ファイルと同じレベルに配置されています。service3 には、2 つのバージョンの YAML ファイルがあります。

YAML サービスの階層グラフ

小さいシンプルなプロジェクトでは、すべてのアプリファイルを 1 つのディレクトリに配置します。

小さい YAML サービスの階層グラフ

すべての YAML ファイルには、バージョン パラメータを含める必要があります。デフォルト サービスを定義するには、service: default パラメータを明示的に記述するか、このパラメータをファイルに記述しないようにします。

サービスごとの構成ファイルによって、特定のサービスまたはバージョンのスケーリング タイプとインスタンス クラスを定義します。指定するスケーリング タイプに応じて、異なるスケーリング パラメータを使用します。スケーリングを指定していない場合は、デフォルトで自動スケーリングになります。スケーリングとインスタンス クラスの設定については、app.yaml リファレンスのセクションをご覧ください。

各サービスに対して、URL リクエストから特定のスクリプトへのマッピング設定や、静的ファイルを識別する設定を行うことで、サーバー効率を高めることもできます。このような設定も yaml ファイルに記載されます。詳細については、app.yaml リファレンスのセクションをご覧ください。

デフォルト サービス

すべてのアプリケーションにはデフォルト サービスが 1 つあります。デフォルト サービスは、app.yamlservice: default 設定を使用して定義できますが、必ずしも定義する必要はありません。デフォルト サービスには、サービスに関連するすべての構成パラメータが適用されます。

オプションの構成ファイル

以下の構成ファイルを使うと、アプリのすべてのサービスに適用されるオプション機能を制御できます。

  • dispatch.yaml は、受信リクエストを URL のパスまたはホスト名に基づいて特定のサービスに送信することで、ルーティングのデフォルト ルールをオーバーライドします。
  • queue.yaml は、push キューと pull キューの両方を構成します。
  • index.yaml は、Datastore クエリを使用する場合に、アプリに必要なインデックスを指定します。
  • cron.yaml は、定義された時刻または一定間隔で動作する定期スケジュール タスクを構成します。

これらの構成ファイルの更新を App Engine にデプロイするには、そのファイルが配置されているディレクトリから次のコマンドを実行します。

    gcloud app deploy [CONFIG_FILE]

次の例では、ウェブ リクエストを処理するデフォルト サービスと、モバイル リクエストとバックエンド処理を処理する 2 つのサービスの合計 3 つのサービスがあるアプリケーションの YAML ファイルを構成します。

最初に、すべてのウェブ関連のリクエストを処理する app.yaml という名前の構成ファイルを次の内容で定義します。

runtime: python27
api_version: 1
threadsafe: true

このアプリの Google Cloud コンソール プロジェクト ID が simple-sample の場合、この構成では自動スケーリングと https://simple-sample.uc.r.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

このファイルによって作成されるサービスは、https://mobile-frontend-dot-simple-sample.uc.r.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

このファイルによって作成されるサービスは、https://my-service-dot-simple-sample.uc.r.appspot.com でアクセスできます。

manual_scaling: の設定に注意してください。instances: パラメータは、このサービスのために作成するインスタンスの数を App Engine に指示します。

この Python デモアプリをダウンロードして、ご覧ください。