Attivazione di Workflows con Eventarc

1. Panoramica

In questo lab creerai un trigger Eventarc che collega un argomento Pub/Sub al servizio Workflows. Eventarc ti consente di disaccoppiare la comunicazione da servizio a servizio, rendendo la tua soluzione più estensibile e basata su eventi. Creerai un workflow che include più passaggi per eseguire un processo aziendale per calcolare i punti premio dei clienti per gli ordini effettuati su Cymbal Eats. Il flusso di lavoro chiamerà un'API di servizio Cloud Run privata per eseguire la logica di business. Il servizio Cloud Run è configurato per consentire solo il traffico interno e richiede l'autenticazione. Il flusso di lavoro pubblicherà un messaggio nell'argomento Pub/Sub per comunicare al servizio ordini i punti premio calcolati.

c6d4337a47b55333.png

Che cos'è Eventarc?

Eventarc ti consente di creare architetture basate su eventi senza dover implementare, personalizzare o gestire l'infrastruttura sottostante. Eventarc offre una soluzione standardizzata per gestire il flusso delle modifiche dello stato, chiamate eventi, tra microservizi disaccoppiati. Quando viene attivato, Eventarc indirizza questi eventi tramite le sottoscrizioni Pub/Sub a varie destinazioni (ad es. Workflows o Cloud Run) e gestisce per te la distribuzione, la sicurezza, l'autorizzazione, l'osservabilità e la gestione degli errori.

Fornitori di eventi Google

  • Più di 90 fornitori di Google Cloud. Questi provider inviano eventi direttamente dall'origine (ad esempio Cloud Storage) o tramite le voci di Cloud Audit Logs.
  • Fornitori Pub/Sub. Questi provider inviano eventi a Eventarc utilizzando i messaggi Pub/Sub.

Fornitori di terze parti

I provider di terze parti sono entità non Google che offrono un'origine Eventarc.

Trigger Eventarc

  • Eventi Cloud Pub/Sub. Eventarc può essere attivato da messaggi pubblicati negli argomenti Pub/Sub.
  • Eventi di Audit log di Cloud (CAL). Cloud Audit Logs fornisce audit log delle attività di amministrazione e dell'accesso ai dati per ogni progetto, cartella e organizzazione Cloud.
  • Eventi diretti. Eventarc può essere attivato da vari eventi diretti, ad esempio un aggiornamento di un bucket Cloud Storage o un aggiornamento di un modello Firebase Remote Config.

Destinazioni evento

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

c7ca054200edf1b3.png

Che cos'è Workflows?

Workflows è un servizio completamente gestito che consente di integrare microservizi, attività e API. Workflows è un servizio serverless e verrà scalato per soddisfare la domanda.

Casi d'uso dei flussi di lavoro:

  • I workflow basati su eventi vengono eseguiti in base a trigger definiti. Ad esempio, quando viene inviato un nuovo ordine e vuoi calcolare i punti fedeltà del cliente. Oppure, quando un ordine viene annullato, l'evento può essere pubblicato e tutti i servizi interessati lo elaboreranno.
  • I workflow dei batch job eseguono i job regolarmente utilizzando Cloud Scheduler. Ad esempio, un job notturno per verificare la presenza di voci di menu con stato non riuscito ed eliminarle.

Workflows è ideale per i workflow che orchestrano i servizi. Puoi automatizzare i processi che includono tempi di attesa e nuovi tentativi fino a un anno.

Vantaggi dei flussi di lavoro:

  • Configurazione anziché codice:riduci il debito tecnico spostando la logica nella configurazione anziché scrivere codice.
  • Semplifica la tua architettura. I flussi di lavoro stateful ti consentono di visualizzare e monitorare integrazioni di servizi complesse senza dipendenze aggiuntive.
  • Incorpora affidabilità e tolleranza agli errori. Controlla gli errori con la logica dei nuovi tentativi predefinita o personalizzata e la gestione degli errori anche quando altri sistemi non funzionano, spuntando ogni passaggio in Cloud Spanner per aiutarti a tenere traccia dei progressi.
  • Nessuna manutenzione. Scalabilità in base alle esigenze: non sono necessarie l'applicazione di patch o la manutenzione. Paga solo quando i tuoi flussi di lavoro vengono eseguiti, senza costi durante l'attesa o i tempi di inattività.

In questo lab configurerai un flusso di lavoro basato su eventi.

Cosa imparerai a fare

In questo lab imparerai a:

  • Configura l'argomento Pub/Sub ed Eventarc per attivare Workflows
  • Configura il flusso di lavoro per chiamare il servizio Cloud Run e pubblicare messaggi su Pub/Sub
  • Come eseguire query sui log strutturati di Workflows in Cloud Logging e utilizzando gcloud CLI

Prerequisiti

  • Questo lab presuppone la familiarità con gli ambienti della console Cloud e di Cloud Shell.
  • L'esperienza pregressa con Cloud Run e Cloud Pub/Sub è utile, ma non obbligatoria.

2. Configurazione e requisiti

