Ejecuta la definición actual del flujo de trabajo asociada con el flujo de trabajo.
Puedes pasar argumentos del entorno de ejecución en una solicitud de ejecución de flujo de trabajo y acceder a esos argumentos con una variable de flujo de trabajo. Para obtener más información, consulta Cómo pasar argumentos del entorno de ejecución en una solicitud de ejecución.
Una vez que se completa la ejecución de un flujo de trabajo, su historial y resultados se retienen durante un tiempo limitado. Para obtener más información, consulta Cuotas y límites.
Antes de comenzar
Es posible que las restricciones de seguridad que define tu organización no te permitan completar los siguientes pasos. Para obtener información sobre la solución de problemas, consulta Desarrolla aplicaciones en un entorno de Google Cloud restringido.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Si un flujo de trabajo accede a otros recursos de Google Cloud, asegúrate de que esté asociado con una cuenta de servicio que tenga los permisos correctos para hacerlo. Para obtener información sobre qué cuenta de servicio está asociada con un flujo de trabajo existente, consulta Cómo verificar la cuenta de servicio asociada de un flujo de trabajo.
Ten en cuenta que, para crear un recurso y conectar una cuenta de servicio, necesitas permisos para crear ese recurso y actuar en nombre de la cuenta de servicio que conectarás al recurso. Para obtener más información, consulta Permisos de la cuenta de servicio.
- Implementa un flujo de trabajo con la consola de Google Cloud o Google Cloud CLI.
Ejecuta un flujo de trabajo
Puedes ejecutar un flujo de trabajo con las bibliotecas cliente, en la consola de Google Cloud, con gcloud CLI o enviando una solicitud a la API de REST de Workflows.
Console
Para ejecutar un flujo de trabajo, en la consola de Google Cloud, ve a la página Workflows:
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 play_arrow Ejecutar.
En la página Ejecutar flujo de trabajo, en el panel Entrada, puedes ingresar argumentos de entorno de ejecución opcionales para pasarlos a tu flujo de trabajo antes de la ejecución. Los argumentos deben estar en formato JSON, por ejemplo,
{"animal":"cat"}
. Si tu flujo de trabajo no usa argumentos de tiempo de ejecución, déjalo en blanco.De manera opcional, especifica el nivel de registro de llamadas que deseas aplicar a la ejecución del flujo de trabajo. En la lista Nivel de registro de llamadas, selecciona una de las siguientes opciones:
- No especificado: No se especifica ningún nivel de registro. Esta es la opción predeterminada. 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 (predeterminado). En ese caso, se aplica el nivel de registro del 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 subflujos de trabajo o funciones de biblioteca y sus resultados.
- Sin registros: Sin registro de llamadas.
Haz clic en Ejecutar.
En la página Detalles de la ejecución, puedes ver los resultados de la ejecución, incluidos los resultados, el ID y el estado de la ejecución, y el paso actual o final de la ejecución del flujo de trabajo. Para obtener más información, consulta Cómo acceder a los resultados de la ejecución de un flujo de trabajo.
gcloud
Abre una terminal.
Busca el nombre del flujo de trabajo que deseas ejecutar. Si no conoces el nombre del flujo de trabajo, puedes ingresar el siguiente comando para ver una lista de todos tus flujos de trabajo:
gcloud workflows list
Puedes ejecutar el flujo de trabajo con el comando
gcloud workflows run
o el comandogcloud workflows execute
:Ejecuta el flujo de trabajo y espera a que se complete la ejecución:
gcloud workflows run WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --data=DATA
Ejecuta el flujo de trabajo sin esperar a que finalice el intento de ejecución:
gcloud workflows execute WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --data=DATA
Reemplaza lo siguiente:
WORKFLOW_NAME
: El nombre del flujo de trabajo.CALL_LOGGING_LEVEL
(opcional): Es el nivel de registro de llamadas que se aplicará durante la ejecución. Puede ser una de las siguientes opciones:none
: No se especifica ningún nivel de registro. Esta es la opción predeterminada. 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 (predeterminado). En ese caso, se aplica el nivel de registro del flujo de trabajo.log-errors-only
: Registra todas las excepciones detectadas; o cuando se detiene una llamada debido a una excepción.log-all-calls
: Registra todas las llamadas a subflujos de trabajo o funciones de biblioteca y sus resultados.log-none
: Sin registro de llamadas.
DATA
(opcional): Son los argumentos del tiempo de ejecución para tu flujo de trabajo en formato JSON.
Si ejecutaste
gcloud workflows execute
, se muestra el ID único del intento de ejecución del flujo de trabajo y el resultado es similar al siguiente:To view the workflow status, you can use following command: gcloud workflows executions describe b113b589-8eff-4968-b830-8d35696f0b33 --workflow workflow-2 --location us-central1
Para ver el estado de la ejecución, ingresa el comando que muestra el paso anterior.
Si el intento de ejecución se realiza correctamente, el resultado es similar al siguiente, con un state
que indica que el flujo de trabajo se realizó correctamente y un status
que especifica el paso final del flujo de trabajo de la ejecución.
argument: '{"searchTerm":"Friday"}' endTime: '2022-06-22T12:17:53.086073678Z' name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/c4dffd1f-13db-46a0-8a4a-ee39c144cb96 result: '["Friday","Friday the 13th (franchise)","Friday Night Lights (TV series)","Friday the 13th (1980 film)","Friday the 13th","Friday the 13th (2009 film)","Friday the 13th Part III","Friday the 13th Part 2","Friday (Rebecca Black song)","Friday Night Lights (film)"]' startTime: '2022-06-22T12:17:52.799387653Z' state: SUCCEEDED status: currentSteps: - routine: main step: returnOutput workflowRevisionId: 000001-ac2
Bibliotecas cliente
En los siguientes ejemplos, se supone que ya implementaste un flujo de trabajo, myFirstWorkflow
.
Instala la biblioteca cliente y configura tu entorno de desarrollo. Para obtener más información, consulta la descripción general de las bibliotecas cliente de Workflows.
Clona el repositorio de la app de muestra en tu máquina local:
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Ve al directorio que contiene el código de muestra de Workflows:
Java
cd java-docs-samples/workflows/cloud-client/
Node.js
cd nodejs-docs-samples/workflows/quickstart/
Python
cd python-docs-samples/workflows/cloud-client/
Ve el código de muestra:
Java
Node.js (JavaScript)
Node.js (TypeScript)
Python
En el ejemplo, se hace lo siguiente:
- Configura las bibliotecas cliente de Cloud para Workflows.
- Ejecuta un flujo de trabajo.
- Sondea la ejecución del flujo de trabajo (con una retirada exponencial) hasta que se complete.
- Imprime los resultados de la ejecución.
Para ejecutar la muestra, primero instala las dependencias:
Java
mvn compile
Node.js (JavaScript)
npm install
Node.js (TypeScript)
npm install && npm run build
Python
pip3 install -r requirements.txt
Ejecuta la secuencia de comandos:
Java
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME mvn compile exec:java -Dexec.mainClass=com.example.workflows.WorkflowsQuickstart
Node.js (JavaScript)
npm start PROJECT_ID CLOUD_REGION WORKFLOW_NAME
Node.js (TypeScript)
npm start PROJECT_ID CLOUD_REGION WORKFLOW_NAME
Python
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME python3 main.py
Reemplaza lo siguiente:
PROJECT_ID
(obligatorio): El ID del proyecto de Google CloudCLOUD_REGION
: Es la ubicación del flujo de trabajo (predeterminada:us-central1
).WORKFLOW_NAME
: Es el ID del flujo de trabajo (predeterminado:myFirstWorkflow
).
El resultado es similar a este:
Execution finished with state: SUCCEEDED ["Sunday","Sunday in the Park with George","Sunday shopping","Sunday Bloody Sunday","Sunday Times Golden Globe Race","Sunday All Stars","Sunday Night (South Korean TV series)","Sunday Silence","Sunday Without God","Sunday Independent (Ireland)"]
API de REST
Para crear una ejecución nueva con la revisión más reciente de un flujo de trabajo determinado, usa el método projects.locations.workflows.executions.create
.
Ten en cuenta que, para autenticarte, necesitarás una cuenta de servicio con privilegios suficientes para ejecutar el flujo de trabajo. Por ejemplo, puedes otorgarle a una cuenta de servicio el rol de invocador de flujos de trabajo (roles/workflows.invoker
) para que tenga permiso para activar la ejecución de tu flujo de trabajo. Para obtener más información, consulta Cómo invocar Workflows.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_NUMBER
: Es el número de tu proyecto de Google Cloud que aparece en la página Configuración de IAM y administración.LOCATION
: Es la región en la que se implementa el flujo de trabajo, por ejemplo,us-central1
.WORKFLOW_NAME
: Es el nombre definido por el usuario para el flujo de trabajo, por ejemplo,myFirstWorkflow
.PARAMETER
: es opcional. Si el flujo de trabajo que ejecutas puede recibir argumentos de tiempo de ejecución que le pasas como parte de una solicitud de ejecución, puedes agregar al cuerpo de la solicitud una cadena con formato JSON cuyo valor sea uno o más pares de valores de parámetros escapados, por ejemplo,"{\"searchTerm\":\"asia\"}"
.VALUE
: es opcional. Es el valor de un par clave-valor que tu flujo de trabajo puede recibir como argumento de tiempo de ejecución.CALL_LOGGING_LEVEL
: es opcional. Es el nivel de registro de llamadas que se aplicará durante la ejecución. La opción predeterminada es que no se especifique ningún nivel de registro y, en su lugar, se aplique el nivel de registro del flujo de trabajo. Para obtener más información, consulta Cómo enviar registros a Logging. Uno de los siguientes:CALL_LOG_LEVEL_UNSPECIFIED
: No se especifica ningún nivel de registro y, en su lugar, se aplica el nivel de registro del flujo de trabajo. Esta es la opción predeterminada. De lo contrario, se aplica el nivel de registro de ejecución y tiene prioridad sobre el nivel de registro de flujo de trabajo.LOG_ERRORS_ONLY
: Registra todas las excepciones detectadas; o cuando se detiene una llamada debido a una excepción.LOG_ALL_CALLS
: Registra todas las llamadas a subflujos de trabajo o funciones de biblioteca y sus resultados.LOG_NONE
: Sin registro de llamadas.
BACKLOG_EXECUTION
: Opcional. Si se establece entrue
, la ejecución no se pone en cola cuando se agota la cuota de simultaneidad. Para obtener más información, consulta Administra el retraso en la ejecución.
Cuerpo JSON de la solicitud:
{ "argument": "{\"PARAMETER\":\"VALUE\"}", "callLogLevel": "CALL_LOGGING_LEVEL", "disableConcurrencyQuotaOverflowBuffering": "BACKLOG_EXECUTION" }
Para enviar tu solicitud, expande una de estas opciones:
Si el proceso se realiza de forma correcta, el cuerpo de la respuesta contiene una instancia recién creada de Execution
:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID", "startTime": "2023-11-07T14:35:27.215337069Z", "state": "ACTIVE", "argument": "{\"PARAMETER\":\"VALUE\"}", "workflowRevisionId": "000001-2df", "callLogLevel": "CALL_LOGGING_LEVEL", "status": {} }
Verifica el estado de las ejecuciones
Existen varios comandos que te ayudan a verificar el estado de la ejecución de un flujo de trabajo.
Para recuperar una lista de los intentos de ejecución de un flujo de trabajo y sus IDs, ingresa el siguiente comando:
gcloud workflows executions list WORKFLOW_NAME
Reemplaza
WORKFLOW_NAME
por el nombre del flujo de trabajo.El comando muestra un valor
NAME
similar al siguiente:projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
Copia el ID de ejecución para usarlo en el siguiente comando.
Para verificar el estado de un intento de ejecución y esperar a que finalice, ingresa el siguiente comando:
gcloud workflows executions wait EXECUTION_ID
Reemplaza
EXECUTION_ID
por el ID del intento de ejecución.El comando espera a que finalice el intento de ejecución y, luego, muestra los resultados.
Para esperar hasta que se complete la última ejecución y, luego, mostrar el resultado de la ejecución completada, ingresa el siguiente comando:
gcloud workflows executions wait-last
Si realizaste un intento de ejecución anterior en la misma sesión de
gcloud
, el comando espera a que finalice el intento de ejecución anterior y, luego, muestra los resultados de la ejecución completada. Si no existe ningún intento anterior,gcloud
muestra el siguiente error:ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
Para obtener el estado de la última ejecución, ingresa el siguiente comando:
gcloud workflows executions describe-last
Si realizaste un intento de ejecución anterior en la misma sesión de
gcloud
, el comando muestra los resultados de la última ejecución, incluso si está en ejecución. Si no existe ningún intento anterior,gcloud
muestra el siguiente error:ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
Filtrar ejecuciones
Puedes aplicar filtros a la lista de ejecuciones de flujos de trabajo que muestra el método workflows.executions.list
.
Puedes filtrar por los siguientes campos:
createTime
disableOverflowBuffering
duration
endTime
executionId
label
startTime
state
stepName
workflowRevisionId
Por ejemplo, para filtrar en una etiqueta (labels."fruit":"apple"
), puedes realizar una solicitud a la API similar a la siguiente:
GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"
Aquí:
view=full
especifica una vista que define qué campos se deben completar en las ejecuciones que se muestran; en este caso, todos los datoslabels.%22fruit%22%3A%22apple%22
es la sintaxis del filtro codificada en URL.
Para obtener más información, consulta Filtrado de AIP-160.
Administra el retraso de la ejecución
Puedes usar el almacenamiento en cola de ejecución para evitar reintentos del cliente, quitar las demoras de ejecución y maximizar la capacidad de procesamiento. Las ejecuciones pendientes se ejecutan automáticamente en cuanto la cuota de simultaneidad de ejecución esté disponible.
Hay una cantidad máxima de ejecuciones de flujo de trabajo activas que se pueden ejecutar de forma simultánea. Una vez que se agote esta cuota y si se inhabilita el almacenamiento en cola de ejecuciones o si se alcanza la cuota para las ejecuciones en cola, las ejecuciones nuevas fallarán con un código de estado HTTP 429 Too many requests
. Con el almacenamiento en cola de ejecuciones habilitado, las ejecuciones nuevas se realizan correctamente y se crean en un estado QUEUED
. En cuanto la cuota de simultaneidad de ejecución esté disponible, las ejecuciones se ejecutarán automáticamente y entrarán en un estado ACTIVE
.
De forma predeterminada, el almacenamiento en cola de ejecución está habilitado para todas las solicitudes (incluidas las que activa Cloud Tasks) con las siguientes excepciones:
- Cuando creas una ejecución con un conector
executions.run
oexecutions.create
en un flujo de trabajo, el almacenamiento en cola de ejecución se inhabilita de forma predeterminada. Para configurarlo, establece de forma explícita el campodisableConcurrencyQuotaOverflowBuffering
de la ejecución enfalse
. - En el caso de las ejecuciones activadas por Pub/Sub, el almacenamiento en cola de ejecuciones está disabled y no se puede configurar.
Ten en cuenta lo siguiente:
- Las ejecuciones en cola se inician en orden de llegada (FIFO) de la mejor manera posible.
- Un campo de marca de tiempo
createTime
indica cuándo se crea una ejecución. La marca de tiempostartTime
indica cuándo se quita automáticamente una ejecución de la cola de tareas pendientes y comienza a ejecutarse. En el caso de las ejecuciones que no están en cola, ambos valores de marca de tiempo son idénticos. - El límite para las ejecuciones pendientes se puede observar con la métrica de cuota
workflowexecutions.googleapis.com/executionbacklogentries
. Para obtener más información, consulta Visualiza y administra las cuotas.
Inhabilita el almacenamiento en cola de ejecución
Puedes inhabilitar el almacenamiento en cola de ejecución configurando una marca cuando usas Google Cloud CLI. Por ejemplo:
gcloud workflows execute WORKFLOW_NAME --disable-concurrency-quota-overflow-buffering
También puedes inhabilitar el almacenamiento en cola de ejecución configurando el campo disableConcurrencyQuotaOverflowBuffering
como true
en el cuerpo JSON de la solicitud cuando envíes una solicitud de ejecución a la API de REST de Workflows.
Por ejemplo:
{ "argument": {"arg1":"value1"}, "callLogLevel": "LOG_NONE", "disableConcurrencyQuotaOverflowBuffering": true }
Para obtener más información, consulta Cómo ejecutar un flujo de trabajo.
¿Qué sigue?
- Cómo acceder a los resultados de la ejecución de flujos de trabajo
- Controla el orden de ejecución en un flujo de trabajo
- Envía registros de ejecución a Cloud Logging
- Actualiza un flujo de trabajo existente