1. खास जानकारी
इस लैब में, आपको एक Eventarc ट्रिगर बनाना होगा. यह ट्रिगर, Pub/Sub के किसी विषय को Workflows सेवा से कनेक्ट करता है. Eventarc की मदद से, सेवा से सेवा के बीच होने वाले कम्यूनिकेशन को अलग किया जा सकता है. इससे आपका समाधान ज़्यादा एक्सटेंसिबल और इवेंट-ड्रिवन बन जाता है. आपको एक ऐसा वर्कफ़्लो बनाना होगा जिसमें कई चरण शामिल हों. इससे, Cymbal Eats से ऑर्डर करने पर खरीदार को मिलने वाले इनाम के पॉइंट का हिसाब लगाया जा सकेगा. कारोबार के लॉजिक को लागू करने के लिए, वर्कफ़्लो एक निजी Cloud Run सेवा एपीआई को कॉल करेगा. Cloud Run सेवा को सिर्फ़ अंदरूनी ट्रैफ़िक की अनुमति देने के लिए कॉन्फ़िगर किया गया है. इसके लिए, पुष्टि करना ज़रूरी है. वर्कफ़्लो, Pub/Sub टॉपिक पर एक मैसेज पब्लिश करेगा. इससे Order Service को कैलकुलेट किए गए इनाम के पॉइंट के बारे में सूचना मिलेगी.
Eventarc क्या है?
Eventarc की मदद से, इवेंट पर आधारित आर्किटेक्चर बनाए जा सकते हैं. इसके लिए, आपको बुनियादी इन्फ़्रास्ट्रक्चर को लागू करने, उसे पसंद के मुताबिक बनाने या उसे बनाए रखने की ज़रूरत नहीं होती. Eventarc, स्टेट में होने वाले बदलावों (इन्हें इवेंट कहा जाता है) के फ़्लो को मैनेज करने के लिए, स्टैंडर्ड समाधान उपलब्ध कराता है. यह समाधान, अलग-अलग माइक्रोसेवाओं के बीच काम करता है. ट्रिगर होने पर, Eventarc इन इवेंट को Pub/Sub की सदस्यताओं के ज़रिए अलग-अलग डेस्टिनेशन पर भेजता है. जैसे, Workflows या Cloud Run) का इस्तेमाल करता है. साथ ही, यह आपके लिए डिलीवरी, सुरक्षा, अनुमति, निगरानी, और गड़बड़ी ठीक करने की सुविधा को मैनेज करता है.
Google इवेंट प्रोवाइडर
- Google Cloud की सेवाएं देने वाली 90 से ज़्यादा कंपनियां. ये कंपनियां, इवेंट को सीधे सोर्स (जैसे, Cloud Storage) से या Cloud Audit Logs की एंट्री के ज़रिए भेजती हैं.
- Pub/Sub की सेवाएं देने वाली कंपनियां. ये प्रोवाइडर, Pub/Sub मैसेज का इस्तेमाल करके Eventarc को इवेंट भेजते हैं.
सेवा देने वाली तीसरे पक्ष की कंपनियां
तीसरे पक्ष की कंपनियां, Google से बाहर की ऐसी इकाइयां होती हैं जो Eventarc सोर्स उपलब्ध कराती हैं.
Eventarc ट्रिगर
- Cloud Pub/Sub इवेंट. Eventarc को Pub/Sub विषयों पर पब्लिश किए गए मैसेज से ट्रिगर किया जा सकता है.
- Cloud Audit Logs (CAL) इवेंट. Cloud Audit Logs, हर Cloud प्रोजेक्ट, फ़ोल्डर, और संगठन के लिए, एडमिन की गतिविधि और डेटा ऐक्सेस के ऑडिट लॉग उपलब्ध कराते हैं.
- डायरेक्ट इवेंट. Eventarc को कई डायरेक्ट इवेंट से ट्रिगर किया जा सकता है. जैसे, Cloud Storage बकेट में अपडेट या Firebase Remote Config टेंप्लेट में अपडेट.
इवेंट के डेस्टिनेशन
- वर्कफ़्लो
- Cloud Run
- GKE (जीकेई)
- Cloud Functions( दूसरी जनरेशन)

