Déclencher des workflows avec Eventarc

1. Présentation

Dans cet atelier, vous allez créer un déclencheur Eventarc qui connecte un sujet Pub/Sub au service Workflows. Eventarc vous permet de dissocier la communication entre les services, afin de rendre votre solution plus extensible et basée sur les événements. Vous allez créer un flux de travail qui comprend plusieurs étapes afin d’exécuter un processus commercial afin de calculer les points de récompense des clients pour une commande chez Cymbal Eats. Le workflow appellera une API de service Cloud Run privée pour exécuter la logique métier. Le service Cloud Run est configuré pour n'autoriser que le trafic interne et nécessite une authentification. Le workflow publiera un message dans le sujet Pub/Sub pour informer le service de commande des points de récompense calculés.

c6d4337a47b55333.png

Qu'est-ce qu'Eventarc ?

Eventarc vous permet de créer des architectures basées sur des événements sans avoir à implémenter, personnaliser ni gérer l'infrastructure sous-jacente. Eventarc offre une solution standardisée pour gérer le flux de changements d'état, appelés événements, entre des microservices découplés. Lorsqu'il est déclenché, Eventarc les achemine via des abonnements Pub/Sub vers différentes destinations (par exemple, Workflows ou Cloud Run) tout en gérant pour vous la distribution, la sécurité, les autorisations, l'observabilité et la gestion des erreurs.

Fournisseurs d'événements Google

  • Plus de 90 fournisseurs Google Cloud. Ces fournisseurs envoient des événements directement à partir de la source (par exemple, Cloud Storage) ou via des entrées Cloud Audit Logs.
  • fournisseurs Pub/Sub. Ces fournisseurs envoient des événements à Eventarc à l'aide de messages Pub/Sub.

Fournisseurs tiers

Les fournisseurs tiers sont des entités autres que Google qui proposent une source Eventarc.

Déclencheurs Eventarc

  • Événements Cloud Pub/Sub Eventarc peut être déclenché par des messages publiés dans des sujets Pub/Sub.
  • Événements Cloud Audit Logs (CAL). Cloud Audit Logs fournit des journaux d'audit pour les activités d'administration et l'accès aux données pour chaque projet, dossier et organisation Cloud.
  • Événements directs : Eventarc peut être déclenché par divers événements directs, tels que la mise à jour d'un bucket Cloud Storage ou d'un modèle Firebase Remote Config.

Destinations de l'événement

  • Workflows
  • Cloud Run
  • GKE
  • Cloud Functions( 2nd gen)

c7ca054200edf1b3.png

Qu'est-ce que Workflows ?

Workflows est un service entièrement géré qui vous permet d'intégrer des microservices, des tâches et des API. Workflows est un service sans serveur qui s'adaptera à votre demande.

Cas d'utilisation de Workflows:

  • Les workflows basés sur des événements s'exécutent sur des déclencheurs définis. Par exemple, lorsqu'une nouvelle commande est envoyée et que vous souhaitez calculer les points de fidélité des clients. Ou lorsqu'une commande est annulée, l'événement peut être publié et tous les services intéressés le traiteront.
  • Les workflows de jobs par lot exécutent des jobs régulièrement à l'aide de Cloud Scheduler. Par exemple, une tâche de nuit pour rechercher les éléments de menu dont l'état a échoué et les supprimer.

Workflows est idéal pour les workflows qui orchestrent des services. Vous pouvez automatiser des processus comprenant l'attente et les nouvelles tentatives pendant une durée maximale d'un an.

Avantages de Workflows:

  • La configuration plutôt que le code:réduisez les contraintes techniques en déplaçant la logique vers la configuration plutôt que d'écrire du code.
  • Simplifiez votre architecture. Les workflows avec état vous permettent de visualiser et de surveiller des intégrations de services complexes sans dépendances supplémentaires.
  • Intégrez la fiabilité et la tolérance aux pannes. Contrôlez les échecs avec une logique de nouvelle tentative et une gestion des erreurs par défaut ou personnalisées, même en cas de défaillance d'autres systèmes, en plaçant chaque étape du processus dans Cloud Spanner pour vous aider à suivre la progression.
  • Aucune maintenance. Évolutivité selon les besoins: vous n'avez rien à corriger ni à gérer. Vous ne payez que lorsque vos workflows s'exécutent, sans frais en cas d'attente ou d'inactivité.

Dans cet atelier, vous allez configurer un workflow basé sur des événements.

Objectifs de l'atelier

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Configurer le sujet Pub/Sub et Eventarc pour déclencher Workflows
  • Configurer Workflow pour appeler le service Cloud Run et publier des messages sur Pub/Sub
  • Interroger les journaux structurés Workflows dans Cloud Logging et à l'aide de gcloud CLI

Prérequis

  • Pour cet atelier, nous partons du principe que vous connaissez la console Cloud et les environnements Cloud Shell.
  • Une expérience préalable de Cloud Run et Cloud Pub/Sub est utile, mais pas obligatoire.

2. Préparation

