アップグレードしたアプリの Python 3 でのテストとデプロイ

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

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

Python 2 と Python 3 の両方に対応するようにアプリをアップグレードした後、次の手順を実施します。

  1. ローカル Python 3 環境でアプリをテストします

  2. トラフィックをアプリにシフトさせずに、App Engine にデプロイしてテストします

  3. アプリへトラフィックを移行します

アップグレードしたアプリを Python 3 環境で実行するまで判明しない互換性の問題の修正に、かなりの時間が必要となる場合があります。

テスト中に本番環境データと Google Cloud の割り当てを使用しないようにするには、次のエミュレータを使用します。

Cloud Storage や Memorystore などの他の Google Cloud サービスでは、エミュレータは提供されません。

ローカルでのテスト

デプロイ前にアプリの機能をテストするには、Python 3 ランタイムでローカルで実行する手順を行います。

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

アップグレードした Python アプリにトラフィックをルーティングする前に、App Engine Python 3 ランライムにアプリをデプロイして再テストします。たとえば、アプリの default サービスをテストするには次のようにします。

  1. Python 3 ランタイムとの互換性を確保する目的で、必ずアプリの構成ファイルを更新してください。

    アプリにトラフィックをシフトする用意ができるまでは、エミュレータやテスト データベースにリクエストを送信する環境変数を変更しないでください。

  2. 新しいバージョンをデプロイしますが、トラフィックが新しいバージョンに自動的にルーティングされないようにします。

    gcloud app deploy --no-promote

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

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

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

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

他のサービスの新しいバージョンをテストする場合、URL の default を実際のサービス名に置き換え、同様のプロセスで行います。

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

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

アプリへのトラフィックの移行

新しいバージョンにトラフィックを送信する準備ができたら、次の手順を実施します。

  1. 使用していたエミュレータやテストデータではなく、本番環境のデータベースやその他のサービスにリクエストを送信するよう、app.yaml ファイルの環境変数を更新します。

  2. デプロイ時にトラフィックが新しいバージョンに自動的にルーティングされないようにします。

    gcloud app deploy --no-promote

  3. アプリが本番環境データベースやデータストアと通信していることを確認したら、Google Cloud コンソールを使用してトラフィックを移行します。

    バージョンの管理

    アップグレードしたアプリの最新バージョンを選択し、[トラフィックを移行] をクリックします。