Résoudre les erreurs App Engine

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 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) :

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

  4. 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.

Erreurs lors du déploiement d'applications dotées de trois instances au maximum

Les applications déployées avec le paramètre max_instances défini sur 3 ou moins peuvent rencontrer des erreurs ou des temps d'arrêt inattendus. Pour résoudre le problème, spécifiez au moins quatre instances dans le fichier app.yaml, puis redéployez-le.

Erreur lors du dépassement de la limite du nombre maximal d'instances

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

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

Le nombre maximal d'instances que vous pouvez créer par projet est limité. Les requêtes de création d'instances supplémentaires échouent si vous dépassez cette limite.

Pour résoudre ce problème, définissez la valeur de max_instances dans votre fichier app.yaml sur une valeur inférieure à cette limite, ou supprimez certains services ou certaines versions afin que le cumul des valeurs max_instances ne dépasse pas la limite autorisée.

É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 :

Échec de la compilation pendant le déploiement lors de l'exécution avec NODE_ENV=development

Cette erreur peut se produire lorsque vous déployez une application Node.js. Par défaut, l'environnement d'exécution Node.js exécute npm run build si un script build est détecté dans le fichier package.json.

Cela peut entraîner des comportements inattendus, tels que des compilations de longue durée ou des erreurs de mémoire insuffisante.

Spécifiez NODE_ENV=development dans le fichier app.yaml pour vous assurer que l'exécution possède toutes les dépendances requises.

Malgré l'erreur, vous pouvez forcer la production en spécifiant NODE_ENV: 'production' sous build-env-variables dans votre fichier app.yaml :

  build_env_variables:
    NODE_ENV: 'production'

Pour plus d'informations, consultez la section Exécuter des étapes de compilation personnalisées lors du déploiement.

Diffusion

Les sections suivantes décrivent les erreurs d'initialisation et de diffusion de l'application.

Erreur d'autorisation lors de la création d'une application avec le compte de service par défaut

Lorsque vous créez une application après avoir activé l'API App Engine pour la première fois, elle échoue avec les erreurs suivantes :

  • 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
    
  • Journaux des requêtes :

    Service account creation is not allowed on this project.
    
  • Console :

    Error while initialising App Engine.
    

Cette erreur peut se produire en raison de l'application de la contrainte de règle d'administration constraints/iam.disableServiceAccountCreation lors de la création de votre application. Cette règle empêche le provisionnement du compte de service App Engine par défaut PROJECT_ID@appspot.gserviceaccount.com. Le compte de service par défaut est nécessaire pour la création de l'application et ne peut pas être ignoré. Cela est également applicable lorsque vous utilisez un compte de service par version.

Pour résoudre ce problème, vous devez supprimer temporairement la contrainte de règle d'administration constraints/iam.disableServiceAccountCreation pour permettre la création et le déploiement du compte de service App Engine par défaut. Le compte de service App Engine par défaut peut ensuite être supprimé ou remplacé par un compte de service que vous créez une fois le déploiement réussi.

Si vous utilisez un compte de service que vous avez créé, consultez Présentation des recommandations de rôle pour comprendre comment appliquer des autorisations restreintes, par exemple pour attribuer un rôle de créateur de jetons au compte de service créé pour l'agent de service.

Erreurs liées à la sécurité lors de l'utilisation des anciens services groupés pour Python

Si vous utilisez l'API des anciens services groupés au démarrage d'une application Python 3, le message d'erreur suivant peut s'afficher :

Attempted RPC call without active security ticket

Cette erreur peut se produire dans des scénarios tels que la lecture de certaines valeurs de Memcache lorsque votre application commence à configurer une connexion à une base de données ou à définir une variable globale.

Pour résoudre ce problème, vous pouvez essayer de transférer cette logique dans une requête de préchauffage.