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
- Criar e implantar um fluxo de trabalho que possa receber argumentos de ambiente de execução.
- 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.
Antes de começar
- Configure o ambiente para o Cloud Scheduler, incluindo a criação de um aplicativo do App Engine.
-
Enable the Workflows API.
- Defina o local padrão usado neste tutorial:
Substituagcloud config set workflows/location REGION
REGION
pelo local do fluxo de trabalho compatível de sua escolha. - Crie uma conta de serviço para os fluxos de trabalho usarem, por exemplo:
sa-name
.gcloud iam service-accounts create sa-name
- 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"
Substitua - 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"
PROJECT_ID
pelo ID do projeto do Google Cloud.
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
No console do Google Cloud, acesse a página Fluxos de trabalho.
Clique em Criar.
Insira
myFirstWorkflow
como um nome para o novo fluxo de trabalho.Selecione us-central1 para a região.
Selecione a conta de serviço que você criou.
Clique em Next.
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.
Clique em Deploy.
gcloud
- Abra um terminal.
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.
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
poryaml
oujson
, 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
No console do Google Cloud, acesse a página Cloud Scheduler:
Clique em Criar job.
Defina o Nome como
my-workflow-job
.Em Frequência, insira:
Isso vai executar o job a cada cinco minutos. O intervalo é definido usando o 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).
Clique em Continuar.
Em Tipo de destino, selecione HTTP.
Em URL, digite:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
Deixe o método HTTP no padrão POST.
Adicione os dois cabeçalhos HTTP a seguir:
- Nome:
Content-Type
e Valor:application/octet-stream
- Nome:
User-Agent
e Valor:Google-Cloud-Scheduler
- Nome:
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 (\).
Em Cabeçalho do Auth, selecione Adicionar token OAuth.
Insira a conta de serviço que você criou.
Não é necessário especificar o Escopo como o padrãosa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platform
é usado.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
No console do Google Cloud, acesse a página do Cloud Scheduler:
Se a tarefa não for exibida, talvez seja necessário atualizar a página.
Para o job
my-workflow-job
, clique em Executar agora.O valor Result será atualizado para Success.
No console do Google Cloud, acesse a página Fluxos de trabalho.
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.
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
Execute o job do Cloud Scheduler para executar o fluxo de trabalho:
gcloud scheduler jobs run my-workflow-job
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
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Exclua o job do Cloud Scheduler
Vá para a página Cloud Scheduler no Console do Google Cloud.
Clique na caixa de seleção que está próxima ao job.
Clique em Excluir na parte superior da página e confirme.
Exclua o fluxo de trabalho
Acesse a página Fluxos de trabalho no console do Google Cloud.
Selecione seu fluxo de trabalho.
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.
Acesse a página Configurações do aplicativo no console do Google Cloud.
Clique em Desativar aplicativo.
Siga as instruções.
A seguir
- Saiba mais sobre fluxos de trabalho.