Configurazione del progetto Cloud

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google. Puoi aggiornarlo in qualsiasi momento.
  • L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Cloud genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (in genere è identificato come PROJECT_ID). Se non ti piace l'ID generato, puoi generarne un altro casuale. In alternativa, puoi provare a crearne uno e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimarrà per tutta la durata del progetto.
  • Per tua informazione, esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Per arrestare le risorse in modo da non incorrere in costi di fatturazione al termine di questo tutorial, puoi eliminare le risorse che hai creato o l'intero progetto. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.

Configurazione dell'ambiente

Attiva Cloud Shell facendo clic sull'icona a destra della barra di ricerca.

eb0157a992f16fa3.png

Clona il repository e vai alla directory, copia e incolla il comando riportato di seguito nel terminale e premi Invio:

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

Esegui il deployment delle dipendenze richieste eseguendo lab-setup.sh.

Verranno create le seguenti risorse:

  • Cluster e istanza AlloyDB
  • Artifact Registry per archiviare le immagini container per Cloud Run Job e Customer Service
  • Connettore di accesso VPC per il servizio e il job Cloud Run per comunicare con il database AlloyDB
  • Job Cloud Run per creare il database AlloyDB
  • Servizio clienti Cloud Run: microservizio basato su Java che utilizza il framework Quarkus.
./lab-setup.sh

Se ti viene richiesto di concedere l'autorizzazione, fai clic su "Autorizza" per continuare.

6356559df3eccdda.png

La configurazione richiederà circa 10 minuti.

Attendi il completamento dello script e visualizza l'output riportato di seguito prima di eseguire altri passaggi.

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

Puoi esplorare la sezione successiva e poi tornare indietro per riprendere dal passaggio successivo.

3. Flusso di lavoro per la revisione

Concetti fondamentali di Workflows

Un workflow è costituito da una serie di passaggi descritti utilizzando la sintassi di Workflows( YAML o JSON).

Dopo la creazione, il workflow viene implementato, rendendolo pronto per l'esecuzione.

Un'esecuzione è una singola esecuzione della logica contenuta nella definizione di un workflow. Un flusso di lavoro che non è stato eseguito non genera addebiti. Tutte le esecuzioni di un workflow sono indipendenti e la scalabilità rapida del prodotto consente un numero elevato di esecuzioni simultanee.

Controlli di esecuzione

  • Passaggi: per creare un workflow, definisci il steps e l'ordine di esecuzione desiderati utilizzando la sintassi di Workflows. Ogni workflow deve avere almeno un passaggio.
  • Condizioni: puoi utilizzare un blocco switch come meccanismo di selezione che consente al valore di un'espressione di controllare il flusso di esecuzione di un workflow.
  • Iterazioni: puoi utilizzare un ciclo for per scorrere una sequenza di numeri o una raccolta di dati, ad esempio un elenco o una mappa.
  • Subworkflow: un subworkflow funziona in modo simile a una routine o a una funzione in un linguaggio di programmazione, consentendoti di incapsulare un passaggio o un insieme di passaggi che il flusso di lavoro ripeterà più volte.

Attivazione delle esecuzioni

  • Manuale: puoi gestire i flussi di lavoro dalla console Google Cloud o dalla riga di comando utilizzando Google Cloud CLI.
  • Programmatico: le librerie client Cloud per l'API Workflows o l'API REST possono essere utilizzate per gestire i flussi di lavoro.
  • Pianificato: puoi utilizzare Cloud Scheduler per eseguire un workflow in base a una pianificazione specifica.

Argomenti di runtime

È possibile accedere ai dati passati in fase di runtime aggiungendo un campo params al flusso di lavoro principale (inserito in un blocco principale). Il blocco principale accetta un singolo argomento di qualsiasi tipo di dati JSON valido. Il campo params indica la variabile utilizzata dal flusso di lavoro per memorizzare i dati che inserisci.

Flusso di lavoro per l'autenticazione del servizio Cloud Run

Il servizio clienti è un'applicazione di esempio inclusa in questo repository che viene eseguita su Cloud Run ed è configurata per consentire solo richieste autenticate provenienti da reti interne. Configurerai i flussi di lavoro per aggiungere un token OpenID Connect(OIDC) firmato da Google alla richiesta di autenticazione con il servizio Cloud Run.

Consulta la documentazione per scoprire di più sull'autenticazione da servizio a servizio.

L'autenticazione del flusso di lavoro è configurata nel blocco args utilizzando la sezione auth.

rewardsWorkflow.yaml.tmpl

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

Logica del workflow

Se un cliente non esiste, questo flusso di lavoro effettua una chiamata API per creare prima un cliente e poi aggiornare i punti premio. In base all'importo totale dell'ordine, il flusso di lavoro selezionerà un moltiplicatore per calcolare i punti premio per il cliente. Per maggiori dettagli, vedi l'esempio riportato di seguito.

  - 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. Configurare ed eseguire il deployment di Workflow

Imposta le variabili di ambiente:

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

Sostituisci l'URL del servizio nel modello di workflow:

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

Imposta la posizione per le variabili di ambiente del servizio Workflows e del progetto:

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 un service account personalizzato per il flusso di lavoro con le seguenti autorizzazioni:

  • Richiama il servizio Cloud Run
  • Chiamare le API di registrazione delle chiamate
  • Pubblica messaggi nell'argomento 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"

