इवेंट का इस्तेमाल करके, एजेंटिक एआई ऐप्लिकेशन को एसिंक्रोनस तरीके से शुरू करना

1. परिचय

खास जानकारी

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

आपको क्या करना होगा

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

ज़ू कीपर का इलस्ट्रेशन

ZooKeeper ऐप्लिकेशन को Cloud Run पर एक सेवा के तौर पर डिप्लॉय किया जाएगा. Cloud Run, पूरी तरह से मैनेज किया गया, बिना सर्वर के काम करने वाला कंप्यूट प्लैटफ़ॉर्म है. यह Google के इंफ़्रास्ट्रक्चर पर स्टेटलेस कंटेनर चलाता है. इसके बाद, आपको एक Eventarc ट्रिगर सेट अप करना होगा. यह ट्रिगर, सेवा के एंडपॉइंट को कॉल करेगा, ताकि Pub/Sub टॉपिक पर पब्लिश किए गए मैसेज को एसिंक्रोनस तरीके से हैंडल किया जा सके. आपको यह पक्का करना होगा कि डिप्लॉयमेंट में सबसे सही तरीकों का इस्तेमाल किया गया हो. जैसे, आईएएम सेवा खातों का इस्तेमाल करना, कम से कम विशेषाधिकार वाला ऐक्सेस देना, और सिर्फ़ Eventarc को ZooKeeper ऐप्लिकेशन का एंडपॉइंट दिखाकर, संभावित हमले के दायरे को कम करना. इसके लिए, Cloud Shell और Cloud Console का इस्तेमाल किया जाएगा. आपको Python के लिए ADK और Cloud SDK टूल लाइब्रेरी का इस्तेमाल करना होगा. gcloud CLI का इस्तेमाल करके, यह देखा जा सकता है कि इस सुविधा का इस्तेमाल कैसे किया जाता है.

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

  • अपने ADK एजेंट को Google Cloud Run पर डिप्लॉय करें.
  • Eventarc ट्रिगर को Google Cloud Run पर चल रहे ADK एजेंट के साथ इंटिग्रेट करें.
  • Google Cloud IAM की मदद से, कम से कम अधिकारों के सिद्धांत का इस्तेमाल करके, Eventarc के साथ अपने डिप्लॉयमेंट और इंटिग्रेशन को सुरक्षित करें.
  • Pub/Sub से मैसेज पब्लिश और पुल करें.
  • Google Cloud Run पर डिप्लॉय किए गए अपने ऐप्लिकेशन को सार्वजनिक रूप से कम से कम लोगों के लिए उपलब्ध कराएं.

आपको किन चीज़ों की ज़रूरत होगी

ध्यान दें कि आपके खाते के पास उस प्रोजेक्ट का IAM ऐक्सेस होना चाहिए जिससे आपको संसाधन उपलब्ध कराने और इन संसाधनों के लिए IAM ऐक्सेस कॉन्फ़िगर करने की अनुमति मिलती हो.

अन्य ब्राउज़र का इस्तेमाल करने पर, उपयोगकर्ता अनुभव लैब में बताए गए अनुभव से अलग हो सकता है.

कॉर्पोरेट या स्कूल वाले खाते का इस्तेमाल करके, लैब में बताई गई कुछ कार्रवाइयां नहीं की जा सकतीं.

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

लैब के लिए पूरी तरह से काम करने वाला डेवलपमेंट एनवायरमेंट उपलब्ध कराने के लिए, Google Cloud Shell का इस्तेमाल किया जाएगा. इसमें सभी ज़रूरी टूल पहले से इंस्टॉल होते हैं. एनवायरमेंट सेट अप करने के लिए, निर्देशों का पालन करें.

अगर आपका कोई Google खाता नहीं है, तो Google खाता बनाएं.

