Ejecuta trabajos según un programa

En esta página, se describe cómo ejecutar trabajos de Cloud Run según un programa con Cloud Scheduler.

Roles obligatorios

Para obtener los permisos que necesitas para las operaciones descritas en esta página, pídele a tu administrador que te otorgue los roles de IAM en tu trabajo de Cloud Run:

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu trabajo de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.

Antes de comenzar

  1. Crea un trabajo de Cloud Run si aún no lo hiciste.
  2. Habilita la API de Cloud Scheduler para tu proyecto:

    gcloud services enable cloudscheduler.googleapis.com
    

Configura un trabajo de Cloud Run para que se ejecute según un programa

Puedes configurar un trabajo de Cloud Run para que se ejecute según un programa con la consola deGoogle Cloud , gcloud CLI o Terraform:

Console

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a Trabajos de Cloud Run

  2. Haz clic en el trabajo que deseas ejecutar según un programa.

  3. Hacer clic en la pestaña Activadores

  4. Haz clic en Agregar activador de Scheduler.

  5. En el formulario de trabajo de Cloud Scheduler, sigue estos pasos:

    1. En Nombre, ingresa un nombre para tu trabajo de Cloud Scheduler.

    2. En Región, selecciona una región para tu trabajo de Cloud Scheduler. No es necesario que coincida con la región que se usa para el trabajo de Cloud Run.

    3. Especifica la frecuencia de tu trabajo usando el formato unix-cron, por ejemplo, 0 12 * * *

    4. Selecciona tu zona horaria.

    5. Haz clic en Continuar.

    6. En la sección Configura la ejecución, selecciona la cuenta de servicio que tiene permiso para invocar el trabajo actual de Cloud Run.

  6. Haz clic en Crear para crear el trabajo de Cloud Scheduler que ejecutará el trabajo de Cloud Run con la frecuencia especificada.

gcloud

Ejecuta el siguiente 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:run" \
      --http-method POST \
      --oauth-service-account-email PROJECT_NUMBER-compute@developer.gserviceaccount.com

Reemplaza lo siguiente:

  • SCHEDULER_JOB_NAME: Es el nombre que deseas darle a tu trabajo del programador.
  • SCHEDULER_REGION: Una región compatible con Cloud Scheduler, por ejemplo, europe-west2.
  • SCHEDULE: Es la frecuencia necesaria, por ejemplo, 0 12 * * *.
  • PROJECT_ID: Es el ID del proyecto.
  • CLOUD_RUN_REGION: la región del trabajo de Cloud Run. Por ejemplo, europe-west1
  • JOB por el nombre del trabajo de Cloud Run.
  • PROJECT_NUMBER: Es el número de tu proyecto.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un recurso google_cloud_run_v2_job en tu configuración de Terraform:
resource "google_cloud_scheduler_job" "job" {
  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://run.googleapis.com/v2/projects/${data.google_project.project.project_id}/locations/${google_cloud_run_v2_job.default.location}/jobs/${google_cloud_run_v2_job.default.name}:run"
    body        = base64encode("{}")

    headers = {
      "Content-Type" = "application/json"
    }

    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]
}

Cloud Scheduler ejecutará el trabajo de Cloud Run con la frecuencia especificada.

Programa tu trabajo dentro de un perímetro de Controles del servicio de VPC

Si tu Google Cloud proyecto se encuentra dentro de un perímetro de Controles del servicio de VPC en una red de nube privada virtual, la integración de Cloud Scheduler con los Controles del servicio de VPC admite trabajos de Cloud Run como destino con el siguiente formato de URI:

https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB:run

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • REGION: La Google Cloud región del trabajo.
  • JOB por el nombre del trabajo de Cloud Run.

Para obtener más información sobre la configuración de los Controles del servicio de VPC para Cloud Run, consulta Usa los Controles del servicio de VPC (VPC SC). Para obtener más información sobre el uso de Cloud Scheduler con los Controles del servicio de VPC, consulta Protege los trabajos cron con los Controles del servicio de VPC.

¿Qué sigue?

Después de usar esta función, puedes hacer lo siguiente: