Créer et exécuter un job qui envoie des notifications d'état Pub/Sub

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

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:

    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.

  • À 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