Programar fluxos de trabalho


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 documento, você usará 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. Enable the Workflows API.

    Enable the API

  3. Defina o local padrão usado neste tutorial:
      gcloud config set workflows/location REGION
    Substituir REGION pelos Workflows compatíveis local de sua escolha.
  4. Crie uma conta de serviço para os fluxos de trabalho usarem, 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"

Crie 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 Google 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.

  6. Clique em Next.

  7. No editor de fluxo de trabalho, insira a seguinte definição 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.

Programe o fluxo de trabalho

Criar um job do Cloud Scheduler que acione seu fluxo de trabalho usando a conta de serviço que você criou.

Console

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

    Acessar o Cloud Scheduler

  2. Clique em Criar job.

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

  4. Em Frequência, insira:

    */5 * * * *
    Isso vai executar o job a cada cinco minutos. O intervalo é definido pela 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.

    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 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 e como aplicá-las registro de chamadas para que cada etapa da chamada durante a execução do fluxo de trabalho seja registrados, consulte Programar um fluxo de trabalho e os Referência do gcloud.

Execute o job e verifique os resultados

Console

  1. No console do Google Cloud, acesse a página do 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 Google 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 é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Exclua o job do Cloud Scheduler

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

    Acessar o Cloud Scheduler

  2. Clique na caixa de seleção que está próxima ao job.

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

Exclua o fluxo de trabalho

  1. Acesse a página Fluxos de trabalho no console do Google 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.

Desative 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 Google Cloud.

    Acesse as configurações do aplicativo

  2. Clique em Desativar aplicativo.

  3. Siga as instruções.

A seguir