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à modifiche 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
- Se non hai mai utilizzato Batch, rivedi Inizia a utilizzare Batch e abilita Batch, completando prerequisiti per progetti e utenti.
- Crea o identifica un argomento Pub/Sub per le notifiche di Batch.
- Configura un abbonamento per ricevere e utilizzare le notifiche.
Ruoli obbligatori
-
Per ottenere le autorizzazioni necessarie per creare ed eseguire un job che invia notifiche, chiedi all'amministratore di concederti seguenti ruoli IAM:
-
Batch Job Editor (
roles/batch.jobsEditor
) nel progetto. -
Utente account di servizio (
roles/iam.serviceAccountUser
) sull'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito. -
Editor Pub/Sub (
roles/pubsub.editor
) nell'argomento o nel progetto Pub/Sub.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
-
Batch Job Editor (
-
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 Publisher Pub/Sub (
roles/pubsub.publisher
) per il tuo argomento Pub/Sub. - Se vuoi che un job pubblichi notifiche in un argomento Pub/Sub che
si trova in un progetto diverso dal job,
Agente di servizio batch
per il progetto del job
deve essere concessa l'autorizzazione per pubblicare in quell'argomento.
Per garantire che l'agente di servizio Batch per il progetto del job abbia i necessari le autorizzazioni 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 la Ruolo IAM Pub/Sub Publisher (
roles/pubsub.publisher
) nell'argomento Pub/Sub.
Crea ed esegui un job che invia notifiche
Per creare un job Batch che invii notifiche Pub/Sub, segui questi passaggi:
Utilizza Google Cloud CLI o l'API REST per
creare un job che
include il campo notifications
e uno o più
jobNotification
oggetti
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 che hai creato quando hai attivato le notifiche Pub/Sub.ATTRIBUTES
: specifica uno o più dei seguenti criteri ciascuno dei quali consente di ricevere notifiche sullo stato lavoro o tutte le sue attività.Per ricevere notifiche su 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 job stati:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Per ulteriori informazioni sugli stati dei job, consulta Ciclo di vita del 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 del job.
Ad esempio, supponiamo che tu voglia ricevere notifiche su tutti gli stati dei job modifiche e ogni volta che un'attività non riesce. A tale scopo, 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"
}
}
]
}
Una volta avviato il job, puoi utilizzare le relative notifiche. Ad esempio, se l'argomento Pub/Sub per il tuo job ha una sottoscrizione che invia notifiche in streaming a BigQuery, analizzare le notifiche Pub/Sub in BigQuery.
Passaggi successivi
- Scopri di più su come monitorare lo stato del job utilizzando le notifiche Pub/Sub e BigQuery.
- Se hai problemi durante la creazione o l'esecuzione di un job, consulta la sezione Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.