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. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.