Eventarc की मदद से वर्कफ़्लो ट्रिगर करना

1. खास जानकारी

इस लैब में, आपको एक Eventarc ट्रिगर बनाना है, जो Pub/Sub विषय को Workflows सेवा से कनेक्ट करता है. Eventarc में, सेवाओं के साथ अलग-अलग तरह के कम्यूनिकेशन का इस्तेमाल करने की सुविधा मिलती है. इससे अपनी सेवाओं को ज़रूरत के हिसाब से और अलग-अलग इवेंट में इस्तेमाल किया जा सकता है. आपको एक ऐसा वर्कफ़्लो बनाना है जिसमें Cymbal Eagles पर ऑर्डर करने के लिए, कारोबार से जुड़ी प्रोसेस को पूरा करने के कई चरण शामिल हों और ग्राहक के लिए इनाम के पॉइंट का हिसाब लगाया जा सके. वर्कफ़्लो, कारोबार के लॉजिक को एक्ज़ीक्यूट करने के लिए, Cloud Run Service की निजी एपीआई को कॉल करेगा. Cloud Run सेवा को सिर्फ़ अंदरूनी ट्रैफ़िक को अनुमति देने के लिए कॉन्फ़िगर किया गया है और इसके लिए पुष्टि करने की ज़रूरत है. वर्कफ़्लो, Pub/Sub विषय में एक मैसेज पब्लिश करेगा. इस मैसेज में, ऑर्डर सेवा को इनाम के लिए दिए गए पॉइंट के बारे में बताया जाएगा.

c6d4337a47b55333.png

Eventarc क्या है?

Eventarc आपको इवेंट-ड्रिवन आर्किटेक्चर बनाने की अनुमति देता है. इसके लिए, आपको मौजूदा इन्फ़्रास्ट्रक्चर को लागू करने, उसे पसंद के मुताबिक बनाने या उसका रखरखाव करने की ज़रूरत नहीं होती. Eventarc अलग-अलग माइक्रोसेवाओं के बीच, राज्य में होने वाले बदलावों को मैनेज करने के लिए एक स्टैंडर्ड सलूशन उपलब्ध कराता है. इस प्रोसेस को इवेंट कहा जाता है. ट्रिगर किए जाने पर, Eventarc इन इवेंट को Pub/Sub सदस्यता के ज़रिए अलग-अलग डेस्टिनेशन पर रूट करता है (जैसे, वर्कफ़्लो या Cloud Run), आपके लिए डिलीवरी, सुरक्षा, अनुमति, निगरानी करने की क्षमता, और गड़बड़ियों को मैनेज करने के दौरान ही दिखते हैं.

Google के इवेंट से जुड़ी सेवा देने वाली कंपनियां

  • Google Cloud की सेवा देने वाली 90 से ज़्यादा कंपनियां. सेवा देने वाली ये कंपनियां, सीधे सोर्स (उदाहरण के लिए, Cloud Storage) से या क्लाउड ऑडिट लॉग एंट्री के ज़रिए इवेंट भेजती हैं.
  • Pub/Sub की सेवा देने वाली कंपनियां. सेवा देने वाली ये कंपनियां, Pub/Sub मैसेज का इस्तेमाल करके Eventarc को इवेंट भेजती हैं.

सेवा देने वाली तीसरे पक्ष की कंपनियां

तीसरे पक्ष की सेवा देने वाली कंपनियां, Google से बाहर की इकाइयां होती हैं, जो Eventarc सोर्स उपलब्ध कराती हैं.

