Activa flujos de trabajo con Eventarc

1. Descripción general

En este lab, crearás un activador de Eventarc que conecte un tema de Pub/Sub al servicio de Workflows. Eventarc te permite separar la comunicación de servicio a servicio, lo que hace que tu solución sea más extensible y esté basada en eventos. Crearás un flujo de trabajo que incluya varios pasos para ejecutar un proceso comercial y calcular los puntos de recompensa de los clientes por hacer pedidos en Cymbal Eats. El flujo de trabajo llamará a una API de servicio privada de Cloud Run para ejecutar la lógica empresarial. El servicio de Cloud Run está configurado para permitir solo el tráfico interno y requiere autenticación. El flujo de trabajo publicará un mensaje en el tema de Pub/Sub para notificar al servicio de pedidos sobre los puntos de recompensa calculados.

c6d4337a47b55333.png

¿Qué es Eventarc?

Eventarc te permite compilar arquitecturas basadas en eventos sin tener que implementar, personalizar o mantener la infraestructura subyacente. Eventarc ofrece una solución estandarizada para administrar el flujo de cambios de estado, llamados eventos, entre microservicios separados. Cuando se activa, Eventarc enruta estos eventos a través de suscripciones de Pub/Sub a varios destinos (p. ej., Workflows o Cloud Run) mientras administras la entrega, la seguridad, la autorización, la observabilidad y el manejo de errores por ti.

Proveedores de eventos de Google

  • Más de 90 proveedores de Google Cloud. Estos proveedores envían eventos directamente desde la fuente (por ejemplo, Cloud Storage) o a través de entradas de Registros de auditoría de Cloud.
  • Proveedores de Pub/Sub. Estos proveedores envían eventos a Eventarc con mensajes de Pub/Sub.

Proveedores externos

Los proveedores externos son entidades que no pertenecen a Google y que ofrecen una fuente de Eventarc.

Activadores de Eventarc

  • Eventos de Cloud Pub/Sub. Eventarc se puede activar con mensajes publicados en temas de Pub/Sub.
  • Eventos de los registros de auditoría de Cloud (CAL). Los Registros de auditoría de Cloud proporcionan registros de auditoría de actividad de los administradores y de acceso a los datos para cada proyecto, carpeta y organización de Cloud.
  • Eventos directos. Eventarc se puede activar mediante varios eventos directos, como una actualización a un bucket de Cloud Storage o una actualización de una plantilla de Firebase Remote Config.

Destinos de eventos

  • Workflows
  • Cloud Run
  • GKE
  • Cloud Functions( 2a gen.)

c7ca054200edf1b3.png

¿Qué es Workflows?

Workflows es un servicio completamente administrado que te permite integrar microservicios, tareas y APIs. Workflows es un servicio sin servidores que escalará para satisfacer tu demanda.

Casos de uso de Workflows:

  • Los flujos de trabajo controlados por eventos se ejecutan en activadores definidos. Por ejemplo, cuando se envía un pedido nuevo y quieres calcular los puntos de lealtad del cliente. Cuando se cancela un pedido, se puede publicar el evento y todos los servicios interesados lo procesarán.
  • Los flujos de trabajo de los trabajos por lotes ejecutan trabajos de forma regular con Cloud Scheduler. Por ejemplo, un trabajo nocturno para comprobar si hay elementos del menú en estado de error y borrarlos.

Workflows es ideal para flujos de trabajo que organizan servicios. Puedes automatizar procesos que incluyen esperas y reintentos de hasta un año.

Beneficios de Workflows:

  • Configuración a través del código: Mueve la lógica a la configuración para reducir la deuda técnica, en lugar de escribir código.
  • Simplifica tu arquitectura. Los flujos de trabajo con estado te permiten visualizar y supervisar integraciones de servicios complejas sin dependencias adicionales.
  • Incorporar confiabilidad y tolerancia a errores Controla las fallas con una lógica de reintento predeterminada o personalizada y el manejo de errores, incluso cuando otros sistemas fallan: un control de cada paso hacia Cloud Spanner para ayudarte a hacer un seguimiento del progreso.
  • No requieren mantenimiento. Escala según sea necesario: no es necesario aplicar parches ni mantener. Paga solo cuando se ejecuten tus flujos de trabajo, sin costo mientras esperas o están inactivos.

En este lab, configurarás un flujo de trabajo controlado por eventos.

Qué aprenderás

En este lab, aprenderás a realizar las siguientes tareas:

  • Configura el tema de Pub/Sub y Eventarc para activar Workflows
  • Configura el flujo de trabajo para llamar al servicio de Cloud Run y publicar mensajes en Pub/Sub
  • Cómo consultar registros estructurados de Workflows en Cloud Logging y con gcloud CLI