Workflows क्या है?
Workflows एक पूरी तरह से मैनेज की जाने वाली सेवा है. इसकी मदद से, माइक्रोसेवाओं, टास्क, और एपीआई को इंटिग्रेट किया जा सकता है. Workflows, सर्वरलेस सेवा है. यह आपकी मांग के हिसाब से काम करेगी.
वर्कफ़्लो इस्तेमाल करने के उदाहरण:
- इवेंट पर आधारित वर्कफ़्लो, तय किए गए ट्रिगर पर काम करते हैं. उदाहरण के लिए, जब कोई नया ऑर्डर सबमिट किया जाता है और आपको ग्राहक के लॉयल्टी पॉइंट कैलकुलेट करने होते हैं. इसके अलावा, ऑर्डर रद्द होने पर भी इवेंट पब्लिश किया जा सकता है. साथ ही, इवेंट में दिलचस्पी रखने वाली सभी सेवाएं, इवेंट को प्रोसेस करेंगी.
- बैच जॉब वर्कफ़्लो, Cloud Scheduler का इस्तेमाल करके नियमित तौर पर जॉब चलाते हैं. उदाहरण के लिए, रात में चलने वाला एक ऐसा जॉब जो 'अनुमोदन नहीं मिला' स्थिति वाले मेन्यू आइटम की जांच करता है और उन्हें मिटा देता है.
Workflows, उन वर्कफ़्लो के लिए सबसे सही है जो सेवाओं को व्यवस्थित करते हैं. एक साल तक इंतज़ार करने और फिर से कोशिश करने वाली प्रोसेस को ऑटोमेट किया जा सकता है.
वर्कफ़्लो के फ़ायदे:
- कोड के बजाय कॉन्फ़िगरेशन का इस्तेमाल करना: कोड लिखने के बजाय लॉजिक को कॉन्फ़िगरेशन में ले जाकर, तकनीकी कर्ज़ को कम करें.
- अपने आर्किटेक्चर को आसान बनाएं. स्टेटफ़ुल वर्कफ़्लो की मदद से, जटिल सेवा इंटिग्रेशन को विज़ुअलाइज़ और मॉनिटर किया जा सकता है. इसके लिए, आपको किसी और चीज़ पर निर्भर रहने की ज़रूरत नहीं होती.
- भरोसेमंद और गड़बड़ी को बर्दाश्त करने की क्षमता शामिल करें. डिफ़ॉल्ट या कस्टम रीट्राई लॉजिक और गड़बड़ी को ठीक करने की सुविधा के साथ कंट्रोल फ़ेल होने की स्थिति में भी, अन्य सिस्टम के फ़ेल होने पर भी काम करता है. साथ ही, हर चरण को Cloud Spanner में सेव करता है, ताकि आपको प्रोसेस की प्रोग्रेस के बारे में पता चल सके.
- कोई रखरखाव नहीं. ज़रूरत के मुताबिक बढ़ाएं: इसमें किसी भी तरह का पैच या रखरखाव नहीं करना पड़ता. वर्कफ़्लो के चलने पर ही पेमेंट करें. वर्कफ़्लो के इंतज़ार में होने या बंद होने पर, कोई शुल्क नहीं लगता.
इस लैब में, इवेंट पर आधारित वर्कफ़्लो को कॉन्फ़िगर किया जाएगा.
आपको क्या सीखने को मिलेगा
इस लैब में, आपको ये काम करने का तरीका बताया जाएगा:
- Workflows को ट्रिगर करने के लिए, Pub/Sub विषय और Eventarc को कॉन्फ़िगर करना
- Cloud Run सेवा को कॉल करने और Pub/Sub पर मैसेज पब्लिश करने के लिए, Workflow को कॉन्फ़िगर करना
- Cloud Logging और gcloud सीएलआई का इस्तेमाल करके, Workflows के स्ट्रक्चर्ड लॉग को क्वेरी करने का तरीका
ज़रूरी शर्तें
- इस लैब को शुरू करने से पहले, यह माना जा रहा है कि आपको Cloud Console और Cloud Shell एनवायरमेंट के बारे में जानकारी है.
- Cloud Run और Cloud Pub/Sub का अनुभव होना फ़ायदेमंद है, लेकिन ज़रूरी नहीं है.
2. सेटअप और ज़रूरी शर्तें
Cloud Project का सेटअप
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_IDके तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहेगा. - आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या पूरे प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
एनवायरमेंट सेटअप करना
सर्च बार के दाईं ओर मौजूद आइकॉन पर क्लिक करके, Cloud Shell चालू करें.

