En este documento, se explica cómo crear un trabajo por lotes que envíe notificaciones de Pub/Sub. Puedes usar Pub/Sub para recibir notificaciones cuando cambie el estado de un trabajo o una tarea, o cuando un trabajo o una tarea entren en un estado específico. Para obtener más información, consulta Supervisa trabajos mediante notificaciones.
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza a usar Batch y completa los requisitos previos para proyectos y usuarios a fin de habilitar Batch.
-
A fin de obtener los permisos que necesitas para crear y ejecutar un trabajo que envía notificaciones, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto. -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que es la cuenta de servicio predeterminada de Compute Engine de forma predeterminada. -
Editor de Pub/Sub (
roles/pubsub.editor
) en el tema o proyecto de Pub/Sub.
Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios mediante funciones personalizadas, o bien otras funciones predefinidas.
-
Editor de trabajos por lotes (
-
A fin de asegurarte de que la cuenta de servicio del trabajo tenga los permisos necesarios para publicar notificaciones de Pub/Sub, pídele a tu administrador que otorgue a la cuenta de servicio del trabajo el rol de IAM de Publicador de Pub/Sub (
roles/pubsub.publisher
) en tu tema de Pub/Sub.Según la configuración predeterminada, la cuenta de servicio del trabajo es la cuenta de servicio predeterminada de Compute Engine.
- Habilita las notificaciones de estado de Pub/Sub para tu trabajo.
- De forma opcional, configura Pub/Sub para transmitir notificaciones a BigQuery.
Crea y ejecuta un trabajo que envíe notificaciones
Puedes crear un trabajo por lotes que envíe notificaciones de Pub/Sub de la siguiente manera:
Usa Google Cloud CLI o la API de REST para crear un trabajo que incluya el campo notifications
y uno o más objetos jobNotification
en el cuerpo principal del archivo JSON:
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
},
]
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el tema de Pub/Sub.TOPIC_ID
: Es el ID del tema de Pub/Sub del tema que creaste cuando habilitaste las notificaciones de Pub/Sub.ATTRIBUTES
: Los atributos que especificas dependen de si deseas recibir notificaciones sobre un trabajo o todas las tareas del trabajo:Para las notificaciones sobre todos los cambios de estado de trabajos, especifica lo siguiente:
"type": "JOB_STATE_CHANGED"
Para las notificaciones sobre un cambio de estado de trabajo específico, especifica lo siguiente:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Reemplaza
JOB_STATE
por uno de los siguientes estados de trabajo:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Para obtener más información sobre los estados de los trabajos, consulta Ciclo de vida del trabajo.
Para las notificaciones sobre todos los cambios de estado de las tareas, especifica lo siguiente:
"type": "TASK_STATE_CHANGED"
Para las notificaciones sobre cambios en el estado de tareas específicas, especifica lo siguiente:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Reemplaza
TASK_STATE
por uno de los siguientes estados de tarea:PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
Para obtener más información sobre los estados de las tareas, consulta Ciclo de vida de los trabajos.
Por ejemplo, supongamos que deseas recibir notificaciones sobre todos los cambios de estado de los trabajos y cada vez que una tarea falla. Para hacerlo, agrega lo siguiente al archivo de configuración JSON de tu trabajo:
"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"
}
}
]
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Consulta trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.