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
- Se ainda não tiver um fluxo de trabalho que queira agendar, crie e implemente um.
-
Enable the Cloud Scheduler API.
Em alternativa, num terminal, introduza o seguinte comando:
gcloud services enable cloudscheduler.googleapis.com
Agende um fluxo de trabalho
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.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.
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.
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
Para agendar um fluxo de trabalho, aceda à página Fluxos de trabalho na Google Cloud consola:
Na página Fluxos de trabalho, selecione um fluxo de trabalho para aceder à respetiva página de detalhes.
Na página Detalhes do fluxo de trabalho, clique em edit Editar.
Na página Editar fluxo de trabalho, selecione Adicionar novo acionador > Cloud Scheduler.
É apresentado o painel Criar uma tarefa do programador.
Defina o horário:
No campo Nome, introduza um nome para a tarefa do Cloud Scheduler. Tem de ser exclusivo entre os trabalhos na mesma região.
Na lista Região, selecione uma região adequada; por exemplo, us-central1.
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 * * * *
.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.
Clique em Continuar.
Configure a execução:
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:
. Se o seu fluxo de trabalho não usar argumentos de tempo de execução, aceite o valor predefinido de{"firstName":"Sherlock", "lastName":"Holmes"}
{}
ou deixe o campo em branco.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.
Na lista Conta de serviço, selecione a conta de serviço que criou anteriormente.
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.
Se quiser atualizar ou eliminar o trabalho, tem de editar o fluxo de trabalho:
- Na página Detalhes do fluxo de trabalho, clique em edit Editar.
- Na secção Acionadores, encontre a tarefa que quer atualizar ou eliminar.
- Clique em edit Editar recurso ou delete Eliminar recurso.
gcloud
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, comous-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.
Para apresentar uma lista de todas as tarefas num projeto:
gcloud scheduler jobs list
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?
- Use o IAM para controlar o acesso
- Transmita argumentos de tempo de execução num pedido de execução
- Tutorial: agende fluxos de trabalho com o Cloud Scheduler