Remarque : Au cours des prochains mois, nous allons réorganiser le site de documentation App Engine afin de faciliter la recherche de contenu et de mieux s'aligner avec les autres produits Google Cloud. Le contenu disponible sera le même, mais la navigation correspondra désormais au reste des produits Cloud. Si vous avez des commentaires ou des questions lorsque vous parcourez le site, cliquez sur "Envoyer des commentaires".

Résoudre les erreurs App Engine

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Déploiement

Si vous rencontrez des problèmes pour déployer votre application à l'aide de l'API App Engine Admin, cette page répertorie les messages d'erreur susceptibles de s'afficher et propose des suggestions pour corriger chaque erreur.

L'appelant n'est pas autorisé à accéder au projet

L'erreur suivante se produit lorsque vous déployez votre application :

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

Cette erreur se produit si le compte utilisé pour le déploiement de l'application n'est pas autorisé à déployer des applications pour le projet en cours.

Pour résoudre ce problème, accordez le rôle Déployeur App Engine (roles/appengine.deployer) au compte. Pour afficher le compte utilisé pour le déploiement, effectuez l'une des opérations suivantes :

  • Si vous avez utilisé Google Cloud CLI pour le déploiement, exécutez la commande gcloud auth list.
  • Si vous avez déployé le service à partir d'un IDE, affichez les paramètres du plug-in Cloud Tools.

Échec de la récupération des métadonnées à partir du registre

L'erreur suivante se produit lorsque vous déployez votre application :

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

Cette erreur se produit si vous exécutez la commande gcloud app deploy à partir d'un compte de service qui ne dispose pas du rôle "Administrateur Storage" (roles/storage.admin).

Pour résoudre ce problème, accordez le rôle Administrateur Storage au compte de service :

  • Pour afficher le compte utilisé, exécutez la commande gcloud auth list.
  • Pour découvrir les raisons pour lesquelles l'attribution du rôle "Déployeur App Engine (roles/appengine.deployer)" ne suffit pas toujours, consultez la section Rôles App Engine.

Les comptes de service doivent disposer d'autorisations sur l'image

L'erreur suivante se produit lorsque vous déployez votre application :

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

Cette erreur se produit pour l'une des raisons suivantes :

Échec de la création de la compilation cloud

L'erreur suivante se produit lorsque vous déployez votre application :

Failed to create cloud build: Permission denied

Cette erreur se produit si vous exécutez la commande gcloud app deploy à partir d'un compte qui ne dispose pas du rôle "Éditeur Cloud Build (roles/cloudbuild.builds.editor).

Pour résoudre ce problème, accordez le rôle Éditeur Cloud Build au compte de service que vous utilisez pour déployer votre application.

Pour afficher le compte utilisé, exécutez la commande gcloud auth list.

Erreur d'autorisation lors de la récupération de l'application

L'erreur suivante se produit lorsque vous déployez votre application :

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

Si vous utilisez Google Cloud CLI version 328 ou ultérieure, l'erreur suivante se produit lors du déploiement de votre application :

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.

Cette erreur se produit si le compte utilisé pour le déploiement de votre application ne dispose pas du rôle "Déployeur App Engine" (roles/appengine.deployer).

Pour résoudre ce problème, vérifiez que vous avez bien accordé le rôle Déployeur App Engine au compte de service que vous avez utilisé pour déployer votre application. Si ce n'est pas le cas, accordez-lui ce rôle. Pour afficher le compte utilisé pour le déploiement, effectuez l'une des opérations suivantes :

  • Si vous avez utilisé Google Cloud CLI pour le déploiement, exécutez la commande gcloud auth list.
  • Si vous avez déployé le service à partir d'un IDE, affichez les paramètres du plug-in Cloud Tools.

Le délai d'attente a expiré lors de la mise en service de l'infrastructure de l'application

L'erreur suivante se produit lorsque vous déployez votre application :

Timed out waiting for the app infrastructure to become healthy

Plusieurs facteurs peuvent entraîner cette erreur, par exemple des autorisations manquantes, des erreurs de code, des ressources de processeur ou de mémoire insuffisantes, ou encore des vérifications d'état ayant échoué. L'erreur ne se produit que dans l'environnement flexible App Engine.

Pour résoudre ce problème, éliminez les causes potentielles suivantes :

  1. Vérifiez que vous avez accordé le rôle Éditeur (roles/editor) au compte de service App Engine par défaut.

  2. Vérifiez si la règle d'administration de votre projet restreint l'accès aux adresses IP externes. Pour plus d'informations, consultez Problèmes connus dans l'environnement flexible App Engine.

  3. Vérifiez que vous avez attribué les rôles suivants au compte de service que vous utilisez pour exécuter votre application (généralement le compte de service par défaut, app-id@appspot.gserviceaccount.com) :

  4. Accordez ces rôles au compte de service si vous ne l'avez pas déjà fait.

  5. Si vous effectuez un déploiement dans une configuration de VPC partagé et transmettez le champ instance_tag dans le fichier app.yaml, reportez-vous à cette section pour résoudre le problème.

