Neste tutorial, mostramos como acionar uma função do Cloud Run orientada a eventos usando o Cloud Scheduler e segmentando um tópico do Pub/Sub. Use uma função orientada a eventos quando ela precisar ser acionada diretamente em resposta a eventos no seu projeto do Google Cloud, como mensagens em um tópico do Pub/Sub ou alterações em um bucket do Cloud Storage.
Também é possível programar uma função HTTP direcionando o endpoint HTTP da função. Use uma função HTTP quando precisar que a função tenha um endpoint de URL e responda a solicitações HTTP, como para webhooks. Para mais informações, consulte Tipos de funções do Cloud Run.
Programar a execução de uma função do Cloud Run é um caso de uso comum do Cloud Scheduler. Com este tutorial, você vai:
- Crie uma função simples do Cloud Run que se inscreva em um tópico do Pub/Sub.
- Crie um job do Cloud Scheduler que publique uma mensagem no tópico do Pub/Sub.
- executar o job do Cloud Scheduler;
- Verifique se a função do Cloud Run foi acionada pelo job do Cloud Scheduler.
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
- 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.
-
Make sure 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.
-
Make sure 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 padrão, as funções do Cloud Run usam a conta de serviço padrão do Compute Engine criada automaticamente para a conta de serviço do ambiente de execução. Você pode usar essa conta de serviço para testar
este tutorial. No entanto, dependendo da configuração da política da organização, a
conta de serviço padrão pode não receber automaticamente o papel de editor no
projeto. Nesse caso, é necessário
conceder à conta de serviço
os seguintes papéis:
- Gravador do Artifact Registry (
roles/artifactregistry.writer
) - Gravador de registros (
roles/logging.logWriter
) - Leitor de objetos do Storage (
roles/storage.objectViewer
)
- Gravador do Artifact Registry (
É necessário conceder o papel de invocador do Cloud Run porque, nas funções do Cloud Run (2ª geração), as permissões de invocação estão disponíveis ao gerenciar o serviço subjacente do Cloud Run.
Criar uma função do Cloud Run orientada a eventos
Crie uma função orientada a eventos que seja acionada diretamente em resposta a eventos no seu projeto do Google Cloud. Neste caso, uma mensagem publicada em um tópico do Pub/Sub.
No console do Google Cloud, acesse a página Funções do Cloud Run.
Clique em
Criar função.Na seção Noções básicas, faça o seguinte:
- Na lista Ambiente, selecione 2ª geração.
- Insira um nome para a função.
- Na lista Região, selecione uma região.
Na seção Gatilho, faça o seguinte:
- Na lista Tipo de gatilho, selecione Cloud Pub/Sub.
- Na lista Tópico do Cloud Pub/Sub, selecione um tópico existente ou, para criar um novo, clique em Criar um tópico. Anote o nome do tópico, porque você vai precisar dele em uma etapa posterior.
Clique em Mais opções.
O painel Gatilho do Eventarc é aberto.
No painel Gatilho do Eventarc, faça o seguinte:
- Se você receber uma solicitação para permitir que o serviço do Pub/Sub crie os tokens de identidade necessários para invocar a função, clique em Conceder.
- Na lista Conta de serviço, selecione a conta de serviço que você criou anteriormente.
- Aceite os outros padrões.
Clique em Salvar acionador.
O painel Gatilho do Eventarc é fechado.
Aceite os outros padrões e clique em Próxima.
Não modifique o idioma padrão do ambiente de execução e o código de exemplo. O código não usa serviços de nuvem e não precisa de permissões adicionais. Clique em Implantar.
Criar um job do Cloud Scheduler
Crie um job do Cloud Scheduler com um destino do Pub/Sub.
No console do Google Cloud, acesse a página do Cloud Scheduler.
Clique em
Criar job.Insira um nome para o job.
Na lista Região, selecione uma região.
Especifique a frequência do job usando um formato unix-cron:
30 16 * * 7
Para mais informações, consulte Formato e fuso horário do cron job.
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 você criou anteriormente.
No campo Corpo da mensagem, insira uma string a ser enviada ao tópico de destino do Pub/Sub. Por exemplo: "Hello world!"
Clique em Criar.
Você criou um cron job que envia uma mensagem para o tópico do Pub/Sub às 16h30 aos domingos. Sua função do Cloud Run está inscrita nesse tópico.
Executar o job do Cloud Scheduler
Agora você pode executar o job que criou.
No console do Google Cloud, acesse a página do Cloud Scheduler.
Marque a caixa de seleção do job que você criou e clique em Forçar execução.
Quando é invocado inicialmente, a configuração e a execução do primeiro job criado em um projeto podem levar alguns minutos.
Depois que o job for executado, o Status da última execução vai indicar
Success
.
Verificar os resultados nas funções do Cloud Run
É possível verificar se a função do Cloud Run é acionada e executada pelo cron job.
No console do Google Cloud, acesse a página das 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 sua primeira invocação da função.
Clique na guia Registros.
Você vai encontrar uma entrada de registro semelhante a
Hello, YOUR_STRING!
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir 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.
Excluir recursos do tutorial
No console do Google Cloud, acesse a página do Cloud Scheduler.
Clique na caixa de seleção que está próxima ao job.
Clique em
Excluir e confirme a exclusão.No console do Google Cloud, acesse a página Pub/Sub.
Marque a caixa de seleção ao lado do tópico.
Clique em
Excluir e confirme a exclusão.No console do Google Cloud, acesse a página das funções do Cloud Run.
Marque a caixa de seleção ao lado da função.
Clique em
Excluir e confirme a exclusão.No Console do Google Cloud, acesse a página Contas de serviço.
Marque a caixa de seleção ao lado da conta de serviço criada.
Clique em
Excluir e confirme a exclusão.