Programar un flujo de trabajo con Cloud Scheduler

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

  1. Si aún no tienes un flujo de trabajo que quieras programar, crea y despliega uno.
  2. Enable the Cloud Scheduler API.

    Enable the API

  3. También puedes introducir el siguiente comando en un terminal:
    gcloud services enable cloudscheduler.googleapis.com

Programar un flujo de trabajo

  1. 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.

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

  3. 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.
  4. 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 a través de 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

    1. Para programar un flujo de trabajo, ve a la página Flujos de trabajo de la consola de Google Cloud Cloud:

      Ve a Workflows

    2. En la página Flujos de trabajo, selecciona un flujo de trabajo para ir a su página de detalles.

    3. En la página Detalles del flujo de trabajo, haz clic en Editar.

    4. En la página Editar flujo de trabajo, selecciona Añadir nuevo activador > Cloud Scheduler.

      Se abre el panel Crear una tarea de Scheduler.

    5. Define la programación:

      1. En el campo Nombre, introduce el nombre del trabajo de Cloud Scheduler. Debe ser único en todas las tareas de la misma región.

      2. En la lista Región, selecciona una región adecuada (por ejemplo, us-central1).

      3. 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 * * * *.

      4. 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.

    6. Haz clic en Continuar.

    7. Configura la ejecución:

      1. 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: {"firstName":"Sherlock", "lastName":"Holmes"}. Si tu flujo de trabajo no usa argumentos de tiempo de ejecución, acepta el valor predeterminado {} o deja el campo en blanco.

      2. 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.
      3. En la lista Cuenta de servicio, selecciona la que has creado anteriormente.

    8. 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).

    9. Si quieres actualizar o eliminar el trabajo, debes editar el flujo de trabajo:

      1. En la página Detalles del flujo de trabajo, haz clic en Editar.
      2. En la sección Activadores, busca el trabajo que quieras actualizar o eliminar.
      3. Haz clic en Editar recurso o Eliminar recurso.

    gcloud

    1. 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, como us-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 hay 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.
    2. Para mostrar todos los trabajos de un proyecto, sigue estos pasos:

      gcloud scheduler jobs list

    3. 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