Neste tutorial, mostramos como programar uma função do Cloud Run HTTP direcionando um endpoint HTTP no Cloud Scheduler. 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.
Como alternativa, se você criou uma função do CloudEvents, use acionadores de eventos do Eventarc para programar a função e responder a eventos no seu projeto. O Eventarc pode acionar mensagens em um tópico do Pub/Sub, mudanças em um bucket do Cloud Storage e muito mais. Para mais informações, consulte Tipos de funções do Cloud Run.
Agendar a execução de uma função do Cloud Run é um caso de uso comum do Cloud Scheduler. Com este tutorial, você vai:
Custos
Neste documento, você vai 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.
-
Verify 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 following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - 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.
-
Verify 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 following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
Click Done to finish creating the service account.
-
-
Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) -
Administrador do Cloud Scheduler (
roles/cloudscheduler.admin
) -
Acessador de exibição de registros (
roles/logging.viewAccessor
) -
Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin
) -
Administrador da conta de serviço (
roles/iam.serviceAccountAdmin
) -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) -
No console do Google Cloud , acesse a página IAM.
Acessar o IAM - Selecione o projeto.
- Clique em CONCEDER ACESSO.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, esse é o endereço de e-mail da Conta do Google usado para implantar o serviço do Cloud Run.
- Na lista Selecionar papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Salvar.
- PROJECT_NUMBER pelo número do projeto Google Cloud .
- PROJECT_ID com o Google Cloud ID do projeto.
- PRINCIPAL com a conta a que você está adicionando a vinculação. Normalmente, é o endereço de e-mail da Conta do Google usado para implantar o serviço do Cloud Run.
- ROLE com o papel que você está adicionando à conta do implantador.
No console Google Cloud , acesse a página do Cloud Run.
Clique em Escrever uma função.
Na seção Configurar, faça o seguinte:
- No campo Nome do serviço, insira um nome para a função.
- Na lista Região, selecione uma região.
- Não modifique o idioma de execução padrão.
Para autenticação, selecione Exigir autenticação.
Se você precisa seguir uma política da organização de restrição de domínio que restringe invocações não autenticadas para seu projeto, será necessário acessar o serviço implantado, conforme descrito em Como testar serviços particulares.
Para mais informações, consulte Autenticar para invocação.
Aceite todos os padrões e clique em Criar.
Copie o URL HTTP da função.
No console Google Cloud , acesse a página 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 de cron job e fuso horário.
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 antes.
Na lista Cabeçalho de autenticação, selecione Adicionar token OIDC.
Na lista Conta de serviço, selecione a conta de serviço que você criou antes.
No campo Público, insira o URL HTTP da função que você copiou antes.
Clique em Criar.
No console Google Cloud , acesse a página do Cloud Scheduler.
Marque a caixa de seleção do job que você criou e clique em Execução forçada.
Na primeira vez que é invocado, o primeiro job criado em um projeto pode levar alguns minutos para ser configurado e executado.
Depois que o job for executado, o Status da última execução vai indicar
Success
.No console Google Cloud , acesse a página do Cloud Run.
Selecione Filtrar serviços > Tipo de implantação > Função. Isso filtra a lista de serviços para mostrar apenas funções.
Clique no nome da função.
A página Detalhes do serviço é aberta e mostra as métricas do serviço.
Clique na guia Registros.
Você vai encontrar uma entrada de registro semelhante a
POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME
- 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.
No console Google Cloud , acesse a página Cloud Scheduler.
Clique na caixa de seleção que está próxima ao job.
Clique em
Excluir e confirme a exclusão.No console Google Cloud , acesse a página do Cloud Run.
Marque a caixa de seleção ao lado do serviço.
Clique em
Excluir e confirme a exclusão.No console 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.- Usar o Cloud Scheduler para acionar o Cloud Run em uma programação
- Escreva funções do CloudEvents para programar sua função para responder a eventos no projeto.
É necessário conceder o papel de invocador do Cloud Run porque, nas funções do Cloud Run, as permissões de invocação estão disponíveis ao gerenciar o serviço do Cloud Run subjacente.
Funções exigidas
Para conseguir as permissões necessárias para concluir o tutorial, peça ao administrador para conceder a você os papéis do IAM a seguir no seu projeto:
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Conceder os papéis
Console
gcloud
Para conceder os papéis do IAM necessários à sua conta no projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Substitua:
Criar uma função do Cloud Run em HTTP
Crie uma função HTTP acionada pelo Cloud Scheduler.
Criar um job do Cloud Scheduler
Crie um job do Cloud Scheduler que acione uma ação usando HTTP.
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.
Verificar os resultados nas funções do Cloud Run
É possível verificar se a função do Cloud Run foi acionada e executada corretamente pelo cron job.
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.