Fehlerbehebung bei Bereitstellungsproblemen in der App Engine

Bereitstellungsfehler in App Engine können verschiedene Ursachen haben, z. B. fehlende Berechtigungen, Änderungen an Organisationsrichtlinien und Probleme in der Konfiguration Ihrer App.

Auf dieser Seite werden die folgenden häufigen Bereitstellungsfehler in App Engine und Methoden zur Fehlerbehebung beschrieben:

Berechtigungsfehler

In diesem Abschnitt werden Fehler beschrieben, die bei der Bereitstellung Ihrer App aufgrund fehlender Kontoberechtigungen oder Änderungen an Organisationsrichtlinien auftreten können.

So ermitteln Sie das aktive Konto, mit dem Sie auf die Google Cloud CLI und andere Tools in der Google Cloud -Plattform zugreifen:

  • Wenn Sie die Google Cloud CLI zur Bereitstellung verwendet haben, führen Sie den Befehl gcloud auth list aus.

  • Wenn Sie die Bereitstellung in einer IDE vorgenommen haben, rufen Sie die Einstellungen für das Cloud Tools-Plug-in auf.

Unter App Engine-Rollen erfahren Sie mehr darüber, warum es in manchen Fällen möglicherweise nicht ausreichend ist, nur die Rolle „App Engine-Bereitsteller“ (roles/appengine.deployer) zuzuweisen.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Bereitstellung für neue Projekte schlägt fehl

Der folgende Fehler wird angezeigt, wenn Sie Ihre Anwendung zum ersten Mal in einem neuen Projekt bereitstellen:

ERROR: (gcloud.app.deploy) Error Response: [13] Failed to create cloud build: com.google.net.rpc3.client.RpcClientException:..........invalid bucket "staging.PROJECT_ID.appspot.com"; service account PROJECT_ID@appspot.gserviceaccount.com does not have access to the bucket

Um dieses Problem zu beheben, weisen Sie dem Standarddienstkonto die Rolle Storage-Administrator (roles/storage.admin) zu. Weitere Informationen finden Sie unter Build-Logs in einem vom Nutzer erstellten Bucket speichern.

Wenn Sie die Rolle „Storage-Administrator“ sowie die anderen erforderlichen Rollen aufgrund verschiedener Berechtigungsfehler, die bei der Bereitstellung auftreten, bereits zugewiesen haben und Ihre Anwendung immer noch nicht bereitstellen können, liegt dies möglicherweise an den folgenden Änderungen der Organisationsrichtlinien:

  • Seit Mai 2024 erzwingt Google Cloud standardmäßig sichere Organisationsrichtlinien für alle Organisationsressourcen. Diese Richtlinie verhindert, dass App Engine den App Engine-Standarddienstkonten die Rolle Editor zuweist.

  • Im Juni 2024 hat Cloud Build das Standardverhalten für die Verwendung von Dienstkonten durch Cloud Build in neuen Projekten geändert. Weitere Informationen finden Sie unter Änderung des Cloud Build-Dienstkontos. Aufgrund dieser Änderung verwenden neue Projekte, die zum ersten Mal Versionen bereitstellen, möglicherweise das App Engine-Standarddienstkonto mit unzureichenden Berechtigungen für die Bereitstellung von Versionen.

So beheben Sie das Problem:

Der Aufrufer ist nicht berechtigt, auf das Projekt zuzugreifen

Der folgende Fehler tritt auf, wenn das Dienstkonto keine Berechtigung zum Bereitstellen von Apps im aktuellen Projekt hat:

User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist).

Um dieses Problem zu beheben, weisen Sie dem Dienstkonto die Rolle „App Engine-Bereitsteller“ (roles/appengine.deployer) zu.

Metadaten konnten nicht aus der Registry abgerufen werden

Der folgende Fehler tritt auf, wenn Sie den Befehl gcloud app deploy über ein Dienstkonto verwenden, das nicht die Rolle Storage-Administrator (roles/storage.admin) hat:

Failed to fetch metadata from the registry, with reason: generic::permission_denied

Um dieses Problem zu beheben, weisen Sie dem Dienstkonto die Rolle „Storage-Administrator“ zu.

Dienstkonten müssen Berechtigungen für das Image haben

Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:

The App Engine appspot and App Engine flexible environment service accounts must
have permissions on the image IMAGE_NAME

Dieser Fehler tritt aus einem der folgenden Gründe auf:

  • Das App Engine-Standarddienstkonto hat nicht die Rolle „Storage-Objekt-Betrachter“ (roles/storage.objectViewer).

    Um dieses Problem zu beheben, weisen Sie dem Dienstkonto die Rolle „Storage-Objekt-Betrachter“ zu.

  • Ihr Projekt hat einen VPC Service Controls-Dienstperimeter, der den Zugriff auf die Cloud Storage API über Zugriffsebenen beschränkt.

    Zur Behebung dieses Problems fügen Sie das Dienstkonto, mit dem Sie Ihre Anwendung bereitstellen, zu den entsprechenden accessPolicies des VPC Service Controls-Dienstperimeters hinzu.

  • Nach dem 15. Mai 2024 werden Images für die Domain gcr.io in Google Cloud -Projekten ohne vorherige Container Registry-Nutzung in Artifact Registry gehostet. Wenn Sie eine vorhandene Anwendung in einem neuen Projekt bereitstellen, das nach diesem Datum erstellt wurde, hat das Dienstkonto möglicherweise nicht die erforderlichen Berechtigungen zum Bereitstellen der App. Informationen zum Gewähren der erforderlichen Berechtigungen finden Sie unter In App Engine bereitstellen.

