サービスの各バージョンは、サービスの名前とバージョンを指定する .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.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 に指示します。