App Engine コンテナ イメージを Artifact Registry に移行する

リージョン ID

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

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

Container Registry は非推奨となり、2025 年 3 月 18 日に提供終了となりました。コンテナ イメージの保存と管理には、Artifact Registry を使用することをおすすめします。デフォルトでは、2025 年 3 月 5 日以降に作成された新しいデプロイでは、アプリケーション イメージの保存に Container Registry ではなく Artifact Registry が使用されます。Artifact Registry は、Container Registry と同じコンテナ管理機能を提供します。また、追加の機能とメリットも備えています。Artifact Registry は、コンテナ イメージとコンテナ以外のアーティファクトの両方をサポートするフルマネージド サービスとして、Container Registry の機能を拡張します。

2024 年 5 月より前に作成されたプロジェクト、または自動移行ツールをまだ実行していないプロジェクトの場合は、このガイドの手順に沿って、App Engine でデプロイフローを自動的に移行できるようにしてください。

App Engine スタンダード環境

スタンダード環境のアプリケーション コンポーネントのほとんどは、自動移行プロセスに従います。ただし、Artifact Registry にスムーズに移行するには、サービス アカウントに次の必要な権限があることを確認してください。

  • 既存の標準デプロイの場合、デプロイするサービス アカウント(App Engine のデフォルト サービス アカウントPROJECT_ID@appspot.gserviceaccount.com)またはカスタム サービス アカウント)には、Artifact Registry の明示的な書き込み権限 artifactregistry.repositories.uploadArtifacts を付与するロールが必要です。デプロイするサービス アカウントに関連付けられているロールを確認するには、サービス アカウントに対するアクセス権の管理をご覧ください。

  • デプロイに関連付けられたサービス アカウントに次のロールのいずれかが存在する場合、新しいデプロイで Artifact Registry を使用できます。

    これらのロールが存在しない場合は、デプロイするサービス アカウントに Artifact Registry 書き込みロール(roles/artifactregistry.writer)を付与します。

必要な権限を付与しないと、スタンダード環境に新しいバージョンをデプロイできません。

自動移行中に、 Google Cloud は新しいリポジトリを作成し、Container Registry から Artifact Registry にイメージをコピーすることがあります。

App Engine フレキシブル環境

フレキシブル環境のアプリケーション コンポーネントのほとんどは、自動移行プロセスに従います。ただし、Artifact Registry にスムーズに移行するには、サービス アカウントに次の必要な権限があることを確認してください。

  • 既存のフレキシブル デプロイを Artifact Registry で想定どおりに機能させるには、デプロイするサービス アカウント(App Engine のデフォルト サービス アカウントPROJECT_ID@appspot.gserviceaccount.com)またはカスタム サービス アカウント)に、読み取り用の artifactregistry.repositories.downloadArtifacts や書き込み用の artifactregistry.repositories.uploadArtifacts など、Artifact Registry の明示的な権限を付与するロールが必要です。デプロイするサービス アカウントに関連付けられているロールを確認するには、サービス アカウントに対するアクセス権の管理をご覧ください。

  • デプロイに関連付けられたサービス アカウントに次のロールのいずれかが存在する場合、新しいデプロイで Artifact Registry を使用できます。

    これらのロールが存在しない場合は、デプロイするサービス アカウントに Artifact Registry リポジトリ管理者ロール(roles/artifactregistry.repoAdmin)を付与します。

必要な権限を付与しないと、フレキシブル環境にアプリケーションをデプロイできません。インスタンスのスケーリングと再起動も失敗します。

自動移行中に、 Google Cloud は新しいリポジトリを作成し、Container Registry から Artifact Registry にイメージをコピーすることがあります。

手動でビルドしたコンテナ イメージを Artifact Registry に移行する

Container Registryビルド済みコンテナ イメージまたは手動でビルドしたコンテナ イメージを使用してアプリをデプロイした場合、自動移行プロセスは適用されません。たとえば、Docker でコンテナ イメージをビルドし、これらのイメージを Container Registry に push し、gcloud app deploy --image-url コマンドを使用してアプリをデプロイした場合、自動移行プロセスは機能しません。

Container Registry のビルド済みコンテナ イメージまたは手動でビルドしたコンテナ イメージを使用してアプリをデプロイする場合は、次のいずれかの方法を選択して Artifact Registry に移行します。

  • 自動移行ツールを使用して、Container Registry から Artifact Registry でホストされている gcr.io リポジトリに移行します。このツールを使用する場合、サービスの新しいバージョンを再デプロイする必要はありません。詳細については、Container Registry から Artifact Registry に自動的に移行するをご覧ください。

  • コンテナ イメージを Container Registry から Artifact Registry に手動で移動し、新しいバージョンのサービスを再デプロイします。詳細については、Artifact Registry の gcr.io リポジトリへの手動移行をご覧ください。

  • copy-only フラグを使用して、コンテナ イメージを Artifact Registry にコピーし、サービスの新しいバージョンを再デプロイします。