Como programar fluxos de trabalho com o Cloud Scheduler

Neste tutorial, mostramos como usar o Cloud Scheduler para executar automaticamente fluxos de trabalho. Assim, um fluxo de trabalho é executado em uma programação específica, nesse caso, a cada cinco minutos.

Objetivos

  1. Criar e implantar um fluxo de trabalho que possa receber argumentos de ambiente de execução.
  2. Criar um job do Cloud Scheduler que acione seu fluxo de trabalho e o execute a cada cinco minutos, transmitindo argumentos JSON no formato correto.

Custos

Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. Configure o ambiente para o Cloud Scheduler, incluindo a criação de um aplicativo do App Engine.
  2. Ative a API Workflows.

    Ative a API

  3. Defina o local padrão usado neste tutorial:
      gcloud config set workflows/location REGION
    Substitua REGION pelo local de fluxo de trabalho compatível de sua escolha.
  4. Criar uma conta de serviço para o Workflows usar por exemplo: sa-name.
      gcloud iam service-accounts create sa-name
  5. Conceda à conta de serviço o papel workflows.invoker para que ela tenha permissão para acionar seu fluxo de trabalho:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/workflows.invoker"
  6. Substitua PROJECT_ID pelo ID do projeto do Google Cloud.
  7. Conceda o papel logging.logWriter à conta de serviço.
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/logging.logWriter"

Criar um fluxo de trabalho que receba argumentos de ambiente de execução

Uma definição de fluxo de trabalho é composta por uma série de etapas descritas usando a sintaxe de fluxos de trabalho, que pode ser escrita em formato YAML ou JSON. Depois de criar um fluxo de trabalho, implante-o para que ele fique disponível para execução.

Console

  1. No Console do Cloud, acesse a página Fluxos de trabalho:

    Acessar fluxos de trabalho

  2. Clique em Criar.

  3. Insira myFirstWorkflow como um nome para o novo fluxo de trabalho.

  4. Selecione us-central1 para a região.

  5. Selecione a conta de serviço que você criou anteriormente.

  6. Clique em Next.

  7. No editor de fluxo de trabalho, insira a definição a seguir para seu fluxo de trabalho.

    YAML

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${outputVar}
    

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "step1": {
              "assign": [
                {
                  "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}"
                }
              ]
            }
          },
          {
            "step2": {
              "return": "${outputVar}"
            }
          }
        ]
      }
    }
      

    Esse fluxo de trabalho retorna uma saudação "Hello" para uma pessoa cujo nome e sobrenome você passa como argumentos de execução.

  8. Clique em Deploy.

gcloud

  1. Abra um terminal.
  2. Salve a seguinte definição de fluxo de trabalho como um arquivo YAML ou JSON, como myFirstWorkflow.yaml ou myFirstWorkflow.json.

    YAML

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${outputVar}
    

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "step1": {
              "assign": [
                {
                  "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}"
                }
              ]
            }
          },
          {
            "step2": {
              "return": "${outputVar}"
            }
          }
        ]
      }
    }
      

    Esse fluxo de trabalho retorna uma saudação "Hello" para uma pessoa cujo nome e sobrenome você passa como argumentos de execução.

  3. Implante o fluxo de trabalho digitando o seguinte comando:

    gcloud workflows deploy myFirstWorkflow \
        --source=myFirstWorkflow.yaml_OR_json \
        --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com

    Substitua yaml_OR_json por yaml ou json, dependendo do formato do arquivo de definição de fluxos de trabalho que você criou anteriormente.

Programar o fluxo de trabalho

Criar um job do Cloud Scheduler que acione seu fluxo de trabalho usando a conta de serviço criada anteriormente.

