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.
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)
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
- 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ć.
- 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.
- 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.
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ć.
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}
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.
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.
Sprawdź utworzoną subskrypcję dla reguły.
Sprawdź zmiany po stronie przepływu pracy. Dodano nową regułę.
6. Testowanie przepływu pracy
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.
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:
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
:
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
:
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.
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:
- Aktywowanie przetwarzania zdarzeń z Cloud Storage
- Łączenie z Private Cloud SQL z poziomu Cloud Run
- Łączenie z w pełni zarządzanymi bazami danych z Cloud Run
- Bezpieczna aplikacja bezserwerowa z serwerem proxy identyfikującym tożsamość (IAP)
- Aktywowanie zadań Cloud Run za pomocą usługi Cloud Scheduler
- Bezpieczne wdrażanie w Cloud Run
- Zabezpieczanie ruchu przychodzącego w Cloud Run
- Łączenie z prywatnym AlloyDB z Autopilota w GKE
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.