Como executar serviços de uma programação

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:

  1. No seu serviço, implemente o job que você quer executar em uma programação.

  2. Observe de qual tipo de solicitação seu serviço espera receber as solicitações de job (por exemplo, GET ou POST). Ao criar o job programado que invoca o serviço, você precisa especificar o método HTTP que corresponde a ele.

  3. Se você estiver usando o Cloud Run para Anthos no Google Cloud, será necessário confirmar a identidade no contêiner. Veja o código de amostra do IAP que demonstra isso.

  4. Quando você implanta o serviço que está usando com o Cloud Scheduler, lembre-se de NÃO permitir invocações não autenticadas.

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

  1. Acesse a página Criar chave da conta de serviço no Console do Cloud.

    Página "Criar conta de serviço"

  2. Na lista Conta de serviço, selecione Nova conta de serviço.

  3. No campo Nome da conta de serviço, digite o nome que quer usar para a conta de serviço.

  4. Clique em Criar.

  5. Copie o e-mail da conta de serviço para usar nas etapas a seguir.

  6. Clique em Continuar se solicitado a especificar permissões.

  7. Acesse a página Serviços do Cloud Run no Console do Cloud.

    Acessar a página de serviços

  8. Selecione seu serviço na lista exibida.

  9. Se necessário, clique no botão Mostrar painel de informações/Ocultar painel de informações à direita da página para exibir informações.

  10. Localize a guia Permissões e, nessa guia, clique em Adicionar membro.

  11. Cole o e-mail da sua conta de serviço no campo Novos membros.

  12. No menu suspenso "Papel", selecione Cloud Run > Chamador do Cloud Run.

  13. Clique em Salvar.

Linha de comando

  1. Crie a conta de serviço:

    gcloud iam service-accounts create SERVICE-ACCOUNT_NAME \
       --display-name "DISPLAYED-SERVICE-ACCOUNT_NAME"

    Substitua:

    • 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.
  2. 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

    Substitua:

    • 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 do projeto do Google Cloud.

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

  1. Acesse a página do Console do Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Clique em Criar job.

    captura de tela

  3. Dê um nome ao job.

  4. 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.

  5. Na lista suspensa, escolha o fuso horário da frequência do job.

  6. Especifique HTTP como destino:

    1. 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.

    2. 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.

    3. 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 ou PUT for selecionado.

    4. Clique em Mais para mostrar as configurações de autenticação.

    5. No menu suspenso, selecione Adicionar token OIDC.

    6. No campo Conta de serviço copie o e-mail da conta de serviço da conta de serviço criada anteriormente.

    7. No campo Público, copie o URL completo do seu serviço.

  7. Clique em Criar para criar e salvar o job.

Gcloud

  1. Crie o job:

    gcloud beta 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

    Substitua:

    • 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.

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