Par défaut, chaque tâche s'exécute pendant 10 minutes maximum. Vous pouvez définir une durée plus courte ou plus longue dans la limite de 168 heures (7 jours). La prise en charge des délais avant expiration supérieurs à 24 heures est disponible en preview.
Vous pouvez définir le délai avant expiration d'une tâche comme décrit sur cette page. Il n'y a pas de délai explicite pour l'exécution d'un job : lorsque toutes les tâches sont terminées, l'exécution du job est terminée.
Les unités spécifient une durée. Vous pouvez spécifier la durée du délai avant expiration sous la forme d'une valeur entière en secondes, minutes ou heures. Par exemple, pour définir la durée du délai avant expiration sur 10 minutes et 5 secondes, spécifiez la valeur 605
secondes.
Si la répétition de tentatives est activée pour votre tâche, le paramètre de délai avant expiration s'applique à chaque tentative d'exécution de la tâche. Si la tentative d'exécution de l'opération ne se termine pas dans ce délai, elle sera arrêtée. Plus une tâche s'exécute longtemps, plus elle est susceptible de rencontrer des problèmes qui l'empêchent de s'exécuter, tels que des échecs de dépendances en aval, des erreurs de mémoire insuffisante ou des problèmes d'infrastructure. Nous vous recommandons d'activer les nouvelles tentatives pour toutes les tâches, en particulier pour celles comportant des tâches de longue durée.
Observer et gérer les événements de maintenance
Les jobs peuvent régulièrement subir des événements de maintenance. Lors d'un événement de maintenance, toutes les tâches en cours sont migrées de la machine actuelle vers une autre machine. Ce processus de migration conserve l'état complet de la tâche. Toutefois, le traitement est brièvement suspendu pendant le traitement de la tâche.
Les événements de maintenance sont transparents : vous n'avez pas besoin de modifier votre conteneur pour les gérer. Notez qu'à chaque fois qu'une tâche démarre et termine sa migration, Cloud Run affiche un message de journal.
Toutefois, si vous souhaitez surveiller ou gérer des événements de maintenance d'une manière spécifique, vous pouvez intercepter le signal SIGTSTP
, qui est envoyé 10 secondes avant la migration d'une tâche. Après la migration, la tâche reçoit un signal SIGCONT
immédiatement après son redémarrage.
L'exemple Go suivant est une fonction qui détecte ces signaux et affiche une entrée de journal :
func testSignals() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT) go func() { for { sig := <-sigs log.Printf("Got Signal: %v", sig) } }() }
Rôles requis
Pour obtenir les autorisations nécessaires pour configurer des jobs Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Développeur Cloud Run (
roles/run.developer
) sur le job Cloud Run -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur l'identité du service
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre job Cloud Run communique avec des API Google Cloud, telles que des bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les sections Autorisations de déploiement et Gérer les accès.
Définir le délai avant expiration d'une tâche
Pour spécifier le délai avant expiration d'une tâche Cloud Run, procédez comme suit :
Console
Dans la console Google Cloud, accédez à la page des jobs Cloud Run :
Cliquez sur Déployer un conteneur, puis sélectionnez Job pour remplir la page initiale des paramètres du job. Si vous configurez un job existant, cliquez sur celui-ci, puis sur Modifier.
Cliquez sur Conteneur, variables et secrets, connexions, sécurité pour développer la page des propriétés du job.
Cliquez sur l'onglet Général.
- Dans le champ Délai avant expiration de la tâche, spécifiez la durée maximale des tâches du job en cours, puis sélectionnez une unité de temps. Vous ne pouvez spécifier la durée du délai avant expiration qu'en tant que valeur entière en secondes, minutes ou heures. Par exemple, pour définir une durée de 10 minutes et 5 secondes, dans le champ Expiration de la tâche, spécifiez
605
, puis sélectionnez seconde comme unité de temps.
- Dans le champ Délai avant expiration de la tâche, spécifiez la durée maximale des tâches du job en cours, puis sélectionnez une unité de temps. Vous ne pouvez spécifier la durée du délai avant expiration qu'en tant que valeur entière en secondes, minutes ou heures. Par exemple, pour définir une durée de 10 minutes et 5 secondes, dans le champ Expiration de la tâche, spécifiez
Cliquez sur Créer ou Mettre à jour.
gcloud
Pour un job que vous êtes en train de créer :
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
Remplacer
- JOB_NAME par le nom de votre job.
- IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/job:latest
. - TIMEOUT par la durée maximale des tâches du job, en spécifiant la durée et les unités. Par exemple,
10m5s
correspond à dix minutes et cinq secondes.
Pour une tâche en cours de mise à jour :
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :
gcloud run jobs describe JOB_NAME --format export > job.yaml
Mettez à jour l'attribut
timeoutSeconds:
:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
Remplacez :
- JOB_NAME par le nom de votre tâche.
- IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/job:latest
. - TIMEOUT par la durée maximale des tâches du job, en spécifiant la durée et les unités. Vous ne pouvez spécifier la durée qu'en tant que valeur entière en secondes, minutes ou heures. Par exemple, pour définir une durée de 10 minutes et 5 secondes, spécifiez
605s
.
Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.
Mettez à jour la configuration de job existante :
gcloud run jobs replace job.yaml
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Pour spécifier le délai avant expiration d'un job Cloud Run, utilisez la ressource google_cloud_run_v2_job
et appliquez l'extrait suivant à votre fichier main.tf
:
Afficher les paramètres du délai avant expiration de la tâche
Pour afficher les paramètres actuels d'expiration des opérations pour votre tâche Cloud Run, procédez comme suit :
Console
Dans la console Google Cloud, accédez à la page des jobs Cloud Run :
Cliquez sur le job qui vous intéresse pour ouvrir la page Informations sur le job.
Cliquez sur l'onglet Configuration.
Recherchez le paramètre de délai avant expiration de la tâche dans les détails de configuration.
gcloud
Exécutez la commande suivante :
gcloud run jobs describe JOB_NAME
Recherchez le paramètre de délai avant expiration de la tâche dans la configuration renvoyée.