Crea y configura trabajos cron

Destino de Pub/Sub

Si eliges el tipo de destino Pub/Sub:

  1. Especifica el nombre del tema en el que se publicará el trabajo. Este es un tema de Pub/Sub que ya configuraste en tu proyecto.

  2. Especifica el mensaje que se enviará al tema. Esto se envía como el parámetro data en el mensaje de Pub/Sub. Para ver un ejemplo que lo haga, consulta la Guía de inicio rápido.

  3. Agrega los atributos de mensaje que necesites.

  4. Establece cualquier configuración adicional mediante la sección Configure optional settings.

Cloud Scheduler publicará mensajes en este tema como una cuenta de servicio de las API 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 asociada con el proyecto actual. Si quieres usar otra app de App Engine fuera de tu proyecto actual, elige HTTP como destino, no HTTP de App Engine. Las reglas de firewall de destino deben permitir solicitudes del rango de IP 0.1.0.2/32.

Configura el formulario como se indica a continuación:

  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 para el trabajo de Cloud Scheduler. Si se omite, se supone que es el servicio default. Si deseas establecerlo, puedes encontrar los nombres de los servicios en la consola de Google Cloud.

  3. De manera opcional, especifica la versión. Si no se establece, se usa la versión en uso actual. Puedes encontrar versiones disponibles en la consola de Google Cloud.

  4. De manera opcional, especifica la instancia. Si no se establece, se puede usar cualquier instancia disponible. Puedes encontrar versiones disponibles en la consola de Google Cloud.

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

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

  7. Agrega los encabezados que necesites a la solicitud.

  8. De manera opcional, 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 extremos de App Engine segmentados deben estar en el mismo proyecto y se pueden proteger con login: admin en el elemento handlers del archivo app.yaml.

Destino HTTP

Si eliges el tipo de destino HTTP, haz lo siguiente:

  1. Especifique la URL completamente calificada del extremo con el que se pondrá en contacto el trabajo.

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

  3. De manera opcional, especifica 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. Agrega los encabezados que necesites.

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

Los extremos HTTP objetivo deben ser de acceso público.

Puedes usar Cloud Scheduler para configurar unidades de trabajo programadas, conocidas como trabajos cron, que se envían a los objetivos en un programa recurrente, también llamado intervalo o frecuencia de trabajo.

Solo se debe ejecutar una instancia de trabajo a la vez. En circunstancias excepcionales, es posible que se soliciten varias instancias del mismo trabajo. Como resultado, tu controlador de solicitudes debe ser idempotente, y tu código debe garantizar que no haya efectos secundarios dañinos si esto ocurre.

Cloud Scheduler está diseñado para trabajos recurrentes. Si necesitas ejecutar un trabajo solo una vez, considera usar Cloud Tasks, que puede programar una tarea con hasta 30 días de anticipación.

Antes de comenzar

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

Elige un tipo de destino

Cloud Scheduler puede invocar los siguientes tipos de destinos:

Invoca servicios de destino restringidos a la entrada interna

Cloud Scheduler puede invocar los siguientes servicios de forma interna:

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

Para invocar estos destinos de forma interna, el objetivo debe estar en el mismo proyecto de Google Cloud o perímetro de los Controles del servicio de VPC que tu trabajo de Cloud Scheduler.

Si quieres obtener más información para proteger los destinos mediante la restricción de Ingress, consulta Restringe la entrada (para Cloud Run) y Configura la red (para Cloud Functions).

Crea un trabajo

Puedes crear un trabajo con Google Cloud Console o Google Cloud CLI.

