Ejecutar tareas

En esta página se describe cómo ejecutar trabajos de Cloud Run. Al ejecutar un trabajo, se crea una ejecución de trabajo en la que todas las tareas deben completarse correctamente para que la ejecución del trabajo se realice correctamente. Las ejecuciones de trabajos escriben registros en Cloud Logging y envían datos de monitorización a Cloud Monitoring.

Además de estas funciones de registro, también puede ver los detalles de ejecución de los 1000 trabajos más recientes en el panel de detalles de ejecución, así como los de cualquier ejecución que haya tenido lugar en los últimos siete días. Los detalles de ejecución antiguos se eliminan y ya no se muestran en el panel de detalles de ejecución. Sin embargo, los registros y los datos de monitorización de las ejecuciones anteriores siguen estando disponibles en Cloud Logging y Cloud Monitoring, de acuerdo con las políticas de conservación de esos productos.

Roles obligatorios

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

  • Para ejecutar tareas con Google Cloud CLI, usa Invocador de Cloud Run (roles/run.invoker) en la tarea de Cloud Run.
  • Para ejecutar tareas mediante la Google Cloud consola, anular configuraciones de tareas o cancelar ejecuciones de tareas, se necesita el rol Desarrollador de Cloud Run (roles/run.developer) en la tarea 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 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 permisos de implementación y el artículo sobre cómo gestionar el acceso.

Ejecutar tareas

Puedes ejecutar trabajos con la consola de Google Cloud , la CLI de Google Cloud, las bibliotecas de cliente o la API REST.

Consola

Para ejecutar un trabajo, sigue estos pasos:

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

    Ir a tareas de Cloud Run

  2. Busca el empleo que te interese.

  3. Haz clic en el trabajo para ver la página de detalles.

  4. Haz clic en la opción para ejecutar.

gcloud

Para ejecutar un trabajo que ya has creado, sigue estos pasos:

gcloud run jobs execute JOB_NAME

Si quieres que el comando espere hasta que se complete la ejecución, usa

gcloud run jobs execute JOB_NAME --wait --region=REGION

Haz los cambios siguientes:

  • JOB_NAME: el nombre del trabajo.
  • REGION: la región en la que se puede encontrar el recurso. Por ejemplo, europe-west1. También puedes definir la propiedad run/region.

Bibliotecas de cliente

Para ejecutar un trabajo ya creado desde el código, sigue estos pasos:

API REST

Para ejecutar un trabajo, envía una solicitud HTTP POST al método jobs.run de la API.

Por ejemplo, si usas curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

Haz los cambios siguientes:

Ejecutar tareas inmediatamente

Consola

Para ejecutar un trabajo inmediatamente, sigue estos pasos:

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

    Ir a tareas de Cloud Run

  2. Si ya tienes un trabajo, haz clic en él para ver los detalles y, a continuación, selecciona Ver y editar configuración del trabajo. Si vas a crear un trabajo, selecciona Implementar contenedor.

  3. Ve a la parte inferior de la página y marca la casilla Ejecutar tarea inmediatamente antes de crear o actualizar la tarea.

gcloud

Puedes especificar la marca --execute-now al crear o actualizar una tarea:

  • Crear una tarea:

    gcloud run jobs create JOB_NAME \
      --image IMAGE_URL \
      --execute-now \
      --region=REGION
  • Para actualizar una tarea, sigue estos pasos:

    gcloud run jobs update JOB_NAME --execute-now --region=REGION

Haz los cambios siguientes:

  • JOB_NAME: el nombre del trabajo.
  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • REGION: la región en la que se puede encontrar el recurso. Por ejemplo, europe-west1.

YAML

Puedes almacenar la especificación de tu trabajo en un archivo YAML y, a continuación, implementarlo con la CLI de gcloud.

  1. Si vas a crear un trabajo, sáltate este paso. Si vas a actualizar una tarea, descarga su configuración YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configure el atributo startExecutionToken como se muestra a continuación:

    apiVersion: run.googleapis.com/v2
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
      startExecutionToken: START_EXECUTION_SUFFIX

    Haz los cambios siguientes:

    • JOB_NAME: el nombre de tu tarea de Cloud Run. Los nombres de los trabajos deben tener 49 caracteres como máximo y ser únicos por región y proyecto.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • START_EXECUTION_SUFFIX: una cadena única que se usa como sufijo para crear una nueva ejecución. El trabajo estará listo cuando la ejecución se haya iniciado correctamente. La suma de la longitud del nombre de la tarea y del token debe ser inferior a 63 caracteres.

    También puedes especificar más opciones de configuración, como variables de entorno o límites de memoria.

  3. Crea o actualiza el trabajo con el siguiente comando:

    gcloud run jobs replace job.yaml

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_run_v2_job" "default" {
   name     = "cloudrun-job"
   location = "REGION"
   deletion_protection = false
   start_execution_token = "START_EXECUTION_SUFFIX"
   template {
      template {
         containers {
         image = "us-docker.pkg.dev/cloudrun/container/job"
         }
      }
   }
}

Haz los cambios siguientes:

  • REGION: la Google Cloud región. Por ejemplo, europe-west1.
  • START_EXECUTION_SUFFIX: una cadena única que se usa como sufijo para crear una nueva ejecución. El trabajo estará listo cuando la ejecución se haya iniciado correctamente. La suma de la longitud del nombre del trabajo y del token debe ser inferior a 63 caracteres.

Bibliotecas de cliente

Para ejecutar un trabajo inmediatamente desde el código mediante las bibliotecas de cliente de Cloud, sigue estos pasos:

API REST

