Ejecutar un flujo de trabajo con las bibliotecas de 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 de cliente de Cloud.
Para obtener más información sobre cómo instalar las bibliotecas de cliente de Cloud y configurar tu entorno de desarrollo, consulta la descripción general de las bibliotecas de cliente de Workflows.
Puedes completar los pasos siguientes mediante la CLI de Google Cloud en tu terminal o en Cloud Shell.
Antes de empezar
Es posible que las restricciones de seguridad definidas por tu organización te impidan completar los siguientes pasos. Para obtener información sobre cómo solucionar problemas, consulta el artículo Desarrollar aplicaciones en un entorno limitado Google Cloud .
- 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
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.
-
-
Verify 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
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.
-
-
Verify 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, asigna el
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 Conceder permiso a un flujo de trabajo para acceder a recursosGoogle Cloud .
- Si es necesario, descarga e instala la herramienta de gestión de código fuente Git.
Crea un archivo de texto con el nombre
myFirstWorkflow.yaml
con el siguiente contenido:Después de crear el flujo de trabajo, puede implementarlo, pero no lo ejecute:
gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=CLOUD_REGION
Sustituye
CLOUD_REGION
por una ubicación admitida en el flujo de trabajo. La región predeterminada que se usa en los ejemplos de código esus-central1
.Clona el repositorio de aplicaciones de muestra en la máquina local:
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Cambia al directorio que contiene el código de ejemplo de Workflows:
C#
cd dotnet-docs-samples/workflows/api/Workflow.Samples/
Go
cd golang-samples/workflows/executions/
Java
cd java-docs-samples/workflows/cloud-client/
Node.js
cd nodejs-docs-samples/workflows/quickstart/
Python
cd python-docs-samples/workflows/cloud-client/
Echa un vistazo al código de muestra. Cada aplicación de ejemplo hace lo siguiente:
- Configura las bibliotecas de cliente de Cloud para Workflows.
- Ejecuta un flujo de trabajo.
- Consulta la ejecución del flujo de trabajo (con un tiempo de espera exponencial) hasta que finaliza.
- Muestra los resultados de la ejecución.
C#
Go
Java
Node.js
Python
Para ejecutar el ejemplo, primero instala las dependencias:
C#
dotnet restore
Go
go mod download
Java
mvn compile
Node.js
npm install -D tsx
Python
pip3 install -r requirements.txt
Ejecuta la secuencia de comandos:
C#
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME dotnet run
Go
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME go run .
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
Haz los cambios siguientes:
PROJECT_ID
: nombre Google Cloud del proyectoCLOUD_REGION
: la ubicación de tu flujo de trabajo (valor predeterminado:us-central1
)WORKFLOW_NAME
: nombre del flujo de trabajo (predeterminado:myFirstWorkflow
)
El resultado debería ser similar al siguiente:
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)"]
Elimina el flujo de trabajo que has creado:
gcloud workflows delete myFirstWorkflow
Cuando se te pregunte si quieres continuar, escribe
y
.
Desplegar un flujo de trabajo de ejemplo
Una vez que hayas definido un flujo de trabajo, debes implementarlo para que se pueda ejecutar. El paso de implementación también valida que el archivo de origen se pueda ejecutar.
El siguiente flujo de trabajo envía una solicitud a una API pública y, a continuación, devuelve la respuesta de la API.
Obtén el código de ejemplo
Puedes clonar el código de ejemplo de GitHub.
Ejecutar el código de ejemplo
Puedes ejecutar el código de ejemplo y tu flujo de trabajo. Al ejecutar un flujo de trabajo, se ejecuta la definición del flujo de trabajo desplegado asociado a él.
Transferir datos en una solicitud de ejecución
Según el lenguaje de la biblioteca de cliente, también puedes transferir un argumento del entorno de ejecución en una solicitud de ejecución. Por ejemplo:
C#
Go
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;
Python
Para obtener más información sobre cómo transferir argumentos del entorno de ejecución, consulta el artículo Transferir argumentos del entorno de ejecución en una solicitud de ejecución.
Limpieza
Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.
El flujo de trabajo se elimina.