リージョン ID
REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。
詳しくは、リージョン ID をご覧ください。
このガイドでは、Google Cloud CLI を使用して、標準環境のアプリを Cloud Run にデプロイする方法について説明します。この手順は、App Engine の以前のバンドル サービスを使用しない第 2 世代ランタイムに適用されます。
Cloud Run は App Engine スタンダード環境とほぼ同じインフラストラクチャを使用するため、この 2 つのプラットフォームには多くの類似点があります。Cloud Run への移行のメリットを含む、App Engine と Cloud Run の類似点と相違点の詳細については、比較概要をご覧ください。
gcloud beta app migrate コマンドを使用して Cloud Run にデプロイするには、次のいずれかの戦略を選択します。
app.yamlファイルを使用して、既存の App Engine 構成を使用して Cloud Run にサービスをデプロイします。
始める前に
App Engine のソースコードにアクセスできることと、App Engine アプリケーションがエラーなしで実行されていることを確認します。
Cloud Run Admin API と Artifact Registry API を有効にします。
次のコマンドを使用して、プロジェクトとリージョンを構成します。
gcloud auth login gcloud config set project PROJECT_ID gcloud config set run/region REGION gcloud components update次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- REGION は、実際のリージョンに置き換えます。
アプリケーションの互換性のない機能を確認し、Cloud Run に移行する前に削除します。既存のアプリケーションに互換性のない機能がある場合、移行プロセスは停止し、互換性のない機能が一覧表示されます。
次に示す Cloud Run の違いを確認します。
Cloud Run では、特定のサービスに変更をデプロイするたびに、
VersionではなくRevisionという用語を使用します。アプリを Cloud Run のサービスに初めてデプロイすると、最初のリビジョンが作成されます。後続のサービスのデプロイごとに、別のリビジョンが作成されます。Cloud Run へのデプロイの詳細をご確認ください。gcloud CLI または Google Cloud コンソールを使用して、ソースコードを Cloud Run にデプロイし、アプリの設定を構成、管理できます。Cloud Run ではファイルベースの構成は必要ありませんが、YAML 構成がサポートされています。
Cloud Run にデプロイするサービスはすべて、URL 内の
run.appドメインを使用してサービスにパブリックにアクセスします。デフォルトで公開される App Engine サービスとは異なり、Cloud Run サービスはデフォルトで非公開であり、公開(未認証)アクセス用に構成する必要があります。
必要なロール
新しいサービス アカウントを作成するか、App Engine 用に使用している Cloud Run の同じユーザー管理サービス アカウントを使用するかを選択できます。ユーザーまたは管理者は、デプロイ担当者アカウントと Cloud Build サービス アカウントに次の IAM ロールを付与する必要があります。
クリックしてデプロイ担当者アカウントに必要なロールを表示
ソースからビルドしてデプロイするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- プロジェクトに対する Cloud Run ソース デベロッパー(
roles/run.sourceDeveloper) - プロジェクトの Service Usage コンシューマー(
roles/serviceusage.serviceUsageConsumer) - Cloud Run サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser)
クリックして Cloud Build サービス アカウントに必要なロールを表示
この動作をオーバーライドしない限り、Cloud Build は、ソースコードと Cloud Run リソースのビルドにデフォルトの Cloud Build サービス アカウントとして Compute Engine のデフォルトのサービス アカウントを自動的に使用します。Cloud Build がソースをビルドできるようにするには、プロジェクトの Compute Engine のデフォルトのサービス アカウントに Cloud Run ビルダー(roles/run.builder)を付与するよう管理者に依頼します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
PROJECT_NUMBER は Google Cloudプロジェクト番号に、PROJECT_ID は Google Cloudプロジェクト ID に置き換えます。プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。
Compute Engine のデフォルト サービス アカウントに Cloud Run ビルダーのロールを付与すると、反映されるまでに数分かかることがあります。
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
app.yaml ファイルを使用する
次のコマンドを実行して、App Engine の app.yaml ファイルを Cloud Run サービスに変換します。
gcloud beta app migrate-to-run --appyaml=PATH --entrypoint=ENTRYPOINT
次のように置き換えます。
- PATH は、
app.yamlファイルのパスに置き換えます。 - ENTRYPOINT は、アプリケーションのエントリ ポイント コマンドに置き換えます。
プロジェクト ディレクトリにいる場合、PATH 引数と ENTRYPOINT 引数はどちらも省略可能です。
gcloud beta app migrate-to-run コマンドで使用できる引数の詳細については、gcloud beta app migrate-to-run をご覧ください。
既存の App Engine アプリケーションをデプロイする
次のコマンドを実行して、既存の App Engine アプリを Cloud Run に直接デプロイします。
gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --entrypoint=ENTRYPOINT
このコマンドを実行すると、ソースコード ディレクトリへの相対パスを指定するよう求められます。
次のように置き換えます。
- SERVICE は、App Engine サービスの名前に置き換えます。
- VERSION は、サービスのバージョン ID に置き換えます。
- ENTRYPOINT は、アプリケーションのエントリ ポイント コマンドに置き換えます。プロジェクト ディレクトリにいる場合、この引数は省略可能です。
gcloud beta app migrate コマンドで使用できる引数の詳細については、gcloud beta app migrate-to-run をご覧ください。
互換性のない機能
app.yaml ファイルに次のサポートされていない構成が含まれている場合、移行コマンドは失敗します。
インバウンド サービス:
inbound_services: - warmupカスタム エラーページ:
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html第 2 世代ランタイムのバンドル サービス:
app_engine_apis: trueビルド環境変数:
build_env_variables: Foo: Bar第 1 世代のランタイム:
runtime: python27
次のステップ
- Cloud Run サービスを管理する方法を理解する。
- Cloud Run のコンテナの要件と動作については、Cloud Run のコンテナ ランタイムの契約をご覧ください。
- Secret Manager を使用して、API キー、パスワード、その他の機密情報を必要とするサービスの依存関係をどのように保存するかを学習する。