Eventarc ट्रिगर

  • Cloud Pub/Sub इवेंट. Eventarc को Pub/Sub विषयों में पब्लिश किए गए मैसेज से ट्रिगर किया जा सकता है.
  • Cloud ऑडिट लॉग (CAL) इवेंट. क्लाउड ऑडिट लॉग से, आपको हर क्लाउड प्रोजेक्ट, फ़ोल्डर, और संगठन के लिए, एडमिन की गतिविधि और डेटा ऐक्सेस के ऑडिट लॉग की जानकारी मिलती है.
  • सीधा इवेंट. Eventarc को कई डायरेक्ट इवेंट से ट्रिगर किया जा सकता है. जैसे, Cloud Storage बकेट को अपडेट करना या Firebase रिमोट कॉन्फ़िगरेशन टेंप्लेट को अपडेट करना.

इवेंट के डेस्टिनेशन

  • वर्कफ़्लो
  • Cloud Run
  • GKE (जीकेई)
  • Cloud Functions( 2nd gen)

c7ca054200edf1b3.png

वर्कफ़्लो क्या है?

Workflows पूरी तरह से मैनेज की गई सेवा है, जो आपको माइक्रोसर्विस, टास्क, और एपीआई को इंटिग्रेट करने की सुविधा देती है. वर्कफ़्लो बिना सर्वर वाली सेवा है. यह आपकी मांग को पूरा करने के लिए बड़े पैमाने पर काम करेगी.

वर्कफ़्लो के इस्तेमाल के उदाहरण:

  • इवेंट-ड्रिवन वर्कफ़्लो तय किए गए ट्रिगर पर काम करता है. उदाहरण के लिए, जब नया ऑर्डर सबमिट किया जाता है और आपको खरीदार के लॉयल्टी पॉइंट का हिसाब लगाना हो. इसके अलावा, ऑर्डर रद्द होने पर भी इवेंट पब्लिश किया जा सकता है. साथ ही, इसमें दिलचस्पी रखने वाली सभी सेवाएं उस इवेंट को प्रोसेस करेंगी.
  • बैच जॉब वर्कफ़्लो, Cloud Scheduler का इस्तेमाल करके नियमित तौर पर जॉब चलाते हैं. उदाहरण के लिए, 'समस्या ठीक नहीं हुई' स्थिति वाले मेन्यू आइटम की जांच करने और उन्हें मिटाने के लिए, हर रात का जॉब.

वर्कफ़्लो उन वर्कफ़्लो के लिए सबसे सही है जो सेवाओं को व्यवस्थित करते हैं. उन प्रोसेस को ऑटोमेट किया जा सकता है जिनमें एक साल तक इंतज़ार करना और बार-बार कोशिश करना शामिल है.

वर्कफ़्लो के फ़ायदे:

  • कोड पर कॉन्फ़िगरेशन: कोड लिखने के बजाय लॉजिक को कॉन्फ़िगरेशन में ले जाकर तकनीकी क़र्ज़ कम करें.
  • अपने आर्किटेक्चर को आसान बनाएं. स्टेटफ़ुल वर्कफ़्लो की मदद से, अलग-अलग ज़रूरतों के बिना, मुश्किल सेवा इंटिग्रेशन को विज़ुअलाइज़ और मॉनिटर किया जा सकता है.
  • भरोसेमंद और गड़बड़ियों को सहने की क्षमता को शामिल करें. डिफ़ॉल्ट या कस्टम फिर से कोशिश करने के लॉजिक और दूसरे सिस्टम के काम न करने पर भी गड़बड़ियों को ठीक करने के लिए इसे कंट्रोल करें. प्रोग्रेस को ट्रैक करने में आपकी मदद करने के लिए Cloud Spanner की ओर हर चरण की जांच करना.
  • कोई भी रखरखाव नहीं. ज़रूरत के हिसाब से स्केल करें: पैच करने या रखरखाव करने की कोई ज़रूरत नहीं है. सिर्फ़ तब पेमेंट करें, जब आपका वर्कफ़्लो चल रहा हो. इसके लिए, आपको इंतज़ार नहीं करना होगा या कोई गतिविधि नहीं करनी होगी.

इस लैब में, आपको इवेंट के हिसाब से वर्कफ़्लो को कॉन्फ़िगर करना होगा.

