Crea ed esegui un job che invia notifiche di stato Pub/Sub

Questo documento spiega come creare un job batch che invia notifiche Pub/Sub. Puoi utilizzare Pub/Sub per ricevere notifiche quando lo stato di un job o di un'attività cambia o quando un job o un'attività entrano in uno stato specifico. Per ulteriori informazioni, consulta Monitorare i job utilizzando le notifiche.

Prima di iniziare

Ruoli obbligatori

  • Per ottenere le autorizzazioni necessarie per creare ed eseguire un job che invia notifiche, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  • A meno che non utilizzi la configurazione predefinita per l'account di servizio del job, assicurati che disponga delle autorizzazioni necessarie.

    Per assicurarti che l'account di servizio del job disponga delle autorizzazioni necessarie per pubblicare notifiche Pub/Sub, chiedi all'amministratore di concedere all'account di servizio del job il ruolo IAM Pub/Sub Publisher (roles/pubsub.publisher) per l'argomento Pub/Sub.

  • Se vuoi che un job pubblichi notifiche in un argomento Pub/Sub che si trova in un progetto diverso dal job, l'agente di servizio batch per il progetto del job deve disporre dell'autorizzazione per pubblicare in quell'argomento.

    Per assicurarti che l'agente di servizio batch per il progetto del job disponga delle autorizzazioni necessarie per pubblicare notifiche Pub/Sub in un argomento Pub/Sub di un altro progetto, chiedi all'amministratore di concedere all'agente di servizio batch per il progetto del job il ruolo IAM Pub/Sub Publisher (roles/pubsub.publisher) nell'argomento Pub/Sub.

Crea ed esegui un job che invia notifiche

Puoi creare un job batch che invia notifiche Pub/Sub seguendo questi passaggi:

Utilizza Google Cloud CLI o l'API REST per creare un job che includa il campo notifications e uno o più oggetti jobNotification nel corpo principale del file JSON:

  "notifications": [
    {
      "pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
      "message": {
        ATTRIBUTES
      }
    }
  ]

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto che contiene l'argomento Pub/Sub.
  • TOPIC_ID: l'ID dell'argomento Pub/Sub che hai creato quando hai abilitato le notifiche Pub/Sub.
  • ATTRIBUTES: specifica uno o più dei seguenti attributi, che consentono di ricevere notifiche sullo stato del job o di tutte le sue attività.

    • Per ricevere notifiche relative a tutte le modifiche allo stato del job, specifica quanto segue:

      "type": "JOB_STATE_CHANGED"
      
    • Per le notifiche relative a una specifica modifica dello stato del job, specifica quanto segue:

      "type": "JOB_STATE_CHANGED",
      "newJobState": "JOB_STATE"
      

      Sostituisci JOB_STATE con uno dei seguenti stati del job:

      • QUEUED
      • SCHEDULED
      • RUNNING
      • SUCCEEDED
      • FAILED

      Per ulteriori informazioni sugli stati dei job, consulta Ciclo di vita dei job.

    • Per le notifiche relative a tutte le modifiche dello stato delle attività, specifica quanto segue:

      "type": "TASK_STATE_CHANGED"
      
    • Per notifiche relative a modifiche specifiche dello stato di un'attività, specifica quanto segue:

      "type": "TASK_STATE_CHANGED",
      "newTaskState": "TASK_STATE"
      

      Sostituisci TASK_STATE con uno dei seguenti stati dell'attività:

      • PENDING
      • ASSIGNED
      • RUNNING
      • SUCCEEDED
      • FAILED

      Per ulteriori informazioni sugli stati delle attività, consulta Ciclo di vita dei job.

Ad esempio, supponi di voler ricevere notifiche su tutte le modifiche dello stato del job e ogni volta che un'attività non riesce. Per farlo, puoi avere un file di configurazione JSON simile al seguente:

{
  "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"
      }
    }
  ]
}

Dopo l'avvio del job, puoi utilizzare le relative notifiche. Ad esempio, se l'argomento Pub/Sub per il tuo job ha una sottoscrizione che trasmette i flussi di notifiche a BigQuery, puoi analizzare le notifiche Pub/Sub in BigQuery.

Passaggi successivi