Neste tutorial, mostramos como acionar uma função do Cloud orientada a eventos usando o Cloud Scheduler e segmentando um tópico do Pub/Sub. Use uma função orientada a eventos quando sua função precisar ser acionada diretamente em resposta a eventos no 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 segmentando o endpoint HTTP da função. Use uma função HTTP quando precisar que ela 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.
Programar a execução de uma função do Cloud é um caso de uso comum do Cloud Scheduler. Com este tutorial, você vai:
- criar uma função de nuvem simples que assine um tópico 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 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
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.
-
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.
-
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.
-
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, o Cloud Functions usa a conta de serviço padrão do Compute Engine criada automaticamente para a conta de serviço do ambiente de execução. Use essa conta de serviço para testar
este tutorial. No entanto, dependendo da configuração da política da organização, talvez a conta de serviço padrão não receba automaticamente o papel de Editor no projeto. Se esse for o caso, será 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 (
Observe que você precisa conceder o papel Chamador do Cloud Run porque, no Cloud Functions (2a 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 orientada a eventos
Crie uma função baseada em eventos que seja acionada diretamente em resposta a eventos no seu projeto do Google Cloud. Nesse caso, uma mensagem publicada em um tópico do Pub/Sub.
No console do Google Cloud, acesse a página Cloud Functions.
Clique em
Criar função.Na seção Noções básicas, faça o seguinte:
- Na lista Ambiente, selecione 2a 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 acionador, selecione Cloud Pub/Sub.
- Na lista de tópicos do Cloud Pub/Sub, selecione um tópico atual. Para criar um novo, clique em Criar um tópico. Anote o nome do tópico, porque você precisará dele em uma próxima etapa.
Clique em Mais opções.
O painel Gatilho do Eventarc será aberto.
No painel Gatilho do Eventarc, faça o seguinte:
- Se for solicitado que você permita que o serviço 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.
- 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 a linguagem de execução padrão e o exemplo de código. O código não usa serviços em nuvem e não precisa de outras permissões ativadas. Selecione Implantar.
Criar um job do Cloud Scheduler
Criar 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 que 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 ao tópico do Pub/Sub às 16h30 aos domingos. Sua função do Cloud está inscrita nesse tópico.
execute o job do Cloud Scheduler
Agora você pode executar o job criado.
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 ele é invocado inicialmente, o primeiro job criado em um projeto pode levar alguns minutos para ser configurado e executado.
Após a execução do job, o Status da última execução deve indicar
Success
.
Verifique os resultados no Cloud Functions
É possível verificar se a função do Cloud foi acionada e executada com sucesso pelo cron job.
No console do Google Cloud, acesse a página Cloud Functions.
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!
.
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
- No Console do Google Cloud, 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 Encerrar para excluí-lo.
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 Cloud Functions.
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 que você criou.
Clique em
Excluir e confirme a exclusão.