Configuration du projet Cloud

  1. Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pouvez le modifier à tout moment.
  • L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique. généralement, vous ne vous souciez pas de ce que c’est. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (il est généralement identifié comme PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre au hasard. Vous pouvez également essayer la vôtre pour voir si elle est disponible. Il ne peut pas être modifié après cette étape et restera actif pendant toute la durée du projet.
  • Pour votre information, il existe une troisième valeur, le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter que des frais ne vous soient facturés au-delà de ce tutoriel, vous pouvez supprimer les ressources que vous avez créées ou l'ensemble du projet. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.

Configuration de l'environnement

Activez Cloud Shell en cliquant sur l'icône située à droite de la barre de recherche.

eb0157a992f16fa3.png

Clonez le dépôt, accédez au répertoire, copiez et collez la commande ci-dessous dans le terminal, puis appuyez sur Entrée:

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

Déployer les dépendances requises en exécutant la commande lab-setup.sh

Les ressources suivantes seront créées:

  • Cluster et instance AlloyDB
  • Artifact Registry pour stocker des images de conteneurs pour le job Cloud Run et le service client
  • Connecteur d'accès VPC pour le service et le job Cloud Run afin de communiquer avec la base de données AlloyDB
  • Job Cloud Run pour créer la base de données AlloyDB
  • Service client Cloud Run : microservice basé sur Java utilisant le framework Quarkus
./lab-setup.sh

Si vous êtes invité à donner votre autorisation, cliquez sur "Autoriser". pour continuer.

6356559df3eccdda.png

La configuration prendra environ 10 minutes.

Attendez que le script soit terminé et que le résultat ci-dessous s'affiche avant d'effectuer d'autres étapes.

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

Vous pouvez explorer la section suivante, puis revenir à l'étape suivante pour reprendre la procédure.

3. Examiner le workflow

Concepts fondamentaux de Workflows

Un workflow comprend une série d'étapes décrites à l'aide de la syntaxe Workflows( YAML ou JSON).

Une fois qu'un workflow est créé, il est déployé, ce qui le prépare à être exécuté.

Une exécution est une exécution unique de la logique contenue dans la définition d'un workflow. Un workflow qui n'a pas été exécuté ne génère aucuns frais. Toutes les exécutions de workflow sont indépendantes, et la mise à l'échelle rapide du produit permet un grand nombre d'exécutions simultanées.

Contrôles d'exécution

  • Étapes : pour créer un workflow, vous devez définir l'élément steps et l'ordre d'exécution souhaités à l'aide de la syntaxe Workflows. Chaque workflow doit comporter au moins une étape.
  • Conditions : vous pouvez utiliser un bloc switch comme mécanisme de sélection pour permettre à la valeur d'une expression de contrôler le flux d'exécution d'un workflow.
  • Itérations : vous pouvez utiliser une boucle for pour itérer une séquence de chiffres ou un ensemble de données, comme une liste ou une carte.
  • Sous-workflows : un sous-workflow fonctionne de la même manière qu'une routine ou une fonction dans un langage de programmation. Il vous permet d'encapsuler une étape ou un ensemble d'étapes que votre workflow répète plusieurs fois.

Déclencher des exécutions

  • Manuelle : vous pouvez gérer les workflows à partir de la console Google Cloud ou de la ligne de commande à l'aide de la Google Cloud CLI.
  • Programmatique : les bibliothèques clientes Cloud pour l'API Workflows, ou l'API REST, peuvent être utilisées pour gérer les workflows.
  • Planifié : vous pouvez utiliser Cloud Scheduler pour exécuter un workflow selon un calendrier spécifique.

Arguments d'exécution

Vous pouvez accéder aux données transmises au moment de l'exécution en ajoutant un champ params à votre workflow principal (placé dans un bloc principal). Le bloc "main" accepte un seul argument de n'importe quel type de données JSON valide. Le champ "params" nomme la variable utilisée par le workflow pour stocker les données que vous transmettez.

Workflow vers l'authentification du service Cloud Run

Le service client est un exemple d'application inclus dans ce dépôt. Il s'exécute sur Cloud Run et est configuré pour n'autoriser que les requêtes authentifiées provenant de réseaux internes. Vous allez configurer Workflows pour ajouter un jeton OpenID Connect(OIDC) signé par Google à la requête d'authentification auprès du service Cloud Run.

Consultez la documentation pour en savoir plus sur l'authentification de service à service.

L'authentification du workflow est configurée dans le bloc args à l'aide de la section auth.

rewardsWorkflow.yaml.tmpl

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

Logique du workflow

Si un client n'existe pas, ce workflow effectuera un appel d'API pour créer un client, puis mettre à jour les points de fidélité. En fonction du montant total de la commande, le workflow sélectionne un multiplicateur pour calculer les points de récompense du client. Pour en savoir plus, consultez l'exemple ci-dessous.

  - 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. Configurer et déployer le workflow

Configurez des variables d'environnement :

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

Remplacez l'URL du service dans le modèle de workflow:

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

Définissez l'emplacement des variables d'environnement du service et du projet Workflows:

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)')

Créez un compte de service personnalisé pour le workflow avec les autorisations suivantes:

  • Appeler le service Cloud Run
  • API de journalisation des appels
  • Publier des messages dans le sujet 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"

