Es gibt mehrere Faktoren, die zu Bereitstellungsfehlern in der App Engine führen können, z. B. fehlende Berechtigungen, Änderungen an Organisationsrichtlinien und Probleme mit der App-Konfiguration.
Auf dieser Seite werden die folgenden häufigen Bereitstellungsfehler in der App Engine und Methoden zur Fehlerbehebung beschrieben:
Berechtigungsfehler
In diesem Abschnitt werden Fehler beschrieben, die beim Bereitstellen Ihrer App aufgrund fehlender Kontoberechtigungen oder Änderungen an den 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 werden standardmäßig sichere Organisationsrichtlinien für alle Organisationsressourcen erzwungen. Google Cloud 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:
Weisen Sie dem App Engine-Standarddienstkonto (
PROJECT_ID@appspot.gserviceaccount.com
) die RolleEditor
zu.Lesen Sie die Cloud Build-Anleitung zu Änderungen am Standarddienstkonto und deaktivieren Sie die Standardänderungen in neuen Projekten.
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, müssen Sie dem Dienstkonto die Rolle „Storage-Objekt-Betrachter“ zuweisen.
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-Dienstperimeters hinzu.
Nach dem 15. Mai 2024 werden Images für die Domain
gcr.io
in Projekten Google Cloud 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. Wie Sie die erforderlichen Berechtigungen gewähren, erfahren Sie unter In der 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, mit dem Sie Ihre Anwendung bereitgestellt haben, die Rolle „App Engine-Bereitsteller“ zu.
Fehler beim Bereitstellen eines Dienstes mit einem Connector für serverlosen VPC-Zugriff
Dieser 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 die Bereitstellung durchführt, über die Rollen Serverless VPC Access User und Compute Viewer verfügt.
Zeitüberschreitung beim Warten auf die ordnungsgemäße Funktion der App-Infrastruktur
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
Timed out waiting for the app infrastructure to become flex_await_healthy
Verschiedene Faktoren können diesen Fehler verursachen, z. B. fehlende Berechtigungen, Codefehler, unzureichende CPU- oder Speicherkapazität oder fehlgeschlagene Systemdiagnosen.
Schließen Sie die folgenden möglichen Ursachen aus, um dieses Problem zu beheben:
Prüfen Sie, ob die Organisationsrichtlinie für Ihr Projekt den Zugriff auf externe IP-Adressen einschränkt. Weitere Informationen finden Sie unter Bekannte Probleme mit der flexiblen App Engine-Umgebung.
Prüfen Sie, ob Sie dem Dienstkonto, mit dem Sie Ihre Anwendung ausführen (in der Regel das Standarddienstkonto
app-id@appspot.gserviceaccount.com
), die folgenden Rollen zugewiesen haben:Weisen Sie die verbleibenden Rollen zu, wenn das Dienstkonto sie noch nicht hat.
Wenn Sie die Bereitstellung in der freigegebenen VPC vornehmen und
instance_tag
inapp.yaml
konfigurieren, lesen Sie den Hilfeartikel Fehler „Ungültiger Wert“ beim Bereitstellen in einer Konfiguration mit freigegebener VPC, um das Problem zu beheben.
Fehler beim Neustarten von Instanzen mit laufenden Versionen
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
error when restarting the instance under the running versions
Seit Mai 2024 werden die standardmäßig sicheren Organisationsrichtlinien für alle neuen Organisationen erzwungen. Google Cloud Bei dieser Richtlinie muss VM Manager für alle VM-Instanzen aktiviert sein, die in neuen Projekten erstellt werden. Diese Einschränkung verhindert bei neuen und vorhandenen Projekten Metadaten-Aktualisierungen, die VM Manager auf Projekt- oder Instanzebene deaktivieren.
Um dieses Problem zu beheben, müssen Sie die Einschränkung der Organisationsrichtlinie „OS-Konfiguration erforderlich“ (constraints/compute.requireOsConfig
) deaktivieren.
Wenn das Problem weiterhin besteht, müssen Sie auch die folgenden Organisationsrichtlinien deaktivieren, die möglicherweise auf Projekt- oder Organisationsebene aktiviert wurden:
Definieren Sie zulässige externe IP-Adressen für VM-Instanzen (
constraints/compute.vmExternalIpAccess
). Wenn Ihre Anwendung so eingerichtet ist, dass nur private Netzwerke verwendet werden, müssen Sie diese Einschränkung nicht deaktivieren.Gastattribute von Compute Engine-Metadaten deaktivieren (
constraints/compute.disableGuestAttributesAccess
)
Erforderliche compute.firewalls.list
-Berechtigung
Der folgende Fehler tritt auf, wenn Sie die Anwendung in einem freigegebenen VPC-Netzwerk bereitstellen:
Request to https://compute.googleapis.com/compute/v1/projects/projects/PROJECT_ID/global/firewalls?key failed, details: Required 'compute.firewalls.list' permission for 'projects/PROJECT_ID'
Dieser Fehler tritt auf, wenn die folgenden Dienstkonten für das Hostprojekt nicht die Rolle „Compute-Netzwerknutzer“ (roles/compute.networkUser
) haben:
Weisen Sie dem Dienstkonto des Google APIs-Dienst-Agents und dem Dienstkonto des Dienst-Agents für die flexible App Engine-Umgebung für das Hostprojekt die Rolle Compute-Netzwerknutzer zu, um das Problem zu beheben.
Bereitstellung aufgrund einer Einschränkung der Organisationsrichtlinie fehlgeschlagen
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
ERROR: (gcloud.app.deploy) Error Response: [13] An internal error occurred while processing task /app-engine-flex/....: Request to https://compute.googleapis.com/compute/VERSION/projects/PROJECT_ID/... failed, details: Constraint constraints/compute.disableGuestAttributesAccess violated for project PROJECT_ID.
Dies kann aufgrund der Erzwingung der Einschränkung constraints/compute.disableGuestAttributesAccess
beim Bereitstellen Ihrer Anwendung auftreten. Diese Organisationsrichtlinie wird standardmäßig für alle Apps in der flexiblen App Engine-Umgebung erzwungen.
Um dieses Problem zu beheben, müssen Sie die Einschränkung constraints/compute.disableGuestAttributesAccess
deaktivieren.
Häufige Fehler bei der Bereitstellung
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.
Fehler bei der Bereitstellung von Anwendungen mit maximal drei Instanzen
Bei bereitgestellten Anwendungen, bei denen für max_instances
bis zu drei Instanzen festgelegt sind, können unerwartete Fehler oder Ausfallzeiten auftreten. Um das Problem zu beheben, geben Sie in der Datei app.yaml
mindestens vier Instanzen an und wiederholen Sie die Bereitstellung.
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 der 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 wurde, kann das folgende Gründe haben:
- Sie verwenden vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
- Sie richten eine Datenaufbewahrungsrichtlinie für Ihren
staging.PROJECT_ID.appspot.com
-Bucket ein.
Ändern Sie folgende Einstellungen für den Bucket, um dieses Problem zu beheben:
- Legen Sie die Verschlüsselung auf Google-owned and Google-managed encryption keys fest.
- Entfernen Sie die Aufbewahrungsrichtlinie.
Fehler bei der Bereitstellung in einer vorhandenen App Engine-Version
Der folgende Fehler kann auftreten, wenn die Bereitstellung in einer vorhandenen Version in der flexiblen App Engine-Umgebung erfolgt:
ERROR: (gcloud.app.deploy) Error Response: [9] An internal error occurred while
processing task /app-engine-flex/flex_await_healthy/flex_await_healthy
Dieser Fehler weist darauf hin, dass das Aktualisieren eines fehlerhaften Deployments mit einem funktionierenden Docker-Image nicht immer zu einem fehlerfreien Deployment führt. Das Ergebnis hängt vom Status der Instanzen von der fehlerhaften Bereitstellung ab. Trotz des Fehlers kann das Deployment letztendlich fehlerfrei werden, wenn Sie ein gutes Docker-Image bereitstellen. Es ist nicht empfehlenswert, eine vorhandene Version mit einem neuen Docker-Image zu aktualisieren, auch wenn dies zulässig ist. Es gibt kein Rollback bei einem Versionsfehler.