Cette page explique comment exécuter des tâches Cloud Run. L'exécution d'un job crée une exécution de job dans laquelle toutes les tâches doivent s'exécuter pour que l'exécution du job aboutisse. Les exécutions de tâches écrivent des journaux dans Cloud Logging et envoient des données de surveillance à Cloud Monitoring.
En plus de ces fonctionnalités de journalisation, vous pouvez également consulter les détails des 1 000 exécutions les plus récentes d'un job à l'aide du volet des détails d'exécution, ainsi que toutes les exécutions ayant eu lieu au cours des sept derniers jours. Les détails des exécutions plus anciennes sont supprimés et ne sont plus visibles dans le volet des détails d'exécution. Toutefois, les journaux et les données de surveillance des exécutions plus anciennes restent disponibles dans Cloud Logging et Cloud Monitoring, où ils sont soumis aux règles de conservation applicables pour ces produits.
Qu'est-ce que l'exécution d'un job ?
Exécuter un job Cloud Run signifie instancier et exécuter une charge de travail configurée jusqu'à la fin, divisée en une ou plusieurs tâches parallèles ou séquentielles, sans écouter ni diffuser de requêtes HTTP.
Les entités principales d'un job sont les suivantes :
Job : configuration statique et persistante. Il définit l'image de conteneur, les allocations de ressources (CPU, mémoire, GPU), les variables d'environnement et les paramètres d'exécution (nombre total de tâches, parallélisme, délais d'attente et tentatives).
Exécution : événement de cycle de vie temporel créé lorsque vous déclenchez un job. Une "exécution" représente l'objet de suivi global pour une seule exécution du job.
Tâche : instance unique en cours d'exécution du conteneur configuré. Une exécution est composée d'une ou plusieurs tâches (
taskCount).
Il existe deux façons d'exécuter un job :
En tant que tâche régulière.
Lorsque vous exécutez un job en tant que job régulier (par défaut), l'exécution démarre dès que possible.
En tant que job différé.
Lorsque vous exécutez une tâche en tant que tâche différée, vous acceptez de différer les tâches non urgentes pendant une durée maximale de 12 heures, en échange d'un meilleur prix.
Bien que chaque job soit régulier ou différé, vous pouvez remplacer ces paramètres pour une seule exécution de job, de sorte qu'un job régulier s'exécute en tant que job différé, ou qu'un job différé s'exécute en tant que job régulier. Pour en savoir plus, consultez Retarder l'exécution d'un job.
Le tableau suivant fournit une vue plus précise des scénarios d'exécution possibles pour une instance de job donnée :
| Méthode d'exécution | Commande / Déclencheur | Resource Allocation Timing | Niveau de coût | Délai / Délai avant expiration max. | Cas d'utilisation typique |
|---|---|---|---|---|---|
| Standard (à la demande) | gcloud run jobs execute |
Commence immédiatement / dès que possible | Tarifs standards pour les tâches | Démarrage immédiat ; durée d'exécution maximale de sept jours | Traitement des données ad hoc, déclencheurs manuels, pipelines basés sur des événements |
| Créer/Mettre à jour et exécuter | gcloud run jobs create/update --execute-now |
Démarre immédiatement après sa création | Tarifs standards pour les tâches | Démarrage immédiat ; durée d'exécution maximale de sept jours | Déploiements CI/CD, migrations de schémas, préchauffages post-déploiement |
| Exécution différée | gcloud beta run jobs execute --delay-execution |
Démarrages dans une fenêtre optimisée par le système | Tarif réduit | Délai maximal de 12 heures avant l'annulation automatique, délai maximal de 12 heures | Jobs par lot non urgents, analyses de nuit, inférence d'IA par lot |
| Exécution avec des remplacements | gcloud run jobs execute --args=... --tasks=... |
Commence immédiatement / dès que possible | Tarifs standards pour les tâches | Démarrage immédiat ; délai avant expiration remplacé | Remplissages spécifiques aux partitions, taille de lot dynamique, exécutions de débogage |
Rôles requis
Pour obtenir les autorisations nécessaires pour effectuer les opérations décrites sur cette page, demandez à votre administrateur de vous accorder l'un des rôles IAM suivants sur votre job Cloud Run :
- Pour exécuter des jobs à l'aide de Google Cloud CLI : Demandeur Cloud Run (
roles/run.invoker) sur le job Cloud Run - Pour exécuter des jobs à l'aide de la console Google Cloud , remplacer des configurations de jobs ou annuler des exécutions de jobs : Développeur Cloud Run (
roles/run.developer) sur le job Cloud Run
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 APIGoogle 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 pages Autorisations de déploiement et Gérer les accès.
Exécuter des jobs
Vous pouvez exécuter des jobs à l'aide de la console Google Cloud , de gcloud CLI, des bibliothèques clientes ou de l'API REST.
Console
Pour exécuter un job, procédez comme suit :
Dans la console Google Cloud , accédez à la page Jobs de Cloud Run :
Recherchez le job qui vous intéresse.
Cliquez sur la tâche pour afficher la page Informations sur la tâche.
Cliquez sur Exécuter.
gcloud
Pour exécuter une tâche existante, exécutez la commande suivante :
gcloud run jobs execute JOB
Si vous souhaitez que la commande attende la fin de l'exécution, exécutez la commande suivante :
gcloud run jobs execute JOB --wait --region=REGION
Pour suivre les journaux de l'exécution immédiatement après son lancement, exécutez la commande suivante :
gcloud beta run jobs execute JOB --tail --region=REGION
Remplacez les éléments suivants :
JOBpar le nom de votre job Cloud RunREGION: région dans laquelle se trouve la ressource. Exemple :europe-west1. Vous pouvez également définir la propriétérun/region.
Bibliothèques clientes
Pour exécuter un job existant à partir du code, procédez comme suit :
API REST
Pour exécuter un job existant, envoyez une requête HTTP POST à la méthode API jobs.run.
Exemple, à l'aide de curl :
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB:run
Remplacez les éléments suivants :
ACCESS_TOKEN: jeton d'accès valide pour un compte disposant des autorisations IAM pour exécuter un job. Par exemple, si vous êtes connecté à gcloud, vous pouvez récupérer un jeton d'accès à l'aide degcloud auth print-access-token. À partir d'une instance de conteneur Cloud Run, vous pouvez récupérer un jeton d'accès via le serveur de métadonnées d'instance de conteneur.PROJECT_ID: ID du projet Google Cloud .REGION: Google Cloud région du job.JOBpar le nom de votre job Cloud Run
Exécuter les jobs immédiatement
Console
Pour exécuter un job immédiatement, procédez comme suit :
Dans la console Google Cloud , accédez à la page Cloud Run :
Sélectionnez Jobs dans le menu de navigation Cloud Run :
Si vous créez un job, cliquez sur Déployer un conteneur pour remplir la page des paramètres initiaux du job.
Si vous configurez un job existant, sélectionnez-le, puis cliquez sur Afficher et modifier la configuration du job.
En bas de la page, cochez la case Exécuter le job immédiatement avant de créer ou de modifier le job.
gcloud
Vous pouvez spécifier l'indicateur --execute-now lorsque vous créez ou mettez à jour un job.
Pour créer un job, exécutez la commande suivante :
gcloud run jobs create JOB \ --image IMAGE_URL \ --execute-now \ --region=REGION
Pour mettre à jour un job, exécutez la commande suivante :
gcloud run jobs update JOB --execute-now --region=REGION
Remplacez les éléments suivants :
JOBpar le nom de votre job Cloud RunIMAGE_URL: référence à l'image de conteneur (par exemple,us-docker.pkg.dev/cloudrun/container/job:latest).REGION: région dans laquelle se trouve la ressource. Exemple :europe-west1.
YAML
Vous pouvez stocker votre spécification de tâche dans un fichier YAML, puis la déployer à l'aide de gcloud CLI.
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 --format export > job.yaml
Configurez l'attribut
startExecutionTokencomme indiqué ci-dessous :apiVersion: run.googleapis.com/v2 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE_URL startExecutionToken: START_EXECUTION_SUFFIX
Remplacez les éléments suivants :
JOBpar le nom de votre job Cloud RunIMAGE_URL: référence à l'image de conteneur (par exemple,us-docker.pkg.dev/cloudrun/container/job:latest).START_EXECUTION_SUFFIX: chaîne unique utilisée comme suffixe pour créer une exécution. Le job sera prêt lorsque l'exécution aura démarré correctement. La somme de la longueur du nom du job et du jeton doit être inférieure à 63 caractères.
Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.
Créez ou mettez à jour le job à l'aide de la commande suivante :
gcloud run jobs replace job.yaml
La commande
gcloud run jobs replaceutilise par défaut le fichierjob.yamls'il est présent.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Ajoutez les éléments suivants à une ressourcegoogle_cloud_run_v2_job dans votre configuration Terraform :resource "google_cloud_run_v2_job" "default" {
name = "cloudrun-job"
location = "REGION"
deletion_protection = false
start_execution_token = "START_EXECUTION_SUFFIX"
template {
template {
containers {
image = "us-docker.pkg.dev/cloudrun/container/job"
}
}
}
}
Remplacez les éléments suivants :
REGION: région Google Cloud . Par exemple, europe-west1.START_EXECUTION_SUFFIX: chaîne unique utilisée comme suffixe pour créer une exécution. Le job sera prêt une fois l'exécution démarrée. La somme de la longueur du nom du job et du jeton doit être inférieure à 63 caractères.
Bibliothèques clientes
Pour exécuter immédiatement un job à partir du code à l'aide des bibliothèques clientes Cloud :
API REST
Pour exécuter des jobs immédiatement après leur création, envoyez une requête HTTP POST au point de terminaison jobs de l'API Cloud Run Admin.
Exemple, à l'aide de curl :
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '{ "template": { "template": { "containers": { "image": "IMAGE_URL" } } }, "startExecutionToken": "START_EXECUTION_SUFFIX" }' \ "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs?jobId=JOB"
Remplacez les éléments suivants :
ACCESS_TOKEN: jeton d'accès valide pour un compte disposant des autorisations IAM pour créer des jobs. Par exemple, si vous êtes connecté à gcloud, vous pouvez récupérer un jeton d'accès à l'aide degcloud auth print-access-token. À partir d'une instance de conteneur Cloud Run, vous pouvez récupérer un jeton d'accès via le serveur de métadonnées d'instance de conteneur.IMAGE_URL: référence à l'image de conteneur (par exemple,us-docker.pkg.dev/cloudrun/container/job:latest).START_EXECUTION_SUFFIX: chaîne unique utilisée comme suffixe pour créer une exécution. Le job sera prêt une fois l'exécution démarrée. La somme de la longueur du nom du job et du jeton doit être inférieure à 63 caractères.PROJECT_ID: ID du projet Google Cloud .REGION: Google Cloud région du job.JOBpar le nom de votre job Cloud Run
Retarder l'exécution
Pour désactiver l'exécution immédiate ou convertir votre job régulier en job différé, consultez Différer l'exécution d'un job.
Remplacer la configuration de tâche pour une exécution spécifique
Vous pouvez remplacer les arguments, les variables d'environnement, le nombre de tâches et le délai avant expiration de la tâche configurés pour un job lorsque vous exécutez un job en définissant ces paramètres lorsque vous démarrez une nouvelle exécution du job. Les paramètres que vous spécifiez n'affectent que cette exécution, et non les suivants, car la définition de la tâche sous-jacente reste inchangée.
Voici quelques cas d'utilisation courants :
- Vous exécutez la tâche de manière automatisée à partir de votre code et vous souhaitez remplacer des arguments ou des variables d'environnement, par exemple pour indiquer à la tâche où se trouvent les données d'entrée pour cette exécution.
- Vous avez une tâche dans laquelle chaque tâche est destinée à traiter une seule donnée de données d'entrée. Vous souhaitez ignorer le nombre de tâches en fonction du nombre d'entrées à traiter.
- La durée d'exécution de votre job varie selon les exécutions. Vous souhaitez ignorer le délai avant expiration de la tâche en fonction de sa durée d'exécution.
Vous pouvez remplacer la configuration du job pour une exécution à l'aide de la console Google Cloud , de gcloud CLI, des bibliothèques clientes ou de l'API REST :
Console
Dans la console Google Cloud , accédez à la page des jobs Cloud Run :
Cliquez sur le job pour ouvrir son volet Détails.
Cliquez sur la flèche de développement devant le bouton Modifier, puis sur Exécuter avec des remplacements pour afficher le formulaire Exécuter une tâche avec remplacements.
Configurez les arguments, les variables d'environnement, le nombre de tâches et la configuration du délai d'expiration de la tâche pour cette exécution, puis cliquez sur Exécuter.
gcloud
Utilisez la commande :
gcloud run jobs execute JOB \ --args ARGS \ --update-env-vars KEY=VALUE,KEY_N=VALUE_N \ --tasks TASKS \ --task-timeout TIMEOUT
Remplacez les éléments suivants :
JOBpar le nom de votre job Cloud RunARGS: arguments de job.- Paires
KEYetVALUE: les variables d'environnement. TASKS: nombre de tâches.TIMEOUT: délai avant expiration du job
Bibliothèques clientes
Pour exécuter un job existant à partir du code, remplacez la configuration du job :
API REST
Pour remplacer la configuration d'un job existant, envoyez une requête HTTP POST au point de terminaison jobs de l'API Cloud Run Admin.
Exemple, à l'aide de curl :
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '{"overrides": {"containerOverrides": [{"args": ["ARGS"], "env": [{"name": "KEY", "value": "VALUE"}]}], "taskCount": TASKS, "timeout": "TIMEOUT" }}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB:run
Remplacez les éléments suivants :
ACCESS_TOKEN: jeton d'accès valide pour un compte disposant des autorisations IAM pour exécuter des remplacements de job. Par exemple, si vous êtes connecté à gcloud, vous pouvez récupérer un jeton d'accès à l'aide degcloud auth print-access-token. À partir d'une instance de conteneur Cloud Run, vous pouvez récupérer un jeton d'accès via le serveur de métadonnées d'instance de conteneur.ARGS: arguments du job.- Paires
KEYetVALUE: variables d'environnement. TASKS: nombre de tâches.TIMEOUT: délai avant expiration du job.PROJECT_ID: ID du projet Google Cloud .REGION: Google Cloud région du job.JOBpar le nom de votre job Cloud Run
Annuler l'exécution du job
Pour arrêter une exécution de job Cloud Run en cours d'exécution, utilisez la fonctionnalité d'annulation. L'annulation d'une exécution de job arrête l'exécution du job en cours. L'état des exécutions annulées est cancelled. Vous pourrez toujours consulter l'exécution, y compris ses données de configuration, ses journaux et ses données de surveillance.
L'annulation d'un job n'annule pas les frais liés à l'utilisation des jobs Cloud Run pendant la durée d'exécution du job.
Pour annuler une exécution, utilisez la console Google Cloud , gcloud CLI, les bibliothèques clientes ou l'API REST :
Console
Dans la console Google Cloud , accédez à la page des jobs Cloud Run :
Cliquez sur le job pour ouvrir son volet Détails.
Sélectionnez l'exécution du job que vous souhaitez annuler.
Dans le menu Actions, cliquez sur l'icône à trois points, puis sur Annuler.
gcloud
Utilisez la commande :
gcloud run jobs executions cancel EXECUTION_NAME
Remplacez EXECUTION_NAME par le nom de l'exécution.
Cette commande demande une confirmation. Répondez à l'invite en saisissant y pour confirmer.
Bibliothèques clientes
Pour annuler l'exécution d'un job à partir du code, procédez comme suit:
API REST
Pour annuler l'exécution d'un job, envoyez une requête HTTP POST au point de terminaison jobs de l'API Cloud Run Admin.
Exemple, à l'aide de curl :
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB/executions/EXECUTION_NAME:cancel
Remplacez les éléments suivants :
ACCESS_TOKEN: jeton d'accès valide pour un compte disposant des autorisations IAM pour annuler des exécutions de job. Par exemple, si vous êtes connecté à gcloud, vous pouvez récupérer un jeton d'accès à l'aide degcloud auth print-access-token. À partir d'une instance de conteneur Cloud Run, vous pouvez récupérer un jeton d'accès via le serveur de métadonnées d'instance de conteneur.PROJECT_ID: ID du projet Google Cloud .REGION: Google Cloud région du job.JOBpar le nom de votre job Cloud RunEXECUTION_NAME: nom de l'exécution du job.
Supprimer une exécution de job
Vous pouvez supprimer une exécution de job, même si elle est en cours. Si vous supprimez une exécution, l'opération empêche la poursuite de l'exécution. Pour en savoir plus, consultez la section Supprimer une exécution de job.
Étapes suivantes
Après avoir exécuté une tâche, vous pouvez procéder comme suit :
- Afficher les journaux de tâches
- Surveiller les performances des tâches
- Gérer l'exécution des tâches
- Gérer les jobs