Workflow de déploiement Le workflow est configuré pour utiliser le compte de service créé à l'étape précédente:

export WORKFLOW_NAME=rewardsWorkflow

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

Examinez la source du workflow et d'autres détails(onglet "Déclencheurs"). Pour le moment, aucun déclencheur n'est configuré pour exécuter ce workflow. Vous le configurerez à l'étape suivante.

d3527393fb07a9b3.png

5. Configurer les sujets Pub/Sub et le déclencheur Eventarc

Vous allez ensuite créer deux sujets Pub/Sub et configurer un déclencheur Eventarc.

Le service de commande publiera des messages dans order-topic avec des informations sur les nouvelles commandes.

Le workflow publiera des messages dans order-points-topic avec des informations sur les points de fidélité de la commande et le montant total. Le service de commande(non déployé dans le cadre de cet atelier) expose un point de terminaison qui est utilisé par l'abonnement push pour order-points-topic, afin de mettre à jour les points de fidélité et le montant total par commande.

Créez des sujets Pub/Sub:

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

Définissez l'emplacement du service Eventarc:

gcloud config set eventarc/location ${REGION}

Créez un compte de service personnalisé qui permettra au déclencheur Eventarc d'exécuter des workflows.

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

Accordez au compte de service l'accès pour exécuter des workflows.

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

Créer un déclencheur Eventarc pour écouter les messages Pub/Sub et les distribuer à 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

Exemple de résultat :

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.

Examinez le déclencheur Eventarc créé.

bda445561ad5f4.png

Vérifiez l'abonnement créé pour le déclencheur.

3fccdda7d5526597.png

Examinez les modifications côté workflow. Un déclencheur a été ajouté.

23d338abc16eaac8.png

6. Tester le workflow

c6d4337a47b55333.png

Pour simuler le service Order Service, vous allez envoyer des messages au sujet Pub/Sub depuis Cloud Shell et vérifier les journaux du service client Cloud Run dans la console 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}]}'

Exemple de résultat :

messageIds:
- '5063709859203105'

Examinez les détails de l'exécution du workflow et les journaux.

1e802826c700cc3e.png

aad0eae7a970316.png

7. Journalisation structurée du workflow

Le workflow est configuré pour écrire des journaux structurés au format JSON. Les journaux sont écrits à l'aide de l'API Cloud Logging, de la ressource workflows.googleapis.com/Workflow et sous le nom de journal projects/${PROJECT_ID}/logs/Workflows.

Vérifiez la configuration de la journalisation ci-dessous.

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

Ouvrez l'explorateur de journaux dans la console et exécutez une requête sur les commandes traitées dont le montant total est supérieur à 2 $.

Utilisez la requête ci-dessous en remplaçant l'ID de projet(qwiklabs-gcp-01-1a990bfcadb3) par l'ID de votre projet actuel:

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"

Exemple de résultat :

22d2f4686c58724d.png

Ouvrez Cloud Shell et utilisez la gcloud CLI pour lire les journaux à l'aide des commandes ci-dessous.

Remplacez l'ID du projet(qwiklabs-gcp-01-1a990bfcadb3) par l'ID de votre projet actuel.

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)"

Exemple de résultat au format table:

35d5fd851ecde60.png

Remplacez l'ID du projet(qwiklabs-gcp-01-1a990bfcadb3) par l'ID de votre projet actuel.

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

Exemple de résultat au format json:

ac7421548ea9a9f2.png

8. Consulter les dossiers client

(Étapes facultatives) customer-service est actuellement configuré pour n'accepter que le trafic provenant de réseaux internes.

Exécutez les commandes ci-dessous pour enregistrer l'URL du service et appeler le service client.

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

Vous recevrez un message d'erreur indiquant que l'accès est interdit.

<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>

Pour afficher les dossiers clients existants, définissez les paramètres d'entrée de Cloud Run customer-service sur "Allow all traffic" puis cliquez sur "Enregistrer".

Le point de terminaison sera alors public, et vous pourrez appeler l'API Customer Service depuis Cloud Shell à l'aide de curl.

9156e0eb0a19bc68.png

Exécutez les commandes ci-dessous pour enregistrer l'URL du service et répertorier les clients existants.

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

Exemple de résultat :

[
  {
    "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"
  }
]

Exécutez la commande pour publier une nouvelle commande plusieurs fois et vérifier les points de récompense des clients avec la commande curl.

Publier le nouveau message de commande:

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}]}'

Vérifiez les points de récompense des clients:

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

Vérifiez les journaux. Remplacez l'ID du projet(qwiklabs-gcp-01-1a990bfcadb3) par l'ID de votre projet actuel.

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. Félicitations !

Félicitations, vous avez terminé cet atelier de programmation.

Points abordés

  • Configurer Workflows
  • Configurer un déclencheur Eventarc pour Workflows
  • Appeler un service Cloud Run à partir de Workflows
  • Interroger les journaux structurés dans Cloud Logging et utiliser gcloud CLI

Étapes suivantes :

Découvrez d'autres ateliers de programmation Cymbal Eats:

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.