Requisitos previos

  • Para este lab, se da por sentado que el usuario tiene conocimientos previos sobre los entornos de la consola de Cloud y Cloud Shell.
  • Tener experiencia previa en Cloud Run y Cloud Pub/Sub es útil, pero no obligatoria.

2. Configuración y requisitos

Configuración del proyecto de Cloud

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla en cualquier momento.
  • El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. por lo general, no te importa qué es. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (por lo general, se identifica como PROJECT_ID). Si no te gusta el ID generado, puedes generar otro aleatorio. También puedes probar el tuyo propio y ver si está disponible. No se puede cambiar después de este paso y se mantendrá mientras dure el proyecto.
  • Para tu información, hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Para cerrar recursos y evitar que se te facture más allá de este instructivo, puedes borrar los recursos que creaste o borrar todo el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.

Configuración del entorno

Para activar Cloud Shell, haz clic en el ícono que se encuentra a la derecha de la barra de búsqueda.

eb0157a992f16fa3.png

Clona el repositorio, navega al directorio, copia y pega el siguiente comando en la terminal y presiona Intro:

git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service

Para implementar las dependencias necesarias, ejecuta lab-setup.sh.

Se crearán los siguientes recursos:

  • Instancia y clúster de AlloyDB
  • Artifact Registry, a fin de almacenar imágenes de contenedor para el trabajo de Cloud Run y la atención al cliente
  • El conector de acceso a VPC para que el servicio y el trabajo de Cloud Run se comuniquen con la base de datos de AlloyDB
  • Trabajo de Cloud Run para crear una base de datos de AlloyDB
  • Atención al cliente de Cloud Run: Microservicio basado en Java que usa el framework de Quarkus.
./lab-setup.sh

Si se te solicita que autorices, haz clic en “Autorizar”. para continuar.

6356559df3eccdda.png

El proceso de configuración tardará unos 10 minutos.

Espera hasta que la secuencia de comandos finalice y veas el siguiente resultado antes de ejecutar otros pasos.

Deploying container to Cloud Run service [customer-service] in project [cymbal-eats-19227-5681] region [us-east1]
OK Deploying new service... Done.                                                   
  OK Creating Revision...
  OK Routing traffic...
Done.
Service [customer-service] revision [customer-service-00001-mid] has been deployed and is serving 100 percent of traffic.
Service URL: https://customer-service-e4p5zon5rq-ue.a.run.app

Puedes explorar la siguiente sección y, luego, volver para reanudar desde el paso siguiente.

3. Revisa el flujo de trabajo

Conceptos principales de los flujos de trabajo

Un flujo de trabajo consta de una serie de pasos descritos mediante la sintaxis de Workflows( YAML o JSON).

Después de crear un flujo de trabajo, este se implementa, lo que prepara el flujo de trabajo para su ejecución.

Una ejecución es una ejecución única de la lógica contenida en la definición de un flujo de trabajo. Un flujo de trabajo que no se ejecutó no genera cargos. Todas las ejecuciones de los flujos de trabajo son independientes, y el escalamiento rápido del producto permite una gran cantidad de ejecuciones simultáneas.

Controles de ejecución

  • Pasos: Para crear un flujo de trabajo, debes definir el steps y el orden de ejecución deseados con la sintaxis de Workflows. Cada flujo de trabajo debe tener al menos un paso.
  • Condiciones: Puedes usar un bloque switch como un mecanismo de selección que permite que el valor de una expresión controle el flujo de la ejecución de un flujo de trabajo.
  • Iteraciones: Puedes usar un bucle for para iterar en una secuencia de números o a través de una colección de datos, como una lista o un mapa.
  • Subflujos de trabajo: Un subflujo de trabajo funciona de manera similar a una rutina o función en un lenguaje de programación, lo que te permite encapsular un paso o un conjunto de pasos que tu flujo de trabajo repetirá varias veces.

Activa ejecuciones

  • Manual: Puedes administrar flujos de trabajo desde la consola de Google Cloud o desde la línea de comandos con Google Cloud CLI.
  • Programática: Las bibliotecas cliente de Cloud para la API de Workflows o la API de REST se pueden usar para administrar flujos de trabajo.
  • Programado: Puedes usar Cloud Scheduler para ejecutar un flujo de trabajo en un programa en particular.

Argumentos del entorno de ejecución

Para acceder a los datos que se pasan en el entorno de ejecución, agrega un campo params al flujo de trabajo principal (ubicado en un bloque principal). El bloque principal acepta un solo argumento que es cualquier tipo de dato JSON válido. El campo de parámetros nombra la variable que el flujo de trabajo usa para almacenar los datos que pasas.