Console

  1. No Console do Cloud, acesse a página Cloud Scheduler:

    Acessar o Cloud Scheduler

  2. Clique em Criar job.

  3. Defina o Nome como my-workflow-job.

  4. Em Frequência, digite:

    */5 * * * *
    Isso executará o job a cada cinco minutos. O intervalo é definido pelo formato unix-cron.

  5. Em Fuso horário, selecione um país e um fuso horário.

    Por exemplo, selecione Estados Unidos e Los Angeles ou Horário de verão do Pacífico (PDT, na sigla em inglês).

  6. Clique em Continuar.

  7. Em Tipo de destino, selecione HTTP.

  8. Em URL, digite:

    https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
    

  9. Deixe o método HTTP no padrão POST.

  10. Adicione os dois cabeçalhos HTTP a seguir:

    • Nome: Content-Type e Valor: application/octet-stream
    • Nome: User-Agent e Valor: Google-Cloud-Scheduler
  11. Em Corpo, digite:

    {"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}
    

    Isso transmite uma codificação JSON dos argumentos do fluxo de trabalho: nesse caso, o nome, "Sherlock" e o sobrenome, "Holmes". As aspas duplas dentro da string são escapadas usando barras invertidas (\).

  12. Em Cabeçalho do Auth, selecione Adicionar token OAuth.

  13. Insira a conta de serviço que você criou anteriormente.

    sa-name@PROJECT_ID.iam.gserviceaccount.com
    
    Não é necessário especificar o Escopo, já que o padrão https://www.googleapis.com/auth/cloud-platform é usado.

  14. Aceite todos os outros padrões e clique em Criar.

gcloud

Programe um job chamado my-workflow-job digitando o seguinte comando:

gcloud scheduler jobs create http my-workflow-job \
    --schedule="*/5 * * * *" \
    --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
    --message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
    --time-zone="America/Los_Angeles" \
    --oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"

O intervalo é definido usando o formato unix-cron.

A sinalização message-body é usada para transmitir uma codificação JSON dos argumentos do fluxo de trabalho. nesse caso, o primeiro nome, "Sherlock" e o sobrenome, "Holmes". As aspas duplas dentro da string são escapadas usando barras invertidas (\).

Agora seu fluxo de trabalho é executado a cada cinco minutos.

Para mais informações sobre as sinalizações gcloud scheduler, consulte Programar um fluxo de trabalho e a referência gcloud.

Executar o job e verificar os resultados

Console

  1. No Console do Cloud, acesse a página Cloud Scheduler:

    Acessar o Cloud Scheduler

    Se a tarefa não for exibida, talvez seja necessário atualizar a página.

  2. Para o job my-workflow-job, clique em Executar agora.

    O valor Result será atualizado para Success.

  3. No Console do Cloud, acesse a página Fluxos de trabalho:

    Acessar fluxos de trabalho

  4. Na lista de fluxos de trabalho, clique em myFirstWorkflow para abrir a página de detalhes.

    O estado de execução do fluxo de trabalho deve ser Concluído.

  5. Clique no ID da execução do fluxo de trabalho para abrir a página de detalhes e ver os resultados do fluxo de trabalho no painel "Saída".

    A resposta será "Hello, Sherlock Holmes!".

gcloud

  1. Execute o job do Cloud Scheduler para executar o fluxo de trabalho:

    gcloud scheduler jobs run my-workflow-job
    
  2. Recupere o ID de execução do seu fluxo de trabalho:

    gcloud workflows executions list myFirstWorkflow
    

    A saída será semelhante a esta com o ID de execução em negrito:

    projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
  3. Recupere os resultados da execução do fluxo de trabalho:

    gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow

    Substitua EXECUTION_ID pelo ID de execução retornado na etapa anterior.

    A saída será semelhante a esta:

    argument: '{"firstName":"Sherlock","lastName":"Holmes"}'
    endTime: '2021-09-09T15:15:00.869350639Z'
    name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
    result: '"Hello, Sherlock Holmes!"'
    startTime: '2021-09-09T15:15:00.839175480Z'
    state: SUCCEEDED
    workflowRevisionId: 000001-4f9

Parabéns! Você criou um job do Cloud Scheduler que executa automaticamente um fluxo de trabalho em uma programação específica.

Limpar

Depois de concluir o tutorial, você pode limpar os recursos que criou para que eles parem de usar a cota e gerar cobranças. Nas seções a seguir, você aprenderá a excluir e desativar esses recursos.

Exclua o projeto

O jeito mais fácil de evitar cobranças é excluir o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Exclua o job do Cloud Scheduler

  1. Vá para a página Cloud Scheduler no Cloud Console.

    Acessar o Cloud Scheduler

  2. Marque a caixa de seleção ao lado do job.

  3. Clique em Excluir na parte superior da página e confirme.

Excluir o fluxo de trabalho

  1. Acesse a página Fluxos de trabalho no Console do Cloud.

    Acessar fluxos de trabalho

  2. Selecione seu fluxo de trabalho.

  3. Clique em Excluir na parte superior da página. digite o nome do fluxo de trabalho e confirme a exclusão.

Desativar o aplicativo do App Engine

Desativar um aplicativo do App Engine impede que o aplicativo execute instâncias e exiba solicitações enquanto mantém dados e configurações do aplicativo.

  1. Acesse a página Configurações do aplicativo no Console do Cloud.

    Acessar as configurações do aplicativo

  2. Clique em Desativar aplicativo.

  3. Siga as instruções.

A seguir