Résoudre les problèmes de déploiement dans App Engine

Plusieurs facteurs peuvent entraîner des erreurs de déploiement dans App Engine, y compris des autorisations manquantes, des modifications apportées aux règles d'administration et des problèmes de configuration de votre application.

Cette page décrit les erreurs de déploiement courantes dans App Engine et les méthodes permettant de les résoudre:

Erreurs liées aux autorisations

Cette section décrit les erreurs qui peuvent se produire lorsque vous déployez votre application en raison d'autorisations de compte manquantes ou de modifications des règles de l'organisation.

Pour identifier le compte actif que vous utilisez pour accéder à Google Cloud CLI et aux autres outils de la Google Cloud plate-forme, procédez comme suit:

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

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.

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Échec du déploiement pour les nouveaux projets

L'erreur suivante peut s'afficher lorsque vous déployez votre application pour la première fois dans un nouveau projet :

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

Pour résoudre ce problème, attribuez le rôle Administrateur de l'espace de stockage (roles/storage.admin) au compte de service par défaut. Pour en savoir plus, consultez la section Stocker des journaux de compilation dans un bucket créé par l'utilisateur.

Si vous avez déjà attribué le rôle "Administrateur de l'espace de stockage", ainsi que les autres rôles requis en fonction des différentes erreurs d'autorisation que vous rencontrez lors du déploiement, et que vous ne parvenez toujours pas à déployer votre application, cela peut être dû aux modifications suivantes apportées aux règles de l'organisation:

  • Depuis mai 2024, Google Cloud applique des règles d'administration sécurisées par défaut pour toutes les ressources d'organisation. Cette stratégie empêche App Engine d'attribuer le rôle Editor aux comptes de service App Engine par défaut.

  • En juin 2024, Cloud Build a modifié le comportement par défaut concernant la façon dont Cloud Build utilise les comptes de service dans les nouveaux projets. Cette modification est détaillée dans la section Modification du compte de service Cloud Build. En raison de cette modification, les nouveaux projets qui déploient des versions pour la première fois peuvent utiliser le compte de service App Engine par défaut avec des autorisations insuffisantes pour déployer des versions.

Pour résoudre ce problème, procédez comme suit :

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

L'erreur suivante se produit si le compte de service n'est pas autorisé à déployer des applications dans le projet en cours:

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

Pour résoudre ce problème, accordez le rôle Déployeur App Engine (roles/appengine.deployer) au compte de service.

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

L'erreur suivante 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):

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

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

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 si vous exécutez la commande gcloud app deploy à partir d'un compte de service qui ne dispose pas du rôle "Éditeur Cloud Build" (roles/cloudbuild.builds.editor).

Failed to create cloud build: Permission denied

Pour résoudre ce problème, accordez le rôle Éditeur Cloud Build au compte de service.

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

L'erreur suivante se produit lorsque le compte de service que vous avez utilisé pour déployer votre application ne dispose pas du rôle Déployeur App Engine.

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.

Pour résoudre ce problème, accordez le rôle Déployeur App Engine au compte de service que vous avez utilisé pour déployer votre application.

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

L'erreur suivante se produit lorsque l'utilisateur ou le compte de service qui tente de déployer l'application avec un connecteur d'accès VPC sans serveur ne dispose pas des autorisations requises:

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

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

Erreurs de déploiement courantes

Cette section décrit les stratégies de dépannage des erreurs de configuration dans votre application ou votre projet.

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 flexibles 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

Il s'agit d'un problème connu à cause duquel la définition de instance_tag dans votre fichier app.yaml entraîne des erreurs lors de la création d'instances.

Pour résoudre le problème, supprimez le champ instance_tag de votre 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 votre fichier app.yaml, puis redéployez-le.

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

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

Si vous cliquez sur le lien dans le message d'erreur et que vous constatez que toutes les étapes de compilation ont été effectuées, mais que la compilation de l'application a échoué, cela peut être dû aux raisons suivantes:

Pour résoudre ce problème, modifiez les paramètres suivants de votre bucket:

Échec de la compilation lors de l'exécution d'une application Node.js

Des échecs de compilation peuvent 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 de compilation 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.

Pour résoudre ce problème, 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.