सेटअप करने के बारे में निर्देश

  1. अपने Google खाते का इस्तेमाल करके, Google Cloud Console में साइन इन करें.
  2. 👉 सबसे ऊपर मौजूद नेविगेशन बार में, प्रोजेक्ट पिकर खोलें. इसमें "कोई प्रोजेक्ट चुनें" लिखा हो सकता है या किसी मौजूदा प्रोजेक्ट का नाम दिख सकता है. इसके अलावा, कीबोर्ड शॉर्टकट Ctrl+O पर क्लिक करके भी प्रोजेक्ट पिकर खोला जा सकता है. इसके बाद, कोई मौजूदा प्रोजेक्ट चुनें या नया प्रोजेक्ट बनाएं. नया प्रोजेक्ट बनाने में कुछ सेकंड लगेंगे. इसके तैयार होने तक इंतज़ार करें. इसके बाद, प्रोजेक्ट पिकर का इस्तेमाल करके इसे चुनें.
  1. 👉 Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell आइकॉन पर क्लिक करें. (लाल आयत से मार्क किया गया):Cloud Shell बटन
    अगर कहा जाए, तो पॉप-अप डायलॉग बॉक्स में **Authorize** पर क्लिक करें. इससे Cloud Shell को आपके खाते के क्रेडेंशियल इस्तेमाल करने की अनुमति मिल जाएगी.
    अनुमति देने वाला डायलॉग
  2. 👉💻 पक्का करें कि gcloud CLI को उस प्रोजेक्ट का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया हो जिसे आपने चुना है या बनाया है. कॉन्फ़िगर किए गए प्रोजेक्ट आईडी की जांच करने के लिए, यह कमांड चलाएं:
    gcloud config get-value project
    
    आपको इससे मिलता-जुलता आउटपुट दिखेगा:
    Your active configuration is: [cloudshell-19597]
    [PROJECT_ID]
    
    यहां [PROJECT_ID], उस प्रोजेक्ट का आईडी होगा जिसे आपने चुना है या बनाया है.👉💻 अगर आपको कोई दूसरी वैल्यू दिखती है, तो gcloud CLI कमांड के लिए अपने प्रोजेक्ट आईडी को डिफ़ॉल्ट प्रोजेक्ट आईडी के तौर पर कॉन्फ़िगर करने के लिए, यह कमांड चलाएं:
    gcloud config set project [YOUR_PROJECT_ID]
    
    उदाहरण के लिए, अगर आपका प्रोजेक्ट आईडी lab-project-id-example-123 है, तो कमांड यह होनी चाहिए:
    gcloud config set project lab-project-id-example-123
    
    🤔💻 अगर आपको अपना प्रोजेक्ट आईडी याद नहीं है, तो इस कमांड का इस्तेमाल करके उन सभी प्रोजेक्ट आईडी की सूची देखें जिन्हें ऐक्सेस करने की अनुमति आपके पास है. सूची में सबसे नया प्रोजेक्ट आईडी सबसे ऊपर दिखेगा:
    gcloud projects list \
        --format='value(projectId)' \
        --sort-by='~createTime'
    
  1. 👉💻 एनवायरमेंट वैरिएबल में, संसाधन उपलब्ध कराने के लिए जगह, प्रोजेक्ट का आईडी, और नंबर सेट अप करें:
    export LOCATION="us-central1"
    export PROJECT_ID=$(gcloud config get-value project)
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    
  2. 👉💻 इस लैब के लिए ज़रूरी Google API चालू करें.
    gcloud services enable \
        aiplatform.googleapis.com \
        eventarc.googleapis.com \
        run.googleapis.com \
        artifactregistry.googleapis.com \
        cloudbuild.googleapis.com \
        pubsub.googleapis.com
    
    थोड़ा इंतज़ार करें. इस कमांड को पूरा होने में कुछ मिनट लग सकते हैं. कमांड के सही तरीके से लागू होने पर, आपको इस तरह का मैसेज दिखेगा:
    Operation "operations/ab12345c-6e7f-8ghi-jkl9-m0e1d23456f7" finished successfully.
    

