Agende uma função do Cloud Run acionada por eventos


Este tutorial mostra como acionar uma função do Cloud Run baseada em eventos usando o Cloud Scheduler e segmentando um tópico do Pub/Sub. Use uma função orientada por eventos quando a função deve ser acionada diretamente em resposta a eventos no seu Google Cloud projeto, como mensagens num tópico do Pub/Sub ou alterações num contentor do Cloud Storage.

Tenha em atenção que também pode agendar uma função HTTP segmentando o ponto final HTTP da sua função. Use uma função HTTP quando precisar que a sua função tenha um ponto final de URL e responda a pedidos HTTP, como para webhooks. Para mais informações, consulte o artigo Tipos de funções do Cloud Run.

O agendamento da execução de uma função do Cloud Run é um exemplo de utilização comum do Cloud Scheduler. Neste tutorial, vai:

  1. Crie uma função simples do Cloud Run que subscreva um tópico do Pub/Sub.
  2. Crie uma tarefa do Cloud Scheduler que publique uma mensagem no tópico do Pub/Sub.
  3. Execute a tarefa do Cloud Scheduler.
  4. Verifique se a função do Cloud Run foi acionada pela tarefa do Cloud Scheduler.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Enable the 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Enable the 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. Tenha em atenção que tem de conceder a função de invocador do Cloud Run porque, nas funções do Cloud Run (2.ª geração), as autorizações de invocação estão disponíveis através da gestão do serviço do Cloud Run subjacente.

  11. Por predefinição, as funções do Cloud Run usam a conta de serviço do Compute Engine predefinida criada automaticamente para a respetiva conta de serviço de tempo de execução. Pode usar esta conta de serviço para experimentar este tutorial. No entanto, consoante a configuração da política da organização, a conta de serviço predefinida pode não receber automaticamente a função de editor no seu projeto. Se for o caso, tem de conceder à conta de serviço as seguintes funções:
    1. Escritor do Artifact Registry (roles/artifactregistry.writer)
    2. Logs Writer (roles/logging.logWriter)
    3. Visualizador de objetos de armazenamento (roles/storage.objectViewer)
  12. Crie uma função do Cloud Run orientada por eventos

    Criar uma função orientada por eventos que é acionada diretamente em resposta a eventos no seu Google Cloud projeto; neste caso, uma mensagem publicada num tópico do Pub/Sub.

    1. Na Google Cloud consola, aceda à página Funções do Cloud Run.

      Aceder às funções do Cloud Run

    2. Clique em Criar função.

    3. Na secção Básico, faça o seguinte:

      1. Na lista Ambiente, selecione 2.ª geração.
      2. Introduza um nome para a função.
      3. Na lista Região, selecione uma região.
    4. Na secção Acionador, faça o seguinte:

      1. Na lista Tipo de acionador, selecione Cloud Pub/Sub.
      2. Na lista Tópico do Cloud Pub/Sub, selecione um tópico existente ou, para criar um novo tópico, clique em Criar um tópico. Tome nota do nome do tópico, pois vai precisar dele num passo subsequente.
      3. Clique em Mais opções.

        É aberto o painel Acionador do Eventarc.

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

      1. Se lhe for pedido que permita que o serviço Pub/Sub crie os tokens de identidade de que precisa para invocar a função, clique em Conceder.
      2. Na lista Conta de serviço, selecione a conta de serviço que criou anteriormente.
      3. Aceite as outras predefinições.
      4. Clique em Guardar acionador.

        O painel Acionador do Eventarc é fechado.

    6. Aceite as outras predefinições e clique em Seguinte.

    7. Não modifique o idioma de tempo de execução predefinido nem o exemplo de código. O código não usa serviços na nuvem e não precisa de autorizações adicionais ativadas. Clique em Implementar.

    Crie uma tarefa do Cloud Scheduler

    Crie uma tarefa do Cloud Scheduler com um destino do Pub/Sub.

    1. Na Google Cloud consola, aceda à página Cloud Scheduler.

      Aceda ao Cloud Scheduler

    2. Clique em Criar tarefa.

    3. Introduza um nome para a tarefa.

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

    5. Especifique a frequência da tarefa, usando um formato unix-cron:

      30 16 * * 7
      

      Para mais informações, consulte o artigo Formato de tarefa cron e fuso horário.

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

    10. No campo Corpo da mensagem, introduza uma string a ser enviada para o tópico de destino do Pub/Sub. Por exemplo: "Olá mundo!"

    11. Clique em Criar.

    Criou uma tarefa cron que envia uma mensagem para o seu tópico do Pub/Sub às 16:30 aos domingos. A sua função do Cloud Run está subscrita nesse tópico.

    Execute a sua tarefa do Cloud Scheduler

    Agora, pode executar a tarefa que criou.

    1. Na Google Cloud consola, aceda à página Cloud Scheduler.

      Aceda ao Cloud Scheduler

    2. Selecione a caixa de verificação da tarefa que criou e clique em Forçar execução.

      Quando é invocado inicialmente, o primeiro trabalho criado num projeto pode demorar alguns minutos a configurar e executar.

    3. Após a execução da tarefa, o Estado da última execução deve indicar Success.

    Valide os resultados nas funções do Cloud Run

    Pode verificar se a função do Cloud Run é acionada e executada com êxito pela tarefa cron.

    1. Na Google Cloud consola, aceda à página Funções do Cloud Run.

      Aceder às funções do Cloud Run

    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 no separador Registos.

      Deve ver uma entrada de registo semelhante a Hello, YOUR_STRING!

    Limpar

    Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

    Eliminar projeto

    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.

    Elimine recursos de tutoriais

    1. Na Google Cloud consola, aceda à página Cloud Scheduler.

      Aceda ao Cloud Scheduler

    2. Selecione a caixa de verificação junto ao seu trabalho.

    3. Clique em Eliminar e confirme a eliminação.

    4. Na Google Cloud consola, aceda à página Pub/Sub.

      Aceda ao Pub/Sub

    5. Selecione a caixa de verificação junto ao tópico.

    6. Clique em Eliminar e confirme a eliminação.

    7. Na Google Cloud consola, aceda à página Funções do Cloud Run.

      Aceder às funções do Cloud Run

    8. Selecione a caixa de verificação junto à função.

    9. Clique em Eliminar e confirme a eliminação.

    10. Na Google Cloud consola, aceda à página Contas de serviço.

      Aceda a Contas de serviço

    11. Selecione a caixa de verificação junto à conta de serviço que criou.

    12. Clique em Eliminar e confirme a eliminação.

    O que se segue?