Aktywowanie przepływów pracy za pomocą Eventarc

1. Omówienie

W tym module utworzysz aktywator Eventarc, który łączy temat Pub/Sub z usługą Workflows. Eventarc pozwala oddzielić komunikację między usługami, dzięki czemu rozwiązanie jest bardziej elastyczne i zależne od zdarzeń. Utworzysz przepływ pracy obejmujący wiele etapów procesu biznesowego obliczania punktów w programie lojalnościowym klienta za składanie zamówień w Cymbal Eats. Przepływ pracy będzie wywoływać prywatny interfejs API usługi Cloud Run, aby wykonać logikę biznesową. Usługa Cloud Run jest skonfigurowana tak, aby zezwalać tylko na ruch wewnętrzny i wymaga uwierzytelniania. Przepływ pracy opublikuje wiadomość w temacie Pub/Sub, aby powiadomić usługę zamówienia o obliczonych punktach premiowych.

c6d4337a47b55333.png

Co to jest Eventarc?

Eventarc umożliwia tworzenie architektur opartych na zdarzeniach bez konieczności wdrażania, dostosowywania czy utrzymywania bazowej infrastruktury. Eventarc oferuje ujednolicone rozwiązanie do zarządzania przepływem zmian stanu zwanych zdarzeniami między odłączonych mikroserwisami. Po uruchomieniu Eventarc kieruje te zdarzenia przez subskrypcje Pub/Sub do różnych miejsc docelowych (np. przepływów pracy czy Cloud Run), a jednocześnie zarządza przesyłaniem, zabezpieczeniami, autoryzacją, dostrzegalnością i obsługą błędów.

Dostawcy zdarzeń Google

  • Ponad 90 dostawców Google Cloud. Ci dostawcy wysyłają zdarzenia bezpośrednio ze źródła (na przykład Cloud Storage) lub za pomocą wpisów logów kontrolnych Cloud.
  • Dostawcy Pub/Sub. Ci dostawcy wysyłają zdarzenia do Eventarc za pomocą wiadomości Pub/Sub.

Dostawcy zewnętrzni

Dostawcy zewnętrzni to podmioty inne niż Google, które oferują źródło Eventarc.

Aktywatory Eventarc

  • Zdarzenia Cloud Pub/Sub. Eventarc może być aktywowany przez wiadomości publikowane w tematach Pub/Sub.
  • Zdarzenia w logach kontrolnych Cloud (CAL). Logi kontrolne Cloud zawierają logi kontrolne aktywności administratora i dostępu do danych dla każdego projektu, folderu i organizacji Cloud.
  • Zdarzenia bezpośrednie. Eventarc może być aktywowany przez różne zdarzenia bezpośrednie, takie jak aktualizacja zasobnika Cloud Storage lub aktualizacja szablonu Zdalnej konfiguracji Firebase.

Miejsca docelowe wydarzeń

  • Przepływy pracy
  • Cloud Run
  • GKE
  • Cloud Functions( 2 generacji)

c7ca054200edf1b3.png

Co to jest Workflows?

Przepływy pracy to w pełni zarządzana usługa, która umożliwia integrację mikroserwisów, zadań i interfejsów API. Workflows to bezserwerowa usługa, która jest skalowana odpowiednio do zapotrzebowania.

Przypadki użycia przepływów pracy:

  • Przepływy pracy oparte na zdarzeniach są wykonywane w zdefiniowanych aktywatorach. Stanie się tak na przykład wtedy, gdy po przesłaniu nowego zamówienia chcesz obliczyć punkty lojalnościowe klienta. Po anulowaniu zamówienia wydarzenie można opublikować, a wszystkie zainteresowane usługi je przetworzą.
  • Przepływy pracy zadań wsadowych uruchamiają zadania regularnie za pomocą usługi Cloud Scheduler. Może to być na przykład zadanie nocne polegające na wyszukaniu i usunięciu pozycji menu, które mają stan „Niepowodzenie”.

Przepływy pracy idealnie sprawdzają się w przypadku przepływów pracy administrujących usługami. Możesz zautomatyzować procesy, które obejmują odczekanie i ponawianie próby nawet przez rok.

