Programar um fluxo de trabalho usando o Cloud Scheduler

Nesta página, mostramos como usar o Cloud Scheduler para executar um fluxo de trabalho em uma programação específica, como toda segunda-feira às 9h ou a cada 15 minutos. É possível configurar a programação no Console do Google Cloud ou usando a ferramenta de linha de comando gcloud.

Antes de começar

  1. Se você ainda não tiver um fluxo de trabalho que queira programar, crie e implante um.

  2. Ative a API Cloud Scheduler.

    Ative a API

  3. Ou, em um terminal, digite o seguinte comando:

    gcloud services enable cloudscheduler.googleapis.com

  4. Para usar o Cloud Scheduler, seu projeto do Cloud precisa conter um aplicativo do App Engine localizado em uma das regiões compatíveis. Se o projeto não tiver um aplicativo do App Engine, você precisará criar um.

Programar um fluxo de trabalho

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

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Substitua SERVICE_ACCOUNT_NAME por um nome que tenha de 6 a 30 caracteres. Ele pode conter caracteres alfanuméricos minúsculos e traços. Depois de criar uma conta de serviço, não é possível alterar o nome dela.

  2. Para permitir que o principal que executará os comandos do Cloud Scheduler aja como uma conta de serviço do gerenciamento de identidade e acesso (IAM), conceda um papel que permita ao principal personificar o serviço. .

  3. Conceda à nova conta de serviço o papel workflows.invoker para que a conta tenha permissão para acionar o 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:

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

    Console

    1. Para programar um fluxo de trabalho, acesse a página Fluxos de trabalho no Console do Cloud:

      Acessar fluxos de trabalho

    2. Na página Fluxos de trabalho, selecione um fluxo de trabalho para acessar a página de detalhes dele.

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

    4. Na página Editar fluxo de trabalho, selecione Adicionar novo gatilho > Programador.

      O painel Criar um job do Scheduler é aberto.

    5. Defina a programação:

      1. No campo Nome, insira um nome para o job do Cloud Scheduler. Ele precisa ser exclusivo dentre os jobs na mesma região.

      2. No campo Frequência, especifique um intervalo de tempo definido em um formato unix-cron. Por exemplo, para programar a execução do fluxo de trabalho a cada cinco minutos, digite */5 * * * *.

      3. Na lista Fuso horário, selecione o fuso horário que o Cloud Scheduler precisa usar para interpretar a programação fornecida.

    6. Clique em Continuar.

    7. Configure a execução:

      1. No campo Corpo, especifique os argumentos de ambiente de execução a serem transferidos para o fluxo de trabalho antes da execução. Os argumentos precisam estar no formato JSON. As aspas duplas dentro da string entre aspas são escapadas usando barras invertidas (\). Por exemplo, {"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}. Se seu fluxo de trabalho não usar argumentos de tempo de execução, aceite o padrão de "argument": "{}" ou deixe o campo em branco.

      2. No campo Corpo, especifique o nível de registro de chamadas que você quer aplicar durante a execução do fluxo de trabalho. É possível aceitar o padrão CALL_LOG_LEVEL_UNSPECIFIED ou selecionar uma das seguintes opções:

        • LOG_ALL_CALLS: registra todas as chamadas para subfluxos de trabalho ou funções de biblioteca e os resultados delas.
        • LOG_ERRORS_ONLY: registra somente quando uma chamada é interrompida devido a uma exceção.
      3. Na lista Conta de serviço, selecione a conta de serviço que você criou anteriormente.

    8. Clique em Criar.

      Não é necessário reimplantar o fluxo de trabalho.

    O job do Cloud Scheduler agora está listado na guia Gatilhos da página Detalhes de fluxos de trabalho. Para atualizar ou excluir o job, edite o fluxo de trabalho; No entanto, não é necessário implantá-la novamente.

    gcloud

    1. Abra um terminal e digite 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:

      • JOB_NAME: o nome que você está dando ao job do Cloud Scheduler.
      • FREQUENCY: um intervalo de tempo definido usando o formato unix-cron. Por exemplo, para programar a execução do fluxo de trabalho a cada cinco minutos, digite */5 * * * *.
      • PROJECT_ID: o ID do seu projeto do Google Cloud.
      • REGION_NAME: a região em que seu fluxo de trabalho está, como us-central1.
      • WORKFLOW_NAME: o nome do fluxo de trabalho para que você quer programar a execução.
      • DOUBLE_ESCAPED_JSON_STRING: uma codificação JSON de todos os argumentos que você estiver transmitindo. As aspas duplas dentro da string entre aspas são escapadas usando barras invertidas (\). Por exemplo: --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE: o fuso horário que o Cloud Scheduler usa para interpretar a programação fornecida. Por exemplo: America/New_York.
      • SERVICE_ACCOUNT_NAME: o nome da conta de serviço que você criou anteriormente.
    2. Para listar todos os jobs em um projeto:

      gcloud scheduler jobs list

    3. Para excluir um job, siga estas etapas:

      gcloud scheduler jobs delete JOB_NAME

Agora seu fluxo de trabalho será executado de acordo com a frequência que você definiu.

A seguir