रिपॉज़िटरी को क्लोन करें और डायरेक्ट्री पर जाएं. इसके बाद, यहां दिए गए निर्देश को कॉपी करके टर्मिनल में चिपकाएं और Enter दबाएं:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
lab-setup.sh कमांड चलाकर, ज़रूरी डिपेंडेंसी डिप्लॉय करें
ये संसाधन बनाए जाएंगे:
- AlloyDB क्लस्टर और इंस्टेंस
- Cloud Run Job और Customer Service के लिए कंटेनर इमेज सेव करने के लिए Artifact Registry
- Cloud Run सेवा और जॉब के लिए वीपीसी ऐक्सेस कनेक्टर, ताकि AlloyDB डेटाबेस से कम्यूनिकेट किया जा सके
- AlloyDB डेटाबेस बनाने के लिए Cloud Run जॉब
- Cloud Run Customer service - java based microservice that uses Quarkus framework.
./lab-setup.sh
अगर अनुमति देने के लिए कहा जाए, तो जारी रखने के लिए "अनुमति दें" पर क्लिक करें.

सेटअप में करीब 10 मिनट लगेंगे.
जब तक स्क्रिप्ट पूरी न हो जाए और आपको नीचे आउटपुट न दिख जाए, तब तक अन्य चरणों को लागू न करें.
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
अगले सेक्शन को एक्सप्लोर किया जा सकता है. इसके बाद, अगले चरण से जारी रखने के लिए वापस आएं.
3. समीक्षा वर्कफ़्लो
वर्कफ़्लो के मुख्य सिद्धांत
वर्कफ़्लो में, Workflows सिंटैक्स( YAML या JSON) का इस्तेमाल करके बताए गए चरणों की एक सीरीज़ होती है.
वर्कफ़्लो बनाने के बाद, उसे डिप्लॉय किया जाता है. इससे वर्कफ़्लो को लागू किया जा सकता है.
एक्ज़ीक्यूशन, वर्कफ़्लो की परिभाषा में शामिल लॉजिक का एक बार रन होना है. जिस वर्कफ़्लो को लागू नहीं किया गया है उसके लिए कोई शुल्क नहीं लिया जाता. सभी वर्कफ़्लो एक-दूसरे से अलग होते हैं. साथ ही, प्रॉडक्ट के तेज़ी से स्केल होने की वजह से, एक साथ कई वर्कफ़्लो को लागू किया जा सकता है.
एक्ज़ीक्यूशन कंट्रोल
- चरण - वर्कफ़्लो बनाने के लिए, Workflows सिंटैक्स का इस्तेमाल करके, अपनी ज़रूरत के हिसाब से
stepsऔर उन्हें लागू करने का क्रम तय करें. हर वर्कफ़्लो में कम से कम एक चरण होना चाहिए. - शर्तें -
switchब्लॉक का इस्तेमाल, चुनने के तरीके के तौर पर किया जा सकता है. इससे एक्सप्रेशन की वैल्यू, वर्कफ़्लो के एक्ज़ीक्यूशन के फ़्लो को कंट्रोल कर सकती है. - इटरेशन -
forलूप का इस्तेमाल करके, संख्याओं के क्रम या डेटा के कलेक्शन को दोहराया जा सकता है. जैसे, सूची या मैप. - सबवर्कफ़्लो - सबवर्कफ़्लो, प्रोग्रामिंग भाषा में रूटीन या फ़ंक्शन की तरह काम करता है. इससे आपको एक या एक से ज़्यादा ऐसे चरणों को शामिल करने की सुविधा मिलती है जिन्हें आपका वर्कफ़्लो कई बार दोहराएगा.
एक्ज़ीक्यूशन ट्रिगर करना
- मैन्युअल - Google Cloud console या Google Cloud CLI का इस्तेमाल करके, कमांड लाइन से वर्कफ़्लो मैनेज किए जा सकते हैं.
- प्रोग्राम के हिसाब से - वर्कफ़्लो को मैनेज करने के लिए, Workflows API के लिए Cloud Client Libraries या REST API का इस्तेमाल किया जा सकता है.
- शेड्यूल किया गया - किसी वर्कफ़्लो को किसी खास शेड्यूल पर चलाने के लिए, Cloud Scheduler का इस्तेमाल किया जा सकता है.
रनटाइम आर्ग्युमेंट
रनटाइम में पास किए गए डेटा को ऐक्सेस करने के लिए, अपने मुख्य वर्कफ़्लो (मुख्य ब्लॉक में रखा गया) में params फ़ील्ड जोड़ें. मुख्य ब्लॉक, एक ही आर्ग्युमेंट स्वीकार करता है. यह आर्ग्युमेंट, मान्य JSON डेटा टाइप होना चाहिए. params फ़ील्ड, उस वैरिएबल का नाम बताता है जिसका इस्तेमाल वर्कफ़्लो, पास किए गए डेटा को सेव करने के लिए करता है.
Cloud Run सेवा की पुष्टि करने का वर्कफ़्लो
ग्राहक सेवा, इस रेपो में शामिल एक सैंपल ऐप्लिकेशन है. यह Cloud Run पर चलता है और इसे इस तरह कॉन्फ़िगर किया गया है कि यह सिर्फ़ इंटरनल नेटवर्क से आने वाले पुष्टि किए गए अनुरोधों को अनुमति दे. Cloud Run सेवा से पुष्टि करने के लिए, अनुरोध में Google के हस्ताक्षर वाला OpenID Connect(OIDC) टोकन जोड़ने के लिए, वर्कफ़्लो कॉन्फ़िगर करें.
सेवा से सेवा के बीच पुष्टि करने की सुविधा के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
वर्कफ़्लो की पुष्टि करने की सुविधा को args ब्लॉक में कॉन्फ़िगर किया जाता है. इसके लिए, auth सेक्शन का इस्तेमाल किया जाता है.
rewardsWorkflow.yaml.tmpl
- create_customer:
call: http.post
args:
url: CUSTOMER_SERVICE_URL/customer
auth:
type: OIDC
वर्कफ़्लो लॉजिक
अगर कोई ग्राहक मौजूद नहीं है, तो यह वर्कफ़्लो पहले ग्राहक को बनाने के लिए एपीआई कॉल करेगा. इसके बाद, इनाम के पॉइंट अपडेट करेगा. ऑर्डर की कुल कीमत के आधार पर, वर्कफ़्लो एक मल्टीप्लायर चुनेगा. इससे ग्राहक के लिए इनाम के पॉइंट का हिसाब लगाया जा सकेगा. ज़्यादा जानकारी के लिए, यहां दिया गया सैंपल देखें.
- 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. वर्कफ़्लो को कॉन्फ़िगर और डिप्लॉय करना
एनवायरमेंट वैरिएबल सेट अप करें:
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
वर्कफ़्लो टेंप्लेट में सेवा का यूआरएल बदलें:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" rewardsWorkflow.yaml.tmpl > rewardsWorkflow.yaml
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)')
वर्कफ़्लो के लिए, कस्टम सेवा खाता बनाएं. इसके लिए, ये अनुमतियां दें:
- Cloud Run सेवा को चालू करना
- कॉल लॉगिंग एपीआई
- 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"
वर्कफ़्लो डिप्लॉय करें. वर्कफ़्लो को पिछले चरण में बनाए गए सेवा खाते का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=rewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
वर्कफ़्लो के सोर्स और अन्य जानकारी(ट्रिगर टैब) की समीक्षा करें. फ़िलहाल, इस वर्कफ़्लो को चालू करने के लिए कोई ट्रिगर कॉन्फ़िगर नहीं किया गया है. इसे अगले चरण में सेट अप किया जाएगा.

