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 ingresen en un estado específico. Para obtener más información, consulta Supervisa trabajos mediante notificaciones.
Antes de comenzar
- Si no usaste Batch antes, revisa Comienza a usar Batch y habilita Batch. Para ello, completa los requisitos previos para proyectos y usuarios.
- Crea o identifica un tema de Pub/Sub para las notificaciones por lotes.
- Configura una suscripción para recibir y usar las notificaciones.
Funciones obligatorias
-
A fin de obtener los permisos que necesitas para crear y ejecutar un trabajo que envíe 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, de forma predeterminada, es la cuenta de servicio predeterminada de Compute Engine. -
Editor de Pub/Sub (
roles/pubsub.editor
) en el tema o proyecto de Pub/Sub.
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios a través de funciones personalizadas o, también, otras funciones predefinidas.
-
Editor de trabajos por lotes (
-
A menos que uses la configuración predeterminada para la cuenta de servicio del trabajo, asegúrate de que tenga los permisos necesarios.
Para 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. - Si deseas que un trabajo publique notificaciones en un tema de Pub/Sub que está en un proyecto diferente al del trabajo, el agente de servicio de Batch del proyecto del trabajo debe tener permiso para publicar en ese tema.
Para asegurarte de que el agente de servicio de Batch del proyecto del trabajo tenga los permisos necesarios para publicar notificaciones de Pub/Sub en un tema de Pub/Sub de otro proyecto, pídele a tu administrador que otorgue al agente de servicio de Batch para el proyecto del trabajo el rol de IAM de Publicador de Pub/Sub (
roles/pubsub.publisher
) en el tema de Pub/Sub.
Crea y ejecuta un trabajo que envíe notificaciones
Puedes crear un trabajo por lotes que envíe notificaciones de Pub/Sub si haces lo siguiente:
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 que creaste cuando habilitaste las notificaciones de Pub/Sub.ATTRIBUTES
: Especifica uno o más de los siguientes atributos, que te permiten recibir notificaciones sobre el estado del trabajo o todas sus tareas.Para recibir notificaciones sobre todos los cambios de estado de un trabajo, especifica lo siguiente:
"type": "JOB_STATE_CHANGED"
Para recibir notificaciones sobre un cambio de estado específico de un trabajo, 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 de los trabajos.
Para las notificaciones sobre todos los cambios de estado de las tareas, especifica lo siguiente:
"type": "TASK_STATE_CHANGED"
Para recibir notificaciones sobre cambios específicos en el estado de una tarea, especifica lo siguiente:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Reemplaza
TASK_STATE
por uno de los siguientes estados de tareas: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 un trabajo y cada vez que falle una tarea. Para ello, puedes tener un archivo de configuración JSON similar al siguiente:
{
"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 vez que el trabajo comienza a ejecutarse, puedes usar sus notificaciones. Por ejemplo, si el tema de Pub/Sub para tu trabajo tiene una suscripción que transmite notificaciones a BigQuery, puedes analizar las notificaciones de Pub/Sub en BigQuery.
¿Qué sigue?
- Obtén más información para supervisar el estado del trabajo con notificaciones de Pub/Sub y BigQuery.
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Visualiza trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.