Gestionar tareas cron

Destino de Pub/Sub

Si elige el tipo de destino Pub/Sub:

  1. Especifica el nombre del tema en el que se publicará el trabajo. Se trata de un tema de Pub/Sub que ya has configurado en tu proyecto.

  2. Especifica el mensaje que se enviará al tema. Se envía como el parámetro data en el mensaje de Pub/Sub. Para ver un ejemplo de cómo hacerlo, consulta la guía de inicio rápido.

  3. Añade los atributos de mensaje que necesites.

  4. Configure los ajustes adicionales en la sección Configure optional settings.

Cloud Scheduler publicará mensajes en este tema como cuenta de servicio de las APIs de Google.

Destino HTTP de App Engine

Si eliges el tipo de destino HTTP de App Engine, debes usar la aplicación de App Engine y la región asociadas al proyecto actual. Si quieres usar otra aplicación de App Engine que no esté en tu proyecto actual, elige HTTP como destino, no HTTP de App Engine. Las reglas de cortafuegos de destino deben permitir las solicitudes del intervalo de direcciones IP 0.1.0.2/32.

Configura el formulario de la siguiente manera:

  1. En la lista Tipo de destino, selecciona HTTP de App Engine.

  2. Especifica el nombre del servicio de App Engine que ejecuta el controlador de la tarea de Cloud Scheduler. Si se omite, se supone que es el servicio default. Si quieres configurarlo, puedes encontrar los nombres de los servicios en la Google Cloud consola.

  3. También puede especificar la versión. Si no se define, se usa la versión que se está usando. Puedes consultar las versiones disponibles en la Google Cloud consola.

  4. Si quiere, puede especificar la instancia. Si no se define ningún valor, se puede usar cualquier instancia disponible. Puedes consultar las versiones disponibles en la Google Cloud consola.

  5. Especifica la URL relativa del endpoint de App Engine con el que se pondrá en contacto el trabajo. Si usas el valor predeterminado /, la tarea usará PROJECT-ID.appspot.com, donde PROJECT-ID es el ID de tu proyecto actual.

  6. Define el método HTTP que quieras usar cuando se ejecute el trabajo. El valor predeterminado es POST.

  7. Añade los encabezados que necesites a la solicitud.

  8. Opcionalmente, especifica los datos del cuerpo que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

Los endpoints de App Engine de destino deben estar en el mismo proyecto y se pueden proteger con login: admin en el elemento handlers del archivo app.yaml.

Destino HTTP

Si elige el tipo de destino HTTP:

  1. Especifica la URL completa del endpoint con el que se pondrá en contacto el trabajo.

  2. Especifica el método HTTP. El valor predeterminado es POST.

  3. Si quiere, especifique los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  4. Añade los encabezados que necesites.

  5. Para crear un trabajo de destino HTTP que requiera autenticación, consulta Usar la autenticación con destinos HTTP.

Los endpoints HTTP de destino deben ser de acceso público.

Puedes usar Cloud Scheduler para configurar unidades de trabajo programadas, conocidas como tareas cron, que se envían a destinos con una programación periódica, también llamada intervalo o frecuencia de la tarea.

Solo se debe ejecutar una instancia de un trabajo en cualquier momento. En raras ocasiones, es posible que se soliciten varias instancias del mismo trabajo. Por lo tanto, el controlador de solicitudes debe ser idempotente y el código debe asegurarse de que no haya efectos secundarios perjudiciales si esto ocurre.

Cloud Scheduler está diseñado para tareas repetitivas. Si solo necesitas ejecutar un trabajo una vez, te recomendamos que uses Cloud Tasks, que puede programar una tarea con hasta 30 días de antelación.

Antes de empezar

Asegúrate de haber configurado tu entorno para Cloud Scheduler.

Elige un tipo de objetivo

Cloud Scheduler puede invocar los siguientes tipos de destinos:

Invocar servicios de destino restringidos a la entrada interna

Cloud Scheduler puede invocar los siguientes servicios internamente:

  • Cloud Run Functions
  • Cloud Run (en la URL run.app, no en dominios personalizados)

Para invocar estos destinos internamente, el destino debe estar en el mismo proyecto o perímetro de Controles de Servicio de VPC que tu trabajo de Cloud Scheduler.Google Cloud

Para obtener más información sobre cómo proteger los destinos restringiendo el tráfico de entrada, consulta Restringir el tráfico de entrada (en Cloud Run) y Configurar los ajustes de red (en las funciones de Cloud Run).

Crear una tarea

Puedes crear un trabajo mediante la Google Cloud consola o la CLI de Google Cloud.

