Erreur de permission Cloud Scheduler (Code 7)
Problème
Les jobs Cloud Scheduler échouent silencieusement à déclencher les jobs Cloud Run. Le scheduler s'affiche comme ENABLED, des tentatives sont effectuées (lastAttemptTime se met à jour), mais les jobs Cloud Run ne démarrent jamais. Le seul indicateur est status.code: 7 qui signifie PERMISSION_DENIED.
Contexte / Conditions de déclenchement
- Les jobs Cloud Run s'exécutaient précédemment selon un calendrier mais se sont arrêtés
- Le tableau de bord affiche les jobs comme « FAILED » ou « DONE » avec des horodatages anciens
gcloud scheduler jobs describe <name>affiche :lastAttemptTime: '2026-02-08T14:00:03.316530Z' state: ENABLED status: code: 7- Aucune erreur évidente dans Cloud Logging pour le scheduler
Solution
-
Identifiez le compte de service du scheduler :
gcloud scheduler jobs describe <scheduler-name> \ --location=<region> \ --project=<project> \ --format="yaml(httpTarget.oauthToken.serviceAccountEmail)" -
Accordez le rôle run.invoker à ce compte de service :
gcloud projects add-iam-policy-binding <project-id> \ --member="serviceAccount:<service-account-email>" \ --role="roles/run.invoker" -
Testez en déclenchant manuellement le scheduler :
gcloud scheduler jobs run <scheduler-name> \ --location=<region> \ --project=<project> -
Vérifiez que le job Cloud Run a démarré :
gcloud run jobs executions list \ --region=<region> \ --project=<project> \ --limit=5
Vérification
Après avoir accordé les permissions et déclenché :
status.codene devrait plus être 7 à la prochaine tentative- Une nouvelle exécution de job Cloud Run devrait apparaître dans la liste des exécutions
- L'exécution devrait afficher le statut RUNNING
Exemple
# Vérifiez le statut du scheduler - notez code: 7
gcloud scheduler jobs describe profile-crawler-schedule \
--location=us-central1 \
--project=my-project
# Accordez la permission
gcloud projects add-iam-policy-binding my-project \
--member="serviceAccount:my-scheduler@my-project.iam.gserviceaccount.com" \
--role="roles/run.invoker"
# Testez
gcloud scheduler jobs run profile-crawler-schedule \
--location=us-central1 \
--project=my-project
Notes
- Le code de statut 7 est PERMISSION_DENIED de gRPC - non documenté de façon visible pour Cloud Scheduler
- Cela se produit couramment après :
- La création de nouveaux comptes de service
- La migration de projets
- Les mises à jour de politique IAM qui suppriment les permissions héritées
- L'utilisation d'un compte de service personnalisé au lieu du compte par défaut
- Le scheduler continue à tenter (et échouer) silencieusement - pas d'alertes par défaut
- Envisagez d'ajouter des alertes Cloud Monitoring pour les échecs du scheduler