Programar jobs dependentes

Este documento descreve como criar e executar um job que não é programado até que jobs específicos sejam concluídos ou falhem. Para saber mais sobre os estados de job, consulte Visão geral da criação e execução de jobs.

Se você tiver uma carga de trabalho com requisitos de recursos variados, use jobs dependentes para criar uma cadeia automatizada de jobs que usam VMs separadas. Por exemplo, separe os tipos de VM usados para operações de baixa demanda (como o preparo de dados) e operações intensivas de computação (como o processamento de dados). Ao usar jobs dependentes para otimizar o consumo de recursos, é possível reduzir custos e o uso de cotas.

Antes de começar

  1. Se você nunca usou o Batch, consulte Começar a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e usuários.
  2. Para receber as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:

    Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Restrições

Os jobs dependentes têm as seguintes restrições:

  • Um job dependente pode ter até quatro dependências. Cada dependência precisa conter um nome de job exclusivo e um dos seguintes estados obrigatórios:

    • SUCCEEDED: concluído
    • FAILED: com falha
    • FINISHED: sucesso ou falha
  • Quando você cria um job dependente, todos os jobs de dependência precisam existir.

  • Um job dependente não pode entrar no estado programado (SCHEDULED) até que cada job de dependência tenha entrado no estado necessário. Se um job de dependência não puder entrar no estado necessário, ele falhará imediatamente sem ser programado.

Criar um job dependente

É possível criar um job que depende de outro usando os seguintes métodos:

Para especificar que um job é dependente, inclua o campo dependencies[].items, que aceita uma ou mais dependências especificadas como pares de chave-valor, no corpo principal do arquivo JSON:

"dependencies": [
  {
    "items": {
      "DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
    }
  }
]

Substitua:

  • DEPENDENCY_JOB_NAME: o nome de um job de dependência, que precisa alcançar o estado necessário antes que esse job dependente possa ser programado.

  • REQUIRED_STATE: o estado necessário para o job de dependência correspondente, que precisa ser SUCCEEDED, FAILED ou FINISHED.

Por exemplo, um job dependente com três dependências pode ter um arquivo de configuração JSON semelhante ao seguinte:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "dependencies": [
    {
      "items": {
        "DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
        "DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
        "DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
      }
    }
  ]
}

A seguir