Consola

  1. En la Google Cloud consola, ve a la página Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Haz clic en Crear trabajo.

  3. En el campo Name (Nombre), asigna un nombre a la tarea que sea único en el proyecto.

    Después de eliminar el trabajo asociado, puede volver a usar el nombre de un trabajo en un proyecto.

  4. En la lista Región, selecciona una región.

    Si usas un destino HTTP de App Engine, debes elegir la misma región que tu aplicación de App Engine. Para obtener más información, consulta Regiones admitidas por destino.

  5. Si quiere, puede añadir una breve descripción del trabajo, como un recordatorio de lo que hace.

    Esta descripción aparece en la consola junto al nombre del trabajo.

  6. Especifica la frecuencia con la que se debe ejecutar la tarea mediante una cadena de configuración.

    Por ejemplo, la cadena 0 1 * * 0 ejecuta el trabajo una vez a la semana a la 1:00 todos los domingos por la mañana. La cadena que proporciones aquí puede ser cualquier cadena compatible con unix-cron. Para obtener más información, consulta Configurar programaciones de tareas cron.

  7. En la lista Zona horaria, elija la zona horaria que se usará para la programación del trabajo.

  8. Haz clic en Continuar.

  9. Especifica el Tipo de objetivo:

    • HTTP

    • Pub/Sub: debes especificar el nombre del tema de Pub/Sub que ya hayas configurado en tu proyecto y en el que se publicará el trabajo.

    • HTTP de App Engine: debes usar la aplicación de App Engine y la región asociadas al proyecto actual.

  10. Haz clic en Continuar.

  11. Si quieres configurar el comportamiento de reintento, haz clic en Configurar ajustes opcionales. Para especificar la duración, usa una secuencia de números enteros decimales no negativos con los siguientes sufijos de unidad:

    • h - hora
    • m - minuto
    • s - segundo
    • ms - milisegundo
    • us - microsegundo
    • ns: nanosegundo

    No se permiten valores negativos ni fraccionarios. El campo Max retry duration solo admite los valores h, m y s. Tanto Min backoff duration como Max backoff duration admiten el conjunto completo.

  12. De forma opcional, en el caso de los destinos HTTP y HTTP de App Engine, configura un plazo para los intentos de trabajo. Si el controlador de solicitudes no responde antes de esta fecha límite, la solicitud se cancela y el intento se marca como fallido. Cloud Scheduler vuelve a intentar ejecutar la tarea según la configuración de reintento.

  13. Para crear y guardar el trabajo, haz clic en Crear.

    La tarea se ejecutará con la frecuencia especificada.

gcloud

Cuando creas un trabajo con gcloud CLI, usas comandos diferentes para cada tipo de destino:

HTTP

Puedes enviar una solicitud a cualquier endpoint HTTP o HTTPS. Los endpoints HTTP de destino deben ser de acceso público.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Haz los cambios siguientes:

  • JOB: un nombre de trabajo que debe ser único en el proyecto. Ten en cuenta que no puedes volver a usar el nombre de un trabajo en un proyecto aunque elimines el trabajo asociado.

  • LOCATION: la ubicación en la que se ejecutará el trabajo.

  • SCHEDULE: frecuencia o intervalo de trabajo con el que se debe ejecutar el trabajo. Por ejemplo, every 3 hours. La cadena que proporciones aquí puede ser cualquier cadena compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine antigua sigue siendo compatible con los trabajos que ya existen.

    Para obtener más información, consulta Configurar programaciones de tareas cron.

  • URI: el URI completo del endpoint con el que se pondrá en contacto el trabajo.

Otros parámetros se describen en la referencia de la línea de comandos gcloud:

  • Opcionalmente, especifica el método HTTP. El valor predeterminado es POST.

  • Si quiere, especifique los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  • También puede definir los valores de reintento, que especifican cómo se debe reintentar el trabajo de App Engine en caso de fallo. En la mayoría de los casos, los valores predeterminados serán suficientes.

  • Para crear un trabajo de destino HTTP que requiera autenticación, consulta Usar la autenticación con destinos HTTP.

Ejemplo

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Debes usar un tema de Pub/Sub que ya hayas configurado en tu proyecto. Cloud Scheduler publicará mensajes en este tema como cuenta de servicio de la API de Google.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Haz los cambios siguientes:

  • JOB: un nombre de trabajo que debe ser único en el proyecto. Ten en cuenta que no puedes volver a usar el nombre de un trabajo en un proyecto aunque elimines el trabajo asociado.

  • LOCATION: la ubicación en la que se ejecutará el trabajo.

  • SCHEDULE: frecuencia o intervalo de trabajo con el que se debe ejecutar el trabajo. Por ejemplo, every 3 hours. La cadena que proporciones aquí puede ser cualquier cadena compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine antigua sigue siendo compatible con los trabajos que ya existen.

    Para obtener más información, consulta Configurar programaciones de tareas cron.

  • TOPIC: el nombre del tema en el que se publicará el trabajo. Usa la marca --message-body o --message-body-from-file para especificar un mensaje que se enviará al tema. Se envía como el parámetro data en el mensaje de Pub/Sub. Para ver un ejemplo de cómo hacerlo, consulta la guía de inicio rápido.