Para ejecutar tareas inmediatamente después de crearlas, envía una solicitud HTTP POST al endpoint jobs de la API Admin de Cloud Run.

Por ejemplo, si usas curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{
     "template": {
        "template": {
           "containers":
              {
                 "image": "IMAGE_URL"
              }
        }
     },
     "startExecutionToken": "START_EXECUTION_SUFFIX"
  }' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs?jobId=JOB_NAME"

Haz los cambios siguientes:

  • ACCESS_TOKEN: un token de acceso válido para una cuenta que tenga los permisos de gestión de identidades y accesos para crear trabajos. Por ejemplo, si has iniciado sesión en gcloud, puedes obtener un token de acceso con gcloud auth print-access-token. Desde una instancia de contenedor de Cloud Run, puedes obtener un token de acceso mediante el servidor de metadatos de la instancia de contenedor.
  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • START_EXECUTION_SUFFIX: una cadena única que se usa como sufijo para crear una nueva ejecución. El trabajo estará listo cuando la ejecución se haya iniciado correctamente. La suma de la longitud del nombre del trabajo y del token debe ser inferior a 63 caracteres.
  • PROJECT_ID: el ID del proyecto. Google Cloud
  • REGION: la Google Cloud región del trabajo.
  • JOB_NAME: el nombre del trabajo que quieras crear.

Anular la configuración de un trabajo para una ejecución específica

Puedes anular los argumentos, las variables de entorno, el número de tareas y el tiempo de espera de las tareas configurados para una tarea al ejecutarla. Para ello, define estos parámetros al iniciar una nueva ejecución de la tarea. Los parámetros que especifiques solo afectarán a esta ejecución y no a las posteriores, ya que la definición del trabajo subyacente no cambiará.

Algunos casos prácticos habituales son los siguientes:

  • Ejecutas el trabajo de forma programática desde tu código y quieres anular argumentos o variables de entorno. Por ejemplo, para indicar al trabajo dónde se encuentran los datos de entrada de esta ejecución.
  • Tienes un trabajo en el que cada tarea solo debe procesar un fragmento de datos de entrada. Quieres anular el número de tareas en función del número de entradas que se van a procesar.
  • El tiempo de ejecución de tu trabajo varía entre ejecuciones. Quieres anular el tiempo de espera de la tarea en función del tiempo de ejecución previsto del trabajo.

Para anular la configuración de un trabajo en una ejecución:

Consola

  1. Ir a la página Tareas de Cloud Run

  2. Busca el empleo que te interese.

  3. Haz clic en el trabajo para ver la página de detalles.

  4. Haga clic en la flecha del desplegable situada delante del botón Editar y, a continuación, en Ejecutar con anulaciones para mostrar el formulario Ejecutar trabajo con anulaciones.

    imagen

  5. Cambia los argumentos, las variables de entorno, el número de tareas o la configuración del tiempo de espera de las tareas de esta ejecución como quieras y, a continuación, haz clic en Ejecutar.

gcloud

Usa el comando:

gcloud run jobs execute JOB_NAME \
     --args ARGS \
     --update-env-vars KEY=VALUE>,KEY_N=VALUE_N \
     --tasks TASKS \
     --task-timeout TIMEOUT

Haz los cambios siguientes:

Bibliotecas de cliente

Para ejecutar una tarea desde el código y anular la configuración de la tarea, sigue estos pasos:

API REST

Para anular la configuración de un trabajo, envía una solicitud HTTP POST a la API Admin de Cloud Run jobs endpoint.

Por ejemplo, si usas curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{"overrides": {"containerOverrides": [{"args": ["ARGS"], "env": [{"name": "KEY", "value": "VALUE"}]}], "taskCount": TASKS, "timeout": "TIMEOUT" }}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

Haz los cambios siguientes:

Cancelar la ejecución de una tarea

Para detener la ejecución de un trabajo de Cloud Run, usa la función de cancelación. Si cancelas la ejecución de un trabajo, se detendrá la ejecución actual. Las ejecuciones canceladas tienen el estado cancelled. Seguirás pudiendo ver la ejecución, incluidos sus datos de configuración, registros y datos de monitorización.

Si cancelas la ejecución de una tarea, no se anulan los cargos por el uso de las tareas de Cloud Run durante el tiempo que se haya ejecutado la tarea.

Para cancelar una ejecución, sigue estos pasos:

Consola

  1. Ir a la página Tareas de Cloud Run

  2. Haz clic en el trabajo para abrir el panel de detalles del trabajo.

  3. Selecciona la ejecución de la tarea que quieras cancelar.

  4. En el menú Acciones, haz clic en el icono de los puntos suspensivos y, a continuación, en Cancelar.

gcloud

Usa el comando:

gcloud run jobs executions cancel EXECUTION_NAME

Sustituye EXECUTION_NAME por el nombre de la ejecución.

Este comando pide confirmación, así que responde a la petición introduciendo y para confirmar.

Bibliotecas de cliente

Para cancelar la ejecución de un trabajo desde el código, sigue estos pasos:

API REST

Para cancelar la ejecución de un trabajo, envía una solicitud HTTP POST a la API Admin de Cloud Run jobs endpoint

Por ejemplo, si usas curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME/executions/EXECUTION-NAME:cancel

Haz los cambios siguientes:

Eliminar una ejecución de tarea

Puedes eliminar una ejecución de un trabajo, aunque esté en curso. Si eliminas una ejecución, esta se detendrá. Para obtener más información, consulta Eliminar una ejecución de un trabajo.

Siguientes pasos

Después de ejecutar un trabajo, puedes hacer lo siguiente: