Cloud Run का Cloud Storage के ग्लोबल और रीजनल एंडपॉइंट को निजी तौर पर ऐक्सेस करना

1. परिचय

Google API एंडपॉइंट

Google Cloud API, सेवाओं को ऐक्सेस करने के लिए अलग-अलग तरह के एंडपॉइंट उपलब्ध कराते हैं. इनमें मुख्य अंतर, अनुरोध राउटिंग, डेटा रेज़िडेंसी, और क्षेत्रीय आइसोलेशन को हैंडल करने के तरीके में होता है.

कृपया एपीआई एंडपॉइंट के टाइप के बारे में, प्रॉडक्ट से जुड़ा दस्तावेज़ देखें.

यहां ग्लोबल, रीजनल, और लोकेशन के हिसाब से एंडपॉइंट की जानकारी दी गई है:

  1. ग्लोबल एंडपॉइंट
  • फ़ॉर्मैट: {service}.googleapis.com (उदाहरण के लिए, storage.googleapis.com)
  • जानकारी: ये एंडपॉइंट, किसी सेवा के लिए एक ग्लोबल ऐक्सेस पॉइंट उपलब्ध कराते हैं. इनके यूआरएल में किसी क्षेत्र की जानकारी नहीं होती.
  • राउटिंग: अनुरोधों को ग्लोबल Google फ़्रंट एंड (जीएफ़ई) और ग्लोबल सर्विस लोड बैलेंसिंग की मदद से रूट किया जाता है. आम तौर पर, ट्रैफ़िक को सबसे नज़दीकी और सही तरीके से काम कर रहे क्षेत्र में भेजा जाता है, ताकि लेटेन्सी को कम किया जा सके.
  • TLS कनेक्शन खत्म करना: यह क्लाइंट के सबसे नज़दीकी GFE पर होता है. यह Google Cloud के उस क्षेत्र से बाहर हो सकता है जहां डेटा या संसाधन मौजूद हैं.
  • डेटा की जगह: ट्रांसफ़र किए जा रहे डेटा के लिए, इस बात की कोईगारंटी नहीं दी जाती कि डेटा किस जगह पर मौजूद रहेगा. GFE पर डिक्रिप्ट करने के बाद, डेटा एक से ज़्यादा देशों/इलाकों की सीमाओं को पार कर सकता है.
  • क्षेत्रीय अलगाव: सीमित. बैकएंड अक्सर क्षेत्रीय होते हैं, लेकिन एंट्री पॉइंट और लोड बैलेंसिंग वैश्विक होती है. इसका मतलब है कि वैश्विक इन्फ़्रास्ट्रक्चर के किसी हिस्से में आने वाली समस्याओं का असर, अन्य क्षेत्रों में मौजूद सेवाओं पर पड़ सकता है.
  • इस्तेमाल का उदाहरण: सामान्य मकसद के लिए ऐक्सेस. इसमें अलग-अलग भौगोलिक जगहों पर मौजूद उपयोगकर्ताओं के लिए, कम समय में डेटा ट्रांसफ़र होना ज़रूरी है. साथ ही, ट्रांसफ़र के दौरान डेटा को किसी खास जगह पर रखने की शर्त का पालन करना ज़रूरी नहीं है.
  1. क्षेत्रीय एंडपॉइंट (आरईपी)
  • फ़ॉर्मैट: {service}.{location}.rep.googleapis.com (उदाहरण के लिए, storage.us-east1.rep.googleapis.com)
  • ब्यौरा: इन्हें इस तरह से डिज़ाइन किया गया है कि ये किसी क्षेत्र के डेटा को अलग रखने और डेटा को स्थानीय स्तर पर सुरक्षित रखने की गारंटी देते हैं. जगह की जानकारी (Google Cloud का कोई खास क्षेत्र) को सबडोमेन के तौर पर दिखाया जाता है. यह आधुनिक स्टैंडर्ड है और यह जगह की जानकारी वाले एंडपॉइंट की जगह ले रहा है.
  • राउटिंग: इसमें पूरी तरह से रीजनल फ़्रंटएंड स्टैक का इस्तेमाल किया जाता है. इसमें रीजनल एक्सटर्नल लोड बैलेंसर और रीजनल सर्विस लोड बैलेंसिंग शामिल हैं. डीएनएस से लेकर सेवा के बैकएंड तक, अनुरोध का पूरा पाथ तय किए गए क्षेत्र में ही रहता है.
  • TLS टर्मिनेशन: यह रीजनल एक्सटर्नल लोड बैलेंसर पर, बताए गए रीजन में होता है.
  • डेटा रेज़िडेंसी: इससे यह पक्का किया जाता है कि डेटा, असाइन किए गए क्षेत्र में ही रहे. ऐसा डेटा को एक जगह से दूसरी जगह भेजते समय और इस्तेमाल करते समय किया जाता है. इससे, नियमों का सख्ती से पालन करने और संप्रभुता से जुड़ी ज़रूरी शर्तों को पूरा करने में मदद मिलती है.
  • क्षेत्र के हिसाब से अलग-अलग होना: बहुत अच्छा. किसी एक इलाके के फ़्रंटएंड इंफ़्रास्ट्रक्चर में आने वाली समस्याओं का असर, दूसरे इलाकों पर नहीं पड़ता.
  • इस्तेमाल का उदाहरण: ऐसे ऐप्लिकेशन जिनके लिए डेटा को किसी खास देश/इलाके में स्टोर करना ज़रूरी है, डेटा को किसी खास देश/इलाके में ही प्रोसेस करना ज़रूरी है, और नियमों का पालन करना ज़रूरी है.

कृपया ध्यान दें कि हर Google API का रीजनल एंडपॉइंट नहीं होता. साथ ही, इस्तेमाल किए जा सकने वाले सभी रीजनल एंडपॉइंट के बारे में जानने के लिए, यहां जाएं.

एक से ज़्यादा इलाकों वाले रीजनल एंडपॉइंट (एमआरईपी) भी रीजनल एंडपॉइंट होते हैं. जैसे, us (अमेरिका), eu (यूरोपियन यूनियन) वगैरह. (उदाहरण के लिए, storage.us.rep.googleapis.com)

  1. लोकेशन एंडपॉइंट (एलईपी)
  • फ़ॉर्मैट: {location}-{service}.googleapis.com (उदाहरण के लिए, us-east1-storage.googleapis.com)
  • जानकारी: इन एंडपॉइंट का इस्तेमाल, जगह के हिसाब से ऐक्सेस देने के लिए किया जाता था. जगह की जानकारी, मुख्य होस्टनेम का हिस्सा होती है. ध्यान दें: जगह के हिसाब से तय किए गए एंडपॉइंट की जगह, क्षेत्र के हिसाब से तय किए गए एंडपॉइंट ले रहे हैं.
  • राउटिंग: अब भी ग्लोबल Google फ़्रंट एंड पर निर्भर है.
  • TLS टर्मिनेशन: आम तौर पर, यह GFE पर होता है. यह ज़रूरी नहीं कि होस्टनेम में बताए गए क्षेत्र में हो.
  • डेटा रेज़िडेंसी: यह गारंटी नहीं दी जा सकती कि सार्वजनिक इंटरनेट से आने वाले ट्रैफ़िक के लिए, डेटा ट्रांसफ़र के दौरान तय किए गए क्षेत्र में ही रहेगा.
  • क्षेत्र के हिसाब से अलग-अलग किए गए एंडपॉइंट: ये रीजनल एंडपॉइंट से कमज़ोर होते हैं, क्योंकि ये ग्लोबल फ़्रंटएंड इन्फ़्रास्ट्रक्चर का इस्तेमाल करते हैं.
  • इस्तेमाल का उदाहरण: इसका इस्तेमाल पहले कुछ इलाकों में ऐक्सेस देने के लिए किया जाता था. हालांकि, अब आम तौर पर इसका इस्तेमाल करने से मना किया जाता है. इसके बजाय, रीजनल एंडपॉइंट का इस्तेमाल करने का सुझाव दिया जाता है, ताकि बेहतर गारंटी दी जा सके.

Google API के लिए Private Service Connect

Private Service Connect, Google Cloud नेटवर्किंग की एक सुविधा है. इससे उपभोक्ता, प्रोड्यूसर की सेवाओं को ऐक्सेस कर सकते हैं. इसमें, उपयोगकर्ता के वीपीसी में होस्ट किए गए प्राइवेट एंडपॉइंट के ज़रिए Google APIs से कनेक्ट करने की सुविधा शामिल है.

Google API को ऐक्सेस करने के लिए, पीएससी एंडपॉइंट का इस्तेमाल करने का तरीका:

Google API को ऐक्सेस करने के लिए, पीएससी बैकएंड का इस्तेमाल करने का तरीका:

Cloud Run, वीपीसी नेटवर्क पर ट्रैफ़िक भेजता है

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

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

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

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

  • ग्लोबल Google API के लिए, पीएससी एंडपॉइंट बनाने का तरीका.
  • स्थानीय Google API के लिए, पीएससी एंडपॉइंट बनाने का तरीका.
  • Cloud Run कोड में एपीआई एंडपॉइंट बदलने और इग्रेस के लिए नेटवर्किंग को कॉन्फ़िगर करने का तरीका.

3. लैब का पूरा आर्किटेक्चर

8f5328678688f210.png

4. तैयारी के चरण

लैब पर काम करने के लिए ज़रूरी IAM भूमिकाएं

सबसे पहले, प्रोजेक्ट लेवल पर GCP खाते को ज़रूरी IAM भूमिकाएं असाइन करें.

  • Compute Network Admin (roles/compute.networkAdmin) इस भूमिका से, आपको Compute Engine के नेटवर्किंग संसाधनों का पूरा कंट्रोल मिलता है.
  • लॉगिंग एडमिन (roles/logging.admin) इस भूमिका से, आपको लॉगिंग से जुड़ी सभी अनुमतियों और उनसे जुड़ी अनुमतियों का ऐक्सेस मिलता है.
  • सेवा के इस्तेमाल का एडमिन (roles/serviceusage.serviceUsageAdmin) इस भूमिका से, आपको सेवा की स्थितियां चालू और बंद करने के साथ-साथ उनकी जांच करने की सुविधा मिलती है. साथ ही, आपको कार्रवाइयों की जांच करने और उपभोक्ता प्रोजेक्ट के लिए कोटा और बिलिंग का इस्तेमाल करने की सुविधा मिलती है.
  • डीएनएस एडमिन (roles/dns.admin) इस भूमिका से, आपको सभी Cloud DNS संसाधनों के लिए पढ़ने और लिखने का ऐक्सेस मिलता है
  • Cloud Run एडमिन (roles/run.admin) इस भूमिका से, आपको Cloud Run के सभी संसाधनों पर पूरा कंट्रोल मिलता है.
  • स्टोरेज एडमिन (roles/storage.admin) इस भूमिका से, आपको ऑब्जेक्ट और बकेट का पूरा कंट्रोल मिलता है.

एपीआई चालू करें

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट सही तरीके से कॉन्फ़िगर किया गया हो और एनवायरमेंट वैरिएबल सेट किए गए हों.

Cloud Shell में, यह तरीका अपनाएं:

gcloud auth login
gcloud config set project <your project id>
export project_id=<your project id>
export region=<your region>
export zone=$region-a
echo $project_id
echo $region

प्रोजेक्ट में सभी ज़रूरी Google API चालू करें. Cloud Shell में, यह तरीका अपनाएं:

gcloud services enable \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  run.googleapis.com \
  compute.googleapis.com \
  dns.googleapis.com \
  servicedirectory.googleapis.com \
  networkconnectivity.googleapis.com

वीपीसी बनाना

प्रोजेक्ट में, कस्टम सबनेट मोड वाला वीपीसी नेटवर्क बनाएं. Cloud Shell में यह कार्रवाई करें:

gcloud compute networks create mynet \
    --subnet-mode=custom

सबनेट बनाना

Cloud Shell में, IPv4 सबनेट बनाने के लिए यह तरीका अपनाएं:

gcloud compute networks subnets create mysubnet \
    --network=mynet \
    --range=10.0.0.0/24 \
    --region=$region

Cloud NAT और Cloud Router बनाना

Cloud NAT का इस्तेमाल, Cloud Run जॉब को बाहरी वेबसाइटों से कनेक्ट करने की अनुमति देने के लिए किया जाता है.

gcloud compute routers create $region-cr \
   --network=mynet \
   --region=$region 
gcloud compute routers nats create $region-nat \
    --router=$region-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

5. Cloud Storage के लिए पीएससी एंडपॉइंट बनाना

Cloud Storage के लिए, दो पीएससी एंडपॉइंट बनाए जाएंगे. एक ग्लोबल स्कोप के लिए और दूसरा रीजनल स्कोप के लिए.

ग्लोबल स्कोप का पीएससी एंडपॉइंट बनाना

Private Service Connect की मदद से, अपने वीपीसी नेटवर्क में ग्लोबल इंटरनल आईपी पतों का इस्तेमाल करके, ग्लोबल स्कोप वाले प्राइवेट एंडपॉइंट बनाए जा सकते हैं.

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

आईपी पता बनाने के लिए, Cloud Shell में यह तरीका अपनाएं. कृपया –addresses=<pscendpointip> को बदलकर, वह आईपी पता डालें जो आपको असाइन किया गया है.

gcloud compute addresses create pscglobalip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=<pscendpointip> \
    --network=mynet
pscendpointip=$(gcloud compute addresses list --filter=name:pscglobalip --format="value(address)")
echo $pscendpointip

एंडपॉइंट को Google API और सेवाओं से कनेक्ट करने के लिए, फ़ॉरवर्ड करने का नियम बनाएं.

gcloud compute forwarding-rules create pscendpoint \
    --global \
    --network=mynet \
    --address=pscglobalip \
    --target-google-apis-bundle=all-apis

Cloud DNS में p.googleapis.com की जांच करें

एंडपॉइंट बनाने पर, ये डीएनएस कॉन्फ़िगरेशन अपने-आप बन जाते हैं:

  • p.googleapis.com के लिए, Service Directory का निजी डीएनएस ज़ोन बनाया जाता है.
  • डीएनएस रिकॉर्ड, p.googleapis.com में बनाए जाते हैं. ये रिकॉर्ड, Google के उन एपीआई और सेवाओं के लिए बनाए जाते हैं जिनका इस्तेमाल आम तौर पर किया जाता है. ये सेवाएं, Private Service Connect का इस्तेमाल करके उपलब्ध होती हैं. साथ ही, इनके डिफ़ॉल्ट डीएनएस नाम, googleapis.com पर खत्म होते हैं.

ग्लोबल एंडपॉइंट, Service Directory में रजिस्टर किए जाते हैं. Cloud Storage को ऐक्सेस करने के लिए, storage-[psc endpoint name].p.googleapis.com का इस्तेमाल किया जाएगा. ज़्यादा जानकारी के लिए, यहां प्रॉडक्ट का दस्तावेज़ दिया गया है.

यह देखने के लिए कि p.googleaps.com ज़ोन पहले से बना है या नहीं, यह कमांड चलाएं.

gcloud dns managed-zones list

अगर आपको डिफ़ॉल्ट डीएनएस नाम, storage.googleapis.com का इस्तेमाल करना है, तो Cloud DNS में storage.googleapis.com का एक निजी ज़ोन बनाएं. इसके बाद, ऐपेक्स रिकॉर्ड जोड़ें. यह रिकॉर्ड, ग्लोबल स्कोप वाले आईपी पते के पीएससी एंडपॉइंट की ओर ले जाता है.

Cloud Storage के लिए, रीजनल स्कोप वाला पीएससी एंडपॉइंट बनाएं

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