3. ZooKeeper का डेमो ऐप्लिकेशन डिप्लॉय करना

यहां दिए गए चरणों में, एजेंटिक एआई ऐप्लिकेशन को डिप्लॉय करने के साथ-साथ अन्य संसाधनों को उपलब्ध कराने और कॉन्फ़िगर करने का तरीका बताया गया है.

Pub/Sub संसाधन सेट अप करना

आपको दो Pub/Sub विषय बनाने होंगे. तीसरे पक्ष की सेवा, इस कुकी का इस्तेमाल आपके एजेंटिक एआई ऐप्लिकेशन को इवेंट भेजने के लिए करेगी. दूसरा, इवेंट प्रोसेसिंग के नतीजों को पब्लिश करने के लिए.

  1. 👉💻 एजेंटिक एआई ऐप्लिकेशन को ट्रिगर करने के लिए, Pub/Sub विषय बनाएं:
    gcloud pubsub topics create invoke_agent
    export INVOKE_TOPIC_ID=$(gcloud pubsub topics describe invoke_agent --format="value(name)")
    
  2. 👉💻 ऐसा Pub/Sub विषय बनाएं जहां ऐप्लिकेशन अपने जवाब पोस्ट कर सके:
    gcloud pubsub topics create agent_responses
    export RESPONSE_TOPIC_ID=$(gcloud pubsub topics describe agent_responses --format="value(name)")
    gcloud pubsub subscriptions create agent_responses \
        --topic=agent_responses
    
    इन कमांड से, बनाए गए Pub/Sub विषय के लिए सदस्यता भी बन जाती है. नतीजे देखने के लिए, डेमो चलाते समय इस सदस्यता का इस्तेमाल किया जाएगा.

सेवा खाते और प्रोजेक्ट-लेवल की आईएएम नीतियां सेट अप करना

आपको दो सेवा खाते बनाने होंगे, ताकि Cloud Run सेवा और Eventarc ट्रिगर के ऐक्सेस के दायरे को कम किया जा सके. इसके लिए, आपको कम से कम विशेषाधिकार के सिद्धांत का पालन करना होगा. Cloud Run सेवा को लॉग और ट्रेस लिखने, Google Vertex AI पर Gemini LLM को कॉल करने, और Pub/Sub विषय पर नतीजे पोस्ट करने के लिए अनुमतियों की ज़रूरत होती है. Eventarc ट्रिगर को कम से कम इन अनुमतियों की ज़रूरत होती है: Cloud Run ZooKeeper सेवा को कॉल करने की अनुमति और पोस्ट किए गए इवेंट को पढ़ने के लिए Pub/Sub को ऐक्सेस करने की अनुमति. इन निर्देशों में, ट्रिगर के सेवा खाते को Pub/Sub सिस्टम सेवा के डुप्लीकेट के तौर पर इस्तेमाल करने के लिए ज़रूरी अनुमतियां देने का तरीका बताया गया है. Eventarc ट्रिगर संसाधन बनाने के बाद, आपको वह कमांड चलानी होगी जो ट्रिगर के सेवा खाते को Cloud Run सेवा को कॉल करने की अनुमति देने के लिए roles/run.invoker की भूमिका असाइन करती है.

  1. 👉💻 Cloud Run सेवा के लिए सेवा खाता बनाएं:
    gcloud iam service-accounts create zookeeper-cloudrun-sa
    export ZOOKEEPER_SA="zookeeper-cloudrun-sa@${PROJECT_ID}.iam.gserviceaccount.com"
    
  2. 👉💻 सेवा खाते को लॉग और ट्रेस लिखने की अनुमतियां दें. साथ ही, Vertex AI पर Gemini मॉडल इस्तेमाल करने की अनुमतियां दें:
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
         --member="serviceAccount:${ZOOKEEPER_SA}" \
         --role="roles/logging.logWriter" \
         --condition=None
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${ZOOKEEPER_SA}" \
        --role="roles/cloudtrace.agent" \
        --condition=None
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${ZOOKEEPER_SA}" \
        --role="roles/aiplatform.user" \
        --condition=None
    
  3. 👉💻 सेवा खाते को ‘agent_responses' विषय पर मैसेज पोस्ट करने की अनुमतियां दें:
    gcloud pubsub topics add-iam-policy-binding agent_responses \
        --member="serviceAccount:${ZOOKEEPER_SA}" \
        --role="roles/pubsub.publisher"
    
  4. 👉💻 Eventarc ट्रिगर के लिए सेवा खाता बनाएं:
    gcloud iam service-accounts create zookeeper-trigger-sa
    export TRIGGER_SA="zookeeper-trigger-sa@${PROJECT_ID}.iam.gserviceaccount.com"
    
  5. 👉💻 पुष्टि किए गए पुश अनुरोध करने के लिए, Pub/Sub सिस्टम सेवा खाते को अनुमतियां दें:
    gcloud iam service-accounts add-iam-policy-binding "${TRIGGER_SA}" \
           --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    
    अगर कोई प्रोजेक्ट 8 अप्रैल, 2021 के बाद बनाया गया है, तो यह निर्देश देना ज़रूरी नहीं है.