Otros parámetros se describen en la referencia de la línea de comandos gcloud.

Ejemplo

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

HTTP de App Engine

El destino App Engine HTTP solo está disponible para la aplicación de App Engine asociada al proyecto actual. Si quieres usar otra aplicación de App Engine que no esté en tu proyecto actual, elige HTTP como destino, no App Engine HTTP. Las reglas de cortafuegos de destino deben permitir las solicitudes del intervalo de direcciones IP 0.1.0.2/32.

Los endpoints de App Engine se pueden proteger con login: admin en el elemento handlers del archivo app.yaml.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Haz los cambios siguientes:

  • JOB: un nombre de trabajo que debe ser único en el proyecto. Ten en cuenta que no puedes volver a usar el nombre de un trabajo en un proyecto aunque elimines el trabajo asociado.

  • LOCATION: la ubicación en la que se ejecutará el trabajo. Debe ser la misma que la de tu aplicación de App Engine.

  • SCHEDULE: frecuencia o intervalo de trabajo con el que se debe ejecutar el trabajo. Por ejemplo, every 3 hours. La cadena que proporciones aquí puede ser cualquier cadena compatible con cron de Unix. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine antigua sigue siendo compatible con los trabajos que ya existen.

    Para obtener más información, consulta Configurar programaciones de tareas cron.

Otros parámetros se describen en la referencia de la línea de comandos gcloud:

  • Especifica la URL relativa del endpoint de App Engine con el que se pondrá en contacto el trabajo. Si usas el valor predeterminado /, la tarea usará PROJECT-ID.appspot.com, donde PROJECT-ID es el ID de tu proyecto actual.

  • Especifica el nombre del servicio de App Engine que ejecuta el controlador de la tarea de Cloud Scheduler. Si se omite, se supone que es el servicio default. Si quieres configurarlo, puedes consultar los nombres de los servicios en la Google Cloud consola.

  • De forma opcional, define el método HTTP que quieras usar cuando se ejecute el trabajo. El valor predeterminado es POST.

  • También puede especificar la versión. Si no se define, se usa la versión que se está usando. Puedes consultar las versiones disponibles en la Google Cloud consola.

  • Si quiere, puede especificar la instancia. Si no se define ningún valor, se puede usar cualquier instancia disponible. Puedes consultar las versiones disponibles en la Google Cloud consola.

  • Si quiere, especifique los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  • También puede definir los valores de reintento, que especifican cómo se debe reintentar el trabajo de App Engine en caso de fallo. En la mayoría de los casos, los valores predeterminados son suficientes.

Ejemplo

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Editar una tarea

Puedes editar la configuración de una tarea.

Consola

  1. En la Google Cloud consola, ve a la página Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieras editar.

  3. Haz clic en Editar.

  4. Sigue los pasos para definir la programación, configurar la ejecución y configurar los ajustes opcionales al crear un trabajo.

gcloud

Cuando editas un trabajo con la CLI de gcloud, usas comandos diferentes para cada tipo de destino:

HTTP

Puedes enviar una solicitud a cualquier endpoint HTTP o HTTPS. Los endpoints HTTP de destino deben ser de acceso público.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Haz los cambios siguientes:

  • JOB: un nombre de trabajo que debe ser único en el proyecto. Ten en cuenta que no puedes volver a usar el nombre de un trabajo en un proyecto aunque elimines el trabajo asociado.

  • LOCATION: la ubicación en la que se ejecuta el trabajo. Si no especifica la ubicación, la CLI de gcloud usará la ubicación predeterminada. Si el trabajo que quieres editar se encuentra en otra ubicación, debes especificarla además del NAME para que se pueda identificar. No puedes actualizar la ubicación del empleo.

  • SCHEDULE: frecuencia o intervalo de trabajo con el que se debe ejecutar el trabajo. Por ejemplo, every 3 hours. La cadena que proporciones aquí puede ser cualquier cadena compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine antigua sigue siendo compatible con los trabajos que ya existen.

    Para obtener más información, consulta Configurar programaciones de tareas cron.

  • URI: el URI completo del endpoint con el que se pondrá en contacto el trabajo.