Flujo de trabajo a la autenticación del servicio de Cloud Run

La atención al cliente es una aplicación de ejemplo incluida en este repositorio que se ejecuta en Cloud Run y está configurada para permitir solicitudes autenticadas provenientes solo de redes internas. Configurarás Workflows para agregar un token de OpenID Connect(OIDC) firmado por Google a la solicitud para autenticar con el servicio de Cloud Run.

Consulta la documentación para obtener más información sobre la autenticación de servicio a servicio.

La autenticación del flujo de trabajo se configura en el bloque args con la sección auth.

rewardsWorkflow.yaml.tmpl

   - create_customer:
        call: http.post
        args:
          url: CUSTOMER_SERVICE_URL/customer
          auth:
            type: OIDC

Lógica del flujo de trabajo

Si un cliente no existe, este flujo de trabajo realizará una llamada a la API para crear primero un cliente y, luego, actualizará los puntos de recompensa. Según el importe total del pedido, el flujo de trabajo seleccionará un multiplicador para calcular los puntos de recompensa del cliente. Consulta el siguiente ejemplo para obtener más detalles.

  - calculate_multiplier:
        switch:
          - condition: ${totalAmount < 10}
            steps:
              - set_multiplier1:
                  assign:
                    - multiplier: 2
          - condition: ${totalAmount >= 10 and totalAmount < 25}
            steps:
              - set_multiplier2:
                  assign:
                    - multiplier: 3
          - condition: ${totalAmount >= 25}
            steps:
              - set_multiplier3:
                  assign:
                    - multiplier: 5
    - calculate_rewards:
        assign:
            - rewardPoints: ${customerRecord.rewardPoints * multiplier}

fcd91b2bc5d60347.png

4. Configura e implementa el flujo de trabajo

Configura variables de entorno:

export REGION=us-east1

export CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
  --platform managed \
  --region $REGION \
  --format=json | jq \
  --raw-output ".status.url")

echo $CUSTOMER_SERVICE_URL

Reemplaza la URL del servicio en la plantilla de flujo de trabajo:

sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" rewardsWorkflow.yaml.tmpl > rewardsWorkflow.yaml

Configura la ubicación para el servicio de Workflows y las variables de entorno del proyecto:

gcloud config set workflows/location ${REGION}

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')

Crea una cuenta de servicio personalizada para el flujo de trabajo con los siguientes permisos:

  • Invocar el servicio de Cloud Run
  • APIs de registro de llamadas
  • Publica mensajes en el tema de Pub/Sub
export WORKFLOW_SERVICE_ACCOUNT=workflows-cloudrun-sa

gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/run.invoker"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/logging.logWriter"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/pubsub.publisher"

Implementa el flujo de trabajo. El flujo de trabajo está configurado para usar la cuenta de servicio creada en el paso anterior:

export WORKFLOW_NAME=rewardsWorkflow

gcloud workflows deploy ${WORKFLOW_NAME} \
  --source=rewardsWorkflow.yaml \
  --service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com

Revisa la fuente del flujo de trabajo y otros detalles(pestaña Activadores). Por el momento, no hay activadores configurados para ejecutar este flujo de trabajo. Lo configurarás en el siguiente paso.

d3527393fb07a9b3.png

5. Configura los temas de Pub/Sub y el activador de Eventarc

A continuación, crearás dos temas de Pub/Sub y configurarás un activador de Eventarc.

El servicio de pedidos publicará mensajes en order-topic con información sobre los pedidos nuevos.

El flujo de trabajo publicará mensajes en order-points-topic con información sobre los puntos de recompensa del pedido y el importe total. El servicio de pedidos(parte que no se implementó de este lab) expone un extremo que usa la suscripción push para order-points-topic, para actualizar los puntos de recompensa y el importe total por pedido.

Crea temas de Pub/Sub nuevos:

export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID

Establece la ubicación para el servicio de Eventarc:

gcloud config set eventarc/location ${REGION}

Crea una cuenta de servicio personalizada que usará el activador de Eventarc para ejecutar los flujos de trabajo.

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

Otorgar acceso a la cuenta de servicio para ejecutar flujos de trabajo.

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/workflows.invoker"

Crear un activador de Eventarc para escuchar los mensajes de Pub/Sub y entregarlos a Workflows

gcloud eventarc triggers create new-orders-trigger \
  --destination-workflow=${WORKFLOW_NAME} \
  --destination-workflow-location=${REGION} \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --transport-topic=$TOPIC_ID

Resultado de muestra:

Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done.     
Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow].
WARNING: It may take up to 2 minutes for the new trigger to become active.

Revisa el activador de Eventarc creado.

