En este tutorial se explica cómo usar Cloud Scheduler para ejecutar automáticamente Workflows de forma que un flujo de trabajo se ejecute según una programación concreta (en este caso, cada 5 minutos).
Objetivos
- Crea e implementa un flujo de trabajo que pueda recibir argumentos de tiempo de ejecución.
- Crea una tarea de Cloud Scheduler que active tu flujo de trabajo y lo ejecute cada 5 minutos, pasando argumentos JSON con el formato correcto.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Antes de empezar
- Configura tu entorno para Cloud Scheduler, lo que incluye crear una aplicación de App Engine.
-
Enable the Workflows API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Define la ubicación predeterminada que se usará en este tutorial:
Sustituyegcloud config set workflows/location REGION
REGIONpor el flujo de trabajo location que quieras. - Crea una cuenta de servicio para que la use Workflows. Por ejemplo,
sa-name.gcloud iam service-accounts create sa-name
- Concede a tu cuenta de servicio el rol
workflows.invokerpara que tenga permiso para activar tu flujo de trabajo:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/workflows.invoker"
Sustituye - Asigna el rol
logging.logWritera la cuenta de servicio.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/logging.logWriter"
PROJECT_ID por el ID de tu proyecto. Google Cloud
Crear un flujo de trabajo que reciba argumentos de tiempo de ejecución
Una definición de flujo de trabajo se compone de una serie de pasos descritos mediante la sintaxis de Workflows, que se puede escribir en formato YAML o JSON. Después de crear un flujo de trabajo, debes implementarlo para que esté disponible para su ejecución.
Consola
En la Google Cloud consola, ve a la página Flujos de trabajo:
Haz clic en Crear.
Introduce
myFirstWorkflowcomo nombre del nuevo flujo de trabajo.Selecciona us-central1 como región.
Selecciona la cuenta de servicio que has creado anteriormente.
Haz clic en Siguiente.
En el editor de flujos de trabajo, introduce la siguiente definición para tu flujo de trabajo.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
Este flujo de trabajo devuelve un saludo a una persona cuyo nombre y apellidos se pasan como argumentos de tiempo de ejecución.
Haz clic en Desplegar.
gcloud
- Abre la terminal.
Guarda la siguiente definición de flujo de trabajo como un archivo YAML o JSON, como myFirstWorkflow.yaml o myFirstWorkflow.json.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return"