Cloud Run पर ZooKeeper ऐप्लिकेशन डिप्लॉय करना

आपको डेमो ऐप्लिकेशन का कोड, GitHub से डाउनलोड करना होगा. इसके बाद, कोड को Cloud Run पर डिप्लॉय करें.

  1. 👉💻 एजेंटिक एआई ऐप्लिकेशन डाउनलोड करें:
    mkdir zoo-keeper-lab && cd zoo-keeper-lab
    git init
    git remote add origin https://github.com/GoogleCloudPlatform/devrel-demos
    git config set core.sparseCheckout true
    echo "ai-ml/agent-labs/adk_invoke_with_pubsub/" >> .git/info/sparse-checkout
    git pull origin main --depth 1
    cd ai-ml/agent-labs/adk_invoke_with_pubsub/
    
    ये कमांड, डेमो ऐप्लिकेशन वाले फ़ोल्डर के लिए Git स्पार्स चेकआउट का इस्तेमाल करती हैं, ताकि डाउनलोड होने में कम समय लगे.
  2. 👉💻 एजेंटिक एआई ऐप्लिकेशन को Cloud Run पर डिप्लॉय करें:
    gcloud run deploy zookeeper-agent \
        --region="${LOCATION}" \
        --source="." \
        --no-allow-unauthenticated \
        --quiet \
        --service-account="${ZOOKEEPER_SA}" \
        --set-env-vars="REPLY_TOPIC_ID=${RESPONSE_TOPIC_ID}"
    

Eventarc ट्रिगर कॉन्फ़िगर करना

सभी संसाधन (Pub/Sub विषय, IAM सेवा खाते, और Cloud Run सेवा) तैयार करने के बाद, अब Eventarc ट्रिगर संसाधन को सेट अप करने का समय है. आपको Eventarc ट्रिगर संसाधन बनाना होगा. साथ ही, ट्रिगर के सेवा खाते को Cloud Run सेवा को कॉल करने की अनुमतियां देनी होंगी.

  1. 👉💻 Eventarc ट्रिगर बनाएं:
    gcloud eventarc triggers create invoke-agent \
        --location="${LOCATION}" \
        --destination-run-service="zookeeper-agent" \
        --destination-run-path="/zookeeper" \
        --destination-run-region="${LOCATION}" \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic="${INVOKE_TOPIC_ID}" \
        --service-account="${TRIGGER_SA}"
    
  2. 👉💻 ट्रिगर के सेवा खाते को Cloud Run सेवा शुरू करने की अनुमतियां दें:
    gcloud run services add-iam-policy-binding zookeeper-agent \
        --region="${LOCATION}" \
        --member="serviceAccount:${TRIGGER_SA}" \
        --role="roles/run.invoker"
    