आपको क्या सीखने को मिलेगा

इस लैब में, आपको इन कामों को करने का तरीका पता चलेगा:

  • वर्कफ़्लो ट्रिगर करने के लिए Pub/Sub विषय और Eventarc को कॉन्फ़िगर करें
  • Cloud Run सेवा को कॉल करने और Pub/Sub पर मैसेज प्रकाशित करने के लिए वर्कफ़्लो कॉन्फ़िगर करें
  • क्लाउड लॉगिंग में वर्कफ़्लो के स्ट्रक्चर्ड लॉग से क्वेरी करने और gcloud सीएलआई का इस्तेमाल करने का तरीका

ज़रूरी शर्तें

  • यह लैब, Cloud Console और Cloud Shell एनवायरमेंट के बारे में अच्छी तरह से समझ लेता है.
  • Cloud Run और Cloud Pub/Sub से पहले का अनुभव काम का है, लेकिन ज़रूरी नहीं है.

2. सेटअप और ज़रूरी शर्तें

Cloud प्रोजेक्ट का सेटअप

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

एनवायरमेंट का सेटअप

खोज बार की दाईं ओर मौजूद आइकॉन पर क्लिक करके, Cloud Shell को चालू करें.

eb0157a992f16fa3.png

रिपॉज़िटरी को क्लोन करें और डायरेक्ट्री पर जाएं, नीचे दिए गए कमांड को कॉपी करके टर्मिनल में चिपकाएं और Enter दबाएं:

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

lab-setup.sh चलाकर, ज़रूरी डिपेंडेंसी डिप्लॉय करें

ये संसाधन बनाए जाएंगे:

  • AlloyDB क्लस्टर और इंस्टेंस
  • Artifact Registry, जो क्लाउड रन जॉब और ग्राहक सेवा के लिए कंटेनर की इमेज सेव करता है
  • AlloyDB डेटाबेस से कम्यूनिकेट करने के लिए Cloud Run सेवा और जॉब के लिए VPC ऐक्सेस कनेक्टर
  • AlloyDB डेटाबेस बनाने के लिए Cloud Run जॉब
  • Cloud Run ग्राहक सेवा - JavaScript पर आधारित ऐसी माइक्रोसेवा, जो Quarkus फ़्रेमवर्क का इस्तेमाल करती है.
./lab-setup.sh

अनुमति देने के लिए कहे जाने पर, "अनुमति दें" पर क्लिक करें जारी रखने के लिए.

6356559df3eccdda.png

सेटअप पूरा होने में करीब 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. वर्कफ़्लो की समीक्षा

वर्कफ़्लो के मुख्य सिद्धांत

वर्कफ़्लो में वर्कफ़्लो सिंटैक्स( YAML या JSON) का इस्तेमाल करके बताए गए कई चरण होते हैं.

वर्कफ़्लो बन जाने के बाद, उसे डिप्लॉय किया जाता है. इससे वर्कफ़्लो, एक्ज़ीक्यूशन के लिए तैयार हो जाता है.

एक्सीशन, वर्कफ़्लो की परिभाषा में मौजूद लॉजिक को एक बार चलाया जाता है. जो वर्कफ़्लो एक्ज़ीक्यूट नहीं हुआ है उसके लिए कोई शुल्क नहीं लिया जाता. सभी वर्कफ़्लो एक साथ लागू होते हैं. साथ ही, प्रॉडक्ट के तेज़ी से स्केल होने की वजह से, एक साथ कई कार्रवाइयां हो सकती हैं.

