アプリケーションのテストとデプロイ

リージョン ID

REGION_ID は、アプリを作成するときに選択するリージョンに基づいて Google が割り当てるコードです。既存のアプリでは省略可能でしたが、新しいアプリでは App Engine の URL に REGION_ID.r を含めることが必須になります。

移行がスムーズに行われるように、リージョン ID を使用するよう App Engine を徐々に更新しています。Google Cloud プロジェクトがまだ更新されていない場合、アプリにリージョン ID が表示されません。ID は既存のアプリでは省略可能なため、リージョン ID が既存のアプリで使用可能になったときに、URL を更新する、またはその他の変更を行う必要はありません。

詳しくは、リージョン ID をご覧ください。

アプリケーションをローカルで実行し、App Engine にデプロイしてテストする方法を説明します。

ローカルでの実行

デプロイ前にアプリケーションの機能をテストするには、普段使用している開発ツールを使用して、アプリケーションをローカル環境で実行します。

アプリケーションをデプロイする前に

アプリケーションをデプロイする前に、次のことを確認してください。

アプリケーションのデプロイ

gcloud app deploy コマンドを使用して、アプリケーションを App Engine にデプロイします。

デプロイ中に、Cloud Build サービスが App Engine スタンダード環境で実行するアプリケーションのコンテナ イメージを作成します。詳細は、ビルドイメージの管理をご覧ください。

アプリをプログラムでデプロイするには、Admin API を使用します。

サービスのデプロイ

アプリケーションを App Engine にデプロイするには、アプリケーションのサービスの各バージョンと、それぞれの構成ファイルをデプロイします。

アプリケーションのサービスのバージョンをデプロイするには、サービスの app.yaml ファイルがあるディレクトリから次のコマンドを実行します。

gcloud app deploy

このコマンドでファイルを指定しないと、現在のディレクトリにある app.yaml ファイルのみがデプロイされます。デフォルトでは、deploy コマンドはデプロイするバージョンの一意の ID を生成します。さらに、gcloud ツールで使用するように構成した Google Cloud プロジェクトにそのバージョンをデプロイし、すべてのトラフィックを新しいバージョンにルーティングします。

特定のファイルを対象にするか、追加のパラメータを指定すると、コマンドのデフォルトの動作を変更できます。

  • サービスの他の構成ファイルをデプロイするには、各ファイルを個別にターゲットとして指定してデプロイする必要があります。例:
    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • 独自のバージョン ID を指定するには、--version フラグを使用します。
  • トラフィックが新しいバージョンに自動的にルーティングされないようにするには、--no-promote フラグを使用します。
  • 特定の Google Cloud プロジェクトにデプロイするには、--project フラグを使用します。

たとえば、app.yaml ファイルで定義されているサービスを特定の Google Cloud プロジェクトにデプロイし、独自のバージョン ID を割り当て、トラフィックが新しいバージョンにルーティングされないようにするには、次のコマンドを実行します。

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

このコマンドの詳細については、gcloud app deploy リファレンスをご覧ください。

複数のサービスのデプロイ

アプリケーションを構成する複数のサービスをデプロイまたは更新する場合にも、同じデプロイ コマンドを使用します。

複数のサービスをデプロイする場合は、各サービスの app.yaml ファイルを個別にデプロイします。次のように、1 つの gcloud app deploy コマンドで、複数のファイルを指定できます。

gcloud app deploy service1/app.yaml service2/app.yaml

複数のサービスをデプロイするための要件

  • 最初にアプリケーションのバージョンの 1 つを default サービスにデプロイする必要があります。これで、後続のサービスを作成してデプロイできるようになります。
  • 各サービスの ID は、対応する app.yaml 構成ファイルで指定する必要があります。サービス ID を指定するには、各構成ファイルに service 要素の定義を追加します。この要素の定義が構成ファイル内にないと、デフォルトでバージョンのデプロイ先は default サービスとなります。

ファイルの無視

.gcloudignore ファイルを使用すると、サービスをデプロイするときに App Engine にアップロードしないファイルとディレクトリを指定できます。これは、デプロイ時にアップロードする必要のないビルド アーティファクトやその他のファイルを無視する場合に便利です。

ビルドイメージの管理

新しいバージョンをデプロイするたびに、Cloud Build サービスによってコンテナ イメージが作成されます。このコンテナ イメージは App Engine スタンダード環境で実行されます。

作成されたコンテナ イメージは、Container Registryapp-engine フォルダに保存されます。これらのイメージをダウンロードして、任意の場所に保存したり、別の場所で実行したりできます。デプロイが完了したコンテナ イメージは、App Engine ではもう必要でなくなります。なお、自動的に削除されないので、保存容量の上限に達する前に不要なイメージは削除するとよいでしょう。 Container Registry 内のイメージを管理する方法については、Container Registry のドキュメントをご覧ください。

アプリケーションの表示

アプリケーションを App Engine にデプロイした後、次のコマンドを実行してブラウザを起動でき、https://PROJECT_ID.REGION_ID.r.appspot.com にアクセスするとアプリケーションが表示されます。

gcloud app browse

トラフィック移行前の App Engine でのテスト

新しいバージョンを構成してトラフィックを受信する前に、App Engine でテストを行うことができます。たとえば、default サービスの新しいバージョンをテストする手順は次のとおりです。

  1. 新しいバージョンをデプロイしますが、トラフィックが新しいバージョンに自動的にルーティングされないようにするには、次のコマンドを実行します。

    gcloud app deploy --no-promote

  2. 次の URL に移動して、新しいバージョンにアクセスします。

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    これで、新しいバージョンを App Engine ランタイム環境でテストできるようになりました。ログを確認することでアプリケーションをデバッグできます。詳細については、アプリケーション ログの書き込みをご覧ください。

    https://PROJECT_ID.REGION_ID.r.appspot.com に送信されたリクエストは、トラフィックを受信するように構成済みのバージョンにルーティングされます。

  3. トラフィックが新しいバージョンに送信されるようにするには、Cloud Console でトラフィックを移行します。

    バージョンの管理

    デプロイしたバージョンを選択して、[トラフィックを移行] をクリックします。

同じ手順で他のサービスの新しいバージョンをテストできます。この場合、上記の URL の default をサービスの名前に置き換えます。

https://VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

特定のサービスとバージョンをターゲットにする方法については、リクエストのルーティング方法をご覧ください。