Ejecutar tareas según una programación

En esta página se describe cómo ejecutar trabajos de Cloud Run de forma programada con Cloud Scheduler.

Si tu Google Cloud proyecto está dentro de un perímetro de Controles de Servicio de VPC en una red de nube privada virtual, consulta Ejecutar trabajos de forma programada en un perímetro de Controles de Servicio de VPC para obtener instrucciones sobre cómo programar trabajos para ese caso práctico.

Roles obligatorios

Para obtener los permisos que necesitas para las operaciones descritas en esta página, pide a tu administrador que te conceda los roles de gestión de identidades y accesos en tu trabajo de Cloud Run:

Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu trabajo de Cloud Run interactúa con APIs deGoogle Cloud , como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad de servicio. Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.

Antes de empezar

Crea una tarea de Cloud Run.

Configurar una tarea de Cloud Run para que se ejecute según una programación

Para ejecutar una tarea de Cloud Run según una programación, haz lo siguiente:

Consola

  1. Ir a tareas de Cloud Run

  2. Haz clic en el trabajo que quieras ejecutar según una programación.

  3. Haz clic en la pestaña Activadores.

  4. Haz clic en Añadir activador de programador.

  5. Si aún no has habilitado la API Cloud Scheduler en tu proyecto, se te pedirá que lo hagas en el panel de la derecha. Haz clic en Habilitar API.

  6. Rellena el formulario de tarea de Cloud Scheduler

    imagen

  7. En Definir una programación:

    1. Asigna un nombre a tu tarea de Cloud Scheduler.

    2. Selecciona una región para tu tarea de Cloud Scheduler. No tiene que coincidir con la región usada en la tarea de Cloud Run.

    3. Especifique la frecuencia de ejecución del trabajo con el formato cron para UNIX. Por ejemplo, 0 12 * * *.

    4. Selecciona tu zona horaria.

  8. Haz clic en Continuar.

  9. En el menú desplegable Cuenta de servicio, selecciona una cuenta de servicio que tenga permiso para invocar el servicio de Cloud Run actual.

  10. Haga clic en Crear para crear la tarea de Cloud Scheduler que ejecutará la tarea de Cloud Run con la frecuencia especificada.

Línea de comandos

  1. Primero debes crear un trabajo de Cloud Run.

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

    Sustituir

    • SCHEDULER_JOB_NAME con el nombre que quieras asignar al trabajo del programador.
    • SCHEDULER_REGION con una región compatible con Cloud Scheduler, por ejemplo, europe-west2.
    • CLOUD_RUN_REGION por la región de tu trabajo de Cloud Run. Para obtener una vista previa, usa europe-west9.
    • SCHEDULE con la frecuencia que quieras, por ejemplo, 0 12 * * *
    • PROJECT-ID por el ID del proyecto.
    • PROJECT-NUMBER con el número de tu proyecto.
    • JOB-NAME con tu tarea de Cloud Run.

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_job en tu configuración de 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]
}

Cloud Scheduler ejecutará la tarea de Cloud Run con la frecuencia especificada.

Siguientes pasos

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