Zalety przepływu pracy:

  • Konfigurowanie zamiast pisania kodu: zmniejsz niepotrzebny dług technologiczny, przenosząc logikę do konfiguracji zamiast pisać kod.
  • Uprość architekturę. Stanowe przepływy pracy umożliwiają wizualizację i monitorowanie złożonych integracji usług bez dodatkowych zależności.
  • Postaw na niezawodność i odporność na awarie. Kontroluj błędy za pomocą domyślnej lub niestandardowej logiki ponownych prób i obsługi błędów nawet w przypadku awarii innych systemów. Sprawdzasz każdy krok w Cloud Spanner, aby ułatwić śledzenie postępów.
  • Nie wymaga obsługi. Skalowanie w miarę potrzeb: nie ma niczego do poprawienia ani do utrzymywania. Płać tylko za uruchomione przepływy pracy – bez opłat i braku aktywności.

W tym module skonfigurujesz przepływ pracy oparty na zdarzeniach.

Czego się nauczysz

Z tego modułu nauczysz się:

  • Skonfiguruj temat Pub/Sub i Eventarc, aby aktywować przepływy pracy
  • Konfigurowanie przepływu pracy do wywoływania usługi Cloud Run i publikowania wiadomości w Pub/Sub
  • Jak tworzyć zapytania dotyczące uporządkowanych logów Workflows w Cloud Logging i za pomocą gcloud CLI

Wymagania wstępne

  • W tym module zakładamy, że znasz środowiska konsoli Cloud i Cloud Shell.
  • Wcześniejsze doświadczenia z Cloud Run i Cloud Pub/Sub są pomocne, ale nie wymagane.

2. Konfiguracja i wymagania

Konfigurowanie projektu Cloud

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zmienić.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń z programowania konieczne jest odwołanie się do identyfikatora projektu (zwykle nazywa się on PROJECT_ID). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Potem nie będzie można go zmienić. Pozostanie ono przez czas trwania projektu.
  • Dostępna jest trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub cały projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Konfiguracja środowiska

Aktywuj Cloud Shell, klikając ikonę po prawej stronie paska wyszukiwania.

eb0157a992f16fa3.png

Sklonuj repozytorium, przejdź do katalogu, skopiuj poniższe polecenie, wklej je w terminalu i naciśnij Enter:

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

Wdróż wymagane zależności, uruchamiając lab-setup.sh

Zostaną utworzone te zasoby:

  • Klaster i instancja AlloyDB
  • Artifact Registry do przechowywania obrazów kontenerów na potrzeby zadań i obsługi klienta w Cloud Run
  • Oprogramowanie sprzęgające dostęp do VPC na potrzeby usługi i zadania Cloud Run do komunikacji z bazą danych AlloyDB
  • Zadanie Cloud Run do utworzenia bazy danych AlloyDB
  • Obsługa klienta w Cloud Run – oparty na Javie mikroserwis, który korzysta z platformy Quarkus.
./lab-setup.sh

Jeśli pojawi się prośba o autoryzację, kliknij „Autoryzuj”. aby kontynuować.

6356559df3eccdda.png

Konfiguracja potrwa około 10 minut.

Zanim wykonasz kolejne czynności, poczekaj, aż skrypt zakończy działanie i zobaczysz dane wyjściowe poniżej.

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

Możesz zapoznać się z następną sekcją, a potem wrócić do następnego kroku.

3. Sprawdź przepływ pracy

Podstawowe pojęcia dotyczące przepływów pracy

Przepływ pracy składa się z serii kroków opisanych przy użyciu składni Workflows( YAML lub JSON).

Po utworzeniu przepływu pracy jest on wdrażany, dzięki czemu jest on gotowy do wykonania.

Wykonanie to pojedyncze uruchomienie logiki zawartej w definicji przepływu pracy. Niewykonany przepływ pracy nie generuje żadnych opłat. Wszystkie wykonania przepływów pracy są niezależne, a szybkie skalowanie usługi umożliwia dużą liczbę równoczesnych wykonań.

Ustawienia wykonywania

  • Kroki – aby utworzyć przepływ pracy, określ żądane steps oraz kolejność wykonywania za pomocą składni Workflows. Każdy przepływ pracy musi zawierać co najmniej 1 krok.
  • Warunki – możesz użyć bloku switch jako mechanizmu wyboru, który umożliwia wartości wyrażenia kontrolowanie przepływu wykonania przepływu pracy.
  • Iteracje – możesz użyć pętli for do iteracji w sekwencji liczb lub przez zbieranie danych, takich jak lista lub mapa.
  • Podrzędne przepływy pracy – podrzędny przepływ pracy działa podobnie do rutyny lub funkcji w języku programowania, umożliwiając uwzględnienie kroku lub zestawu kroków, który będzie powtórzony wiele razy.

