Este tutorial mostra como programar uma função do Cloud Run em 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ê criar uma função orientada a eventos com base no CloudEvents, use gatilhos do Eventarc para programar a função para 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 Escrever 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:
Custos
Neste documento, você usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso,
use a calculadora de preços.
Antes de começar
- Faça login nasua Google Cloud conta. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build, Cloud Run Admin, Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
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.
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build, Cloud Run Admin, Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
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.
-
Ensure that you have the Create Service Accounts IAM role
(
É 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 subjacente do Cloud Run.
Funções exigidas
Para conseguir as permissões que você precisa para concluir o tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto:
- 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)
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
-
No Google Cloud console, acesse a página IAM.
Acessar 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 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.
gcloud
Para conceder os papéis necessários do IAM à sua conta no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Substitua:
- PROJECT_NUMBER pelo seu Google Cloud número de projeto.
- PROJECT_ID pelo ID do Google Cloud projeto.
- PRINCIPAL pela conta a que você está adicionando a vinculação. Normalmente, esse é o endereço de e-mail que é usado para implantar o serviço do Cloud Run.
- ROLE pelo papel que você está adicionando à conta do implantador.
Criar uma função do Cloud Run em HTTP
Crie uma função HTTP acionada pelo Cloud Scheduler.
No Google Cloud console, acesse a página Cloud Run > Serviços.
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 Testar serviços particulares.
Para mais informações, consulte a Visão geral da autenticação.
Aceite todos os padrões e clique em Criar.
Copie o URL HTTP da função.
Para mais informações, incluindo como implantar uma função do Cloud Run usando o Terraform, consulte Implantar uma função do Cloud Run.
Criar um job do Cloud Scheduler
Crie um job do Cloud Scheduler que acione uma ação usando HTTP.
No Google Cloud console, acesse a página Cloud Scheduler > Jobs.
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 * * 7Para 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 do 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-alvo, insira o URL HTTP da função que você copiou anteriormente.
Clique em Criar.
Você criou um cron job que executa a função do Cloud Run às 16h30 aos domingos.
Executar o job do Cloud Scheduler
Agora é possível executar o job criado.
No Google Cloud console, acesse a página Cloud Scheduler > Jobs.
Marque a caixa de seleção do job criado.
Clique em Forçar execução.
Quando é invocado inicialmente, 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.
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.
No Google Cloud console, acesse a página Cloud Run > Serviços.
Para filtrar a lista de serviços de funções, selecione filter_list Filtrar > Tipo de implantação > Função.
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ê verá uma entrada de registro semelhante a
POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir projeto
- No Google Cloud console, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- Na caixa de diálogo, digite o ID do projeto e clique em Desligar para excluir o projeto.
Excluir recursos do tutorial
No Google Cloud console, acesse a página Cloud Scheduler > Jobs.
Clique na caixa de seleção que está próxima ao job.
Clique em Excluir e confirme a sua exclusão.
No Google Cloud console, acesse a página Cloud Run > Serviços.
Marque a caixa de seleção ao lado do serviço.
Clique em Excluir e confirme a sua exclusão.
No Google Cloud console do, acesse a página Contas de serviço.
Marque a caixa de seleção ao lado da conta de serviço que você criou.
Clique em Excluir e confirme a sua exclusão.
A seguir
- Usar o Cloud Scheduler para acionar o Cloud Run em uma programação
- Escrever funções do CloudEvents para programar a função para responder a eventos no seu projeto.