Use o Cloud Scheduler para acionar um serviço do Cloud Run com segurança em uma programação. É semelhante ao uso dos cron jobs.
Os possíveis casos de uso incluem:
- Como executar backups em tempo hábil
- Executar tarefas de administração recorrentes, como:
- Como gerar novamente um sitemap
- Como excluir revisões, conteúdo, configuração ou dados antigos
- Como sincronizar conteúdo entre sistemas de dados
- Como processar notificações diárias por e-mail
- Como verificar e gerar relatórios sobre o acesso a serviços de downstream
- Como gerar documentos, como faturas
Esta página mostra como usar com segurança o Cloud Scheduler com o Cloud Run no mesmo projeto do Google Cloud.
Antes de começar
Ative a API Cloud Scheduler no projeto que você está usando.
Como criar e implantar seu serviço
Para criar e implantar:
No seu serviço, implemente o job que você quer executar em uma programação.
Observe de qual tipo de solicitação seu serviço espera receber as solicitações de job (por exemplo,
GET
ouPOST
). Ao criar o job programado que invoca o serviço, você precisa especificar o método HTTP que corresponde a ele.Quando você implanta o serviço que está usando com o Cloud Scheduler, lembre-se de NÃO permitir invocações não autenticadas.
O exemplo a seguir mostra como implantar um serviço do Cloud Run usando o Terraform:
Substitua us-docker.pkg.dev/cloudrun/container/hello
por uma referência à sua própria imagem de contêiner.
Como criar uma conta de serviço para o Cloud Scheduler
Você precisa criar uma conta de serviço para associar ao Cloud Scheduler e permitir que essa conta de serviço invoque seu serviço do Cloud Run. É possível 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 a ela permissão para invocar o serviço do Cloud Run:
Console
No console do Google Cloud, acesse a página Contas de serviço.
Selecione um projeto.
Insira um nome de conta de serviço a ser exibido no console do Google Cloud.
O console do Google Cloud gerará um ID de conta de serviço com base nesse nome. Edite o ID se for necessário. Não será possível alterar o ID depois.
Opcional: digite uma descrição da conta de serviço.
Clique em Criar e continuar.
Opcional: clique no campo Selecionar um papel.
Selecione Cloud Run > Chamador do Cloud Run.
Clique em Concluído.
Linha de comando
Crie a conta de serviço:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
Substituir
- SERVICE_ACCOUNT_NAME por um nome em letras minúsculas exclusivo no projeto do Google Cloud, por exemplo,
my-invoker-service-account-name
. - DISPLAYED_SERVICE_ACCOUNT_NAME pelo nome que você quer exibir para essa conta de serviço, por exemplo, no console,
My Invoker Service Account
.
- SERVICE_ACCOUNT_NAME por um nome em letras minúsculas exclusivo no projeto do Google Cloud, por exemplo,
Para o Cloud Run, conceda à conta de serviço permissão para invocar o 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 pelo nome do serviço que você quer que seja invocado pelo Cloud Scheduler.
- SERVICE_ACCOUNT_NAME pelo nome da conta de serviço.
- PROJECT_ID pelo ID de projeto do Google Cloud;
Conceda à conta de serviço o acesso ao projeto a fim de que ela tenha permissão para concluir ações específicas nos recursos do projeto:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Substituir
RESOURCE_ID pelo ID do projeto no Google Cloud.
PRINCIPAL: um identificador do principal ou do membro, que geralmente 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 vinculação de políticas.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Para criar uma conta de serviço usando o Terraform, siga estas etapas:
Como criar um job do Cloud Scheduler
Você precisará criar um job que invoque seu serviço em horários especificados. É possível usar o console ou a linha de comando:
Para criar um job, você pode usar o console ou a linha de comando do gcloud. Clique na guia adequada:
Console
Acesse a página do Console do Cloud Scheduler.
Clique em Criar job.
Dê um nome ao job.
Especifique a frequência, ou o intervalo, de execução do job usando uma string de configuração. Por exemplo, a string
0 */3 * * *
executa o job a cada 3 horas. É possível usar aqui qualquer string compatível com o formato crontab.Para mais informações, consulte Como configurar programações de jobs.
Na lista suspensa, escolha o fuso horário da frequência do job.
Especifique
HTTP
como destino:Especifique o URL totalmente qualificado do seu serviço, por exemplo,
https://myservice-abcdef-uc.a.run.app
. O job enviará solicitações para este URL.Especifique o método HTTP: o método precisa corresponder ao que o serviço do Cloud Run implantado anteriormente está esperando. O padrão é
POST
.Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação quando o método HTTP
POST
ouPUT
for selecionado.Clique em Mais para mostrar as configurações de autenticação.
No menu suspenso, selecione Adicionar token OIDC.
No campo Conta de serviço copie o e-mail da conta de serviço da conta de serviço criada anteriormente.
No campo Público, copie o URL completo do seu serviço.
Clique em Criar para criar e salvar o job.
Linha de comando
Você precisa usar a autenticação do OIDC para acessar um serviço autenticado do Cloud Run a partir do Cloud Scheduler. A autenticação do OIDC inclui a conta de serviço e as sinalizações de público-alvo. Para mais informações, consulte Usar autenticação para destinos HTTP.
Para criar o job 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 pelo método HTTP (por exemplo, GET, POST, PUT etc.).
- SERVICE-URL pelo URL do serviço.
- SERVICE-ACCOUNT-EMAIL pelo e-mail da sua conta de serviço.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Para criar um job do Cloud Scheduler para o serviço do Cloud Run:
O serviço do Cloud Run será acionado por meio de uma solicitação do job pelo Cloud Scheduler na frequência definida. Confirme e monitore isso examinando os registros desse serviço.
A seguir
- Como gerar e visualizar registros
- Como monitorar a integridade e o desempenho
- Como acionar a partir do Pub/Sub
- Como invocar com HTTPS