5. Pub/Sub विषयों और Eventarc ट्रिगर को कॉन्फ़िगर करना
इसके बाद, आपको दो Pub/Sub विषय बनाने होंगे और एक Eventarc ट्रिगर को कॉन्फ़िगर करना होगा.
Order Service, order-topic पर नए ऑर्डर की जानकारी वाले मैसेज पब्लिश करेगी.
वर्कफ़्लो, order-points-topic पर मैसेज पब्लिश करेगा. इसमें ऑर्डर के इनाम के तौर पर मिले पॉइंट और कुल रकम की जानकारी होगी. Order Service(इस लैब का हिस्सा नहीं है) एक ऐसा एंडपॉइंट दिखाता है जिसका इस्तेमाल Push subscription, order-points-topic, के लिए करता है. इससे हर ऑर्डर के लिए इनाम के पॉइंट और कुल रकम को अपडेट किया जा सकता है.
नए 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
Eventarc सेवा के लिए जगह की जानकारी सेट करें:
gcloud config set eventarc/location ${REGION}
एक कस्टम सेवा खाता बनाएं. इसका इस्तेमाल Eventarc ट्रिगर, वर्कफ़्लो को लागू करने के लिए करेगा.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
वर्कफ़्लो लागू करने के लिए, सेवा खाते को ऐक्सेस दें.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
Pub/Sub मैसेज सुनने और उन्हें Workflows तक पहुंचाने के लिए, Eventarc ट्रिगर बनाएं.
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
आउटपुट का उदाहरण:
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.
समीक्षा बनाई गई Eventarc ट्रिगर.

