Este tutorial mostra como acionar uma função do Cloud Run baseada em eventos usando o Cloud Scheduler e segmentando um tópico do Pub/Sub. Use uma função orientada por eventos quando a função deve ser acionada diretamente em resposta a eventos no seu Google Cloud projeto, como mensagens num tópico do Pub/Sub ou alterações num contentor do Cloud Storage.
Tenha em atenção que também pode agendar uma função HTTP segmentando o ponto final HTTP da sua função. Use uma função HTTP quando precisar que a sua função tenha um ponto final de URL e responda a pedidos HTTP, como para webhooks. Para mais informações, consulte o artigo Tipos de funções do Cloud Run.
O agendamento da execução de uma função do Cloud Run é um exemplo de utilização comum do Cloud Scheduler. Neste tutorial, vai:
- Crie uma função simples do Cloud Run que subscreva um tópico do Pub/Sub.
- Crie uma tarefa do Cloud Scheduler que publique uma mensagem no tópico do Pub/Sub.
- Execute a tarefa do Cloud Scheduler.
- Verifique se a função do Cloud Run foi acionada pela tarefa do Cloud Scheduler.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Cloud Run > Cloud Run Invoker role to the service account.
To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Cloud Run > Cloud Run Invoker role to the service account.
To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
- Por predefinição, as funções do Cloud Run usam a conta de serviço do Compute Engine predefinida criada automaticamente para a respetiva conta de serviço de tempo de execução. Pode usar esta conta de serviço para experimentar
este tutorial. No entanto, consoante a configuração da política da organização, a conta de serviço predefinida pode não receber automaticamente a função de editor no seu projeto. Se for o caso, tem de
conceder à conta de serviço
as seguintes funções:
- Escritor do Artifact Registry (
roles/artifactregistry.writer
) - Logs Writer (
roles/logging.logWriter
) - Visualizador de objetos de armazenamento (
roles/storage.objectViewer
)
- Escritor do Artifact Registry (
Na Google Cloud consola, aceda à página Funções do Cloud Run.
Clique em
Criar função.Na secção Básico, faça o seguinte:
- Na lista Ambiente, selecione 2.ª geração.
- Introduza um nome para a função.
- Na lista Região, selecione uma região.
Na secção Acionador, faça o seguinte:
- Na lista Tipo de acionador, selecione Cloud Pub/Sub.
- Na lista Tópico do Cloud Pub/Sub, selecione um tópico existente ou, para criar um novo tópico, clique em Criar um tópico. Tome nota do nome do tópico, pois vai precisar dele num passo subsequente.
Clique em Mais opções.
É aberto o painel Acionador do Eventarc.
No painel Acionador do Eventarc, faça o seguinte:
- Se lhe for pedido que permita que o serviço Pub/Sub crie os tokens de identidade de que precisa para invocar a função, clique em Conceder.
- Na lista Conta de serviço, selecione a conta de serviço que criou anteriormente.
- Aceite as outras predefinições.
Clique em Guardar acionador.
O painel Acionador do Eventarc é fechado.
Aceite as outras predefinições e clique em Seguinte.
Não modifique o idioma de tempo de execução predefinido nem o exemplo de código. O código não usa serviços na nuvem e não precisa de autorizações adicionais ativadas. Clique em Implementar.
Na Google Cloud consola, aceda à página Cloud Scheduler.
Clique em
Criar tarefa.Introduza um nome para a tarefa.
Na lista Região, selecione uma região.
Especifique a frequência da tarefa, usando um formato unix-cron:
30 16 * * 7
Para mais informações, consulte o artigo Formato de tarefa cron e fuso horário.
Na lista Fuso horário, selecione um fuso horário.
Clique em Continuar.
Na lista Tipo de destino, selecione Pub/Sub.
Selecione o tópico do Pub/Sub que criou anteriormente.
No campo Corpo da mensagem, introduza uma string a ser enviada para o tópico de destino do Pub/Sub. Por exemplo: "Olá mundo!"
Clique em Criar.
Na Google Cloud consola, aceda à página Cloud Scheduler.
Selecione a caixa de verificação da tarefa que criou e clique em Forçar execução.
Quando é invocado inicialmente, o primeiro trabalho criado num projeto pode demorar alguns minutos a configurar e executar.
Após a execução da tarefa, o Estado da última execução deve indicar
Success
.Na Google Cloud consola, aceda à página Funções do Cloud Run.
Clique no nome da função.
A página Detalhes da função é aberta e o gráfico Invocações/segundo mostra a primeira invocação da função.
Clique no separador Registos.
Deve ver uma entrada de registo semelhante a
Hello, YOUR_STRING!
- 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.
Na Google Cloud consola, aceda à página Cloud Scheduler.
Selecione a caixa de verificação junto ao seu trabalho.
Clique em
Eliminar e confirme a eliminação.Na Google Cloud consola, aceda à página Pub/Sub.
Selecione a caixa de verificação junto ao tópico.
Clique em
Eliminar e confirme a eliminação.Na Google Cloud consola, aceda à página Funções do Cloud Run.
Selecione a caixa de verificação junto à função.
Clique em
Eliminar e confirme a eliminação.Na Google Cloud consola, aceda à página Contas de serviço.
Selecione a caixa de verificação junto à conta de serviço que criou.
Clique em
Eliminar e confirme a eliminação.
Tenha em atenção que tem de conceder a função de invocador do Cloud Run porque, nas funções do Cloud Run (2.ª geração), as autorizações de invocação estão disponíveis através da gestão do serviço do Cloud Run subjacente.
Crie uma função do Cloud Run orientada por eventos
Criar uma função orientada por eventos que é acionada diretamente em resposta a eventos no seu Google Cloud projeto; neste caso, uma mensagem publicada num tópico do Pub/Sub.
Crie uma tarefa do Cloud Scheduler
Crie uma tarefa do Cloud Scheduler com um destino do Pub/Sub.
Criou uma tarefa cron que envia uma mensagem para o seu tópico do Pub/Sub às 16:30 aos domingos. A sua função do Cloud Run está subscrita nesse tópico.
Execute a sua tarefa do Cloud Scheduler
Agora, pode executar a tarefa que criou.
Valide os resultados nas funções do Cloud Run
Pode verificar se a função do Cloud Run é acionada e executada com êxito pela tarefa cron.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.