En este instructivo, se muestra cómo usar Cloud Scheduler para ejecutar automáticamente Workflows, de modo que un flujo de trabajo se ejecute según un programa en particular, en este caso cada 5 minutos.
Crea un flujo de trabajo que reciba argumentos de entorno de ejecución
La definición de un flujo de trabajo está compuesta por una serie de pasos descritos con la sintaxis de Workflows, que se pueden escribir en formato YAML o JSON. Después de crear un flujo de trabajo, debes implementarlo a fin de que esté disponible para su ejecución.
Console
En la consola de Google Cloud , ve a la página Workflows:
Haga clic en Crear.
Ingresa
myFirstWorkflowcomo el nombre del nuevo flujo de trabajo.Selecciona us-central1 para la región.
Selecciona la cuenta de servicio que creaste anteriormente.
Haga clic en Next.
En el editor de flujos de trabajo, ingresa la siguiente definición para el 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 muestra un saludo de “Hello” a una persona cuyo nombre y apellido pasas como argumentos de entorno de ejecución.
Haga clic en Implementar.
gcloud
- Abre una 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": "${outputVar}" } } ] } }
Este flujo de trabajo muestra un saludo de “Hello” a una persona cuyo nombre y apellido pasas como argumentos de entorno de ejecución.
Para implementar el flujo de trabajo, ingresa el siguiente comando:
gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
Reemplaza
yaml_OR_jsonporyamlojson, según el formato del archivo de definición de Workflows que creaste antes.
Programa el flujo de trabajo
Crea un trabajo de Cloud Scheduler que active tu flujo de trabajo con la cuenta de servicio que creaste anteriormente.
Console
En la consola Google Cloud , ve a la página Cloud Scheduler:
Haz clic en Crear trabajo.
Ingresa
my-workflow-joben Nombre.En Frecuencia, ingresa:
Esto ejecutará el trabajo cada 5 minutos. El intervalo se define con el formato unix-cron.*/5 * * * *En Zona horaria, selecciona un país y una zona horaria.
Por ejemplo, selecciona Estados Unidos y Los Ángeles o la Hora de verano del Pacífico (PDT).
Haga clic en Continuar.
En Tipo de destino, selecciona HTTP.
En URL, ingresa lo siguiente:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
Deja el método HTTP con el valor predeterminado de POST.
Agrega los siguientes dos encabezados HTTP:
- Nombre:
Content-Typey valor:application/octet-stream - Nombre:
User-Agenty valor:Google-Cloud-Scheduler
- Nombre:
En Cuerpo, ingresa lo siguiente:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}Esto pasa una codificación JSON de los argumentos del flujo de trabajo, en este caso, el nombre, “Sherlock” y el apellido, “Holmes”. Las comillas dobles dentro de la string se escapan mediante barras inversas (\).
En Encabezado de la autenticación, selecciona Agregar token de OAuth.
Ingresa la cuenta de servicio que creaste antes.
No es necesario que especifiques el alcance, ya que se usa el valor predeterminado desa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platform.Acepta todos los valores predeterminados y haz clic en Crear.
gcloud
Para programar un trabajo llamado my-workflow-job, ingresa el siguiente comando:
gcloud scheduler jobs create http my-workflow-job \
--schedule="*/5 * * * *" \
--uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
--message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
--time-zone="America/Los_Angeles" \
--oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"El intervalo se define con el formato unix-cron.
La marca message-body se usa para pasar una codificación JSON de los argumentos del flujo de trabajo, en este caso, el nombre, “Sherlock” y el apellido, “Holmes”. Las comillas dobles dentro de la string se escapan mediante barras inversas (\).
Ahora, tu flujo de trabajo se ejecuta cada 5 minutos.
Para obtener más información sobre las marcas gcloud scheduler, así como sobre cómo aplicar el registro de llamadas para que se registre cada paso de llamada durante la ejecución de tu flujo de trabajo, consulta Programa un flujo de trabajo y la referencia de gcloud.
Ejecuta el trabajo y verifica los resultados
Console
En la consola Google Cloud , ve a la página Cloud Scheduler:
Si no se muestra el trabajo, es posible que debas actualizar la página.
En el trabajo denominado
my-workflow-job, haz clic en Ejecutar ahora.Deberías ver el valor de Resultado actualizado a Sin errores.
En la consola de Google Cloud , ve a la página Workflows:
En la lista de flujos de trabajo, haz clic en myFirstWorkflow para abrir su página de detalles.
El estado de ejecución de tu flujo de trabajo debería ser Correcto.
Haz clic en el ID de ejecución del flujo de trabajo para abrir la página de detalles y ver los resultados del flujo de trabajo en el panel Resultado.
El resultado debería ser “Hello, Sharlock Holmes”.
gcloud
Ejecuta el trabajo de Cloud Scheduler para ejecutar el flujo de trabajo:
gcloud scheduler jobs run my-workflow-job
Recupera el ID de ejecución del flujo de trabajo:
gcloud workflows executions list myFirstWorkflow
El resultado debería parecerse al siguiente con el ID de ejecución en negrita:
projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
Recupera los resultados de la ejecución del flujo de trabajo:
gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow
Reemplaza
EXECUTION_IDpor el ID de ejecución que se mostró en el paso anterior.El resultado debe parecerse al siguiente:
argument: '{"firstName":"Sherlock","lastName":"Holmes"}' endTime: '2021-09-09T15:15:00.869350639Z' name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 result: '"Hello, Sherlock Holmes!"' startTime: '2021-09-09T15:15:00.839175480Z' state: SUCCEEDED workflowRevisionId: 000001-4f9
¡Felicitaciones! Creaste correctamente un trabajo de Cloud Scheduler que ejecuta automáticamente un flujo de trabajo según un programa en particular.