Aktywowanie uruchomień

  • Ręcznie – możesz zarządzać przepływami pracy w konsoli Google Cloud lub z poziomu wiersza poleceń za pomocą Google Cloud CLI.
  • Automatyzacja – do zarządzania przepływami pracy można używać bibliotek klienta Cloud dla interfejsu Workflows API (lub interfejsu API REST).
  • Zaplanowany – możesz używać usługi Cloud Scheduler do uruchamiania przepływu pracy według określonego harmonogramu.

Argumenty środowiska wykonawczego

Dostęp do danych przekazywanych w czasie działania można uzyskać, dodając pole params do głównego przepływu pracy (umieszczonego w głównym bloku). Blok główny akceptuje pojedynczy argument w dowolnym prawidłowym typie danych JSON. Pole Parametry zawiera nazwę zmiennej, której w przepływie pracy używa do przechowywania przekazywanych przez Ciebie danych.

Przepływ pracy do uwierzytelniania usługi Cloud Run

Usługa klienta to przykładowa aplikacja uwzględniona w tym repozytorium, która działa w Cloud Run i jest skonfigurowana tak, aby zezwalać na uwierzytelnione żądania pochodzące tylko z sieci wewnętrznych. Skonfigurujesz Workflows tak, aby dodać do żądania token OpenID Connect(OIDC) podpisany przez Google, aby uwierzytelnić się w usłudze Cloud Run.

Zapoznaj się z dokumentacją, aby dowiedzieć się więcej o uwierzytelnianiu między usługami.

Uwierzytelnianie przepływu pracy jest konfigurowane w bloku args za pomocą sekcji auth.

rewardsWorkflow.yaml.tmpl

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

Logika przepływu pracy

Jeśli klient nie istnieje, w ramach tego procesu najpierw zostanie wywołany interfejs API w celu utworzenia klienta, a potem zaktualizuje punkty w programie lojalnościowym. Na podstawie łącznej kwoty zamówienia przepływ pracy wybierze mnożnik do obliczenia punktów w programie lojalnościowym dla klienta. Szczegóły znajdziesz poniżej.

  - 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. Konfigurowanie i wdrażanie przepływu pracy

Skonfiguruj zmienne środowiskowe:

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

Zastąp adres URL usługi w szablonie przepływu pracy:

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

Ustaw lokalizację zmiennych środowiskowych usługi Workflows i projektu:

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

Utwórz niestandardowe konto usługi na potrzeby przepływu pracy z tymi uprawnieniami:

  • Wywołaj usługę Cloud Run
  • Interfejsy API rejestrowania połączeń
  • Publikowanie wiadomości w temacie PubSub
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"

Przepływ pracy wdrażania. Przepływ pracy jest skonfigurowany tak, aby korzystać z konta usługi utworzonego w poprzednim kroku:

export WORKFLOW_NAME=rewardsWorkflow

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

Sprawdź źródło przepływu pracy i inne szczegóły(karta Reguły). W tej chwili nie ma żadnych aktywatorów skonfigurowanych do wykonywania tego przepływu pracy. Skonfigurujesz ją w następnym kroku.

d3527393fb07a9b3.png

5. Skonfiguruj tematy Pub/Sub i aktywator Eventarc

Utworzysz 2 tematy Pub/Sub i skonfigurujesz 1 aktywator Eventarc.

Usługa zamawiania będzie publikować na koncie order-topic wiadomości z informacjami o nowych zamówieniach.

Przepływ pracy będzie publikować w usłudze order-points-topic wiadomości z informacjami o punktach w programie lojalnościowym za zamówienie i łącznej kwocie. Usługa zamówienia(niewdrożona część tego modułu) udostępnia punkt końcowy używany przez subskrypcję Push w order-points-topic, do aktualizowania punktów nagród i łącznej kwoty za zamówienie.

Utwórz nowe tematy 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

Ustaw lokalizację usługi Eventarc:

gcloud config set eventarc/location ${REGION}

Utwórz niestandardowe konto usługi, które będzie używane przez aktywator Eventarc do wykonywania przepływów pracy.

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

Przyznaj dostęp do konta usługi w celu wykonywania przepływów pracy.

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

Utwórz aktywator Eventarc, aby nasłuchiwać wiadomości Pub/Sub i dostarczać je do 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