Erreur d'autorisations lors du déploiement d'un service avec le connecteur d'accès VPC sans serveur

L'erreur suivante se produit lorsque vous déployez votre application :

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

Cette erreur se produit lorsque l'utilisateur ou le compte de service qui tente de déployer l'application avec le connecteur VPC sans serveur ne dispose pas des autorisations requises.

Pour résoudre ce problème, assurez-vous que l'utilisateur ou le compte de service effectuant le déploiement dispose des rôles IAM Utilisateur pour l'accès au VPC sans serveur et Lecteur de Compute.

Erreur de valeur non valide lors du déploiement dans une configuration de VPC partagé

L'erreur suivante s'affiche dans Cloud Logging pour les instances de VM Flex lorsque vous déployez votre application :

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

Cette erreur est due à un problème connu actuel à cause duquel la définition d'"instance_tag" entraîne des erreurs lors de la création d'instances.

Pour résoudre le problème, supprimez le champ instance_tag du fichier app.yaml et redéployez votre application.

Autorisation "compute.firewalls.list" requise

L'erreur suivante se produit lorsque vous déployez votre application sur un réseau VPC partagé :

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'

Cette erreur se produit si les comptes de service suivants pour le projet hôte ne possèdent pas le rôle d'utilisateur de réseau Compute (roles/compute.networkUser) :

Pour résoudre ce problème, vérifiez que vous avez bien accordé le rôle d'utilisateur de réseau Compute aux comptes de service de l'agent de service des API Google et de l'agent de service de l'environnement flexible App Engine pour le projet hôte. Accordez ce rôle aux comptes de service s'ils ne le possèdent pas.

Échec de la compilation lors du déploiement sans erreur dans les journaux de compilation

L'erreur suivante se produit lorsque vous déployez votre application :

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

Lorsque vous cliquez sur le lien dans le message d'erreur, vous pouvez vérifier si toutes les étapes de compilation ont été effectuées. Cependant, l'application ne parvient pas à procéder à la compilation.

Ce problème se produit si vous utilisez des clés de chiffrement gérées par le client (CMEK) ou si vous avez configuré une règle de conservation des données dans votre bucket staging.PROJECT_ID.appspot.com.

Pour résoudre ce problème, modifiez les paramètres suivants de votre bucket staging.PROJECT_ID.appspot.com :

Erreurs lors du déploiement dans une version d'environnement flexible existante

L'erreur suivante peut se produire lors du déploiement dans une version flexible App Engine existante :

ERROR: (gcloud.app.deploy) Error Response: [9] An internal error occurred while
processing task /app-engine-flex/flex_await_healthy/flex_await_healthy

Cette erreur indique que la mise à jour d'un déploiement non opérationnel avec une image Docker opérationnelle n'entraîne pas toujours un déploiement opérationnel. Le résultat dépend de l'état des instances du déploiement non opérationnel. Malgré l'erreur, si vous fournissez une bonne image Docker, le déploiement peut finalement devenir opérationnel. La mise à jour une version existante avec une nouvelle image Docker, bien qu'autorisée, n'est pas recommandée.

Actuellement, il n'y a pas de rollback en cas d'échec de la version.

Diffusion

Nginx ne parvient pas à se connecter ou à contacter le conteneur d'application

L'erreur suivante ne se produit que dans l'environnement flexible App Engine et renvoie généralement des erreurs 502 immédiatement après l'erreur:

recv() failed (104: Connection reset by peer) while reading response header from upstream

Cette erreur indique que le proxy inverse nginx (side-car nginx) ne parvient pas à atteindre le conteneur d'application. Dans les journaux, vous pouvez comparer le délai de fermeture de l'erreur 502 dans le journal nginx avec le délai du journal nginx.error. Une erreur nginx.error suivie immédiatement d'une erreur 502 nginx est probablement la cause de l'erreur nginx 502.

Cette erreur se produit souvent lorsque le délai d'expiration de la connexion keepalive de l'application est inférieur au délai d'expiration keepalive de nginx. Comme nginx dans l'environnement flexible App Engine possède un keepalive_timeout de 650 secondes, les applications doivent maintenir les connexions actives pendant au moins cette durée. Par défaut, les applications Node.js possède un keepAliveTimeout de 5 000 millisecondes. Dans ce cas, vous pouvez définir server.keepAliveTimeout sur 700 000 millisecondes.

Pour résoudre le problème, consultez les journaux écrits par le code exécuté dans le conteneur de votre application en vous connectant à l'instance de VM et ajoutez, si nécessaire, d'autres journaux pour en identifier la cause.