Executar tarefas com base numa programação

Esta página descreve como executar tarefas do Cloud Run de forma programada através do Cloud Scheduler.

Se o seu Google Cloud projeto estiver dentro de um perímetro do VPC Service Controls numa rede de nuvem virtual privada, consulte o artigo Execute trabalhos de forma agendada num perímetro do VPC Service Controls para ver instruções sobre como agendar trabalhos para esse exemplo de utilização.

Funções necessárias

Para receber as autorizações de que precisa para as operações descritas nesta página, peça ao seu administrador para lhe conceder as funções de IAM na sua tarefa do Cloud Run:

Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se a sua tarefa do Cloud Run interagir com Google Cloud APIs, como as bibliotecas de cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.

Antes de começar

Crie uma tarefa do Cloud Run.

Configure uma tarefa do Cloud Run para execução de acordo com uma programação

Para executar uma tarefa do Cloud Run com base numa programação:

Consola

  1. Aceda às tarefas do Cloud Run

  2. Clique na tarefa que quer executar de acordo com uma programação.

  3. Clique no separador Acionadores.

  4. Clique em Adicionar acionador do agendador.

  5. Se ainda não ativou a API Cloud Scheduler para o seu projeto, é-lhe pedido que o faça no painel do lado direito: clique em Ativar API.

  6. Preencha o formulário de tarefas do Cloud Scheduler

    imagem

  7. Em Defina um horário:

    1. Atribua um nome à tarefa do Cloud Scheduler.

    2. Selecione uma região para a sua tarefa do Cloud Scheduler. Não tem de corresponder à região usada para a tarefa do Cloud Run.

    3. Especifique a frequência de execução da tarefa, usando o formato unix-cron, por exemplo, 0 12 * * *

    4. Selecione o seu fuso horário.

  8. Clique em Continuar.

  9. No menu pendente Conta de serviço, selecione uma conta de serviço que tenha autorização para invocar o serviço do Cloud Run atual.

  10. Clique em Criar para criar a tarefa do Cloud Scheduler que vai executar a tarefa do Cloud Run na frequência especificada.

Linha de comandos

  1. Certifique-se de que cria primeiro uma tarefa do Cloud Run.

  2. Execute o comando:

    gcloud scheduler jobs create http SCHEDULER_JOB_NAME \
      --location SCHEDULER_REGION \
      --schedule="SCHEDULE" \
      --uri="https://run.googleapis.com/v2/projects/PROJECT-ID/locations/CLOUD_RUN_REGION/jobs/JOB-NAME:run" \
      --http-method POST \
      --oauth-service-account-email PROJECT-NUMBER-compute@developer.gserviceaccount.com

    Substituir

    • SCHEDULER_JOB_NAME com o nome que quer dar à tarefa do agendador.
    • SCHEDULER_REGION com uma região suportada pelo Cloud Scheduler, por exemplo, europe-west2.
    • CLOUD_RUN_REGION com a região da tarefa do Cloud Run. Para pré-visualizar, use europe-west9.
    • SCHEDULE com a frequência desejada, por exemplo, 0 12 * * *
    • PROJECT-ID com o ID do seu projeto.
    • PROJECT-NUMBER com o número do projeto.
    • JOB-NAME com a sua tarefa do Cloud Run.

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_job na sua configuração do Terraform:

resource "google_cloud_scheduler_job" "job" {
  provider         = google-beta
  name             = "schedule-job"
  description      = "test http job"
  schedule         = "*/8 * * * *"
  attempt_deadline = "320s"
  region           = "us-central1"
  project          = data.google_project.project.project_id

  retry_config {
    retry_count = 3
  }

  http_target {
    http_method = "POST"
    uri         = "https://${google_cloud_run_v2_job.default.location}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${data.google_project.project.number}/jobs/${google_cloud_run_v2_job.default.name}:run"

    oauth_token {
      service_account_email = google_service_account.cloud_run_invoker_sa.email
    }
  }

  depends_on = [resource.google_project_service.cloudscheduler_api, resource.google_cloud_run_v2_job.default, resource.google_cloud_run_v2_job_iam_binding.binding]
}

O Cloud Scheduler executa a tarefa do Cloud Run na frequência especificada.

O que se segue?

Depois de usar esta funcionalidade, pode fazer o seguinte: