Programar uma função do Cloud usando o Pub/Sub

Este tutorial mostra como usar o Cloud Scheduler e o Pub/Sub para acionar uma função de nuvem. Agendar a execução de uma função do Cloud Functions é um caso de uso comum para o Cloud Scheduler. Você vai:

  • criar uma função de nuvem simples que assine um tópico Pub/Sub;
  • criar um tópico Pub/Sub para acionar essa função;
  • Criar um job do Cloud Scheduler que chame o acionador do Pub/Sub.
  • executar o job do Cloud Scheduler;
  • verificar se a operação foi bem-sucedida.

Antes de começar

Para este tutorial, supomos que você já tenha concluído o Guia de início rápido do Cloud Scheduler. Como resultado, você tem as seguintes ferramentas e recursos disponíveis:

  • Ter um projeto do Google Cloud com o faturamento ativado.

  • A API do Cloud Scheduler e a API Pub/Sub ativadas no projeto. Ative a API Cloud Functions durante o tutorial.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

  • Cloud Functions
  • Pub/Sub
  • Cloud Scheduler

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Criar uma função do Cloud com um gatilho

  1. No console do Google Cloud, acesse a página Cloud Functions.

    Acesse o Cloud Functions

  2. Clique em Ativar API, se solicitado.

  3. Clique em Criar função. Se for exibida uma mensagem solicitando a ativação das APIs, clique em Ativar.

  4. Na seção Básico, selecione o ambiente de 2a geração, insira um nome para sua função e selecione uma região.

  5. Na seção Acionador, selecione Exigir autenticação. Clique em Adicionar gatilho e selecione Gatilho do Pub/Sub. O painel Gatilho do Eventarc é aberto. Se a mensagem Ativar as APIs necessárias aparecer, clique em Ativar.

  6. No painel Gatilho do Eventarc, verifique se os primeiros campos foram preenchidos da seguinte maneira ou, se necessário, preencha-os:

    • Tipo de acionador:origens do Google
    • Provedor de eventos: Cloud Pub/Sub
    • Evento:google.cloud.pubsub.topic.v1.messagePublished
  7. No campo Selecionar um tópico do Cloud Pub/Sub, selecione um tópico atual ou clique em Criar novo tópico. Sua função se inscreve nesse tópico. Anote o nome do tópico, porque você precisará dele mais tarde.

    • Clique em Conceder, se solicitado, para permitir que o serviço Pub/Sub crie os tokens de identidade que serão usados para acionar a função. Lembre-se de que você selecionou Exigir autenticação para a função. O Pub/Sub usa os tokens de identidade para fazer a autenticação necessária.
  8. No campo Conta de serviço, clique em Criar nova conta de serviço.

    1. Digite um nome para a conta de serviço e clique em Criar. O Eventarc usa essa conta de serviço para invocar a função com um token de identidade do serviço Pub/Sub.

    2. Na seção Conceda a essa conta de serviço acesso ao projeto, selecione o papel Invocador do Cloud Run. Isso concede à conta de serviço a capacidade de invocar sua função de 2a geração.

    3. Clique em Concluído.

  9. Deixe a opção Tentar novamente em caso de falha desmarcada. Clique em Salvar acionador.

  10. Expanda a seção Ambiente de execução, build, conexões e configurações de segurança e selecione a guia Ambiente de execução.

  11. Em Conta de serviço de ambiente de execução, no campo Conta de serviço, clique em Criar. O fluxo de criação da conta de serviço é aberto em uma nova guia. Essa conta de serviço é a identidade que a função do Cloud tem quando é executada.

    1. Digite um nome para a conta de serviço.
    2. Clique em Criar e continuar.
    3. Clique em Concluído.

    Você será redirecionado para a página Contas de serviço do console do Google Cloud. Você já pode fechar esta guia.

  12. Volte para o campo Conta de serviço na página de criação da função, clique em Atualizar e selecione a conta de serviço que você acabou de criar.

  13. Clique em Próxima. Se for solicitado que você ative as APIs necessárias, clique em Ativar.

  14. Não modifique a linguagem padrão e o exemplo de código. O código não usa serviços em nuvem e não precisa de permissões adicionais ativadas. Clique em Implantar.

