Migrate App Engine container images to Artifact Registry

Region ID

The REGION_ID is an abbreviated code that Google assigns based on the region you select when you create your app. The code does not correspond to a country or province, even though some region IDs may appear similar to commonly used country and province codes. For apps created after February 2020, REGION_ID.r is included in App Engine URLs. For existing apps created before this date, the region ID is optional in the URL.

Learn more about region IDs.

Container Registry is deprecated and was shutdown on March 18, 2025. We recommend that you use Artifact Registry for storing and managing container images. By default, new deployments created after March 5, 2025 use Artifact Registry instead of Container Registry for storing application images. Artifact Registry provides the same container management features as Container Registry and includes additional features and benefits. As a fully managed service with support for both container images and non-container artifacts, Artifact Registry extends the capabilities of Container Registry.

For projects created before May 2024 or that haven't yet run the automated migration tooling, follow the steps in this guide to enable App Engine to automatically migrate your deployment flows.

App Engine standard environment

Most of your application components in the standard environment follow an automated migration process. However, for a smooth transition to Artifact Registry, ensure that your service account has the following required permissions:

  • For existing standard deployments, the deploying service account (either the App Engine default service account (PROJECT_ID@appspot.gserviceaccount.com) or your custom service account) must have a role that grants the explicit Artifact Registry write permission artifactregistry.repositories.uploadArtifacts. To find the roles associated with your deploying service account, see Manage access to service accounts.

  • New deployments can use Artifact Registry if any of the following roles are present in the service account associated with deployments:

    If none of these roles are present, grant the Artifact Registry Writer role (roles/artifactregistry.writer) to your deploying service account.

Failing to provide the required permissions prevents you from deploying new versions in the standard environment.

During automated migrations, Google Cloud might create new repositories and copy images from Container Registry to Artifact Registry.

App Engine flexible environment

Most of your application components in the flexible environment follow an automated migration process. However, for a smooth transition to Artifact Registry, ensure that your service account has the following required permissions:

  • For existing flexible deployments to work as expected with Artifact Registry, the deploying service account (either the App Engine default service account (PROJECT_ID@appspot.gserviceaccount.com) or your custom service account) must have a role that grants the explicit Artifact Registry permissions such as artifactregistry.repositories.downloadArtifacts for read and artifactregistry.repositories.uploadArtifacts for write. To find the roles associated with your deploying service account, see Manage access to service accounts.

  • New deployments can use Artifact Registry, if any of the following roles are present in the service account associated with deployments:

    If none of these roles are present, grant the Artifact Registry Repository Administrator role (roles/artifactregistry.repoAdmin) to your deploying service account.

Failing to provide the required permissions prevents you from deploying applications in the flexible environment. Scaling and restarting instances also fail.

During automated migrations, Google Cloud might create new repositories and copy images from Container Registry to Artifact Registry.

Migrate to Artifact Registry for manually built container images

The automated migration process doesn't apply if you previously deployed your apps by using prebuilt or manually built container images from Container Registry. For example, the automated migration process doesn't work if you built container images with Docker, pushed these images to the Container Registry, and deployed your apps by using the gcloud app deploy --image-url command.

If you use prebuilt or manually built container images from Container Registry to deploy your apps, choose one of the following options to migrate to Artifact Registry: