Este documento explica como criar um job no Batch que envie Pub/Sub. Use o Pub/Sub para receber notificações quando o estado de um job ou de uma tarefa muda ou quando um job ou tarefa entra em um estado específico. Para mais informações, consulte Monitorar jobs usando notificações.
Antes de começar
- Se você nunca usou o Batch antes, revise Introdução ao Batch e ativar o Batch. Para isso, conclua pré-requisitos para projetos e usuários.
- Crie ou identifique um tópico do Pub/Sub para notificações em lote.
- Configurar uma assinatura para receber e usar as notificações.
Funções exigidas
-
Para receber as permissões necessárias para criar e executar um job que envie notificações, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de jobs em lote (
roles/batch.jobsEditor
) no projeto. -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que é a conta de serviço padrão do Compute Engine. -
Editor do Pub/Sub (
roles/pubsub.editor
) tópico ou projeto do Pub/Sub.
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
-
Editor de jobs em lote (
-
A menos que você esteja usando a configuração padrão para a conta de serviço do job, para garantir que ele tem as permissões necessárias.
Para garantir que a conta de serviço do job tenha permissões para publicar notificações do Pub/Sub, peça ao administrador para conceder à conta de serviço da tarefa o Papel do IAM de editor do Pub/Sub (
roles/pubsub.publisher
) no tópico do Pub/Sub. - Se você quiser que um job publique notificações em um tópico do Pub/Sub que
estiver em um projeto diferente do trabalho,
Agente de serviço em lote
no projeto do job precisa receber permissão para publicar nesse tópico.
Para garantir que o agente de serviço do Batch no projeto do job tenha as permissões para publicar notificações do Pub/Sub em um tópico do Pub/Sub em outro projeto; peça ao administrador para conceder ao agente de serviço do Batch o tipo de projeto do job Papel do IAM de editor do Pub/Sub (
roles/pubsub.publisher
) no tópico do Pub/Sub.
Criar e executar um job que envie notificações
É possível criar um job em lote que envie notificações do Pub/Sub fazendo o seguinte:
Use a Google Cloud CLI ou a API REST para
criar um job que
inclui o campo notifications
e um ou mais
Objetos jobNotification
no corpo principal do arquivo JSON:
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
Substitua:
PROJECT_ID
: o ID do projeto que que contém o tópico do Pub/Sub.TOPIC_ID
: o ID do tópico do Pub/Sub que você criou quando ativar as notificações do Pub/Sub.ATTRIBUTES
: especifique uma ou mais das opções a seguir. , que permitem receber notificações sobre o estado da job ou em todas as tarefas dele.Para notificações sobre todas as alterações no estado do job, especifique o seguinte:
"type": "JOB_STATE_CHANGED"
Para notificações sobre uma alteração específica do estado do job, especifique o seguinte:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Substitua
JOB_STATE
por um dos seguintes jobs: estados:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Para mais informações sobre estados do job, consulte Ciclo de vida do job.
Para notificações sobre todas as mudanças de estado da tarefa, especifique o seguinte:
"type": "TASK_STATE_CHANGED"
Para notificações sobre mudanças específicas no estado da tarefa, especifique o seguinte:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Substitua
TASK_STATE
por uma das opções a seguir. estados da tarefa:PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
Para mais informações sobre estados de tarefas, consulte Ciclo de vida do job.
Por exemplo, suponha que você queira receber notificações sobre todos os estados do job muda e sempre que uma tarefa falha. Para isso, você pode ter um arquivo JSON de arquivo de configuração que seja semelhante ao seguinte:
{
"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"
}
}
]
}
Depois que o job começar a ser executado, você poderá usar as notificações dele. Por exemplo, se o tópico Pub/Sub do seu job tiver uma assinatura que transmite notificações para o BigQuery, é possível analisar as notificações do Pub/Sub no BigQuery.
A seguir
- Saiba mais sobre como monitorar o status do job usando as notificações do Pub/Sub e o BigQuery.
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Ver tarefas e tarefas.
- Saiba mais sobre opções de criação de jobs.