Ejecuta un flujo de trabajo con las bibliotecas cliente de Cloud
En esta guía de inicio rápido, se muestra cómo ejecutar un flujo de trabajo y ver los resultados de la ejecución con las bibliotecas cliente de Cloud.
Para obtener más información sobre cómo instalar las bibliotecas cliente de Cloud y configurar tu entorno de desarrollo, consulta la descripción general de las bibliotecas cliente de Workflows.
Puedes completar los siguientes pasos con Google Cloud CLI en la terminal o en Cloud Shell.
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 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Workflows API:
gcloud services enable workflows.googleapis.com
-
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant the
roles/owner
IAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service account
-
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Workflows API:
gcloud services enable workflows.googleapis.com
-
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant the
roles/owner
IAM role to the service account:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service account
-
- (Opcional) Para enviar registros a Cloud Logging, otorga el rol
roles/logging.logWriter
a la cuenta de servicio.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/logging.logWriter"
Para obtener más información sobre los roles y permisos de las cuentas de servicio, consulta Otorga un permiso de flujo de trabajo para acceder a losGoogle Cloud recursos.
- Si es necesario, descarga e instala la herramienta de administración de código fuente de Git.
Implementa un flujo de trabajo de muestra
Después de definir un flujo de trabajo, debes implementarlo para que esté disponible para su ejecución. El paso de implementación también valida que se pueda ejecutar el archivo de origen.
El siguiente flujo de trabajo envía una solicitud a una API pública y, luego, muestra la respuesta de la API.
Crea un archivo de texto con el nombre de archivo
myFirstWorkflow.yaml
que tenga el siguiente contenido:Después de crear el flujo de trabajo, puedes implementarlo, pero no lo ejecutes:
gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=CLOUD_REGION
Reemplaza
CLOUD_REGION
por una ubicación compatible para el flujo de trabajo. La región predeterminada que se usa en las muestras de código esus-central1
.
Obtén el código de muestra
Puedes clonar el código de muestra desde GitHub.
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. Cada app de ejemplo hace lo siguiente:
- Configura las bibliotecas cliente de Cloud para flujos de trabajo.
- Ejecuta un flujo de trabajo.
- Sondea la ejecución del flujo de trabajo (con la retirada exponencial) hasta que se complete.
- Imprime los resultados de la ejecución.
Java
Node.js
Python
Ejecuta el código de muestra
Puedes ejecutar el código de muestra y ejecutar tu flujo de trabajo. Ejecuta la definición del flujo de trabajo implementado asociada con el flujo de trabajo.
Para ejecutar la muestra, primero instala las dependencias:
Java
mvn compile
Node.js
npm install -D tsx
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
npx tsx index.js
Python
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME python3 main.py
Reemplaza lo siguiente:
PROJECT_ID
: Es el Google Cloud nombre de tu proyecto.CLOUD_REGION
: Es la ubicación de tu flujo de trabajo (predeterminada:us-central1
).WORKFLOW_NAME
: Es el nombre de tu flujo de trabajo (predeterminado:myFirstWorkflow
).
El resultado es similar a este:
Execution finished with state: SUCCEEDED Execution results: ["Thursday","Thursday Night Football","Thursday (band)","Thursday Island","Thursday (album)","Thursday Next","Thursday at the Square","Thursday's Child (David Bowie song)","Thursday Afternoon","Thursday (film)"]
Cómo pasar datos en una solicitud de ejecución
Según el lenguaje de la biblioteca cliente, también puedes pasar un argumento del entorno de ejecución en una solicitud de ejecución. Por ejemplo:
Java
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"searchTerm\":\"Friday\"}").build())
.build();
Node.js
// Execute workflow
try {
const createExecutionRes = await client.createExecution({
parent: client.workflowPath(projectId, location, workflow),
execution: {
argument: JSON.stringify({"searchTerm": "Friday"})
}
});
const executionName = createExecutionRes[0].name;
Para obtener más información sobre cómo pasar argumentos del entorno de ejecución, consulta Cómo pasar argumentos del entorno de ejecución en una solicitud de ejecución.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en esta página, borra el proyecto de Google Cloud que tiene los recursos.
Borra el flujo de trabajo que creaste:
gcloud workflows delete myFirstWorkflow
Cuando se te pregunte si deseas continuar, ingresa
y
.
Se borrará el flujo de trabajo.