Este tutorial mostra como acionar uma função do Cloud Run orientada a eventos usando o Cloud Scheduler e direcionando 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 Google Cloud projeto, como mensagens em um tópico do Pub/Sub ou mudanças em um bucket do Cloud Storage.
Também é possível programar uma função HTTP direcionando o endpoint HTTP dela. 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:
- criar uma função simples do Cloud Run que assine um tópico do Pub/Sub;
- criar um job do Cloud Scheduler que publique uma mensagem no tópico do Pub/Sub;
- executar o job do Cloud Scheduler;
- verificar se a função do Cloud Run foi acionada pelo job do Cloud Scheduler.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso,
use a calculadora de preços.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
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.
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
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.
-
Ensure that you have the Create Service Accounts IAM role
(
- 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 Google Cloud projeto. Neste caso, uma mensagem publicada em um tópico do Pub/Sub.
No Google Cloud console do, 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 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, 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 Acionador do Eventarc é aberto.
No painel Acionador do Eventarc, faça o seguinte:
- Se for necessário 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 Acionador 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 exemplo de código. O código não usa nenhum serviço de nuvem e não precisa de permissões adicionais ativadas. Clique em Implantar.
Criar um job do Cloud Scheduler
Crie um job do Cloud Scheduler com um destino do Pub/Sub.
No Google Cloud console, acesse a página Cloud Scheduler.
Clique em Click 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 * * 7Para 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 criado anteriormente.
No campo Corpo da mensagem, insira uma string a ser enviada ao tópico de destino do Pub/Sub. Por exemplo: "Olá, mundo!"
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 é possível executar o job criado.
No Google Cloud console, acesse a página Cloud Scheduler.
Marque a caixa de seleção do job criado e clique em Forçar execução.
Quando é invocado inicialmente, o primeiro job criado em um projeto pode levar alguns minutos para ser configurado e executado.
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 foi acionada e executada corretamente pelo cron job.
No Google Cloud console do, acesse a 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 na guia Registros.
Você verá uma entrada de registro semelhante a
Hello, YOUR_STRING!
Liberar espaço
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir projeto
- No Google Cloud console, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- Na caixa de diálogo, digite o ID do projeto e clique em Desligar para excluir o projeto.
Excluir recursos do tutorial
No Google Cloud console, acesse a página Cloud Scheduler.
Clique na caixa de seleção que está próxima ao job.
Clique em Excluir e confirme a sua exclusão.
No Google Cloud console, acesse a página Pub/Sub.
Marque a caixa de seleção ao lado do tópico.
Clique em Excluir e confirme a sua exclusão.
No Google Cloud console do, acesse a página Funções do Cloud Run.
Marque a caixa de seleção ao lado da função.
Clique em Excluir e confirme a sua exclusão.
No Google Cloud console do, 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 sua exclusão.