ट्रिगर के लिए, सदस्यता की समीक्षा की गई.

वर्कफ़्लो में हुए बदलावों की समीक्षा करें. नया ट्रिगर जोड़ा गया.

6. वर्कफ़्लो की जांच करना
ऑर्डर सेवा का सिम्युलेशन करने के लिए, Cloud Shell से Pub/Sub विषय पर मैसेज भेजे जाएंगे. साथ ही, Cloud Console में Cloud Run की ग्राहक सेवा के लॉग की पुष्टि की जाएगी.
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}]}'
आउटपुट का उदाहरण:
messageIds: - '5063709859203105'
वर्कफ़्लो के एक्ज़ीक्यूशन की जानकारी और लॉग देखें.


7. वर्कफ़्लो की स्ट्रक्चर्ड लॉगिंग
वर्कफ़्लो को JSON फ़ॉर्मैट में स्ट्रक्चर्ड लॉग लिखने के लिए कॉन्फ़िगर किया गया है. लॉग को Cloud Logging API और workflows.googleapis.com/Workflow रिसॉर्स का इस्तेमाल करके लिखा जाता है. साथ ही, इन्हें projects/${PROJECT_ID}/logs/Workflows लॉग के नाम से सेव किया जाता है.
नीचे दिए गए लॉगिंग कॉन्फ़िगरेशन की समीक्षा करें.
- log_totalAmount:
call: sys.log
args:
json:
orderNumber: ${order.orderNumber}
totalAmount: ${totalAmount}
multiplier: ${multiplier}
totalRewardPoints: ${rewardPoints}
orderRewardPoints: ${orderRewardPoints}
severity: INFO
Console में लॉग एक्सप्लोरर खोलें. इसके बाद, प्रोसेस किए गए उन ऑर्डर के लिए क्वेरी चलाएं जिनका कुल शुल्क दो डॉलर से ज़्यादा है.
नीचे दी गई क्वेरी का इस्तेमाल करें. प्रोजेक्ट आईडी(qwiklabs-gcp-01-1a990bfcadb3) की जगह अपना मौजूदा प्रोजेक्ट आईडी डालें:
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"
आउटपुट का उदाहरण:

Cloud Shell खोलें और नीचे दिए गए निर्देशों के साथ, gcloud CLI का इस्तेमाल करके लॉग पढ़ें.
प्रोजेक्ट आईडी(qwiklabs-gcp-01-1a990bfcadb3) को अपने मौजूदा प्रोजेक्ट आईडी से बदलें.
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)"
table फ़ॉर्मैट का इस्तेमाल करके आउटपुट का सैंपल:

