En esta página se explica cómo usar Cloud Scheduler para ejecutar un flujo de trabajo según una programación concreta, como todos los lunes a las 9:00 o cada 15 minutos. Puedes configurar la programación en la Google Cloud consola o con la CLI de Google Cloud.
Antes de empezar
- Si aún no tienes un flujo de trabajo que quieras programar, crea y despliega uno.
-
Enable the Cloud Scheduler API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
También puedes introducir el siguiente comando en un terminal:
gcloud services enable cloudscheduler.googleapis.com
Programar un flujo de trabajo
Crea una cuenta de servicio para que Cloud Scheduler pueda enviar solicitudes a la API Workflows:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sustituye
SERVICE_ACCOUNT_NAME
por un nombre que tenga entre 6 y 30 caracteres. Puede contener caracteres alfanuméricos en minúscula y guiones. Una vez que hayas creado una cuenta de servicio, no podrás cambiar su nombre.Para permitir que la entidad de seguridad que ejecutará tus comandos de Cloud Scheduler pueda actuar como una cuenta de servicio de Gestión de Identidades y Accesos (IAM), concede un rol que permita a la entidad de seguridad suplantar la cuenta de servicio.
Asigna el rol workflows.invoker a la nueva cuenta de servicio para que tenga permiso para activar tu flujo de trabajo:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role roles/workflows.invoker
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto de Google Cloud .SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio que has creado anteriormente.
Crea una tarea de Cloud Scheduler que active tu flujo de trabajo. Para ello, usa la cuenta de servicio que has creado anteriormente para autenticarte.
Ten en cuenta que, si vas a aplicar el registro de llamadas, debes configurarlo en la página Flujos de trabajo de la consolaGoogle Cloud . Para obtener más información, consulta los pasos que se indican a continuación.
Consola
Para programar un flujo de trabajo, ve a la página Flujos de trabajo de la consola de Google Cloud Cloud:
En la página Flujos de trabajo, selecciona un flujo de trabajo para ir a su página de detalles.
En la página Detalles del flujo de trabajo, haz clic en edit Editar.
En la página Editar flujo de trabajo, selecciona Añadir nuevo activador > Cloud Scheduler.
Se abre el panel Crear una tarea de Scheduler.
Define la programación:
En el campo Nombre, introduce el nombre del trabajo de Cloud Scheduler. Debe ser único en todas las tareas de la misma región.
En la lista Región, selecciona una región adecuada (por ejemplo, us-central1).
En el campo Frecuencia, especifica un intervalo de tiempo que definas en formato cron de Unix. Por ejemplo, para programar la ejecución de tu flujo de trabajo cada 5 minutos, escribe
*/5 * * * *
.En la lista Zona horaria, selecciona la zona horaria que Cloud Scheduler debe usar para interpretar la programación que proporciones. Puedes buscar por país.
Haz clic en Continuar.
Configura la ejecución:
En el campo Argumento del flujo de trabajo, especifica los argumentos de tiempo de ejecución que quieras pasar al flujo de trabajo antes de ejecutarlo. Los argumentos deben estar en formato JSON. Por ejemplo:
. Si tu flujo de trabajo no usa argumentos de tiempo de ejecución, acepta el valor predeterminado{"firstName":"Sherlock", "lastName":"Holmes"}
{}
o deja el campo en blanco.En la lista Nivel de registro de llamadas del flujo de trabajo, selecciona el nivel de registro de llamadas que quieras aplicar durante la ejecución del flujo de trabajo:
- Sin especificar: no se ha especificado ningún nivel de registro. Este es el valor predeterminado. Un nivel de registro de ejecución tiene prioridad sobre cualquier nivel de registro de flujo de trabajo, a menos que no se especifique el nivel de registro de ejecución (el valor predeterminado). En ese caso, se aplica el nivel de registro de flujo de trabajo.
- Solo errores: registra todas las excepciones detectadas o cuando se detiene una llamada debido a una excepción.
- Todas las llamadas: registra todas las llamadas a flujos de trabajo secundarios o funciones de biblioteca y sus resultados.
- Sin registros: no se registran las llamadas.
En la lista Cuenta de servicio, selecciona la que has creado anteriormente.
Haz clic en Crear.
Ten en cuenta que, si vas a actualizar un flujo de trabajo, no es necesario que lo vuelvas a implementar.
La tarea de Cloud Scheduler ahora aparece en la pestaña Triggers (Activadores) de la página Workflow details (Detalles del flujo de trabajo).
Si quieres actualizar o eliminar el trabajo, debes editar el flujo de trabajo:
- En la página Detalles del flujo de trabajo, haz clic en edit Editar.
- En la sección Activadores, busca el trabajo que quieras actualizar o eliminar.
- Haz clic en edit Editar recurso o delete Eliminar recurso.
gcloud
Abre un terminal e introduce el siguiente comando:
gcloud scheduler jobs create http JOB_NAME \ --schedule="FREQUENCY" \ --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \ --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \ --time-zone="TIME_ZONE" \ --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
Haz los cambios siguientes:
JOB_NAME
: el nombre que le asignes al trabajo de Cloud Scheduler.FREQUENCY
: un intervalo de tiempo que defines con el formato cron de Unix. Por ejemplo, para programar la ejecución de tu flujo de trabajo cada 5 minutos, escribe*/5 * * * *
.PROJECT_ID
: el ID de tu proyecto de Google Cloud .REGION_NAME
: la región en la que se encuentra tu flujo de trabajo, comous-central1
.WORKFLOW_NAME
: el nombre del flujo de trabajo cuya ejecución quieras programar.DOUBLE_ESCAPED_JSON_STRING
: una codificación JSON de los argumentos que envías. Las comillas dobles que se encuentran dentro de la cadena entre comillas se escapan con barras invertidas (\). Por ejemplo:--message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
TIME_ZONE
: la zona horaria que debe usar Cloud Scheduler para interpretar la programación que proporciones. Por ejemplo:America/New_York
.SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio que has creado anteriormente.
Para mostrar todos los trabajos de un proyecto, sigue estos pasos:
gcloud scheduler jobs list
Para eliminar un trabajo, sigue estos pasos:
gcloud scheduler jobs delete JOB_NAME
Ahora, el flujo de trabajo se ejecuta con la frecuencia que has definido.
Siguientes pasos
- Usar la gestión de identidades y accesos para controlar el acceso
- Transferir argumentos del entorno de ejecución en una solicitud de ejecución
- Tutorial: Programar flujos de trabajo con Cloud Scheduler