Esegui il deployment del workflow. Il flusso di lavoro è configurato per utilizzare il service account creato nel passaggio precedente:

export WORKFLOW_NAME=rewardsWorkflow

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

Controlla l'origine del workflow e altri dettagli(scheda Trigger). Al momento non sono configurati trigger per l'esecuzione di questo workflow. Lo configurerai nel passaggio successivo.

d3527393fb07a9b3.png

5. Configura argomenti Pub/Sub e trigger Eventarc

Successivamente, creerai due argomenti Pub/Sub e configurerai un trigger Eventarc.

Order Service pubblicherà messaggi su order-topic con informazioni sui nuovi ordini.

Il flusso di lavoro pubblicherà messaggi in order-points-topic con informazioni sui punti premio dell'ordine e sull'importo totale. Order Service(la parte di questo lab non sottoposta a deployment) espone un endpoint utilizzato dall'abbonamento push per order-points-topic, per aggiornare i punti premio e l'importo totale per ordine.

Crea nuovi argomenti 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

Imposta la località per il servizio Eventarc:

gcloud config set eventarc/location ${REGION}

Crea un service account personalizzato che verrà utilizzato dal trigger Eventarc per eseguire i workflow.

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

Concedi all'account di servizio l'accesso per eseguire i workflow.

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

Crea un trigger Eventarc per ascoltare i messaggi Pub/Sub e inviarli 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

Esempio di output:

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.

Esamina il trigger Eventarc creato.

bda445561ad5f4.png

Rivedi la sottoscrizione creata per il trigger.

3fccdda7d5526597.png

Rivedi le modifiche sul lato workflow. È stato aggiunto un nuovo trigger.

23d338abc16eaac8.png

6. Testa il flusso di lavoro

c6d4337a47b55333.png

Per simulare il servizio ordini, invierai messaggi all'argomento Pub/Sub da Cloud Shell e verificherai i log del servizio clienti Cloud Run nella 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}]}'

Esempio di output:

messageIds:
- '5063709859203105'

Esamina i dettagli di esecuzione del flusso di lavoro e i log.

1e802826c700cc3e.png

aad0eae7a970316.png

7. Logging strutturato del workflow

Il flusso di lavoro è configurato per scrivere log strutturati in formato JSON. I log vengono scritti utilizzando l'API Cloud Logging, la risorsa workflows.googleapis.com/Workflow e con il nome del log projects/${PROJECT_ID}/logs/Workflows.

Rivedi la configurazione del logging di seguito.

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

Apri Esplora log nella console ed esegui una query per gli ordini elaborati con un importo totale superiore a 2 $.

Utilizza la query riportata di seguito, sostituendo l'ID progetto(qwiklabs-gcp-01-1a990bfcadb3) con l'ID progetto corrente:

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"

Esempio di output:

22d2f4686c58724d.png

Apri Cloud Shell e utilizza gcloud CLI per leggere i log con i comandi riportati di seguito.

Sostituisci l'ID progetto(qwiklabs-gcp-01-1a990bfcadb3) con l'ID progetto corrente.

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

Esempio di output utilizzando il formato table:

35d5fd851ecde60.png

Sostituisci l'ID progetto(qwiklabs-gcp-01-1a990bfcadb3) con l'ID progetto corrente.

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

Esempio di output utilizzando il formato json:

ac7421548ea9a9f2.png

8. Esaminare le registrazioni dei clienti

(Passaggi facoltativi) Al momento customer-service è configurato per accettare il traffico solo dalle reti interne.

Esegui i comandi riportati di seguito per salvare l'URL del servizio e chiamare l'assistenza clienti.

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

Riceverai un messaggio di errore che indica che l'accesso è vietato.

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

Per visualizzare i record dei clienti esistenti, modifica le impostazioni di ingress di Cloud Run customer-service impostando l'opzione "Allow all traffic" e fai clic su "Salva".

In questo modo l'endpoint sarà pubblico e potrai chiamare l'API Customer Service da Cloud Shell utilizzando curl.

9156e0eb0a19bc68.png

Esegui i comandi riportati di seguito per salvare l'URL del servizio ed elencare i clienti esistenti.

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

Esempio di output:

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

Esegui il comando per pubblicare un nuovo ordine più volte e verifica i punti premio del cliente con il comando curl.

Pubblica il messaggio di nuovo ordine:

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 i punti premio del cliente:

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

Verifica i log. Sostituisci l'ID progetto(qwiklabs-gcp-01-1a990bfcadb3) con l'ID progetto corrente.

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. Complimenti!

Congratulazioni, hai completato il codelab.

Argomenti trattati:

  • Come configurare i workflow
  • Come configurare il trigger Eventarc per Workflows
  • Come chiamare il servizio Cloud Run da Workflows
  • Come eseguire query sui log strutturati in Cloud Logging e utilizzando gcloud CLI

Qual è il passaggio successivo?

Esplora altri codelab di Cymbal Eats:

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto creato per il tutorial.