4. जानें कि समस्या हल करने का तरीका कैसे काम करता है

अब देखें कि आपने अभी क्या डिप्लॉय किया है. इस डायग्राम में सभी संसाधन और उनके बीच होने वाले इंटरैक्शन के बारे में बताया गया है. आपको ‘invoke_agent' विषय पर कोई मैसेज पब्लिश करने के लिए, gcloud CLI का इस्तेमाल करना होगा. इससे एक ऐसे इवेंट का सिम्युलेशन होगा जिसे तीसरे पक्ष की सेवा, मैसेजिंग सेवा में लॉग करती है. इससे एजेंटिक एआई ऐप्लिकेशन को शुरू किया जा सकेगा.

समस्या हल करने से जुड़ा डायग्राम

डेटा को कम से कम अधिकारों के सिद्धांत के तहत सुरक्षित तरीके से डिप्लॉय किया जाता है. Cloud Run सेवा, पुष्टि करने की सुविधा लागू करती है. इसके बारे में जानने के लिए, पिछले सेक्शन में दिए गए नौवें चरण में --no-allow-unauthenticated आर्ग्युमेंट देखें. सिर्फ़ roles/run.invoker या इससे मिलती-जुलती अनुमतियों वाली पहचानें ही सेवा को कॉल कर सकती हैं. यह भूमिका सिर्फ़ Eventarc ट्रिगर के सेवा खाते को दी जाती है. इसी तरह, ‘invoke_agent' विषय के ऐक्सेस को कम कर दिया जाता है, ताकि इवेंट को बिना अनुमति के पब्लिश न किया जा सके.. Pub/Sub विषय पर पोस्ट किए बिना, सीधे ZooKeeper एजेंट को कॉल किया जा सकता है. ऐप्लिकेशन के एंडपॉइंट को सार्वजनिक ऐक्सेस से छिपाने का तरीका जानने के लिए, सेक्शन 6 देखें.

वर्कफ़्लो चलाना

आपको ZooKeeper में आम भाषा में सवाल पब्लिश करके, किसी बाहरी इवेंट की नकल करनी होगी.

👉💻 Pub/Sub विषय पर कोई मैसेज पोस्ट करने के लिए, इस निर्देश का इस्तेमाल करें:

gcloud pubsub topics publish invoke_agent \
    --message='{"user_id": "important_app", "prompt": "How many animals are in the zoo?"}'

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

यह देखा जा सकता है कि एजेंट को इवेंट मिला है, उसने अनुरोध को प्रोसेस किया है, और ‘agent_responses' विषय पर जवाब पोस्ट किया है. जवाब पढ़ने के लिए, ‘agent_responses' सदस्यता का इस्तेमाल करें. कोडलैब, जवाबों के लिए विषय और सदस्यता, दोनों के लिए एक ही आईडी का इस्तेमाल करता है.

👉💻 Pub/Sub सदस्यता से एजेंट के जवाब को पढ़ने के लिए, इस निर्देश का इस्तेमाल करें:

gcloud pubsub subscriptions pull agent_responses --auto-ack

आउटपुट में एक टेबल प्रिंट की जाएगी. इसमें मैसेज का मेटाडेटा और पेलोड होगा. पेलोड में यह जवाब होगा कि चिड़ियाघर में 33 प्रजातियां हैं. मैसेज को वापस लेने के बाद, --auto-ack फ़्लैग अपने-आप स्वीकार कर लेता है. इसलिए, इसे फिर से डिलीवर नहीं किया जाएगा.

यह कैसे काम करता है

