App Engine スタンダード環境アプリを Cloud Run に移行する

リージョン ID

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

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

このガイドでは、パブリック IP を使用して Cloud SQL インスタンスに接続する既存の App Engine アプリを移行する方法を説明します。

このガイドの手順では主に、同じアプリケーション ソースコードを Cloud Run にデプロイした後、同じ Cloud SQL データベース ユーザーを使って既存のインスタンスとデータベースを接続するようにそれを構成する方法を示します。

このガイドの手順には内部 IP 接続を使用する方法は含まれていません。それを使用するには最初にアプリケーション コードを変更する必要が生じるためです。ただし、アプリを Cloud Run にデプロイした後、Cloud Run から Cloud SQL に接続するの手順に沿って要件とプライベート IP の使用方法を学習できます。

Cloud Run への移行のメリットを含む、App Engine と Cloud Run の類似点と相違点の詳細については、比較概要をご覧ください。

準備

  1. Cloud Run がアプリケーション要件を満たしていることを確認します。App Engine と Cloud Run の比較を確認して、CPU やメモリなどの Cloud Run リソースがニーズを満たしているかどうかを確認します。
  2. このガイドでは、アプリがエラーなしで実行されていることを前提としています。

  3. アプリを接続するためのデータベース ユーザー名とパスワードを含め、Cloud SQL インスタンスへのアクセスが必要です。Cloud Run は暗号化を使用し、Unix ソケットまたは Cloud SQL コネクタを使って Cloud SQL Auth Proxy 経由で接続します。

  4. Cloud Run の次の違いを確認します。

    • Cloud Run では、特定のサービスに変更をデプロイするたびに、Version ではなく Revision という用語を使用します。アプリを Cloud Run のサービスに初めてデプロイすると、最初のリビジョンが作成されます。後続のサービスのデプロイごとに、別のリビジョンが作成されます。Cloud Run へのデプロイの詳細を確認する

    • Google Cloud CLI または Google Cloud コンソールを使用して、ソースコードを Cloud Run にデプロイし、アプリの設定を構成して管理できます。Cloud Run ではファイルベースの構成は必要ありません。ただ、YAML 構成がサポートされているため、app2run ツールを使用して既存の App Engine ファイルを Cloud Run 用に変換できます。

    • Cloud Run にデプロイするサービスはすべて、URL 内の run.app ドメインを使用してサービスにパブリックにアクセスします。

    • デフォルトで公開されている App Engine サービスとは異なり、Cloud Run サービスはデフォルトで非公開であり、公開(未認証)アクセス用に構成する必要があります。

アプリを Cloud Run に移行する

App Engine アプリを Cloud Run に移行するプロセスは、大まかに以下の手順からなります。

  1. 必要な API を有効にする
  2. Cloud Run サービス アカウントを構成する
  3. アプリを Cloud Run にデプロイする

必要な API を有効にする

アプリを Cloud Run にデプロイする前に、Cloud Run API と Artifact Registry API の両方を有効にする必要があります。

Google Cloud コンソールを使用して API を有効にします。

[API とサービス] に移動

Cloud Run サービス アカウントを構成する

新しいサービス アカウントを作成するか、App Engine 用に使用している Cloud Run の同じユーザー管理のサービス アカウントを引き続き使用するかを選択できます。サービス アカウントで、次の Identity and Access Management(IAM)ロールまたは同等の権限が構成されていることを確認する必要があります。

Cloud Run にデプロイするには、次のいずれかが必要です。

  • オーナー
  • 編集者
  • Cloud Run 管理者サービス アカウント ユーザーのロールの両方
  • 同等の Cloud Run 権限

Cloud SQL へのパブリック IP 接続の場合は、次のいずれかが必要です。

  • Cloud SQL クライアント(推奨)
  • Cloud SQL 管理者
  • 同等の Cloud SQL 権限

アプリを Cloud Run にデプロイする

App Engine アプリを Cloud Run にデプロイするために、コードを変更する必要はありません。

次の手順では、アプリを Cloud Run の新しいサービスにデプロイするとともに、Cloud SQL に接続するようにそのサービスを構成します。

App Engine スタンダード環境と同様に、Cloud Run はソースベースのデプロイをサポートしています。ソースコード リポジトリへのアクセス権が必要です。

Cloud Run では、内部で BuildpackCloud Build を使用してソースコードからコンテナ イメージを自動的にビルドします。コンテナを手動でビルドしたり、Dockerfile を指定したりする必要はありません。ただし、Dockerfile が存在する場合はそれが使用されます。

Cloud Run サービスのソースからのデプロイでは Artifact Registry が使用されるため、この機能は Artifact Registry でサポートされているリージョンでのみ使用できます。

以前に App Engine にデプロイしたのと同じソースコードをデプロイするには:

  1. アプリケーションのソースコードがあるソース ディレクトリに移動します。

      cd YOUR_APPENGINE_CODE_DIR
    
  2. Cloud Run にデプロイします。

    ソースコードをビルドしてアプリケーションをデプロイするには、--source フラグを指定した deploy コマンドを実行します。App Engine アプリの app.yaml ファイルで定義されているのと同じ SQL 接続環境変数を含めるように構成フラグを設定する必要があります。

      gcloud run deploy run-sql --source SOURCE \
        --allow-unauthenticated \
        --add-cloudsql-instances INSTANCE_CONNECTION_NAME\
        --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \
        --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \
        --set-env-vars DB_NAME="DB_NAME" \
        --set-env-vars DB_USER="DB_USER" \
        --set-env-vars DB_PASS="DB_PASS"
    

    以下のように置き換えます。

    • SOURCE を App Engine ソース ディレクトリのパスに置き換えます。
    • INSTANCE_CONNECTION_NAME は、Cloud SQL インスタンスのインスタンス接続名、または複数の接続名からなるカンマ区切りリストに置き換えます。INSTANCE_CONNECTION_NAME を確認するには、次のコマンドを実行します。
        gcloud instances describe INSTANCE_NAME
    
    • DB_NAME はデータベースの名前に置き換えます。
    • DB_USER はデータベースのユーザー名に置き換えます。
    • DB_PASS はデータベース ユーザーのパスワードに置き換えます。
  3. プロンプトが表示されたら、SERVICE の名前を入力します。

  4. プロンプトが表示されたら、「y」と入力して必要な API をインストールするように応答します。この操作が必要なのはプロジェクトごとに 1 回だけです。ビルドとデプロイが完了するまで待ちます。完了すると、次のようなメッセージが表示されます。

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://sample.run.app
    

    Cloud Run にソースコードをデプロイする方法については、ソースコードからデプロイするをご覧ください。

次のステップ