gcloud network-connectivity regional-endpoints create psc-regional-endpoint \
    --region=$region \
    --network=projects/$project_id/global/networks/mynet \
    --subnetwork=projects/$project_id/regions/$region/subnetworks/mysubnet \
    --target-google-api=storage.us-central1.rep.googleapis.com

ऊपर दिए गए चरण में बनाए गए एंडपॉइंट का आईपी पता पाएं.

regionalip=$(gcloud network-connectivity regional-endpoints describe psc-regional-endpoint --region=$region --format="value(address)")
echo $regionalip

Cloud Storage को ऐक्सेस करने के लिए, storage.us-central1.rep.googleapis.com का इस्तेमाल किया जाएगा. आपको storage.us-central1.rep.googleapis.com के लिए एक निजी ज़ोन बनाना होगा. साथ ही, Cloud DNS में रीजनल एंडपॉइंट के लिए अभी बनाए गए आईपी पते का ऐपेक्स रिकॉर्ड बनाना होगा.

Cloud Storage के रीजनल एंडपॉइंट के लिए प्राइवेट ज़ोन बनाना

Cloud Storage के रीजनल एंडपॉइंट को ऐक्सेस करने के लिए, storage.[region name].rep.googleapis.com का इस्तेमाल करें.

आपको Cloud DNS में एक प्राइवेट ज़ोन बनाना होगा. साथ ही, एक ऐपेक्स रिकॉर्ड जोड़ना होगा, जो Cloud Storage के रीजनल एंडपॉइंट के आईपी पते पर ले जाता हो.

नीचे दिए गए निर्देश में, us-central1 उदाहरण के तौर पर दिया गया क्षेत्र है. आपको अपने क्षेत्र के नाम से ज़ोन बनाना चाहिए.

gcloud dns managed-zones create psc-regional-endpoint-zone \
  --description="" \
  --dns-name="storage.us-central1.rep.googleapis.com" \
  --visibility="private" \
  --networks="mynet"

gcloud dns record-sets create storage.us-central1.rep.googleapis.com. \
  --rrdatas=$regionalip \
  --ttl=300 \
  --type=A \
  --zone=psc-regional-endpoint-zone

6. ग्लोबल स्कोप वाले पीएससी एंडपॉइंट के साथ Cloud Run जॉब को कॉन्फ़िगर करना

कोड प्राप्त करें

सबसे पहले, Node.js ऐप्लिकेशन को एक्सप्लोर करें, ताकि वेब पेजों के स्क्रीनशॉट लिए जा सकें और उन्हें Cloud Storage में सेव किया जा सके. इसके बाद, ऐप्लिकेशन के लिए कंटेनर इमेज बनाई जाती है और उसे Cloud Run पर जॉब के तौर पर चलाया जाता है.

इस रेपो से ऐप्लिकेशन कोड को क्लोन करने के लिए, Cloud Shell में यह कमांड चलाएं:

git clone https://github.com/GoogleCloudPlatform/jobs-demos.git

ऐप्लिकेशन वाली डायरेक्ट्री पर जाएं:

cd jobs-demos/screenshot

आपको फ़ाइल का यह लेआउट दिखेगा:

|

├── Dockerfile

├── README.md

├── screenshot.js

├── package.json

यहां हर फ़ाइल के बारे में कम शब्दों में जानकारी दी गई है:

  • screenshot.js में ऐप्लिकेशन के लिए Node.js कोड होता है. यह ऐप्लिकेशन, वेब पेजों के स्क्रीनशॉट लेता है और उन्हें Cloud Storage में सेव करता है.
  • package.json, लाइब्रेरी की डिपेंडेंसी तय करता है.
  • Dockerfile, कंटेनर इमेज के बारे में बताता है.

screenshot.js कोड खोलें. आपको apiEndpoint को PSC के ग्लोबल एंडपॉइंट में बदलना होगा. कोड खोजें और const storage = new Storage(); की जगह यह कोड डालें:

const storage = new Storage(
    {
      apiEndpoint:'https://storage-pscendpoint.p.googleapis.com.',
      useAuthWithCustomEndpoint: true
    }
  );