Otros parámetros se describen en la referencia de la línea de comandos gcloud.

Ejemplo

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Debes usar un tema de Pub/Sub que ya hayas configurado en tu proyecto. Cloud Scheduler publicará mensajes en este tema como cuenta de servicio de la API de Google.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Haz los cambios siguientes:

  • JOB: un nombre de trabajo que debe ser único en el proyecto. Ten en cuenta que no puedes volver a usar el nombre de un trabajo en un proyecto aunque elimines el trabajo asociado.

  • LOCATION: la ubicación en la que se ejecuta el trabajo. Si no especifica la ubicación, la CLI de gcloud usará la ubicación predeterminada. Si el trabajo que quieres editar se encuentra en otra ubicación, debes especificarla además del NAME para que se pueda identificar. No puedes actualizar la ubicación del empleo.

  • SCHEDULE: frecuencia o intervalo de trabajo con el que se debe ejecutar el trabajo. Por ejemplo, every 3 hours. La cadena que proporciones aquí puede ser cualquier cadena compatible con cron de Unix. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine antigua sigue siendo compatible con los trabajos que ya existen.

    Para obtener más información, consulta Configurar programaciones de tareas cron.

  • TOPIC: el nombre del tema en el que se publicará el trabajo. Usa la marca --message-body o --message-body-from-file para especificar un mensaje que se enviará al tema. Se envía como el parámetro data en el mensaje de Pub/Sub. Para ver un ejemplo de cómo hacerlo, consulta la guía de inicio rápido.

Otros parámetros se describen en la referencia de la línea de comandos gcloud.

Ejemplo

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

HTTP de App Engine

El destino App Engine HTTP solo está disponible para la aplicación de App Engine asociada al proyecto actual. Si quieres usar otra aplicación de App Engine que no esté en tu proyecto actual, elige HTTP como destino, no App Engine HTTP.

Los endpoints de App Engine se pueden proteger con login: admin en el elemento handlers del archivo app.yaml.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Haz los cambios siguientes:

  • JOB: un nombre de trabajo que debe ser único en el proyecto. Ten en cuenta que no puedes volver a usar el nombre de un trabajo en un proyecto aunque elimines el trabajo asociado.

  • LOCATION: la ubicación en la que se ejecuta el trabajo (es la misma que la de tu aplicación de App Engine de destino). Si no especifica la ubicación, la CLI de gcloud usará la ubicación predeterminada. Si el trabajo que quieres editar se encuentra en otra ubicación, debes especificarla además del NAME para que se pueda identificar. No puedes actualizar la ubicación del empleo.

  • SCHEDULE: frecuencia o intervalo de trabajo con el que se debe ejecutar el trabajo. Por ejemplo, every 3 hours. La cadena que proporciones aquí puede ser cualquier cadena compatible con cron de Unix. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine antigua sigue siendo compatible con los trabajos que ya existen.

    Para obtener más información, consulta Configurar programaciones de tareas cron.

Otros parámetros se describen en la referencia de la línea de comandos gcloud.

Ejemplo

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Pausar una tarea

Puedes pausar la ejecución de un trabajo.

Consola

  1. En la Google Cloud consola, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona la tarea que quieras pausar.

  3. Haz clic en Pausar.

gcloud

  1. Abre una ventana de terminal en el equipo en el que has instalado la CLI de gcloud.

  2. Ejecuta el comando:

     gcloud scheduler jobs pause MY_JOB
    

    Sustituye MY_JOB por el nombre del trabajo que quieras pausar.

Mientras un trabajo está en pausa, también puedes editarlo. Después de editar el trabajo, permanecerá en pausa hasta que lo reanudes.

Reanudar una tarea

Puedes reanudar la ejecución de un trabajo en pausa.

Consola

  1. En la Google Cloud consola, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieras reanudar.

    La tarea ya debe estar pausada.

  3. Haz clic en Reanudar.

gcloud

  1. Abre una ventana de terminal en el equipo en el que has instalado la CLI de gcloud.

  2. Ejecuta el comando:

     gcloud scheduler jobs resume MY_JOB
    

    Sustituye MY_JOB por el nombre del trabajo que quieras reanudar.

Eliminar una tarea

Puedes eliminar un trabajo.

Consola

  1. En la Google Cloud consola, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieras eliminar.

  3. Haz clic en Eliminar.

gcloud

  1. Abre una ventana de terminal en el equipo en el que has instalado la CLI de gcloud.

  2. Ejecuta el comando:

     gcloud scheduler jobs delete MY_JOB
    

    Sustituye MY_JOB por el nombre del trabajo que quieras eliminar.