Fehler beim Erstellen von Cloud Build

Der folgende Fehler tritt auf, wenn Sie den Befehl gcloud app deploy über ein Dienstkonto verwenden, das nicht die Rolle „Cloud Build-Bearbeiter“ (roles/cloudbuild.builds.editor) hat.

Failed to create cloud build: Permission denied

Um dieses Problem zu beheben, weisen Sie dem Dienstkonto die Rolle „Cloud Build-Bearbeiter“ zu.

Fehler beim Abrufen der Anwendung

Der folgende Fehler tritt auf, wenn das Dienstkonto, mit dem Sie Ihre Anwendung bereitgestellt haben, nicht die Rolle „App Engine-Bereitsteller“ hat.

Permissions error fetching application apps/app_name. Please make sure you are using the correct project ID and that you have permission to view applications on the project.

If you are running Google Cloud CLI version 328 or later, the following error occurs
when you deploy your app:

make sure that you have permission to view applications on the project and that
SERVICE_ACCOUNT has the App Engine Deployer (roles/appengine.deployer) role.

Um dieses Problem zu beheben, weisen Sie dem Dienstkonto, das Sie zum Bereitstellen Ihrer App verwendet haben, die Rolle „App Engine-Bereitsteller“ zu.

Fehler beim Bereitstellen eines Dienstes mit einem Connector für serverlosen VPC-Zugriff

Der folgende Fehler tritt auf, wenn der Nutzer oder das Dienstkonto, der versucht, die Anwendung mit einem Serverless VPC Access Connector bereitzustellen, nicht die erforderlichen Berechtigungen hat:

Please ensure you have [compute.globalOperations.get] on the service project

Achten Sie darauf, dass der Nutzer oder das Dienstkonto, das für die Bereitstellung verwendet wird, über die Rollen Serverless VPC Access User und Compute Viewer verfügt.

Häufige Bereitstellungsfehler

In diesem Abschnitt werden Strategien zur Fehlerbehebung bei Konfigurationsfehlern in Ihrer App oder Ihrem Projekt beschrieben.

Fehler "Ungültiger Wert" beim Bereitstellen in einer Konfiguration mit freigegebener VPC

Der folgende Fehler wird in Cloud Logging für flexible VM-Instanzen angezeigt, wenn Sie Ihre Anwendung bereitstellen:

Invalid value for field 'resource.tags.items[1]': 'aef-instance'. Duplicate
tags are not allowed: aef-instance on compute.instances.insert

Dies ist ein bekanntes Problem, bei dem das Festlegen von instance_tag in der Datei app.yaml beim Erstellen von Instanzen zu Fehlern führt.

Entfernen Sie das Feld instance_tag aus der Datei app.yaml und wiederholen Sie die Bereitstellung, um das Problem zu beheben.

Limit für die maximale Anzahl von Instanzen überschreiten

Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:

You may not have more than 'xx' total max instances in your project.

Die Anzahl von Instanzen, die Sie pro Projekt erstellen können, ist begrenzt. Anfragen zum Erstellen zusätzlicher Instanzen schlagen fehl, wenn dieses Limit überschritten wird.

Um dieses Problem zu beheben, legen Sie den Wert von max_instances in Ihrer app.yaml-Datei auf einen Wert unter diesem Grenzwert fest oder löschen Sie einige Dienste oder Versionen, um die Summe von max_instances auf einen Wert unterhalb des Limits zu bringen.

Build schlägt während der Bereitstellung ohne Fehler in Logs fehl

Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:

ERROR: (gcloud.app.deploy) Cloud build failed. Check logs at https://console.cloud.google.com/cloud-build/builds/BUILD_ID?project=PROJECT_NUMBER Failure status: UNKNOWN: Error Response: [2] Build failed; check build logs for details

Wenn Sie auf den Link in der Fehlermeldung klicken und feststellen, dass alle Build-Schritte erfolgreich waren, die App aber trotzdem nicht erstellt werden konnte, kann das einen der folgenden Gründe haben:

Ändern Sie folgende Einstellungen für den Bucket, um dieses Problem zu beheben:

Build schlägt beim Ausführen einer Node.js-Anwendung fehl

Beim Bereitstellen einer Node.js-Anwendung können Build-Fehler auftreten.

Standardmäßig führt die Node.js-Laufzeit npm run build aus, wenn in der Datei package.json ein Build-Script erkannt wird. Dies kann zu unerwartetem Verhalten, z. B. lang andauernden Builds oder Fehlern aufgrund von unzureichendem Speicher führen.

Um dieses Problem zu beheben, geben Sie NODE_ENV=development in Ihrer app.yaml-Datei an, um sicherzustellen, dass die Ausführung alle erforderlichen Abhängigkeiten hat.

Trotz des Fehlers können Sie die Produktion erzwingen, indem Sie NODE_ENV: 'production' unter build-env-variables in der Datei app.yaml angeben:

  build_env_variables:
    NODE_ENV: 'production'

Weitere Informationen finden Sie unter Benutzerdefinierte Build-Schritte während der Bereitstellung ausführen.