Programar uma função do Cloud Run em HTTP


Neste tutorial, mostramos como acionar uma função HTTP do Cloud Run usando o Cloud Scheduler e segmentando um endpoint HTTP. 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.

Também é possível programar uma função orientada a eventos quando ela precisa ser acionada diretamente em resposta a eventos no seu projeto do Google Cloud, como mensagens em um tópico do Pub/Sub ou alterações em um bucket do Cloud Storage. Para mais informações, consulte Tipos de funções do Cloud Run.

Programar a execução de uma função do Cloud Run é um caso de uso comum do Cloud Scheduler. Com este tutorial, você vai:

  1. Crie uma função do Cloud Run em HTTP simples.
  2. Criar um job do Cloud Scheduler.
  3. executar o job do Cloud Scheduler;
  4. Verifique se a função do Cloud Run 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. 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. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler 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. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler 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. É necessário conceder o papel de invocador do Cloud Run porque, nas funções do Cloud Run (2ª 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, as funções do Cloud Run usam a conta de serviço padrão do Compute Engine criada automaticamente para a conta de serviço do ambiente de execução. Você pode usar essa conta de serviço para testar este tutorial. No entanto, dependendo da configuração da política da organização, a conta de serviço padrão pode não receber automaticamente o papel de editor no projeto. Nesse caso, é 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 Run em HTTP

Crie uma função HTTP acionada pelo Cloud Scheduler.

  1. No console do Google Cloud, acesse a página Funções do Cloud Run.

    Acessar as funções do Cloud Run

  2. Clique em Criar função.

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

    1. Na lista Ambiente, selecione Função do Cloud Run.
    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 HTTPS.
    2. Para a autenticação, selecione Exigir autenticação.

      Para mais informações, consulte Autenticar para invocação (2ª geração).

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

  6. Não modifique o idioma padrão do ambiente de execução e o código de exemplo. O código não usa serviços de nuvem e não precisa de permissões adicionais. Clique em Implantar.

  7. Depois que a função for implantada, clique na guia Gatilho.

  8. Copie o URL HTTP da função.

Criar um job do Cloud Scheduler

Crie um job do Cloud Scheduler que acione uma ação usando HTTP.

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

  9. No campo URL, insira o URL HTTP da função que você copiou anteriormente.

  10. Na lista Cabeçalho Auth, selecione Adicionar token OIDC.

  11. Na lista Conta de serviço, selecione a conta de serviço que você criou anteriormente.

  12. No campo Público, insira o URL HTTP da função que você copiou anteriormente.

  13. Clique em Criar.

Você criou um cron job que executa sua função do Cloud Run às 16h30 aos domingos.

Executar o job do Cloud Scheduler

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. Marque a caixa de seleção do job que você criou e clique em Forçar execução.

    Quando é invocado inicialmente, a configuração e a execução do primeiro job criado em um projeto podem levar alguns minutos.

  3. Depois que o job for executado, o Status da última execução vai indicar Success.

Verificar os resultados nas funções do Cloud Run

É possível verificar se a função do Cloud Run é acionada e executada pelo cron job.

  1. No console do Google Cloud, acesse a página das funções do Cloud Run.

    Acessar as 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 sua primeira invocação da função.

  3. Clique na guia Registros.

    Você vai encontrar uma entrada de registro semelhante a POST 200 146 B 5 ms Google-Cloud-Scheduler https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME

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

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 das funções do Cloud Run.

    Acessar as funções do Cloud Run

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

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

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

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

  8. Marque a caixa de seleção ao lado da conta de serviço criada.

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

A seguir