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 oppure quando un job o un'attività entra in uno stato specifico. Per ulteriori informazioni, consulta Monitorare i job tramite le notifiche.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la Guida introduttiva all'utilizzo di Batch e abilita questa funzionalità completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare ed eseguire un job che invia notifiche, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Editor job batch (
roles/batch.jobsEditor
) sul progetto. -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito. -
Editor Pub/Sub (
roles/pubsub.editor
) sull'argomento o sul progetto Pub/Sub.
Per saperne di più sulla concessione dei ruoli, vedi Gestire l'accesso.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
-
Editor job batch (
-
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 Publisher Pub/Sub (
roles/pubsub.publisher
) per il tuo argomento Pub/Sub.Per impostazione predefinita, l'account di servizio del job è l'account di servizio Compute Engine predefinito.
- Abilita le notifiche sullo stato Pub/Sub per il tuo job.
- Facoltativamente, configura Pub/Sub per il flusso delle notifiche in BigQuery.
Crea ed esegui un job che invii notifiche
Puoi creare un job batch che invia notifiche Pub/Sub procedendo nel seguente modo:
Utilizza l'interfaccia a riga di comando 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 argomento Pub/Sub dell'argomento creato quando hai abilitato le notifiche Pub/Sub.ATTRIBUTES
: gli attributi specificati variano a seconda che tu voglia ricevere notifiche su un job o su tutte le attività nel job:Per le notifiche relative a tutte le modifiche dello stato dei job, specifica quanto segue:
"type": "JOB_STATE_CHANGED"
Per le notifiche relative a una modifica specifica dello stato di un 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 le 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 va a buon fine. Per farlo, aggiungi quanto segue al file JSON di configurazione del job:
"notifications": [
{
"pubsubTopic": "projects/example-projecet/topics/example-topic",
"message": {
"type": "JOB_STATE_CHANGED"
}
},
{
"pubsubTopic": "projects/example-project/topics/example-topic",
"message": {
"type": "TASK_STATE_CHANGED",
"newTaskState": "FAILED"
}
}
]
Passaggi successivi
- In caso di problemi durante la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizza job e attività
- Scopri di più sulle opzioni per la creazione di job.