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 el estado de un trabajo o una tarea cambia, o cuando un trabajo o una tarea entra 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 habilitar Batch completando el requisitos previos para los 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.
Roles obligatorios
-
A fin de obtener los permisos que necesitas para crear y ejecutar un trabajo que envía notificaciones, sigue estos pasos: solicita a tu administrador que te otorgue el 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
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
-
A menos que uses la configuración predeterminada para la cuenta de servicio del trabajo asegurarse de que cuenta con los permisos necesarios.
Para asegurarte de que la cuenta de servicio del trabajo tenga permisos para publicar notificaciones de Pub/Sub, solicita a tu administrador que otorgue la cuenta de servicio del trabajo Rol de IAM de Publicador de Pub/Sub (
roles/pubsub.publisher
) en tu tema de Pub/Sub. - Si quieres que un trabajo publique notificaciones en un tema de Pub/Sub con
está en un proyecto diferente al del trabajo, el
Agente de servicio por lotes
para el proyecto del trabajo deben tener permiso para publicar en ese tema.
Para garantizar que el agente de servicio de Batch del proyecto del trabajo tenga los permisos necesarios permisos para publicar notificaciones de Pub/Sub en un tema de Pub/Sub en otro proyecto pedirle a tu administrador que otorgue al agente de servicio de Batch para el proyecto del trabajo Rol de IAM de Publicador de Pub/Sub (
roles/pubsub.publisher
) en el tema de Pub/Sub.
Crea y ejecuta una tarea que envíe notificaciones
Puedes crear un trabajo por lotes que envíe notificaciones de Pub/Sub haciendo lo siguiente:
Usa Google Cloud CLI o la API de REST para
crear un trabajo
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
: 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 habilitar las notificaciones de Pub/Sub.ATTRIBUTES
: Especifica una o más de las siguientes opciones 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 del trabajo.
Para recibir notificaciones sobre todos los cambios de estado de la tarea, especifica lo siguiente:
"type": "TASK_STATE_CHANGED"
Para recibir notificaciones sobre cambios específicos del estado de la tarea, 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 del trabajo.
Por ejemplo, supongamos que deseas recibir notificaciones sobre todos los estados de un trabajo y cada vez que una tarea falla. Para hacerlo, puedes tener un archivo JSON de Terraform que es 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 de 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 sobre cómo 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.