Criar um job do Cloud Scheduler

  1. No console do Google Cloud, acesse a página do Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Clique em Criar job.

  3. Se necessário, selecione uma região para executar o job.

  4. Dê um nome ao job e, se preferir, inclua uma descrição.

  5. Especifique a frequência do job usando o formato unix-cron.

    30 16 * * 7
    

    Consulte Configurar programações de cron job para mais informações.

  6. Selecione seu fuso horário.

  7. Clique em Continuar.

  8. Na seção Configurar a execução, selecione Pub/Sub como o tipo de destino.

  9. Selecione o nome do seu Tema.

  10. Adicione uma string Message curta para ser enviada ao destino.

  11. Clique em Criar.

Agora você tem um cron job que envia uma mensagem para o tópico do Pub/Sub às 16h30 aos domingos. Sua função do Cloud Functions está inscrita nesse tópico.

Executar o job

Agora você pode executar o job que criou.

  1. No console do Google Cloud, acesse a página do Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Selecione o job que você criou.

  3. Clique em Forçar execução.

    A primeira execução do primeiro job criado em um projeto pode demorar alguns minutos devido à configuração necessária.

  4. Observe a coluna Status da última execução. Após a execução do job, a coluna exibirá "Success".

Parabéns! Você acabou de usar o console para ver os resultados da execução de um cron job que envia uma mensagem para Pub/Sub. Em seguida, você aprenderá a verificar se a função do Cloud Functions foi realmente executada.

Verificar os resultados no Cloud Functions

Para verificar se a função do Cloud está sendo acionada pelo cron job:

  1. No Console do Google Cloud, acesse a página Cloud Functions.

    Acesse o Cloud Functions

  2. Clique no nome da função.

  3. A página Detalhes da função é aberta. O gráfico Invocations/Seconds mostra sua primeira invocação da função. Para ver detalhes sobre a invocação, clique em Registros.

Parabéns! Sua função foi executada.

Limpar

Para evitar cobranças dos recursos usados neste tutorial na conta do Google Cloud, siga estas etapas:

Exclua o job do Cloud Scheduler

  1. No console do Google Cloud, acesse a página do Cloud Scheduler.

    Acessar o Programador

  2. Clique na caixa de seleção que está próxima ao job.

  3. Clique em Excluir e confirme a exclusão.

Exclua o tópico Pub/Sub

  1. No console do Google Cloud, acesse a página do Cloud Pub/Sub.

    Ir para o Pub/Sub

  2. Marque a caixa de seleção ao lado do tópico.

  3. Clique em Excluir e confirme a exclusão.

Exclua a função do Cloud Functions

  1. No Console do Google Cloud, acesse a página Cloud Functions.

    Acesse o Cloud Functions

  2. Marque a caixa de seleção ao lado da função.

  3. Clique em Excluir e confirme a exclusão.

Excluir as contas de serviço

  1. No Console do Google Cloud, acesse a página Contas de serviço.

    Acessar a página "Contas de serviço"

  2. Marque a caixa de seleção ao lado das contas de serviço que você criou.

  3. Clique em Excluir e confirme a exclusão.

Desativar as APIs

Desative alguma API ao seguir este tutorial, como a API Eventarc, Cloud Functions ou Pub/Sub. Desativar APIs afeta o acesso à API do projeto. Portanto, não desative APIs se outros recursos no projeto as usarem.

  1. No Console do Google Cloud, acesse a página APIs e serviços.

    Acessar APIs e serviços

  2. Clique na API que você pretende desativar. Será exibida uma página descrevendo a API.

  3. Clique em Desativar API.

Excluir o projeto

Se você criou um projeto apenas para este tutorial.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.