Consola

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

    Ir a Cloud Scheduler

  2. Haz clic en Create job.

  3. En el campo Nombre, proporciona un nombre para el trabajo que es exclusivo del proyecto.

    Después de borrar su trabajo asociado, puedes volver a usar un nombre de trabajo en un proyecto.

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

    Si usas una orientación 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. De forma opcional, proporciona una breve descripción del trabajo, como un recordatorio de lo que este hace.

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

  6. Especifica la frecuencia a la que se ejecutará el trabajo mediante una string de configuración.

    Por ejemplo, la string 0 1 * * 0 ejecuta el trabajo una vez por semana a la 1 a.m. todos los domingos por la mañana. La string que proporcionas aquí puede ser cualquier string compatible con unix-cron. Para obtener más información, consulta Configura trabajo cron cron.

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

  8. Haz clic en Continuar.

  9. Especifica el Tipo de destino:

    • HTTP

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

    • HTTP de App Engine: debes usar la app de App Engine y la región asociada con el proyecto actual.

  10. Haz clic en Continuar.

  11. De manera opcional, para definir cualquier comportamiento de reintento, haz clic en Configurar parámetros 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 fraccionarios ni negativos. El campo Max retry duration solo admite valores h, m y s. Tanto Min backoff duration como Max backoff duration admiten el conjunto completo.

  12. De manera opcional, para los objetivos HTTP y de App Engine HTTP, configura un plazo para los intentos de trabajo. Si el controlador de solicitudes no responde antes de este plazo, la solicitud se cancela y el intento se marca como con errores. Cloud Scheduler vuelve a intentar el trabajo de acuerdo con la configuración de reintentos.

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

    Ahora, el trabajo se ejecutará con la frecuencia especificada.

gcloud

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

HTTP

Puede enviar una solicitud a cualquier extremo HTTP o HTTPS. Los extremos HTTP de destino deben ser de acceso público.

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

Reemplaza lo siguiente:

  • JOB: Es 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 incluso si borras su trabajo asociado.

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

  • SCHEDULE: Es la frecuencia o el intervalo de trabajo en el que se ejecuta el trabajo, por ejemplo, every 3 hours. La string que proporcionas puede ser cualquier string compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine heredada aún es compatible con los trabajos existentes.

    Para obtener más información, consulta Configura trabajo cron cron.

  • URI: Es el URI completamente calificado del extremo con el que se comunicará el trabajo.

En la referencia de la línea de comandos de gcloud, se describen otros parámetros:

  • De forma opcional, especifica el método HTTP. El valor predeterminado es POST.

  • De manera opcional, especifica 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.

  • De manera opcional, configura los valores de reintento, que especifican cómo se debe reintentar el trabajo de App Engine en caso de falla. 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 Usa 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 una cuenta de servicio de la API de Google.

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

Reemplaza lo siguiente:

  • JOB: Es 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 incluso si borras su trabajo asociado.

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

  • SCHEDULE: Es la frecuencia o el intervalo de trabajo en el que se ejecuta el trabajo, por ejemplo, every 3 hours. La string que proporcionas aquí puede ser cualquier string compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine heredada aún es compatible con los trabajos existentes.

    Para obtener más información, consulta Configura trabajo cron cron.

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

En la referencia de la línea de comandos de gcloud, se describen otros parámetros.

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 con el proyecto actual. Si quieres usar otra app de App Engine fuera del proyecto actual, elige HTTP como destino, no App Engine HTTP. Las reglas de firewall de destino deben permitir solicitudes del rango de IP 0.1.0.2/32.

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

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

Reemplaza lo siguiente:

  • JOB: Es 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 incluso si borras su trabajo asociado.

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

  • SCHEDULE: Es la frecuencia o el intervalo de trabajo en el que se ejecuta el trabajo, por ejemplo, every 3 hours. La string que proporcionas aquí puede ser cualquier string compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine heredada aún es compatible con los trabajos existentes.

    Para obtener más información, consulta Configura trabajo cron cron.

En la referencia de la línea de comandos de gcloud, se describen otros parámetros:

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

  • Especifica el nombre del servicio de App Engine que ejecuta el controlador para el trabajo de Cloud Scheduler. Si se omite, se supone que es el servicio default. Si deseas establecerlo, puedes encontrar los nombres de los servicios en la consola de Google Cloud.

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

  • De manera opcional, especifica la versión. Si no se establece, se usa la versión actual. Puedes encontrar versiones disponibles en la consola de Google Cloud.

  • De manera opcional, especifica la instancia. Si no se establece, se puede usar cualquier instancia disponible. Puedes encontrar versiones disponibles en la consola de Google Cloud.

  • De manera opcional, especifica 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.

  • De manera opcional, configura los valores de reintento, que especifican cómo se debe reintentar el trabajo de App Engine en caso de falla. 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 un trabajo

Puede editar la configuración de un trabajo.

Consola

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

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres editar.

  3. Haga clic en Editar.

  4. Sigue los pasos para definir la programación, establecer la ejecución y establecer parámetros de configuración opcionales cuando crees un trabajo.

gcloud

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

HTTP

Puede enviar una solicitud a cualquier extremo HTTP o HTTPS. Los extremos HTTP de destino deben ser de acceso público.

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