जॉब डिप्लॉय करना

कोई जॉब बनाने से पहले, आपको एक सेवा खाता बनाना होगा. इस खाते का इस्तेमाल जॉब को चलाने के लिए किया जाएगा.

gcloud iam service-accounts create screenshot-sa --display-name="Screenshot app service account"

सर्विस खाते को storage.admin की भूमिका असाइन करें, ताकि इसका इस्तेमाल बकेट और ऑब्जेक्ट बनाने के लिए किया जा सके.

gcloud projects add-iam-policy-binding $project_id \
  --role roles/storage.admin \
  --member serviceAccount:screenshot-sa@$project_id.iam.gserviceaccount.com

डिफ़ॉल्ट कंप्यूट सेवा खाते को, स्टोरेज ऑब्जेक्ट के उपयोगकर्ता की भूमिका, लॉग राइटर की भूमिका, और Artifact Registry रिपॉज़िटरी एडमिन की भूमिका असाइन करें.

project_number=$(gcloud projects describe $project_id --format="value(projectNumber)")

gcloud projects add-iam-policy-binding $project_id \
  --role roles/storage.objectUser \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

gcloud projects add-iam-policy-binding $project_id \
  --role roles/logging.logWriter \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

gcloud projects add-iam-policy-binding $project_id \
  --role roles/artifactregistry.repoAdmin \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

Cloud Run की नौकरियों के लिए डायरेक्ट वीपीसी इग्रेस की सुविधा चालू करें, ताकि सभी ट्रैफ़िक को वीपीसी नेटवर्क पर भेजा जा सके.

Cloud Shell में, यह तरीका अपनाएं:

gcloud run jobs deploy screenshot-1 \
  --source=. \
  --args="https://example.com" \
  --args="https://cloud.google.com" \
  --tasks=2 \
  --task-timeout=5m \
  --region=$region \
  --set-env-vars=BUCKET_NAME=screenshot-$project_id-$RANDOM \
  --service-account=screenshot-sa@$project_id.iam.gserviceaccount.com \
  --vpc-egress=all-traffic \
  --network=mynet \
  --subnet=mysubnet

जॉब चलाना

Cloud Shell में, यह तरीका अपनाएं:

gcloud run jobs execute screenshot-1 --region=$region

जॉब और लॉग का स्टेटस देखें. Cloud Run कंसोल पर जाएं और नौकरी खोजें. नौकरी पर क्लिक करें और लॉग का इतिहास देखें. आपको नौकरी के एक्ज़ीक्यूशन का नतीजा, नीचे दिए गए नतीजों की तरह दिखेगा.

bae25d504ea20384.png

टास्क के पूरे होने के लॉग की ज़्यादा जानकारी के लिए, टास्क में जाकर लॉग देखें पर क्लिक करें. आपको नीचे दिए गए उदाहरण की तरह ही जॉब लॉग दिखेंगे.

aa0468dc463f4320.png

नया बकेट बनाया गया है. Cloud Storage Console पर जाकर, बनाई गई नई बकेट देखी जा सकती है. कृपया ध्यान दें कि Cloud Storage Global Endpoint का इस्तेमाल करते समय, बकेट एक मल्टी-रीजन बकेट होती है. बकेट में अपलोड की गई इमेज देखी जा सकती हैं.

जांच के नतीजे में दिखाया गया है कि Cloud Run ने Cloud Storage के ग्लोबल एंडपॉइंट को निजी तौर पर ऐक्सेस किया है. आपने Cloud Run जॉब में इसे बदल दिया था:

apiEndpoint:‘https://storage-pscendpoint.p.googleapis.com.'

7. रीजनल स्कोप वाले पीएससी एंडपॉइंट के साथ Cloud Run जॉब को कॉन्फ़िगर करना

कोड में, apiEndpoint को बदलकर, क्षेत्र के हिसाब से पीएससी एंडपॉइंट कर दें.