Przykładowe dane wyjściowe:

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.

Sprawdź utworzony aktywator Eventarc.

bda445561ad5f4.png

Sprawdź utworzoną subskrypcję dla reguły.

3fccdda7d5526597.png

Sprawdź zmiany po stronie przepływu pracy. Dodano nową regułę.

23d338abc16eaac8.png

6. Testowanie przepływu pracy

c6d4337a47b55333.png

Aby przeprowadzić symulację usługi zamówienia, wyślesz z Cloud Shell wiadomości do tematu Pub/Sub i zweryfikujesz logi usługi klienta Cloud Run w konsoli 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}]}'

Przykładowe dane wyjściowe:

messageIds:
- '5063709859203105'

Przejrzyj szczegóły wykonania przepływu pracy i dzienniki.

1e802826c700cc3e.png

aad0eae7a970316.png

7. Uporządkowane logowanie przepływu pracy

Przepływ pracy jest skonfigurowany do zapisywania uporządkowanych logów w formacie JSON. Dzienniki są zapisywane przy użyciu interfejsu Cloud Logging API i zasobu workflows.googleapis.com/Workflow oraz pod nazwą logu projects/${PROJECT_ID}/logs/Workflows.

Sprawdź konfigurację logowania poniżej.

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

W konsoli otwórz Eksploratora logów i wykonuj zapytanie dotyczące przetworzonych zamówień o łącznej wartości powyżej 2 USD.

Użyj poniższego zapytania, zastępując identyfikator projektu(qwiklabs-gcp-01-1a990bfcadb3) identyfikatorem obecnego projektu:

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"

Przykładowe dane wyjściowe:

22d2f4686c58724d.png

Otwórz Cloud Shell i użyj interfejsu wiersza poleceń gcloud, aby odczytać logi za pomocą poniższych poleceń.

Zastąp identyfikator projektu(qwiklabs-gcp-01-1a990bfcadb3) identyfikatorem obecnego projektu.

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

Przykładowe dane wyjściowe w formacie table:

35d5fd851ecde60.png

Zastąp identyfikator projektu(qwiklabs-gcp-01-1a990bfcadb3) identyfikatorem obecnego projektu.

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

Przykładowe dane wyjściowe w formacie json:

ac7421548ea9a9f2.png

8. Sprawdź dane klientów

(Kroki opcjonalne) Obecnie sieć customer-service jest skonfigurowana tak, aby akceptowała tylko ruch z sieci wewnętrznych.

Uruchom poniższe polecenia, aby zapisać adres URL usługi i wywołać obsługę klienta.

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

Pojawi się komunikat o błędzie informujący o tym, że dostęp jest zabroniony.

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

Aby wyświetlić rekordy klientów, zmień ustawienia ruchu przychodzącego w Cloud Run customer-service na „Allow all traffic” i kliknij „Zapisz”.

Punkt końcowy stanie się publiczny i będzie można wywołać interfejs Customer Service API z Cloud Shell za pomocą curl.

9156e0eb0a19bc68.png

Uruchom polecenia poniżej, aby zapisać adres URL usługi i wyświetlić listę obecnych klientów.

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

Przykładowe dane wyjściowe:

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

Uruchom polecenie, aby wielokrotnie opublikować nowe zamówienie i zweryfikować punkty w programie lojalnościowym klienta za pomocą polecenia curl.

Opublikuj nową wiadomość dotyczącą zamówienia:

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

Zweryfikuj punkty w programie lojalnościowym klienta:

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

Sprawdź dzienniki. Zastąp identyfikator projektu(qwiklabs-gcp-01-1a990bfcadb3) identyfikatorem obecnego projektu.

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

Gratulacje. Udało Ci się ukończyć ćwiczenia z programowania.

Omówione zagadnienia:

  • Jak skonfigurować przepływy pracy
  • Jak skonfigurować aktywator Eventarc dla Workflows
  • Jak wywołać usługę Cloud Run z poziomu Workflows
  • Jak tworzyć zapytania dotyczące uporządkowanych logów w Cloud Logging i za pomocą gcloud CLI

Co dalej:

Poznaj inne ćwiczenia z programowania Cymbal Eats:

Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym samouczku, możesz usunąć projekt zawierający te zasoby lub zachować projekt i usunąć poszczególne zasoby.

Usuwam projekt

Najprostszym sposobem na uniknięcie płatności jest usunięcie projektu utworzonego na potrzeby samouczka.