Auf dieser Seite werden Methoden zur Fehlerbehebung für Fehler beschrieben, die bei der Verwendung von App Engine auftreten können.
Im Google Cloud Service Health Dashboard finden Sie Informationen zu Vorfällen, die Google Cloud-Dienste wie App Engine betreffen.
Bereitstellung
Wenn bei der Bereitstellung Ihrer Anwendung mithilfe der App Engine Admin API Probleme auftreten, finden Sie in diesem Abschnitt Fehlermeldungen und Vorschläge zur Behebung der einzelnen Fehler.
Der Aufrufer ist nicht berechtigt, auf das Projekt zuzugreifen
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist): The caller does not have permission
Dieser Fehler tritt auf, wenn das Konto, das Sie für die Bereitstellung Ihrer Anwendung verwendet haben, keine Berechtigung zum Bereitstellen von Anwendungen für das aktuelle Projekt hat.
Um dieses Problem zu beheben, müssen Sie dem Konto die Rolle „App Engine-Bereitsteller“ (roles/appengine.deployer
) zuweisen. Führen Sie einen der folgenden Schritte aus, um festzustellen, welches Konto Sie zur Bereitstellung verwendet haben:
- 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.
Metadaten konnten nicht aus der Registry abgerufen werden
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
Failed to fetch metadata from the registry, with reason: generic::permission_denied
Dieser Fehler tritt auf, wenn Sie den Befehl gcloud app deploy
über ein Dienstkonto verwenden, das nicht die Rolle „Storage-Administrator“ (roles/storage.admin
) hat.
Um dieses Problem zu beheben, müssen Sie dem Dienstkonto die Rolle „Storage-Administrator“ zuweisen.
- Führen Sie den Befehl
gcloud auth list
aus, um zu sehen, welches Konto Sie verwendet haben. - 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.
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-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.
Fehler beim Erstellen von Cloud Build
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
Failed to create cloud build: Permission denied
Dieser Fehler tritt auf, wenn Sie den gcloud app deploy
-Befehl über ein Konto verwenden, das nicht die Rolle „Cloud Build-Bearbeiter“ (roles/cloudbuild.builds.editor
) hat.
So beheben Sie das Problem:Die Rolle "Cloud Build-Bearbeiter" an das Dienstkonto, das Sie zum Bereitstellen der Anwendung verwenden, zuweisen.
Führen Sie den Befehl gcloud auth list
aus, um zu sehen, welches Konto Sie verwendet haben.
Berechtigungsfehler beim Abrufen der Anwendung
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
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
Wenn Sie die Google Cloud CLI ab Version 328 ausführen, tritt der folgende Fehler auf, wenn Sie Ihre Anwendung bereitstellen:
Permissions error fetching application apps/app_name. Please 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.
Dieser Fehler tritt auf, wenn das Konto, mit dem Sie Ihre Anwendung bereitgestellt haben, nicht die Rolle „App Engine-Bereitsteller“ (roles/appengine.deployer
) hat.
Um dieses Problem zu beheben, prüfen Sie, ob Sie dem Dienstkonto, das Sie zum Bereitstellen Ihrer Anwendung verwendet haben, die Rolle „App Engine-Bereitsteller“ zugewiesen haben. Wenn das Dienstkonto sie nicht hat, weisen Sie die Rolle zu. Führen Sie einen der folgenden Schritte aus, um festzustellen, welches Konto Sie zur Bereitstellung verwendet haben:
- 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.
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 healthy
Verschiedene Faktoren können diesen Fehler verursachen, z. B. fehlende Berechtigungen, Codefehler, unzureichende CPU- oder Speicherkapazität oder fehlgeschlagene Systemdiagnosen. Der Fehler tritt nur in der flexiblen App Engine-Umgebung auf.
Schließen Sie die folgenden möglichen Ursachen aus, um dieses Problem zu beheben:
- Prüfen Sie, ob Ihrem App Engine-Standarddienstkonto die Rolle Bearbeiter (
roles/editor
) zugewiesen wurde. 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 Rollen zu, wenn das Dienstkonto sie noch nicht hat.
Wenn Sie die Bereitstellung in der freigegebenen VPC vornehmen und
instance_tag
inapp.yaml
übergeben, lesen Sie diesen Abschnitt, um das Problem zu beheben.
Berechtigungsfehler beim Bereitstellen eines Dienstes mit dem serverlosen VPC Access Connector
Der folgende Fehler tritt auf, wenn Sie Ihre Anwendung bereitstellen:
Please ensure you have [compute.globalOperations.get] on the service project
Dieser Fehler tritt auf, wenn der Nutzer oder das Dienstkonto, der versucht, die Anwendung mit dem serverlosen VPC-Connector bereitzustellen, nicht die erforderlichen Berechtigungen hat.
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.
Fehler "Ungültiger Wert" beim Bereitstellen in einer Konfiguration mit freigegebener VPC
Der folgende Fehler wird in Cloud Logging für Flex-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
Dieser Fehler ist auf ein aktuelles bekanntes Problem zurückzuführen, bei dem das Festlegen von "instance_tag" 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.
Fehler beim Überschreiten der maximalen Anzahl von Instanzen
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, sehen Sie, dass alle Build-Schritte erfolgreich waren. Die Anwendung konnte jedoch keinen Build erstellen.
Dieses Problem tritt auf, wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden oder eine Datenaufbewahrungsrichtlinie für Ihren staging.PROJECT_ID.appspot.com
-Bucket eingerichtet haben.
Ändern Sie folgende Einstellungen für den Bucket staging.PROJECT_ID.appspot.com
, um dieses Problem zu beheben:
- Legen Sie die Verschlüsselung auf Google-eigene und von Google verwaltete Schlüssel fest.
- Entfernen Sie die Aufbewahrungsrichtlinie.
Build schlägt während der Bereitstellung fehl, wenn NODE_ENV=development
ausgeführt wird
Dieser Fehler kann auftreten, wenn Sie eine Node.js-Anwendung bereitstellen. 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.
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.
Schaltungsfehler
In den folgenden Abschnitten werden die Initialisierungs- und Bereitstellungsfehler von Anwendungen behandelt.
Berechtigungsfehler beim Erstellen einer Anwendung mit dem Standarddienstkonto
Wenn Sie eine Anwendung erstellen, nachdem Sie die App Engine API zum ersten Mal aktiviert haben, schlägt sie mit folgenden Fehlern fehl:
gcloud-CLI
An internal error occurred while calling service consumer manager for service account.
Creating App Engine application in project [PROJECT__ID] and [REGION]....failed. DEBUG: (gcloud.app.create) Error Response: [13] an internal error has occurred
Anforderungsprotokolle
Service account creation is not allowed on this project.
Console
Error while initialising App Engine.
Dieser Fehler kann aufgrund der Erzwingung der Organisationsrichtlinieneinschränkung constraints/iam.disableServiceAccountCreation
beim Erstellen Ihrer Anwendung auftreten. Diese Richtlinie verhindert die Bereitstellung des App Engine-Standarddienstkontos PROJECT_ID@appspot.gserviceaccount.com
.
Zur Behebung dieses Problems müssen Sie die Organisationsrichtlinieneinschränkung constraints/iam.disableServiceAccountCreation
vorübergehend entfernen, damit das App Engine-Standarddienstkonto erstellt und bereitgestellt werden kann. Das Standarddienstkonto ist für die Anwendungserstellung erforderlich und kann nicht übersprungen werden. Dies gilt auch, wenn Sie ein versionsspezifisches Dienstkonto verwenden.
Das App Engine-Standarddienstkonto kann dann gelöscht oder durch ein Dienstkonto ersetzt werden, das Sie nach erfolgreicher Bereitstellung erstellen.
Wenn Sie ein von Ihnen erstelltes Dienstkonto verwenden, lesen Sie die Übersicht über Rollenempfehlungen, um zu verstehen, wie Sie eingeschränkte Berechtigungen erzwingen können, z. B. durch Bereitstellen einer Tokenersteller-Rolle für das Dienstkonto, das Sie für den Dienst-Agent erstellen.
Sicherheitsfehler bei der Verwendung gebündelter Legacy-Dienste für Python
Wenn Sie beim Start einer Python 3-Anwendung eine Legacy-Bundle-Dienst-API verwenden, wird möglicherweise die folgende Fehlermeldung angezeigt:
Attempted RPC call without active security ticket
Dieser Fehler kann in Szenarien auftreten, wenn beispielsweise bestimmte Werte aus Memcache gelesen werden, wenn Ihre Anwendung mit der Konfiguration einer Datenbankverbindung beginnt oder eine globale Variable festlegt.
Zur Behebung dieses Problems können Sie versuchen, diese Logik in eine Aufwärmanfrage zu verschieben.