Ce document explique comment créer un job par lot qui envoie Notifications Pub/Sub Vous pouvez utiliser Pub/Sub pour recevoir des notifications lorsqu'une tâche ou l'état d'une tâche ou lorsqu'une tâche ou une tâche entre dans un état spécifique. Pour plus d'informations, consultez la section Surveiller les tâches à l'aide des notifications.
Avant de commencer
- Si vous n'avez jamais utilisé Batch auparavant, consultez Premiers pas avec Batch et activez Batch en suivant la les conditions préalables pour les projets et les utilisateurs.
- Créez ou identifiez un sujet Pub/Sub pour les notifications par lots.
- Configurez un abonnement pour recevoir et utiliser les notifications.
Rôles requis
-
Pour obtenir les autorisations dont vous avez besoin pour créer et exécuter un job qui envoie des notifications, demandez à votre administrateur de vous accorder le rôles IAM suivants:
-
Éditeur de jobs par lot (
roles/batch.jobsEditor
) sur le projet. -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service du job, qui est par défaut le compte de service Compute Engine par défaut. -
Éditeur Pub/Sub (
roles/pubsub.editor
) sur le sujet ou le projet Pub/Sub.
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de jobs par lot (
-
À moins que vous n'utilisiez la configuration par défaut le compte de service de la tâche ; s'assure qu'il dispose des autorisations nécessaires.
Pour s'assurer que le compte de service du job dispose des autorisations les autorisations requises pour publier des notifications Pub/Sub ; demandez à votre administrateur d'accorder au compte de service du job Rôle IAM Éditeur Pub/Sub (
roles/pubsub.publisher
) sur votre sujet Pub/Sub. - Si vous souhaitez qu'un job publie des notifications dans un sujet Pub/Sub qui
se trouve dans un projet différent de celui du poste,
Agent de service Batch
du projet associé au job doit être autorisé à publier dans ce sujet.
Pour vous assurer que l'agent de service Batch du projet du job dispose des autorisations les autorisations permettant de publier des notifications Pub/Sub dans un sujet Pub/Sub dans un autre projet ; demandez à votre administrateur d'accorder à l'agent de service Batch pour le projet du job le Rôle IAM Éditeur Pub/Sub (
roles/pubsub.publisher
) sur le sujet Pub/Sub.
Créer et exécuter un job qui envoie des notifications
Vous pouvez créer un job par lot qui envoie des notifications Pub/Sub en procédant comme suit:
Utiliser la Google Cloud CLI ou l'API REST pour
créer une tâche qui
qui inclut le champ notifications
et un ou plusieurs
jobNotification
objets
dans le corps principal du fichier JSON:
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet que qui contient le sujet Pub/Sub.TOPIC_ID
: ID du sujet Pub/Sub que vous avez créées lorsque vous les notifications Pub/Sub activées.ATTRIBUTES
: spécifiez un ou plusieurs des éléments suivants qui vous permettent de recevoir des notifications sur l'état travail ou toutes ses tâches.Pour recevoir des notifications concernant tous les changements d'état des tâches, spécifiez les éléments suivants:
"type": "JOB_STATE_CHANGED"
Pour les notifications concernant un changement d'état spécifique d'une tâche, spécifiez les éléments suivants:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Remplacez
JOB_STATE
par l'une des tâches suivantes indique:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Pour en savoir plus sur les états des tâches, consultez la section Cycle de vie des tâches.
Pour les notifications concernant tous les changements d'état des tâches, spécifiez les éléments suivants:
"type": "TASK_STATE_CHANGED"
Pour les notifications concernant des changements d'état spécifiques d'une tâche, spécifiez les éléments suivants:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Remplacez
TASK_STATE
par l'un des éléments suivants : états des tâches:PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
Pour en savoir plus sur les états des tâches, consultez Cycle de vie des tâches.
Par exemple, supposons que vous souhaitiez recevoir des notifications sur l'état de tous les jobs les modifications et chaque fois qu'une tâche échoue. Pour ce faire, vous pouvez obtenir un fichier JSON de configuration Terraform semblable à celui-ci:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3,
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
},
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "JOB_STATE_CHANGED"
}
},
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "TASK_STATE_CHANGED",
"newTaskState": "FAILED"
}
}
]
}
Une fois la tâche démarrée, vous pouvez utiliser ses notifications. Par exemple, si le sujet Pub/Sub de votre job dispose d'un abonnement qui diffuse les notifications vers BigQuery, vous pouvez analyser les notifications Pub/Sub dans BigQuery ;
Étape suivante
- Découvrez comment Surveiller l'état des tâches à l'aide des notifications Pub/Sub et de BigQuery
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'un job, consultez la section Dépannage.
- Afficher les missions et les tâches
- En savoir plus sur les options de création de tâches