प्रोजेक्ट आईडी(qwiklabs-gcp-01-1a990bfcadb3) को अपने मौजूदा प्रोजेक्ट आईडी से बदलें.
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
json फ़ॉर्मैट का इस्तेमाल करके आउटपुट का सैंपल:

8. ग्राहक के रिकॉर्ड की समीक्षा करना
(ज़रूरी नहीं) फ़िलहाल, customer-service को सिर्फ़ इंटरनल नेटवर्क से ट्रैफ़िक स्वीकार करने के लिए कॉन्फ़िगर किया गया है.
सेवा का यूआरएल सेव करने और ग्राहक सेवा को कॉल करने के लिए, यहां दी गई कमांड चलाएं.
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
आपको गड़बड़ी का एक मैसेज मिलेगा, जिसमें बताया जाएगा कि आपको ऐक्सेस करने की अनुमति नहीं है.
<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>
मौजूदा ग्राहक रिकॉर्ड देखने के लिए, Cloud Run customer-service ingress की सेटिंग को "Allow all traffic" विकल्प पर बदलें. इसके बाद, "सेव करें" पर क्लिक करें.
इससे एंडपॉइंट सार्वजनिक हो जाएगा. साथ ही, curl का इस्तेमाल करके Cloud Shell से Customer Service API को कॉल किया जा सकेगा.

सेवा के यूआरएल को सेव करने और मौजूदा ग्राहकों की सूची बनाने के लिए, यहां दी गई कमांड चलाएं.
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
आउटपुट का उदाहरण:
[
{
"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"
}
]
एक नया ऑर्डर कई बार पब्लिश करने के लिए कमांड चलाएं. साथ ही, curl कमांड की मदद से ग्राहक के इनाम पॉइंट की पुष्टि करें.
नए ऑर्डर से जुड़ा मैसेज पब्लिश करें:
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}]}'
ग्राहक के इनाम के पॉइंट की पुष्टि करें:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq
लॉग की पुष्टि करें. प्रोजेक्ट आईडी(qwiklabs-gcp-01-1a990bfcadb3) को अपने मौजूदा प्रोजेक्ट आईडी से बदलें.
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. बधाई हो!
बधाई हो, आपने कोडलैब पूरा कर लिया है!
हमने इन विषयों पर बात की:
- वर्कफ़्लो कॉन्फ़िगर करने का तरीका
- Workflows के लिए Eventarc ट्रिगर को कॉन्फ़िगर करने का तरीका
- Workflows से Cloud Run सेवा को कॉल करने का तरीका
- Cloud Logging और gcloud सीएलआई का इस्तेमाल करके, स्ट्रक्चर्ड लॉग को क्वेरी करने का तरीका
इसके बाद क्या होगा:
Cymbal Eats के अन्य कोडलैब देखें:
- Cloud Storage से इवेंट प्रोसेसिंग ट्रिगर करना
- Cloud Run से Private CloudSQL से कनेक्ट करना
- Cloud Run से पूरी तरह से मैनेज किए गए डेटाबेस से कनेक्ट करना
- पहचान के बारे में जानकारी रखने वाले प्रॉक्सी (आईएपी) की मदद से, सर्वरलेस ऐप्लिकेशन को सुरक्षित करना
- Cloud Scheduler की मदद से Cloud Run जॉब ट्रिगर करना
- Cloud Run पर सुरक्षित तरीके से डिप्लॉय करना
- Cloud Run में आने वाले ट्रैफ़िक को सुरक्षित करना
- GKE Autopilot से प्राइवेट AlloyDB इंस्टेंस से कनेक्ट करना
व्यवस्थित करें
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, संसाधनों वाला प्रोजेक्ट मिटाएं. इसके अलावा, प्रोजेक्ट को बनाए रखने और अलग-अलग संसाधनों को मिटाने का विकल्प भी है.
प्रोजेक्ट मिटाना
बिलिंग को बंद करने का सबसे आसान तरीका यह है कि ट्यूटोरियल के लिए बनाया गया प्रोजेक्ट मिटा दें.