bda445561ad5f4.png

Revisa la suscripción creada para el activador.

3fccdda7d5526597.png

Revisa los cambios en el lado del flujo de trabajo. Se agregó un activador nuevo.

23d338abc16eaac8.png

6. Flujo de trabajo de prueba

c6d4337a47b55333.png

Para simular el servicio de pedidos, enviarás mensajes al tema de Pub/Sub desde Cloud Shell y verificarás los registros del servicio de atención al cliente de Cloud Run en la consola de Cloud.

export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

Resultado de muestra:

messageIds:
- '5063709859203105'

Revisa los detalles y los registros de la ejecución del flujo de trabajo.

1e802826c700cc3e.png

aad0eae7a970316.png

7. Registro estructurado del flujo de trabajo

El flujo de trabajo está configurado para escribir registros estructurados en formato JSON. Los registros se escriben con la API de Cloud Logging, el recurso workflows.googleapis.com/Workflow y con el nombre de registro projects/${PROJECT_ID}/logs/Workflows.

Revisa la configuración de registro que aparece a continuación.

    - log_totalAmount:
        call: sys.log
        args:
            json:
              orderNumber: ${order.orderNumber}
              totalAmount: ${totalAmount}
              multiplier: ${multiplier}
              totalRewardPoints: ${rewardPoints}
              orderRewardPoints: ${orderRewardPoints}
            severity: INFO

Abre el Explorador de registros en la consola y ejecuta una consulta para los pedidos procesados con un importe total superior a $2 dólares.

Utiliza la siguiente consulta y reemplaza el ID del proyecto(qwiklabs-gcp-01-1a990bfcadb3) por el ID de tu proyecto actual:

resource.type="workflows.googleapis.com/Workflow" AND 
logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND 
jsonPayload.totalAmount > 2 AND 
timestamp >= "2022-11-01T23:59:59Z" AND 
timestamp <= "2023-11-05T00:00:00Z"

Resultado de muestra:

22d2f4686c58724d.png

Abre Cloud Shell y usa gcloud CLI para leer registros con los siguientes comandos.

Reemplaza el ID del proyecto(qwiklabs-gcp-01-1a990bfcadb3) por el ID de tu proyecto actual.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

Resultado de muestra con formato table:

35d5fd851ecde60.png

Reemplaza el ID del proyecto(qwiklabs-gcp-01-1a990bfcadb3) por el ID de tu proyecto actual.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format=json | jq

Resultado de muestra con formato json:

ac7421548ea9a9f2.png

8. Revisar registros de clientes

(Pasos opcionales) En este momento, customer-service está configurado para aceptar tráfico solo de redes internas.

Ejecuta los siguientes comandos para guardar la URL de servicio y llamar al servicio de atención al cliente.

export REGION=us-east1
CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".status.url")

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer

Recibirás un mensaje de error que indicará que el acceso está prohibido.

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>403 Forbidden</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Forbidden</h1>
<h2>Access is forbidden.</h2>
<h2></h2>
</body></html>

Para ver los registros de clientes existentes, cambia la configuración de entrada de customer-service de Cloud Run a “Allow all traffic” y haz clic en "Guardar".

Esto hará que el extremo sea público y podrás llamar a la API de atención al cliente desde Cloud Shell con curl.

9156e0eb0a19bc68.png

Ejecuta los siguientes comandos para guardar la URL del servicio y enumerar los clientes existentes.

CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".status.url")

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq

Resultado de muestra:

[
  {
    "id": "id1",
    "rewardPoints": 3,
    "address": "1845 Denise St",
    "city": "Mountain View",
    "createDateTime": "2022-11-11T15:56:45.487566",
    "email": "ajensen9090+eats@gmail.com",
    "name": "Angela Jensen",
    "state": "CA",
    "updateDateTime": "2022-11-11T15:56:45.866125",
    "zip": "94043"
  }
]

Ejecuta el comando para publicar un nuevo pedido varias veces y verifica los puntos de recompensa del cliente con el comando curl.

Publicar nuevo mensaje de pedido:

export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

Verifica los puntos de recompensa para clientes:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq

Verificar registros Reemplaza el ID del proyecto(qwiklabs-gcp-01-1a990bfcadb3) por el ID de tu proyecto actual.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

9. ¡Felicitaciones!

¡Felicitaciones! Completaste el codelab.

Temas abordados:

  • Cómo configurar Workflows
  • Cómo configurar el activador de Eventarc para Workflows
  • Cómo llamar al servicio de Cloud Run desde Workflows
  • Cómo consultar registros estructurados en Cloud Logging y con gcloud CLI

¿Qué sigue?

Explora otros codelabs de Cymbal Eats:

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.