Agende um fluxo de trabalho com o Cloud Scheduler

Esta página mostra como usar o Cloud Scheduler para executar um fluxo de trabalho numa programação específica, como todas as segundas-feiras às 9:00 ou a cada 15 minutos. Pode configurar a programação na Google Cloud consola ou através da Google Cloud CLI.

Antes de começar

  1. Se ainda não tiver um fluxo de trabalho que queira agendar, crie e implemente um.
  2. Enable the Cloud Scheduler API.

    Enable the API

  3. Em alternativa, num terminal, introduza o seguinte comando:
    gcloud services enable cloudscheduler.googleapis.com

Agende um fluxo de trabalho

  1. Crie uma conta de serviço para que o Cloud Scheduler possa fazer pedidos à API Workflows:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Substitua SERVICE_ACCOUNT_NAME por um nome com entre 6 e 30 carateres. Pode conter carateres alfanuméricos minúsculos e travessões. Depois de criar uma conta de serviço, não pode alterar o respetivo nome.

  2. Para permitir que o principal que vai executar os comandos do Cloud Scheduler tenha a capacidade de atuar como uma conta de serviço de gestão de identidade e de acesso (IAM), conceda uma função que permita ao principal representar a conta de serviço.

  3. Conceda à nova conta de serviço a função workflows.invoker para que a conta tenha autorização para acionar o seu fluxo de trabalho:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/workflows.invoker

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço que criou anteriormente.
  4. Crie uma tarefa do Cloud Scheduler que acione o seu fluxo de trabalho, usando a conta de serviço que criou anteriormente para fazer a autenticação.

    Tenha em atenção que, se estiver a aplicar o registo de chamadas, tem de configurar o registo de chamadas através da página Fluxos de trabalho na Google Cloud consola. Para ver detalhes, consulte os passos seguintes.

    Consola

    1. Para agendar um fluxo de trabalho, aceda à página Fluxos de trabalho na Google Cloud consola:

      Aceda a Fluxos de trabalho

    2. Na página Fluxos de trabalho, selecione um fluxo de trabalho para aceder à respetiva página de detalhes.

    3. Na página Detalhes do fluxo de trabalho, clique em Editar.

    4. Na página Editar fluxo de trabalho, selecione Adicionar novo acionador > Cloud Scheduler.

      É apresentado o painel Criar uma tarefa do programador.

    5. Defina o horário:

      1. No campo Nome, introduza um nome para a tarefa do Cloud Scheduler. Tem de ser exclusivo entre os trabalhos na mesma região.

      2. Na lista Região, selecione uma região adequada; por exemplo, us-central1.

      3. No campo Frequência, especifique um intervalo de tempo que define num formato unix-cron. Por exemplo, para agendar a execução do fluxo de trabalho a cada 5 minutos, escreva */5 * * * *.

      4. Na lista Fuso horário, selecione o fuso horário que o Cloud Scheduler deve usar para interpretar a programação que indicar. Pode pesquisar por país.

    6. Clique em Continuar.

    7. Configure a execução:

      1. No campo Argumento do fluxo de trabalho, especifique quaisquer argumentos de tempo de execução a transmitir ao fluxo de trabalho antes da execução. Os argumentos têm de estar no formato JSON. Por exemplo: {"firstName":"Sherlock", "lastName":"Holmes"}. Se o seu fluxo de trabalho não usar argumentos de tempo de execução, aceite o valor predefinido de {} ou deixe o campo em branco.

      2. Na lista Nível do registo de chamadas do fluxo de trabalho, selecione o nível de registo de chamadas que quer aplicar durante a execução do fluxo de trabalho:

        • Não especificado: não é especificado nenhum nível de registo. Esta é a predefinição. Um nível de registo de execução tem precedência sobre qualquer nível de registo do fluxo de trabalho, a menos que o nível de registo de execução não seja especificado (predefinição). Nesse caso, aplica-se o nível de registo do fluxo de trabalho.
        • Apenas erros: registe todas as exceções capturadas ou quando uma chamada é interrompida devido a uma exceção.
        • Todas as chamadas: registe todas as chamadas para subfluxos de trabalho ou funções da biblioteca e os respetivos resultados.
        • Sem registos: sem registo de chamadas.
      3. Na lista Conta de serviço, selecione a conta de serviço que criou anteriormente.

    8. Clique em Criar.

      Tenha em atenção que, se estiver a atualizar um fluxo de trabalho existente, não precisa de voltar a implementá-lo.

      A tarefa do Cloud Scheduler é agora apresentada no separador Acionadores da página Detalhes do fluxo de trabalho.

    9. Se quiser atualizar ou eliminar o trabalho, tem de editar o fluxo de trabalho:

      1. Na página Detalhes do fluxo de trabalho, clique em Editar.
      2. Na secção Acionadores, encontre a tarefa que quer atualizar ou eliminar.
      3. Clique em Editar recurso ou Eliminar recurso.

    gcloud

    1. Abra um terminal e introduza o seguinte comando:

      gcloud scheduler jobs create http JOB_NAME \
          --schedule="FREQUENCY" \
          --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
          --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
          --time-zone="TIME_ZONE" \
          --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

      Substitua o seguinte:

      • JOB_NAME: o nome que está a dar à sua tarefa do Cloud Scheduler.
      • FREQUENCY: um intervalo de tempo que define através de um formato unix-cron. Por exemplo, para agendar a execução do fluxo de trabalho a cada 5 minutos, escreva */5 * * * *.
      • PROJECT_ID: o ID do seu projeto Google Cloud .
      • REGION_NAME: a região em que o fluxo de trabalho se encontra, como us-central1.
      • WORKFLOW_NAME: o nome do fluxo de trabalho cuja execução quer agendar.
      • DOUBLE_ESCAPED_JSON_STRING: uma codificação JSON de quaisquer argumentos que esteja a transmitir. As aspas duplas na string entre aspas são interpretadas de forma literal com barras invertidas (\). Por exemplo: --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE: o fuso horário que o Cloud Scheduler deve usar para interpretar a programação que indica. Por exemplo: America/New_York.
      • SERVICE_ACCOUNT_NAME: o nome da conta de serviço que criou anteriormente.
    2. Para apresentar uma lista de todas as tarefas num projeto:

      gcloud scheduler jobs list

    3. Para eliminar uma tarefa:

      gcloud scheduler jobs delete JOB_NAME

O fluxo de trabalho é agora executado de acordo com a frequência que definiu.

O que se segue?