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 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.
Agendar 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;
- 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.
Criar uma função do Cloud Run orientada a eventos
Crie uma função baseada em eventos que seja acionada diretamente em resposta a eventos no seu projeto Google Cloud . Neste caso, uma mensagem publicada em um tópico do Pub/Sub.
No console 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 clique em Criar um tópico para criar um. 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 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 Gatilho do Eventarc é fechado.
Aceite os outros padrões e clique em Próxima.
Não modifique o idioma de tempo de execução padrão e o código de amostra. O código não usa serviços de nuvem e não precisa de permissões extras ativadas. Clique em Implantar.
Criar um job do Cloud Scheduler
Crie um job do Cloud Scheduler com um destino do Pub/Sub.
No console Google Cloud , acesse a página 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: "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 você pode executar o job que criou.
No console Google Cloud , acesse a página do Cloud Scheduler.
Marque a caixa de seleção do job que você criou e clique em Execução forçada.
Na primeira vez que é invocado, 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 no Cloud Run functions
É possível verificar se a função do Cloud Run foi acionada e executada corretamente pelo cron job.
No console Google Cloud , 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ê vai encontrar uma entrada de registro semelhante a
Hello, YOUR_STRING!