कोड खोजें और const storage = new Storage(); को इससे बदलें ( हम us-central1 को उदाहरण के तौर पर इस्तेमाल कर रहे हैं. कृपया अपने देश/इलाके के हिसाब से भाषा बदलें ) :

const storage = new Storage(
    {
      apiEndpoint:'https://storage.us-central1.rep.googleapis.com.',
      useAuthWithCustomEndpoint: true
    }
  );

जॉब डिप्लॉय करना

पक्का करें कि आप ऐप्लिकेशन वाली डायरेक्ट्री (jobs-demos/screenshot) में हों.

pwd

आपने जॉब के लिए डायरेक्ट वीपीसी इग्रेस की सुविधा चालू की हो, ताकि सभी ट्रैफ़िक को वीपीसी नेटवर्क पर भेजा जा सके.

Cloud Shell में, यह तरीका अपनाएं:

gcloud run jobs deploy screenshot-2 \
  --source=. \
  --args="https://example.com" \
  --args="https://cloud.google.com" \
  --tasks=2 \
  --task-timeout=5m \
  --region=$region \
  --set-env-vars=BUCKET_NAME=screenshot-$PROJECT_ID-$RANDOM \
  --service-account=screenshot-sa@$project_id.iam.gserviceaccount.com \
  --vpc-egress=all-traffic \
  --network=mynet \
  --subnet=mysubnet

जॉब चलाना

Cloud Shell में, यह तरीका अपनाएं:

gcloud run jobs execute screenshot-2 --region=$region

जॉब और लॉग का स्टेटस देखें. Cloud Run कंसोल पर जाएं और नौकरी खोजें. नौकरी पर क्लिक करें और नौकरी का इतिहास देखें. आपको नौकरी के एक्ज़ीक्यूशन का नतीजा, नीचे दिए गए नतीजों की तरह दिखेगा.

1065ce25136d355e.png

जॉब के एक्ज़ीक्यूशन के बारे में ज़्यादा जानकारी वाले लॉग के लिए, लॉग देखें पर क्लिक करें. आपको नीचे दिए गए उदाहरण की तरह ही जॉब लॉग दिखेंगे.

837afb2f95a7049b.png

नया बकेट बनाया गया है. Cloud Storage Console पर जाकर, बनाई गई नई बकेट देखी जा सकती है. कृपया ध्यान दें कि Cloud Storage के रीजनल एंडपॉइंट का इस्तेमाल करने पर, बकेट एक रीजन वाली बकेट होती है. बकेट में अपलोड की गई इमेज देखी जा सकती हैं.

जांच के नतीजे में दिखता है कि Cloud Run ने Cloud Storage के रीजनल एंडपॉइंट को निजी तौर पर ऐक्सेस किया है. आपने Cloud Run जॉब में यह बदलाव किया था:

apiEndpoint:‘https://storage.us-central1.rep.googleapis.com.'

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

Cloud Run जॉब को मिटाना

gcloud run jobs delete screenshot-1 \
  --region=$region --quiet
gcloud run jobs delete screenshot-2 \
  --region=$region --quiet

gcloud iam service-accounts delete screenshot-sa@$project_id.iam.gserviceaccount.com --quiet

पीएसएसी एंडपॉइंट को क्लीन अप करना

gcloud compute forwarding-rules delete pscendpoint \
    --global --quiet
gcloud network-connectivity regional-endpoints delete psc-regional-endpoint \
    --region=$region --quiet
gcloud compute addresses delete pscglobalip \
    --global --quiet

Cloud NAT, Cloud Router, और वीपीसी को मिटाएं

gcloud compute routers nats delete $region-nat \
    --router=$region-cr \
    --region=$region --quiet
gcloud compute routers delete $region-cr \
    --region=$region --quiet
gcloud compute networks subnets delete mysubnet \
    --region=$region --quiet
gcloud compute networks delete mynet --quiet

9. बधाई हो

आपने ग्लोबल एंडपॉइंट और रीजनल एंडपॉइंट के ज़रिए, Cloud Storage के प्राइवेट ऐक्सेस के लिए Cloud Run की जांच कर ली है.