Cloud Shell Editor खोलकर, एजेंटिक एआई ऐप्लिकेशन का सोर्स कोड देखें. इसके लिए, ~/zoo-keeper-lab फ़ोल्डर में मौजूद फ़ाइलें देखें. GitHub पर भी सोर्स कोड देखा जा सकता है.

  • main.py में, एक बुनियादी FastAPI वेब ऐप्लिकेशन लागू किया जाता है. इसमें एक हैंडलर होता है, जो Eventarc इवेंट को प्रोसेस करता है.
  • processor.py, इवेंट के मैसेज को पार्स करके उपयोगकर्ता आईडी और अनुरोध को वापस पाता है. इसके बाद, यह ADK रनर में एक नया सेशन बनाता है और अनुरोध को प्रोसेस करने के लिए, Zookeeper एजेंट को कॉल करता है. एजेंट से मिले जवाब को ‘agent_responses' Pub/Sub विषय पर पोस्ट किया जाता है.
  • सबफ़ोल्डर zookeeper_agent में ADK एजेंट का सोर्स कोड होता है. adk CLI का इस्तेमाल करके एजेंट से इंटरैक्ट करने के लिए, ऐप्लिकेशन के रूट फ़ोल्डर से adk run zookeeper_agent कमांड चलाएं.

समस्या को हल करने का तरीका

अगर पिछली कोई कमांड काम नहीं करती है, तो गड़बड़ी का मैसेज ध्यान से पढ़ें. अगर Cloud Run पर डिप्लॉयमेंट नहीं हो पाता है, तो सबसे पहले यह पता लगाएं कि प्रोसेस के किस चरण में गड़बड़ी हुई है.

  • अगर "gcloud run deploy..." कमांड के आउटपुट में यह बताया गया है कि बिल्ड नहीं हो सका, तो आउटपुट में मौजूद बिल्ड लॉग का यूआरएल देखें और उसे किसी दूसरी विंडो में खोलें.
  • अगर आउटपुट में "सेवा शुरू नहीं हो सकी" या इससे मिलती-जुलती कोई गड़बड़ी दिखती है, तो इसका मतलब है कि सेवा डिप्लॉय हो गई है, लेकिन हेल्थचेक पूरा नहीं हो सका. इस मामले में, लॉग एक्सप्लोरर खोलें या gcloud सीएलआई कमांड के लिए, यहां दिया गया पैराग्राफ़ देखें. गड़बड़ी की मुख्य वजह जानने के लिए, लॉग पढ़ें.

अगर आपने Pub/Sub पर कोई मैसेज पोस्ट किया है, लेकिन एजेंट जवाब नहीं देता है या जवाब अजीब लगता है, तो क्या होगा?

👉💻 हाल ही में किए गए एक्ज़ीक्यूशन से पोस्ट किए गए ऐप्लिकेशन लॉग पढ़ने के लिए, इस निर्देश का इस्तेमाल करें:

gcloud logging read \
    'resource.type = "cloud_run_revision" AND \
     resource.labels.service_name = "zookeeper-agent" AND \
     resource.labels.location = "us-central1"'

ये लॉग, एक्ज़ीक्यूशन को ट्रैक करते हैं और गड़बड़ियों की जानकारी देते हैं. जैसे, मैसेज पेलोड को पार्स नहीं किया जा सका या वह गलत है, Gemini मॉडल से मिला जवाब अमान्य है, एनवायरमेंट की सेटिंग अमान्य है, और अन्य संभावित समस्याएं.

5. डिप्लॉयमेंट की सुरक्षा को बेहतर बनाना

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

👉💻 इस अटैक वेक्टर को बंद करें. इसके लिए, सेवा को सिर्फ़ चुनिंदा सोर्स से कॉल करने की अनुमति दें. इनमें Eventarc ट्रिगर भी शामिल हैं:

gcloud run services update zookeeper-agent --region=${LOCATION} --ingress=internal