एक्ज़ीक्यूशन कंट्रोल

  • चरण - वर्कफ़्लो बनाने के लिए, आप अपनी पसंद का steps तय करते हैं और वर्कफ़्लो सिंटैक्स का इस्तेमाल करके, इसके चलने का क्रम तय करते हैं. हर वर्कफ़्लो में कम से कम एक चरण होना चाहिए.
  • शर्तें - switch ब्लॉक को चुनने के तरीके के तौर पर इस्तेमाल किया जा सकता है. इससे किसी एक्सप्रेशन की वैल्यू को वर्कफ़्लो के एक्ज़ीक्यूशन के फ़्लो को कंट्रोल करने में मदद मिलती है.
  • इटरेशन - संख्याओं के किसी क्रम या डेटा के कलेक्शन, जैसे कि सूची या मैप के ज़रिए उसे फिर से दोहराने के लिए, for लूप का इस्तेमाल किया जा सकता है.
  • सबवर्कफ़्लो - सबवर्कफ़्लो, किसी प्रोग्रामिंग भाषा में रूटीन या फ़ंक्शन की तरह ही काम करता है. इसकी मदद से, किसी चरण या चरणों के सेट को इनकैप्सुलेट किया जा सकता है और जिन्हें आपका वर्कफ़्लो कई बार दोहराया जाएगा.

एक्ज़ीक्यूशन ट्रिगर करना

  • मैन्युअल - वर्कफ़्लो को Google Cloud Console या Google Cloud सीएलआई का इस्तेमाल करके, कमांड लाइन से मैनेज किया जा सकता है.
  • प्रोग्रामैटिक - Workflows API के लिए Cloud क्लाइंट लाइब्रेरी या REST API का इस्तेमाल वर्कफ़्लो को मैनेज करने के लिए किया जा सकता है.
  • शेड्यूल किया गया - किसी खास शेड्यूल पर वर्कफ़्लो चलाने के लिए, Cloud शेड्यूलर का इस्तेमाल किया जा सकता है.

रनटाइम आर्ग्यूमेंट

रनटाइम के दौरान पास किया गया डेटा ऐक्सेस करने के लिए, params फ़ील्ड को मुख्य वर्कफ़्लो में जोड़ें. इसे मुख्य ब्लॉक में रखा जाता है. मुख्य ब्लॉक में एक ऐसा आर्ग्युमेंट स्वीकार किया जाता है जो मान्य JSON डेटा टाइप हो. पैरामीटर फ़ील्ड उस वैरिएबल का नाम रखता है जिसे वर्कफ़्लो आपके पास किए गए डेटा को स्टोर करने के लिए इस्तेमाल करता है.

Cloud Run सेवा की पुष्टि करने का वर्कफ़्लो

ग्राहक सेवा, डेटा स्टोर करने की इस जगह में शामिल एक सैंपल ऐप्लिकेशन है. यह Cloud Run पर काम करती है. इसे इस तरह से कॉन्फ़िगर किया गया है कि पुष्टि किए गए अनुरोध सिर्फ़ अंदरूनी नेटवर्क से आ सकें. Cloud Run सेवा से प्रमाणित करने के अनुरोध में आपको Google का हस्ताक्षर किया हुआ Open Connect(OIDC) टोकन जोड़ने के लिए Workflows को कॉन्फ़िगर करना होगा.

सेवा-से-सेवा प्रमाणीकरण के बारे में ज़्यादा जानने के लिए दस्तावेज़ देखें.

वर्कफ़्लो की पुष्टि करने की प्रोसेस को auth सेक्शन का इस्तेमाल करके, args ब्लॉक में कॉन्फ़िगर किया गया है.

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}

fcd91b2bc5d60347.png

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

वर्कफ़्लो सोर्स और अन्य जानकारी देखें(ट्रिगर टैब). फ़िलहाल, इस वर्कफ़्लो को चलाने के लिए कोई भी ट्रिगर कॉन्फ़िगर नहीं है. आपको अगले चरण में इसे सेट अप करना होगा.

d3527393fb07a9b3.png

5. Pub/Sub विषय और Eventarc ट्रिगर कॉन्फ़िगर करें

इसके बाद, आपको दो Pub/Sub विषय बनाना होगा और एक Eventarc ट्रिगर कॉन्फ़िगर करना होगा.