Reemplaza lo siguiente:

  • JOB: Es 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 incluso si borras su trabajo asociado.

  • LOCATION: Es la ubicación en la que se ejecuta tu trabajo. Si no especificas la ubicación, gcloud CLI usará tu ubicación predeterminada. Si el trabajo que deseas editar está en una ubicación diferente, debes especificar la ubicación además de NAME para identificar tu trabajo. No puedes actualizar la ubicación del trabajo.

  • SCHEDULE: Es la frecuencia o el intervalo de trabajo en el que se ejecuta el trabajo, por ejemplo, every 3 hours. La string que proporcionas puede ser cualquier string compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine heredada aún es compatible con los trabajos existentes.

    Para obtener más información, consulta Configura trabajo cron cron.

  • URI: Es el URI completamente calificado del extremo con el que se comunicará el trabajo.

En la referencia de la línea de comandos de gcloud, se describen otros parámetros.

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 una cuenta de servicio de la API de Google.

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

Reemplaza lo siguiente:

  • JOB: Es 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 incluso si borras su trabajo asociado.

  • LOCATION: Es la ubicación en la que se ejecuta tu trabajo. Si no especificas la ubicación, gcloud CLI usará tu ubicación predeterminada. Si el trabajo que deseas editar está en una ubicación diferente, debes especificar la ubicación además de NAME para identificar tu trabajo. No puedes actualizar la ubicación del trabajo.

  • SCHEDULE: Es la frecuencia o el intervalo de trabajo en el que se ejecuta el trabajo, por ejemplo, every 3 hours. La string que proporcionas aquí puede ser cualquier string compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine heredada aún es compatible con los trabajos existentes.

    Para obtener más información, consulta Configura trabajo cron cron.

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

En la referencia de la línea de comandos de gcloud, se describen otros parámetros.

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 con el proyecto actual. Si quieres usar otra app de App Engine fuera del proyecto actual, elige HTTP como destino, no App Engine HTTP.

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

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

Reemplaza lo siguiente:

  • JOB: Es 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 incluso si borras su trabajo asociado.

  • LOCATION: Es la ubicación en la que se ejecuta tu trabajo (es la misma que la ubicación de la app de App Engine de destino). Si no especificas la ubicación, gcloud CLI usará tu ubicación predeterminada. Si el trabajo que deseas editar está en una ubicación diferente, debes especificar la ubicación además de NAME para identificar tu trabajo. No puedes actualizar la ubicación del trabajo.

  • SCHEDULE: Es la frecuencia o el intervalo de trabajo en el que se ejecuta el trabajo, por ejemplo, every 3 hours. La string que proporcionas aquí puede ser cualquier string compatible con unix-cron. Aunque ya no recomendamos su uso, la sintaxis cron de App Engine heredada aún es compatible con los trabajos existentes.

    Para obtener más información, consulta Configura trabajo cron cron.

En la referencia de la línea de comandos de gcloud, se describen otros parámetros.

Ejemplo

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

Pausa un trabajo

Puede pausar la ejecución de un trabajo.

Consola

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

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres detener.

  3. Haga clic en Detener.

gcloud

  1. Abre una ventana de la terminal en la máquina en la que instalaste gcloud CLI.

  2. Ejecute el comando:

    gcloud scheduler jobs pause MY_JOB
    

    Reemplaza MY_JOB por el nombre del trabajo que deseas pausar.

También puede editar un trabajo mientras está detenido. Después de editar el trabajo, este permanecerá detenido hasta que lo reanudes.

Reanuda un trabajo

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

Consola

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

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres reanudar.

    El trabajo ya debe estar detenido.

  3. Haz clic en Reanudar.

gcloud

  1. Abre una ventana de la terminal en la máquina en la que instalaste gcloud CLI.

  2. Ejecute el comando:

    gcloud scheduler jobs resume MY_JOB
    

    Reemplaza MY_JOB por el nombre del trabajo que deseas reanudar.

Borra un trabajo

Puede borrar un trabajo.

Consola

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

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres borrar.

  3. Haz clic en Borrar.

gcloud

  1. Abre una ventana de la terminal en la máquina en la que instalaste gcloud CLI.

  2. Ejecute el comando:

    gcloud scheduler jobs delete MY_JOB
    

    Reemplaza MY_JOB por el nombre del trabajo que se borrará.