API not enabled or service account deleted
erreur
Lorsque vous appelez l'API Cloud Life Sciences, vous pouvez rencontrer l'une des erreurs suivantes, voire les deux :
API not enabled or service account deleted
checking service account permission: Account deleted: PROJECT_ID
Pour résoudre ces problèmes, procédez dans l'ordre indiqué ci-dessous :
- Assurez-vous que les API Cloud Life Sciences et Compute Engine sont activées.
- Assurez-vous que le compte de service de l'agent de service Cloud Life Sciences est correctement configuré.
- Assurez-vous que le compte de service par défaut de Compute Engine est correctement configuré.
Activer les API Cloud Life Sciences et Compute Engine
Assurez-vous que les API Cloud Life Sciences et Compute Engine sont activées au sein de votre projet Google Cloud :
Activez l'API Cloud Life Sciences :
Activez l'API Compute Engine :
Si vous rencontrez une erreur indiquant que vous n'êtes pas autorisé à activer les API Google Cloud pour votre projet, consultez la page Activer et désactiver des API.
Compte de service Cloud Life Sciences ou rôle d'agent de service Cloud Life Sciences manquants
Le compte de service agent de service Cloud Life Sciences est créé automatiquement lorsque vous exécutez un pipeline pour la première fois dans un projet Google Cloud. Vous pouvez exécuter le pipeline à l'aide de la Google Cloud CLI ou des API REST et RPC. Vous ne pouvez pas supprimer le compte de service, il est possible qu'elle n'apparaisse pas sur la page Identity and Access Management. Cela peut entraîner des erreurs avec l'API Cloud Life Sciences.
Pour que l'API Cloud Life Sciences fonctionne et effectue des tâches comme exécuter des pipelines sur des VM Compute Engine, le compte de service de l'agent de service Cloud Life Sciences doit exister et posséder le rôle IAM d'agent de service Life Sciences.
Si vous rencontrez l'un des problèmes suivants, recréez le compte de service agent de service Cloud Life Sciences ou attribuez-lui le rôle IAM agent de service Life Sciences :
- Vous ne trouvez pas le compte de service agent de service Cloud Life Sciences sur la page Identity and Access Management.
- Vous trouvez le compte de service agent de service Cloud Life Sciences, mais il ne contient pas le rôle agent de service Life Sciences.
Utiliser la Google Cloud CLI
pour ajouter le rôle lifesciences.serviceAgent
au
compte de service de l'agent de service Cloud Life Sciences via le
de compte de service, qui utilise le format
service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount
Pour recréer le compte de service ou lui accorder le rôle IAM Agent de service Life Sciences, exécutez la commande gcloud projects add-iam-policy-binding
. Pour trouver les informations PROJECT_ID et PROJECT_NUMBER, consultez la section Identifier des projets.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com \ --role=roles/lifesciences.serviceAgent
Si la requête aboutit, l'invite de commande affiche un message semblable à l'exemple suivant :
Updated IAM policy for project [PROJECT_ID]. bindings: ... - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com role: roles/lifesciences.serviceAgent ... etag: VALUE version: VALUE
Revenez à la page Identity and Access Management et vérifiez les éléments suivants :
- La colonne Membre contient un identifiant de compte de service au format
service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount
. - Sur la même ligne que celle identifiée à partir de la colonne Membre, la colonne Nom contient Agent de service Cloud Life Sciences.
- Sur la même ligne que celle identifiée à partir de la colonne Membre, la colonne Rôle contient Agent de service Life Sciences.
Compte de service Compute Engine par défaut manquant
Une fois créés, les projets Google Cloud disposent d'un compte de service Compute Engine par défaut, identifiable par l'adresse e-mail suivante :
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Le compte de service doit exister au sein de votre projet Google Cloud. Dans le cas contraire, l'API Cloud Life Sciences ne peut pas exécuter de pipeline sur les VM Compute Engine. Si vous supprimez le compte de service de votre projet, toutes les applications qui dépendent des identifiants associés sont susceptibles de connaître des défaillances. Si vous supprimez accidentellement le compte de service Compute Engine par défaut, vous pouvez essayer de le récupérer dans un délai de 30 jours. Pour en savoir plus, consultez la section Annuler la suppression d'un compte de service.
Impossible de s'authentifier auprès de l'API Cloud Life Sciences
Si vous exécutez un pipeline avec l'API Cloud Life Sciences en utilisant un compte de service pour vous authentifier (au lieu d'utiliser gcloud auth application-default login
comme identifiant), assurez-vous que le compte de service possède les rôles suivants :
roles/lifesciences.workflowsRunner
roles/iam.serviceAccountUser
Pour ajouter ces rôles à votre compte de service, procédez comme suit à l'aide de la console Google Cloud ou la Google Cloud CLI:
Console
- Assurez-vous d'avoir activé l'API Cloud Life Sciences.
- Sur la page IAM dans la console Google Cloud, recherchez votre compte de service.
- Dans la colonne Héritage qui correspond au compte de service, cliquez sur l'icône en forme de crayon. Le volet Modifier les autorisations s'affiche.
- Cliquez sur Ajouter un autre rôle, puis recherchez les rôles Exécuteur de workflows Life Sciences et Utilisateur du compte de service.
- Sélectionnez le rôle, puis cliquez sur Enregistrer. Les rôles
lifesciences.workflowsRunner
etiam.serviceAccountUser
sont alors ajoutés au compte de service.
gcloud
Pour ajouter les autorisations de compte de service, exécutez la commande gcloud projects add-iam-policy-binding
. Pour trouver les informations PROJECT_ID et PROJECT_NUMBER, consultez la section Identifier des projets.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@SERVICE_ACCOUNT_ID.iam.gserviceaccount.com \ --role=roles/lifesciences.workflowsRunner
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@SERVICE_ACCOUNT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Impossible de s'authentifier à l'aide des identifiants par défaut de l'application
Lorsque vous appelez l'API Cloud Life Sciences, vous pouvez être confronté à un message d'erreur indiquant que vos "Identifiants par défaut de l'application" ne sont pas disponibles.
Pour en savoir plus sur la configuration des identifiants par défaut des applications ou sur la transmission manuelle des identifiants à une application ou une commande, consultez la page Configurer l'authentification pour des applications de production serveur à serveur.
Codes d'erreur
L'API Cloud Life Sciences est susceptible de renvoyer les codes d'erreur suivants :
RESOURCE EXHAUSTED (8)
Code : 8
État : RESOURCE_EXHAUSTED
Catégorie : erreur utilisateur
Description : une ressource est épuisée. Cela peut indiquer que votre application a épuisé un quota pour l'API d'administration au niveau de votre projet.
Action recommandée : retentez l'opération.
FAILED_PRECONDITION (9)
Code : 9
État : FAILED_PRECONDITION
Catégorie : erreur utilisateur
Erreur détaillée : Execution failed: while running "[USER_COMMAND_LINE]": unexpected exit status [NUMBER] was not ignored
Description : l'opération a été refusée, car une action de l'utilisateur a renvoyé un état de sortie différent de zéro. Un extrait de la sortie d'erreur standard associée à l'action s'affiche, et vous pouvez utiliser ces informations pour diagnostiquer le problème. Pour importer les journaux complets depuis la VM Compute Engine, utilisez l'action ALWAYS_RUN
lors de la création de la requête de pipeline, comme illustré ci-dessous :
{ "commands": [ "-c", "gcloud storage cp /google/logs/output gs://CLOUD_STORAGE_BUCKET/output" --quiet ], "entrypoint": "bash", "flags": [ "ALWAYS_RUN" ], "imageUri": "gcr.io/cloud-genomics-pipelines/io" }
Action recommandée : n'effectuez aucune nouvelle tentative avant d'avoir résolu le problème.
ABORTED (10)
Code : 10
État : ABORTED
Catégorie : erreur système
Erreur détaillée : The assigned worker has failed to complete the operation
Description : l'opération a été annulée, car la VM Compute Engine exécutant le pipeline a connu une défaillance. Cela peut se produire, par exemple, lorsque la VM a été préemptée sans pouvoir signaler son état avant son extinction.
Action recommandée : retentez l'opération. Si l'erreur se reproduit régulièrement, cela peut être dû à un problème persistant, par exemple une utilisation excessive de certaines ressources, qui entraîne la défaillance de la VM Compute Engine. Inspectez les journaux Compute Engine dans Cloud Logging pour en savoir plus.
13
Code : 13
Erreur détaillée : Execution failed: generic::internal: action INDEX: waiting for container: container is still running, possibly due to low system resources
Description : le conteneur de l'action manque peut-être de mémoire.
Action recommandée : relancez l'opération du pipeline en utilisant un type de machine offrant plus de ressources système.
UNAVAILABLE (14)
Code : 14
État : UNAVAILABLE
Catégorie : erreur système
Erreur détaillée : Execution failed: worker was terminated
Description : la VM Compute Engine exécutant le pipeline a été préemptée.
Action recommandée : retentez l'opération.
Nouvelles tentatives après avoir rencontré des erreurs
Un pipeline peut échouer et renvoyer un code d'erreur. Des défaillances peuvent se produire en raison de problèmes sans rapport avec la tâche effectuée par le pipeline. Dans la plupart des cas, vous devez relancer l'opération de pipeline. Les pipelines sont particulièrement sujets aux échecs lorsque vous utilisez des VM préemptives, moins chères, mais davantage susceptibles d'être interrompues. L'API Cloud Life Sciences ne peut pas relancer automatiquement les opérations de pipeline, car tous les pipelines ne sont pas idempotents.
Comme indiqué dans la section relative aux codes d'erreur, il est généralement recommandé d'effectuer une nouvelle tentative lorsque vous rencontrez l'un des codes d'erreur suivants :
RESOURCE EXHAUSTED (8)
ABORTED (10)
UNAVAILABLE (14)
Activer Cloud Monitoring
Vous pouvez activer Cloud Monitoring sur vos pipelines pour surveiller l'état et l'utilisation des ressources des VM de nœud de calcul servant à exécuter le pipeline. Toutefois, activer la surveillance Monitoring peut entraîner des coûts supplémentaires. Pour activer Monitoring, spécifiez l'option enableStackdriverMonitoring
sur l'objet VirtualMachine
lorsque vous envoyez la requête de pipeline.
Le pipeline est à court d'espace disque
Si votre pipeline manque d'espace disque et ne peut pas extraire d'images Docker, ou s'il a besoin de davantage d'espace disque pour la journalisation ou la réalisation de ses tâches, vous pouvez choisir l'une des options suivantes :
- Augmentez la taille du disque de démarrage à l'aide de l'option
bootDiskSizeGb
dans l'objetVirtualMachine
lorsque vous envoyez la requête de pipeline. - Associez un disque distinct et ajoutez-le à l'objet
Mount
au sein de l'objetAction
lorsque vous envoyez la requête de pipeline.
Retards liés aux quotas
Si votre projet Google Cloud ne dispose plus de quota pour Compute Engine, l'API Cloud Life Sciences n'alloue pas de VM. Toute nouvelle tentative d'allocation est retardée pour donner aux pipelines existants le temps de se terminer. Si ce type de retard persiste, vous pouvez demander une augmentation du quota.
Arrêt des pipelines
Si vos pipelines s'arrêtent, et attribuent puis libèrent des VM de manière répétée, car celles-ci ne peuvent pas communiquer avec le service de l'API Cloud Life Sciences, cela peut être dû aux problèmes suivants :
- Le réseau
default
des VM a peut-être été supprimé. - Un autre réseau n'a pas été spécifié dans l'objet
Network
.
Pour résoudre ce problème, vous pouvez effectuer l'une des opérations suivantes :
- Spécifier un réseau dans l'objet
Network
- Recréer le réseau
default
en suivant la procédure décrite dans la section Créer un réseau en mode automatique et nommer ce nouveau réseaudefault
Annuler ou supprimer des VM
Plutôt que de supprimer des VM de travail indésirables, il est préférable d'annuler les opérations associées. Si vous supprimez la VM, le pipeline met du temps à échouer et, s'il est en cours de lancement, une nouvelle VM risque d'être attribuée.