Programar uma função do Cloud orientada por eventos


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:

  1. criar uma função de nuvem simples que assine um tópico Pub/Sub;
  2. Criar um job do Cloud Scheduler que publique uma mensagem no tópico do Pub/Sub.
  3. executar o job do Cloud Scheduler;
  4. 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. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. 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.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.

    Ative as APIs

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. 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.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  7. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  8. Ative as APIs Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.

    Ative as APIs

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. 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.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  10. 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.

  11. 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:
    1. Gravador do Artifact Registry (roles/artifactregistry.writer)
    2. Gravador de registros (roles/logging.logWriter)
    3. Leitor de objetos do Storage (roles/storage.objectViewer)

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.

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

    Acesse o Cloud Functions

  2. Clique em Criar função.

  3. Na seção Noções básicas, faça o seguinte:

    1. Na lista Ambiente, selecione 2a geração.
    2. Insira um nome para a função.
    3. Na lista Região, selecione uma região.
  4. Na seção Gatilho, faça o seguinte:

    1. Na lista Tipo de acionador, selecione Cloud Pub/Sub.
    2. 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.
    3. Clique em Mais opções.

      O painel Gatilho do Eventarc será aberto.

  5. No painel Gatilho do Eventarc, faça o seguinte:

    1. 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.
    2. Na lista Conta de serviço, selecione a conta de serviço que você criou.
    3. Aceite os outros padrões.
    4. Clique em Salvar acionador.

      O painel Acionador do Eventarc é fechado.

  6. Aceite os outros padrões e clique em Próxima.

  7. 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.

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

    Acessar o Cloud Scheduler

  2. Clique em Criar job.

  3. Insira um nome para o job.

  4. Na lista Região, selecione uma região.

  5. 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.

  6. Na lista Fuso horário, selecione um fuso horário.

  7. Clique em Continuar.

  8. Na lista Tipo de destino, selecione Pub/Sub.

  9. Selecione o tópico do Pub/Sub que você criou anteriormente.

  10. No campo Corpo da mensagem, insira uma string que será enviada ao tópico de destino do Pub/Sub. Por exemplo: "Hello world!"

  11. 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.

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

    Acessar o Cloud Scheduler

  2. 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.

  3. 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.

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

    Acesse o Cloud Functions

  2. 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.

  3. 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

  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.

Excluir recursos do tutorial

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

    Acessar o Cloud Scheduler

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

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

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

    Ir para o Pub/Sub

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

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

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

    Acesse o Cloud Functions

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

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

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

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

  11. Marque a caixa de seleção ao lado da conta de serviço que você criou.

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

A seguir