ऑर्डर सेवा, order-topic पर नए ऑर्डर की जानकारी वाले मैसेज पब्लिश करेगी.

वर्कफ़्लो, order-points-topic पर मैसेज पब्लिश करेगा. इसमें ऑर्डर के लिए इनाम के पॉइंट और कुल रकम की जानकारी होगी. ऑर्डर सेवा(इस लैब का हिस्सा, डिप्लॉय नहीं की गई है) एक एंडपॉइंट दिखाती है. यह एंडपॉइंट, order-points-topic, के लिए Push की सदस्यता में इस्तेमाल किया जाता है. ऐसा, इनाम के पॉइंट और हर ऑर्डर की कुल रकम को अपडेट करने के लिए किया जाता है.

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 ट्रिगर की समीक्षा करें.

bda445561ad5f4.png

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

3fccdda7d5526597.png

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

23d338abc16eaac8.png

6. वर्कफ़्लो की जांच करें

c6d4337a47b55333.png

ऑर्डर सेवा को सिम्युलेट करने के लिए, आपको 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'

वर्कफ़्लो को लागू करने की जानकारी और लॉग देखें.

1e802826c700cc3e.png

aad0eae7a970316.png

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

कंसोल में लॉग एक्सप्लोरर खोलें और प्रोसेस किए गए ऑर्डर के लिए क्वेरी चलाएं. इन ऑर्डर की कुल कीमत दो डॉलर से ज़्यादा है.

नीचे दी गई क्वेरी का इस्तेमाल करें और प्रोजेक्ट आईडी(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"

आउटपुट का उदाहरण:

22d2f4686c58724d.png

Cloud Shell खोलें और नीचे दिए गए निर्देशों के साथ, लॉग पढ़ने के लिए gcloud सीएलआई का इस्तेमाल करें.

प्रोजेक्ट आईडी(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 फ़ॉर्मैट का इस्तेमाल करने वाले आउटपुट का सैंपल:

35d5fd851ecde60.png

प्रोजेक्ट आईडी(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 फ़ॉर्मैट का इस्तेमाल करने वाले आउटपुट का सैंपल:

ac7421548ea9a9f2.png

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 इन्ग्रेस सेटिंग को "Allow all traffic" में बदलें विकल्प चुनकर "सेव करें" पर क्लिक करें.

इससे एंडपॉइंट सार्वजनिक हो जाएगा. साथ ही, कर्ल का इस्तेमाल करके Cloud Shell से Customer Service API को कॉल किया जा सकता है.

9156e0eb0a19bc68.png

सेवा का यूआरएल सेव करने और मौजूदा ग्राहकों की सूची बनाने के लिए, नीचे दिए गए निर्देश चलाएं.

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

नया ऑर्डर कई बार पब्लिश करने के लिए कमांड चलाएं और कर्ल कमांड की मदद से, ग्राहक को मिलने वाले इनाम के पॉइंट की पुष्टि करें.

नया ऑर्डर मैसेज पब्लिश करें:

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 सेवा को कॉल करने का तरीका
  • क्लाउड लॉगिंग में स्ट्रक्चर्ड लॉग से क्वेरी करने और gcloud सीएलआई का इस्तेमाल करने का तरीका

आने वाले समय में मिलने वाली सुविधाएं:

Cymbal Eagles के अन्य कोडलैब एक्सप्लोर करें:

व्यवस्थित करें

इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर शुल्क न लगे. इसके लिए, उस प्रोजेक्ट को मिटा दें जिसमें संसाधन शामिल हैं या प्रोजेक्ट को बनाए रखें और अलग-अलग संसाधनों को मिटाएं.

प्रोजेक्ट मिटाया जा रहा है

बिलिंग हटाने का सबसे आसान तरीका, ट्यूटोरियल के लिए बनाए गए प्रोजेक्ट को मिटाना है.