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:
- Crie uma função do Cloud Run em HTTP simples.
- Criar um job do Cloud Scheduler.
- executar o job do Cloud Scheduler;
- 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.
Antes de começar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
-
- 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:
- Gravador do Artifact Registry (
roles/artifactregistry.writer
) - Gravador de registros (
roles/logging.logWriter
) - Leitor de objetos do Storage (
roles/storage.objectViewer
)
- Gravador do Artifact Registry (
É 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.
Criar uma função do Cloud Run em HTTP
Crie uma função HTTP acionada pelo Cloud Scheduler.
No console do Google Cloud, acesse a página Funções do Cloud Run.
Clique em
Criar função.Na seção Noções básicas, faça o seguinte:
- Na lista Ambiente, selecione Função do Cloud Run.
- Insira um nome para a função.
- Na lista Região, selecione uma região.
Na seção Gatilho, faça o seguinte:
- Na lista Tipo de acionador, selecione HTTPS.
Para a autenticação, selecione Exigir autenticação.
Para mais informações, consulte Autenticar para invocação (2ª geração).
Aceite os outros padrões e clique em Próxima.
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.
Depois que a função for implantada, clique na guia Gatilho.
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.
No console do Google Cloud, acesse a página do Cloud Scheduler.
Clique em
Criar job.Insira um nome para o job.
Na lista Região, selecione uma região.
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.
Na lista Fuso horário, selecione um fuso horário.
Clique em Continuar.
Na lista Tipo de destino, selecione HTTP.
No campo URL, insira o URL HTTP da função que você copiou anteriormente.
Na lista Cabeçalho Auth, selecione Adicionar token OIDC.
Na lista Conta de serviço, selecione a conta de serviço que você criou anteriormente.
No campo Público, insira o URL HTTP da função que você copiou anteriormente.
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.
No console do Google Cloud, acesse a página do Cloud Scheduler.
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.
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.
No console do Google Cloud, acesse a página das funções do Cloud Run.
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.
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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir recursos do tutorial
No console do Google Cloud, acesse a página do Cloud Scheduler.
Clique na caixa de seleção que está próxima ao job.
Clique em
Excluir e confirme a exclusão.No console do Google Cloud, acesse a página das funções do Cloud Run.
Marque a caixa de seleção ao lado da função.
Clique em
Excluir e confirme a exclusão.No Console do Google Cloud, acesse a página Contas de serviço.
Marque a caixa de seleção ao lado da conta de serviço criada.
Clique em
Excluir e confirme a exclusão.