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 :
Le compte de service App Engine par défaut ne dispose pas du rôle Lecteur des objets de l'espace de stockage (
roles/storage.objectViewer
).- Pour résoudre ce problème, accordez le rôle Lecteur des objets de l'espace de stockage au compte de service.
Votre projet dispose d'un périmètre de service VPC qui limite l'accès à l'API Cloud Storage à l'aide de niveaux d'accès.
- Pour résoudre ce problème, ajoutez le compte de service utilisé pour déployer votre application au périmètre de service VPC correspondant accessPolicies.
É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 :
- Vérifiez que vous avez accordé le rôle Éditeur (
roles/editor
) au compte de service App Engine par défaut. 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
) :Accordez ces rôles au compte de service si vous ne l'avez pas déjà fait.
Si vous effectuez un déploiement dans une configuration de VPC partagé et transmettez le champ
instance_tag
dans le fichierapp.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
:
- Définissez le chiffrement sur Clés de chiffrement gérées par Google.
- Supprimez la règle de conservation.
É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.