अब अगर अपनी लोकल मशीन से सेवा के यूआरएल को कॉल करने की कोशिश की जाती है, तो आपको "404 पेज नहीं मिला" गड़बड़ी का मैसेज मिलेगा.

👉💻 सेवा के एंडपॉइंट पर अनुरोध भेजने के लिए, curl का इस्तेमाल करें:

URL=$(gcloud run services describe zookeeper-agent --region=${LOCATION} --format='value(status.url)')
curl -X POST -d '{}' "${URL}/zookeeper"

आपको इसके बाद, इससे मिलता-जुलता आउटपुट दिखेगा:

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>404 Page not found</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Page not found</h1>
<h2>The requested URL was not found on this server.</h2>
<h2></h2>
</body></html>

इस बदलाव के बाद, Cloud Run सेवा के एंडपॉइंट को कॉल करके सीधे तौर पर ZooKeeper को चालू नहीं किया जा सकेगा. ऐसा तब तक नहीं किया जा सकेगा, जब तक कि कॉल उसी प्रोजेक्ट के VPC से न किया गया हो, उस Shared VPC नेटवर्क से न किया गया हो जिसे आपके संशोधन को ट्रैफ़िक भेजने के लिए कॉन्फ़िगर किया गया है या उस होस्ट से न किया गया हो जो VPC सर्विस कंट्रोल पेरीमीटर का हिस्सा है.

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

बधाई हो! आपने एक ऐसा एनवायरमेंट सेट अप कर लिया है जो आने वाले इवेंट से ट्रिगर होने वाले, एआई एजेंट वाले ऐप्लिकेशन को एसिंक्रोनस तरीके से चालू करता है.

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

ध्यान दें कि आपके बिलिंग खाते पर, प्रोविज़न किए गए संसाधनों को बनाए रखने के लिए शुल्क लग सकता है. अगर आपको इस एनवायरमेंट का इस्तेमाल ज़्यादा एक्सपेरिमेंट के लिए नहीं करना है और आने वाले शुल्क से बचना है, तो हमारा सुझाव है कि आप इस कोडलैब के दौरान बनाए गए संसाधनों को मिटा दें.

ऐसा करने के दो तरीके हैं:

पहला तरीका: प्रोजेक्ट बंद करना

प्रोजेक्ट को बंद करने (मिटाने) से, प्रोजेक्ट के सभी संसाधन और डेटा रिलीज़ हो जाते हैं. साथ ही, बिलिंग खाता अनलिंक हो जाता है. इस तरीके का इस्तेमाल करने से, इस कोडलैब के लिए इस्तेमाल किए गए किसी भी संसाधन या डेटा के लिए, आगे कोई शुल्क नहीं लिया जाएगा. प्रोजेक्ट बंद करने के लिए, इस निर्देश का इस्तेमाल करें:

gcloud projects delete $(gcloud config get-value project) --quiet

दूसरा तरीका: प्रोजेक्ट में मौजूद संसाधन मिटाना

Cloud Run सेवा को मिटाने से, सर्वरलेस प्लैटफ़ॉर्म का इस्तेमाल करने के लिए आगे कोई शुल्क नहीं लिया जाता. ध्यान दें कि इस तरीके से, कोडलैब के दौरान जनरेट हुआ पूरा डेटा नहीं मिटता. जैसे, Cloud Build और ऐप्लिकेशन लॉग, कंटेनर इमेज वगैरह. सेवा को मिटाने के लिए, यह कमांड चलाएं:

gcloud run services delete zookeeper-agent --region=${LOCATION}

Eventarc ट्रिगर की परिभाषा और Pub/Sub विषयों पर मैनेजमेंट से जुड़ी कोई लागत नहीं लगती. ज़्यादा जानकारी के लिए, Eventarc की कीमत और Pub/Sub की कीमत देखें.

प्रोजेक्ट बंद करने के बारे में ज़्यादा जानें.

आगे क्या करना है