Pode usar o Cloud Scheduler para acionar de forma segura um serviço do Cloud Run de acordo com uma programação. Isto é semelhante à utilização de tarefas cron.
Seguem-se alguns exemplos de utilização:
- Fazer cópias de segurança periodicamente
- Executar tarefas de administração recorrentes, como:
- Voltar a gerar um mapa do site
- Eliminar dados, conteúdo, configuração ou revisões antigos
- Sincronizar conteúdo entre sistemas de dados
- Processamento de notificações por email diárias
- Validar e criar relatórios sobre o acesso a serviços a jusante
- Gerar documentos, como faturas
Esta página mostra como usar o Cloud Scheduler de forma segura com o Cloud Run no mesmo Google Cloud projeto.
Antes de começar
Ative a API Cloud Scheduler no projeto que está a usar.
Criar e implementar o seu serviço
Para criar e implementar:
No seu serviço, implemente a tarefa que quer executar de acordo com uma programação.
Tenha em atenção o tipo de pedido que o seu serviço espera receber dos pedidos de tarefas, por exemplo,
GET
ouPOST
. Quando cria a tarefa agendada que invoca o seu serviço, tem de especificar o método HTTP que corresponde a este.Quando implementar o serviço que está a usar com o Cloud Scheduler, certifique-se de que seleciona ** Exigir autenticação**. Não permitir acesso público.
O exemplo seguinte mostra como implementar um serviço do Cloud Run através do Terraform:
Substitua us-docker.pkg.dev/cloudrun/container/hello
por uma referência à sua própria imagem de contentor.
Criar uma conta de serviço para o Cloud Scheduler
Tem de criar uma conta de serviço para associar ao Cloud Scheduler e conceder a essa conta de serviço autorização para invocar o seu serviço do Cloud Run. Pode usar uma conta de serviço existente para representar o Cloud Scheduler ou criar uma nova.
Para criar uma conta de serviço e conceder-lhe autorização para invocar o serviço do Cloud Run:
Consola
Na Google Cloud consola, aceda à página Contas de serviço.
Selecione um projeto.
Introduza um nome da conta de serviço a apresentar na Google Cloud consola.
A Google Cloud consola gera um ID da conta de serviço com base neste nome. Edite o ID, se necessário. Não pode alterar o ID posteriormente.
Opcional: introduza uma descrição da conta de serviço.
Clique em Criar e continuar.
Opcional: clique no campo Selecionar uma função.
Selecione Cloud Run > Cloud Run Invoker.
Clique em Concluído.
Linha de comandos
Crie a conta de serviço:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
Substituir
- SERVICE_ACCOUNT_NAME com um nome em minúsculas exclusivo no seu Google Cloud projeto, por exemplo,
my-invoker-service-account-name
. - DISPLAYED_SERVICE_ACCOUNT_NAME com o nome que quer apresentar para esta conta de serviço, por exemplo, na consola, por exemplo,
My Invoker Service Account
.
- SERVICE_ACCOUNT_NAME com um nome em minúsculas exclusivo no seu Google Cloud projeto, por exemplo,
Para o Cloud Run, conceda à sua conta de serviço autorização para invocar o seu serviço:
gcloud run services add-iam-policy-binding SERVICE \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Substituir
- SERVICE com o nome do serviço que quer que seja invocado pelo Cloud Scheduler.
- SERVICE_ACCOUNT_NAME com o nome da conta de serviço.
- PROJECT_ID com o seu Google Cloud ID do projeto.
Conceda à sua conta de serviço acesso ao projeto para que tenha autorização para concluir ações específicas nos recursos do seu projeto:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Substituir
RESOURCE_ID: o ID do seu Google Cloud projeto.
PRINCIPAL: um identificador para o principal ou o membro, que normalmente tem o seguinte formato: PRINCIPAL_TYPE:ID. Por exemplo,
user:my-user@example.com
. Para ver uma lista completa dos valores que PRINCIPAL pode ter, consulte a referência de associação de políticas.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Para criar uma conta de serviço com o Terraform:
Criar uma tarefa do Cloud Scheduler
Tem de criar uma tarefa que invoque o seu serviço em horas específicas. Pode usar a consola ou a linha de comandos:
Para criar uma tarefa, pode usar a consola ou a linha de comandos gcloud. Clique no separador adequado:
Consola
Aceda à página da consola do Cloud Scheduler.
Clique em Criar tarefa.
Indique um nome para a tarefa.
Especifique a frequência ou o intervalo da tarefa em que a tarefa deve ser executada, através de uma string de configuração. Por exemplo, a string
0 */3 * * *
executa a tarefa a cada 3 horas. A string que fornece aqui pode ser qualquer string compatível com crontab.Para mais informações, consulte o artigo Configurar programações de tarefas.
Na lista pendente, escolha o fuso horário a usar para a frequência da tarefa.
Especifique
HTTP
como o alvo:Especifique o URL totalmente qualificado do seu serviço, por exemplo,
https://myservice-abcdef-uc.a.run.app
. A tarefa envia pedidos para este URL.Especifique o método HTTP: o método tem de corresponder ao que o serviço do Cloud Run implementado anteriormente está a esperar. O valor predefinido é
POST
.Opcionalmente, especifique os dados a enviar para o destino. Estes dados são enviados no corpo do pedido quando o método HTTP
POST
ouPUT
é selecionado.Clique em Mais para mostrar as definições de autorização.
No menu pendente, selecione Adicionar token OIDC.
No campo Conta de serviço, copie o email da conta de serviço da conta de serviço que criou anteriormente.
No campo Público-alvo, copie o URL completo do seu serviço.
Clique em Criar para criar e guardar a tarefa.
Linha de comandos
Tem de usar a autenticação OIDC para aceder a um serviço do Cloud Run autenticado a partir do Cloud Scheduler. A autenticação OIDC inclui a conta de serviço e as flags de público-alvo. Para mais informações, consulte o artigo Use a autenticação para destinos HTTP.
Para criar a tarefa do Cloud Scheduler:
gcloud scheduler jobs create http test-job --schedule "5 * * * *"
--http-method=HTTP-METHOD
--uri=SERVICE-URL
--oidc-service-account-email=SERVICE-ACCOUNT-EMAIL
--oidc-token-audience=SERVICE-URL
Substituir
- HTTP-METHOD com o método HTTP (ou seja, GET, POST, PUT, etc.).
- SERVICE-URL com o URL do seu serviço.
- SERVICE-ACCOUNT-EMAIL com o email da sua conta de serviço.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Para criar uma tarefa do Cloud Scheduler para o serviço do Cloud Run:
O seu serviço do Cloud Run é acionado através de um pedido da tarefa do Cloud Scheduler na frequência que definiu. Pode confirmar e monitorizar esta situação examinando os registos deste serviço.
O que se segue?
- Registar e ver registos
- Monitorizar a saúde e o desempenho
- Acionamento a partir do Pub/Sub
- Invocar com HTTPS