क्लाइंट लाइब्रेरी के ज़रिए Earth Engine से अनुरोध करने से पहले, आपको अपनी पहचान की पुष्टि करनी होगी. साथ ही, Earth Engine क्लाइंट को शुरू करने के लिए, पुष्टि करने के बाद मिले क्रेडेंशियल का इस्तेमाल करना होगा.
Earth Engine कोड एडिटर और JavaScript
कोड एडिटर में, पुष्टि करने और शुरू करने की प्रोसेस अपने-आप मैनेज होती है. कोड एडिटर में सबसे ऊपर दाईं ओर मौजूद लॉगिन से, अनुरोधों को क्लाउड प्रोजेक्ट के ज़रिए रूट किया जा सकता है.
अगर कोड एडिटर के बाहर JavaScript API का इस्तेमाल किया जा रहा है, तो ee.data में पुष्टि करने वाले किसी हेल्पर का इस्तेमाल करें. उदाहरण के लिए, ee.data.authenticateViaPopup(). इसके बाद, ee.initialize() का इस्तेमाल करें, जैसा कि इस उदाहरण में दिखाया गया है.
Python और कमांड लाइन
Earth Engine Python क्लाइंट लाइब्रेरी का इस्तेमाल करने से पहले, आपको अपनी पहचान की पुष्टि करनी होगी. इसके बाद, Python क्लाइंट को शुरू करने के लिए, पुष्टि के बाद मिले क्रेडेंशियल का इस्तेमाल करना होगा. पुष्टि करने के लिए, पुष्टि करने के फ़्लो में क्लाउड प्रोजेक्ट का इस्तेमाल किया जाता है. इनका इस्तेमाल, बिना पैसे चुकाए (मुफ़्त, गैर-व्यावसायिक) और पैसे चुकाकर, दोनों तरह से किया जाता है. पुष्टि करने और शुरू करने के लिए, यह चलाएं
ee.Authenticate()
ee.Initialize(project='my-project')
इससे पहले आपके एनवायरमेंट के लिए, पुष्टि करने का सबसे सही मोड चुना जाएगा. इसके बाद, आपको अपनी स्क्रिप्ट के लिए ऐक्सेस की पुष्टि करने के लिए कहा जाएगा. अगर क्रेडेंशियल पहले से मौजूद हैं, तो वे अपने-आप फिर से इस्तेमाल हो जाते हैं. नए क्रेडेंशियल बनाने के लिए, ee.Authenticate(force=True) चलाएं.
शुरुआती चरण में यह पुष्टि की जाती है कि मान्य क्रेडेंशियल मौजूद हैं. ये क्रेडेंशियल, ee.Authenticate() से बनाए गए हों या Google के डिफ़ॉल्ट क्रेडेंशियल के तौर पर पहले से मौजूद हों. इसके बाद, यह Python क्लाइंट लाइब्रेरी को उन तरीकों से शुरू करता है जो बैकएंड सर्वर पर काम करते हैं. आपको ऐसा प्रोजेक्ट उपलब्ध कराना होगा जिसका मालिकाना हक आपके पास हो या जिसे इस्तेमाल करने की अनुमतियां आपके पास हों. प्रोजेक्ट को रजिस्टर करने और Earth Engine API को चालू करने के लिए, क्लाउड प्रोजेक्ट सेटअप देखें. इस प्रोजेक्ट का इस्तेमाल, Earth Engine की सभी कार्रवाइयों को चलाने के लिए किया जाएगा.
कमांड लाइन पर, इसके जैसा कॉल earthengine authenticate है. अगर क्रेडेंशियल की समयसीमा खत्म हो चुकी है या वे अमान्य हैं, तो आपको earthengine
authenticate --force को चलाना पड़ सकता है. कमांड लाइन शुरू करने पर, हर कॉल पर यह शुरू हो जाएगा. साथ ही, प्रोजेक्ट सेट करने के लिए, --project आर्ग्युमेंट का इस्तेमाल किया जा सकता है.
earthengine
set_project {my-project} को चलाकर, आने वाले समय में किए जाने वाले सभी कॉल के लिए भी प्रोजेक्ट को कॉन्फ़िगर किया जा सकता है. जब किसी प्रोजेक्ट के बारे में सीधे तौर पर नहीं बताया जाता है, तब कमांड लाइन और ee.Initialize() इसका इस्तेमाल करेंगे. अगर gcloud (नीचे देखें) के ज़रिए पुष्टि की जा रही है, तो gcloud auth application-default
set-quota-project {my-project} से सेट किए गए प्रोजेक्ट का इस्तेमाल आखिरी विकल्प के तौर पर किया जाएगा.
पुष्टि करने से जुड़ी जानकारी
Earth Engine की पुष्टि करने की प्रोसेस का मकसद, साइन इन किए गए आपके खाते से सुरक्षा "टोकन" पाना है. इसे सेव करके, आपकी स्क्रिप्ट को आपके डेटा को ऐक्सेस करने की अनुमति दी जा सकती है. सुरक्षा की वजहों से, Google का पुष्टि करने वाला सिस्टम, ऐसे टोकन सिर्फ़ उन सिस्टम को पास करेगा जिन्हें सुरक्षित बनाया जा सकता है. इसके बारे में तकनीकी जानकारी नीचे दी गई है.
सिस्टम की संवेदनशीलता की वजह से, आपकी स्थिति के हिसाब से आगे बढ़ने के अलग-अलग तरीके हो सकते हैं. ज़्यादातर विकल्प, auth_mode पैरामीटर से कंट्रोल किए जाते हैं: कमांड लाइन पर ee.Authenticate(auth_mode=...) या earthengine authenticate --auth_mode=... के तौर पर.
ध्यान दें कि अगर आपके एनवायरमेंट में Google क्रेडेंशियल पहले से मौजूद हैं, तो आपको ee.Authenticate() को कॉल करने की ज़रूरत नहीं पड़ेगी. Google Cloud के वीएम, App Engine, और अन्य एनवायरमेंट, इस्तेमाल किए जा सकने वाले "एंबियंट क्रेडेंशियल" उपलब्ध कराते हैं. साथ ही, gcloud auth
application-default login भी उन्हें बनाएगा.
हालांकि, हमारा सुझाव है कि सभी स्क्रिप्ट की शुरुआत में ee.Authenticate() का इस्तेमाल करें, ताकि स्क्रिप्ट ज़्यादा से ज़्यादा ब्राउज़र के साथ काम कर सकें. auth_mode पैरामीटर के बिना, इसे ज़्यादातर स्थितियों में काम करने के लिए डिज़ाइन किया गया है. हालांकि, अगर डिफ़ॉल्ट मोड काम नहीं करता है, तो यहां दी गई जानकारी देखें.
डिफ़ॉल्ट मोड को इस तरह चुना जाता है:
colab, अगर Google Colab notebook में चलाया जा रहा हैnotebook, अगर Colab के अलावा किसी अन्य Jupyter notebook में चलाया जा रहा हैlocalhostअगर वेब ब्राउज़र का पता चलता है और कोई gcloud बाइनरी इंस्टॉल नहीं है- अगर ऐसा नहीं है, तो
gcloudका इस्तेमाल करें. इस मोड के लिए, आपको gcloud इंस्टॉल करना होगा.
झटपट रेफ़रंस गाइड और टेबल
इस गाइड में बताया गया है कि अगर ee.Authenticate() का चुना गया डिफ़ॉल्ट मोड काम नहीं करता है, तो आपके पास कौनसे विकल्प उपलब्ध हैं. उदाहरण के लिए, अगर आप अन्य नोटबुक एनवायरमेंट में काम कर रहे हैं, तो आपको साफ़ तौर पर notebook बताना पड़ सकता है.
- लोकल एनवायरमेंट.
- "लोकल" का मतलब है कि आपके सामने मौजूद मशीन पर, Python शेल या Python नोटबुक में कोड चलाया जा रहा है. ज़्यादा सटीक तौर पर कहें, तो उसी मशीन पर जिस पर आपका वेब ब्राउज़र चल रहा है. इसमें रिमोट-डेस्कटॉप की ऐसी स्थितियां शामिल हैं जहां Python और ब्राउज़र, दोनों एक ही (रिमोट) मशीन पर हों.
auth_mode=localhostका इस्तेमाल करना सबसे आसान है. अगर gcloud इंस्टॉल नहीं है, तो इसे डिफ़ॉल्ट रूप से चुना जाएगा. हालांकि, आपकी स्क्रिप्ट सिर्फ़ लोकल एनवायरमेंट में काम करेगी.auth_mode=gcloudऔरauth_mode=notebookभी उपलब्ध हैं.
- रिमोट एनवायरमेंट.
- "रिमोट" का मतलब है कि आपका ब्राउज़र एक (लोकल) मशीन पर है, लेकिन आपका कोड कहीं और चल रहा है. जैसे, किसी रिमोट वर्कस्टेशन या वेब पर आधारित नोटबुक पर.
- अगर Colab का इस्तेमाल किया जा रहा है, तो
auth_mode=colabका इस्तेमाल करें. इसके अलावा, अगर आपको अन्य एपीआई को कॉल करने के लिएscopesसेट करना है, तोgcloudका इस्तेमाल करें. - अगर आपके पास रिमोट मशीन और लोकल मशीन, दोनों पर gcloud इंस्टॉल करने का विकल्प है, तो
auth_mode=gcloudका इस्तेमाल करें. - अगर आपके पास पुष्टि करने वाले प्रोजेक्ट का इस्तेमाल करने का विकल्प है (नीचे देखें), तो
auth_mode=notebookका इस्तेमाल करें. - अगर किसी प्रोजेक्ट का इस्तेमाल नहीं किया जा सकता या gcloud इंस्टॉल नहीं किया जा सकता या Colab का इस्तेमाल नहीं किया जा सकता या उसी मशीन पर ब्राउज़र का इस्तेमाल नहीं किया जा सकता, तो:
- प्रोजेक्ट बनाने के बारे में एडमिन से (फिर से) बात करें. उदाहरण के लिए:
- एडमिन से कहें कि वह आपके लिए कोई प्रोजेक्ट कॉन्फ़िगर करे. इसके लिए, आपको मालिक, एडिटर या OAuth कॉन्फ़िगरेशन एडिटर की भूमिका असाइन करनी होगी
- इसके अलावा, एडमिन से प्रोजेक्ट बनाने की अनुमति मांगें.
इस टेबल में बताया गया है कि हर मोड में, सुविधाओं के कौनसे कॉम्बिनेशन काम करते हैं.
| लोकल या रिमोट? | प्रोजेक्ट की ज़रूरत है | सेट किए जा सकने वाले स्कोप | लोकल सीएलआई की ज़रूरत है | प्रोजेक्ट का मालिक | |
|---|---|---|---|---|---|
localhost |
स्थानीय | Y | हां | नहीं | नहीं |
colab |
रिमोट | Y | नहीं | नहीं | नहीं |
gcloud |
दोनों | Y | हां | नहीं | नहीं |
notebook |
दोनों | Y | हां | नहीं | Y |
सेवा खातों और Compute Engine के लिए क्रेडेंशियल
ee.Initialize(), Earth Engine के क्रेडेंशियल इस्तेमाल करेगा. ये क्रेडेंशियल, ee.Authenticate() ~/.config/earthengine/credentials में सेव करता है. इसके अलावा, यह google.auth.default() से क्रेडेंशियल हासिल करेगा. हालांकि, अगर ज़रूरी हो, तो कहीं और से क्रेडेंशियल इस्तेमाल करने के लिए, credentials= आर्ग्युमेंट पास किया जा सकता है. इससे ये डिफ़ॉल्ट क्रेडेंशियल बायपास हो जाएंगे.
अगर आपको ऐसे Python कोड की पुष्टि करनी है जो बिना किसी निगरानी के चलेगा, तो उपयोगकर्ता खाते के बजाय सेवा खाते से पुष्टि करें. Earth Engine के साथ सेवा खातों का इस्तेमाल करने के लिए, ये दस्तावेज़ देखें. अन्य तरीकों में, Colab के ऑथ मॉड्यूल में authenticate_service_account और सेवा खाते के तौर पर पुष्टि करने के लिए Cloud गाइड में बताए गए तरीके शामिल हैं.
अगर आपका कोड Compute Engine VM पर चल रहा है, तो एनवायरमेंट के लिए एक डिफ़ॉल्ट सेवा खाता बनाया जाता है. ee.Initialize() डिफ़ॉल्ट रूप से इसका इस्तेमाल करेगा. अगर जिस क्लाउड प्रोजेक्ट से वीएम को शुरू किया गया है वह Earth Engine (व्यावसायिक या गैर-व्यावसायिक) के साथ इस्तेमाल करने के लिए रजिस्टर नहीं है, तो आपको Earth Engine का इस्तेमाल करने के लिए सेवा खाते को रजिस्टर करना पड़ सकता है.
मोड के बारे में जानकारी
auth_mode=colab. ee.Authenticate(), Colab के साथ काम करने वाले डिफ़ॉल्ट क्रेडेंशियल बनाएगा या हासिल करेगा. इसके लिए, ज़रूरत पड़ने पर colab.auth.authenticate_user() को चलाया जाएगा. क्रेडेंशियल हमेशा cloud-platform स्कोप का इस्तेमाल करते हैं. इनका इस्तेमाल अन्य Cloud API को कॉल करने के लिए भी किया जा सकता है.
auth_mode=gcloud. यह पुष्टि करने की प्रोसेस को gcloud टूल को सौंपता है. यह डिफ़ॉल्ट Earth Engine स्कोप (earthengine, cloud-platform, और drive) या scopes आर्ग्युमेंट में मौजूद स्कोप के साथ gcloud auth application-default login चलाने जैसा ही है. gcloud मोड, लोकल और रिमोट, दोनों मामलों में काम करता है.
gcloud मोड के लिए सिलसिलेवार निर्देश (लोकल और रिमोट केस)
- पुष्टि करें कि आपके कंप्यूटर पर gcloud इंस्टॉल है.
- टर्मिनल में,
gcloud helpचलाएं. अगर gcloud इंस्टॉल नहीं है, तो gcloud इंस्टॉल करने के लिए इन निर्देशों का पालन करें.
- टर्मिनल में,
- लोकल मशीन टर्मिनल
- टर्मिनल में,
earthengine authenticateचलाएं. - कमांड आउटपुट से पता चलेगा कि क्रेडेंशियल फ़ेच करने के लिए, gcloud का इस्तेमाल किया जा रहा है.
- एक ब्राउज़र विंडो खुलेगी, जिसमें खाता चुनने वाला पेज दिखेगा. अगर ब्राउज़र अपने-आप नहीं खुलता है, तो यूआरएल पर क्लिक करें.
- टर्मिनल में,
- ब्राउज़र: खाता चुनना
- वह खाता चुनें जिसका इस्तेमाल करके आपको पुष्टि करनी है.
- ब्राउज़र: सहमति वाली स्क्रीन
- यह बताएं कि आपको अनुरोध किए गए स्कोप का ऐक्सेस देना है या नहीं. इसके बाद, "अनुमति दें" पर क्लिक करें.
- ब्राउज़र: पुष्टि करने वाली स्क्रीन
- ब्राउज़र पर एक पेज दिखेगा. इसमें पुष्टि की जाएगी कि आपकी पहचान की पुष्टि हो गई है. साथ ही, आपकी टर्मिनल विंडो में
earthengine authenticateकमांड, "अनुमति देने वाला टोकन सेव हो गया" मैसेज दिखाएगा. - कुछ मामलों में, वेब पेज आपको एक कोड देगा. इसे आपको Python एनवायरमेंट में वापस चिपकाना होगा.
- ब्राउज़र पर एक पेज दिखेगा. इसमें पुष्टि की जाएगी कि आपकी पहचान की पुष्टि हो गई है. साथ ही, आपकी टर्मिनल विंडो में
- शुरू करने की प्रोसेस जारी रखें.
auth_mode=localhost. यह gcloud जैसा फ़्लो है. इसका इस्तेमाल उन मामलों में किया जाता है जहां gcloud इंस्टॉल नहीं है. यह gcloud की तरह ही काम करता है, लेकिन सिर्फ़ लोकल केस के लिए काम करता है. आपके पास इंटरनेट पोर्ट नंबर देने का विकल्प होता है. जैसे, localhost:8086. इसके अलावा, पोर्ट को अपने-आप चुनने के लिए localhost:0 का इस्तेमाल किया जा सकता है. डिफ़ॉल्ट पोर्ट 8085 है.
auth_mode=notebook. यह एक सामान्य मोड है. इसे ऐसी स्थितियों में काम करने के लिए डिज़ाइन किया गया है जहां लोकल कमांड लाइन उपलब्ध नहीं होती हैं. यह आपको Notebook Authenticator पेज पर रीडायरेक्ट करेगा. यहां आपको "पुष्टि करने वाला प्रोजेक्ट" चुनना होगा या बनाना होगा. इसके बारे में ज़्यादा जानकारी और समस्या हल करने की गाइड नीचे देखें. ee.Initialize() को पास किए गए प्रोजेक्ट का इससे मैच होना ज़रूरी नहीं है. अलग-अलग नोटबुक में अलग-अलग प्रोजेक्ट पर काम करते समय, पुष्टि करने के लिए एक ही प्रोजेक्ट का इस्तेमाल किया जा सकता है. हमारा सुझाव है कि आप ee.Initialize() को साफ़ तौर पर कोई प्रोजेक्ट पास करें. हालांकि, डिफ़ॉल्ट रूप से पुष्टि करने वाले प्रोजेक्ट का इस्तेमाल किया जाएगा.
नोटबुक मोड के लिए सिलसिलेवार निर्देश
- ब्राउज़र: Notebook
- नोटबुक के कोड सेल में, "नोटबुक" मोड का इस्तेमाल करके पुष्टि करने की प्रोसेस शुरू करने के लिए, यह कोड चलाएं.
सेल आउटपुट में मौजूद लिंक पर क्लिक करके, Notebook Authenticator पेज को नए टैब में खोलें.import ee ee.Authenticate()
- नोटबुक के कोड सेल में, "नोटबुक" मोड का इस्तेमाल करके पुष्टि करने की प्रोसेस शुरू करने के लिए, यह कोड चलाएं.
- ब्राउज़र: Notebook Authenticator
- पुष्टि करें कि सही उपयोगकर्ता खाता सूची में शामिल हो.
- पुष्टि करने के लिए, कोई Google Cloud प्रोजेक्ट चुनें. अगर आपको कोई नया प्रोजेक्ट बनाना है, तो हमारा सुझाव है कि आप नाम रखने के लिए "ee-xyz" नियम का इस्तेमाल करें. इसमें xyz, Earth Engine का आपका सामान्य उपयोगकर्ता नाम है. (अगर आपको क्लाउड प्रोजेक्ट चुनने या बनाने में समस्या आ रही है, तो नीचे दिया गया समस्या हल करने वाला सेक्शन देखें.)
- 'टोकन जनरेट करें' पर क्लिक करें.
- ब्राउज़र: खाता चुनना
- आपको खाता चुनने वाला पेज दिखेगा. उस उपयोगकर्ता खाते पर क्लिक करें जिसे आपको नोटबुक का ऐक्सेस देना है.
- ब्राउज़र: चेतावनी वाला पेज
- चेतावनी वाला एक पेज दिखता है.इससे पता चलता है कि Google ने ऐप्लिकेशन नहीं बनाया है. यानी कि नोटबुक में मौजूद कोड Google ने नहीं बनाया है. स्वीकार करने के लिए, 'जारी रखें' पर क्लिक करें.
- ब्राउज़र: सहमति वाली स्क्रीन
- यह बताएं कि आपको अनुरोध किए गए स्कोप को अनुमति देनी है या नहीं. इसके बाद, जारी रखें पर क्लिक करें.
- ब्राउज़र: ऑथराइज़ेशन कोड की स्क्रीन
- पुष्टि करने के लिए कोड कॉपी करें
- ब्राउज़र: Notebook
- नोटबुक टैब पर वापस जाएं और पुष्टि करने के लिए मिले कोड को नोटबुक सेल आउटपुट में चिपकाएं.
- सेल के आउटपुट में "अनुमति देने वाला टोकन सेव हो गया" दिखना चाहिए.
- शुरू करने की प्रोसेस जारी रखें.
नोटबुक मोड में, quiet पैरामीटर का इस्तेमाल बहुत कम किया जाता है: अगर इसे सेट किया जाता है, तो यह "नॉन-इंटरैक्टिव" तरीके से चलता है. साथ ही, यह आपको ऑथराइज़ेशन कोड डालने के लिए प्रॉम्प्ट नहीं करता और न ही इंतज़ार करता है.
इसके बजाय, यह कोड को सेव करने के लिए, चलाने का निर्देश देता है.
पुष्टि करने से जुड़े प्रोजेक्ट
नोटबुक मोड में इस्तेमाल किए गए ऑथेंटिकेशन प्रोजेक्ट के लिए, आपके पास मालिक, एडिटर या OAuth कॉन्फ़िगरेशन एडिटर की भूमिका होनी चाहिए. कई मामलों में, खास तौर पर छोटी टीमों के लिए, Notebook Authenticator पेज पर इस्तेमाल किया जाने वाला ऑथेंटिकेशन प्रोजेक्ट, आपके अन्य कामों के लिए इस्तेमाल किए जाने वाले प्राइमरी प्रोजेक्ट जैसा ही हो सकता है.
सुरक्षा से जुड़ी समस्याओं की वजह से, पुष्टि करने वाले प्रोजेक्ट पर "OAuth क्लाइंट कॉन्फ़िगरेशन" को सिर्फ़ एक बार सेट अप किया जा सकता है. अगर आपने या अन्य उपयोगकर्ताओं ने किसी और वजह से प्रोजेक्ट पर OAuth क्लाइंट सेट अप किया है, तो उसे हटाया नहीं जा सकता. साथ ही, आपको "OAuth2 क्लाइंट कॉन्फ़िगरेशन काम नहीं कर रहा है" गड़बड़ी का मैसेज दिखेगा. पुष्टि करने के लिए, आपको किसी दूसरे प्रोजेक्ट का इस्तेमाल करना होगा. इसके अलावा, ऊपर बताए गए colab, localhost या gcloud मोड का इस्तेमाल करें.
स्कोप के बारे में जानकारी
Earth Engine की डिफ़ॉल्ट पुष्टि करने की सेटिंग में, सभी उपलब्ध स्कोप शामिल होते हैं. इसलिए, अगर डिफ़ॉल्ट सेटिंग आपकी ज़रूरतों के मुताबिक हैं, तो इस सेक्शन को छोड़ा जा सकता है.
Earth Engine के स्कोप: OAuth 2.0 स्कोप, उन संसाधनों और कार्रवाइयों के सेट को तय करता है और उन्हें सीमित करता है जिन्हें ऐक्सेस करने की अनुमति किसी ऐप्लिकेशन को उपयोगकर्ता की ओर से दी जाती है. Earth Engine में पुष्टि करने के लिए OAuth का इस्तेमाल करते समय, आपको इनमें से एक या उससे ज़्यादा स्कोप का अनुरोध करना होगा:
https://www.googleapis.com/auth/earthengine: Earth Engine की ऐसेट और संसाधनों को पढ़ने और उनमें बदलाव करने का ऐक्सेस. ऐसेट बनाने, उनमें बदलाव करने या उन्हें मिटाने, ऐसेट की अनुमतियां मैनेज करने, और एक्सपोर्ट टास्क चलाने के लिए ज़रूरी है.https://www.googleapis.com/auth/earthengine.readonly: Earth Engine की ऐसेट के लिए रीड-ओनली ऐक्सेस.
दोनों स्कोप में स्क्रिप्ट को एक्ज़ीक्यूट किया जा सकता है और कंप्यूटेशन चलाए जा सकते हैं. जैसे, एक्सप्रेशन का आकलन करना या मैप विज़ुअलाइज़ेशन रेंडर करना.
Google Cloud और Drive के स्कोप: अगर आपकी Earth Engine क्वेरी या स्क्रिप्ट में बाहरी डेटा या ऐसेट का रेफ़रंस दिया गया है, तो आपके क्रेडेंशियल में उन सेवाओं के लिए सही स्कोप भी शामिल होने चाहिए:
- Cloud Storage (GCS) (Cloud Storage बकेट से डेटा को पढ़ने या उसमें डेटा लिखने के लिए, जैसे कि Cloud Optimized GeoTIFFs (COGs) को लोड करना या टास्क के आउटपुट को एक्सपोर्ट करना):
https://www.googleapis.com/auth/devstorage.full_controlhttps://www.googleapis.com/auth/devstorage.read_writehttps://www.googleapis.com/auth/devstorage.read_only
- BigQuery (BQ) (BigQuery में टेबल पढ़ते समय या एक्सपोर्ट लिखते समय):
https://www.googleapis.com/auth/bigquery
- Google Drive (Google Drive में मौजूद डेटा को ऐक्सेस या एक्सपोर्ट करते समय):
https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.readonly
Google Cloud, Google Cloud की सभी सेवाओं के लिए बड़े स्कोप भी उपलब्ध कराता है:
- Cloud Platform (Google Cloud की सेवाओं का ऐक्सेस, जिसमें Earth Engine, Cloud Storage, और BigQuery शामिल हैं. ध्यान दें कि Google Drive, Workspace की एक अलग सेवा है और इसमें ये स्कोप शामिल नहीं हैं):
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/cloud-platform.read-only
डिफ़ॉल्ट स्कोप: Earth Engine कोड एडिटर और क्लाइंट लाइब्रेरी (जैसे, ee.Authenticate()), दोनों से कॉन्फ़िगर किए गए डिफ़ॉल्ट स्कोप में ये सभी स्कोप शामिल होते हैं: earthengine, cloud-platform, और drive (ज़्यादा जानकारी के लिए, पहले वाला सेक्शन देखें).
इसलिए, स्कोप को पसंद के मुताबिक बनाने की ज़रूरत सिर्फ़ तब होती है, जब आपके पास सुरक्षा से जुड़ी कुछ खास पाबंदियां या संगठन की नीतियां हों. इनके तहत, अनुमतियों को सीमित करना ज़रूरी होता है. उदाहरण के लिए, ee.Authenticate(scopes=[...]) में scopes पैरामीटर का इस्तेमाल करना.
समस्या का हल
अगर मुझे क्लाउड प्रोजेक्ट बनाने में समस्या आ रही है, तो क्या होगा?
कुछ संगठन यह कंट्रोल करते हैं कि क्लाउड प्रोजेक्ट कौन बना सकता है. अगर प्रोजेक्ट बनाते समय, आपको Notebook Authenticator पेज पर कोई गड़बड़ी दिखती है, तो ये तरीके आज़माएं:
- सीधे तौर पर प्रोजेक्ट बनाने की कोशिश करें, ताकि यह पुष्टि की जा सके कि आपके पास ज़रूरी अनुमतियां हैं या नहीं.
- अपने संगठन के एडमिन से बात करके पता करें कि प्रोजेक्ट बनाने के लिए कौनसी प्रोसेस उपलब्ध हैं.
- किसी ऐसे खाते से प्रोजेक्ट बनाएं जो संगठन से जुड़ा न हो. इसके बाद, उस खाते को प्रोजेक्ट के मालिक के तौर पर जोड़ें जिसका इस्तेमाल काम के लिए किया जाता है. ध्यान दें: कुछ संगठनों की सुरक्षा नीतियां, बाहरी प्रोजेक्ट से OAuth क्लाइंट को ऐक्सेस करने की अनुमति नहीं देती हैं.
गड़बड़ी: "Earth Engine API का इस्तेमाल, प्रोजेक्ट XXX में पहले नहीं किया गया है या यह बंद है"
सबसे पहले, पक्का करें कि आपने ee.Initialize() में या कमांड लाइन पर कोई प्रोजेक्ट कॉन्फ़िगर किया हो. Cloud और Colab से मिले डिफ़ॉल्ट प्रोजेक्ट में, Earth Engine चालू नहीं होगा. इसके बाद, पक्का करें कि आपके प्रोजेक्ट में Earth Engine API चालू हो.
गड़बड़ी: "प्रोजेक्ट में OAuth2 क्लाइंट का कॉन्फ़िगरेशन काम नहीं करता"
क्लाउड प्रोजेक्ट में सिर्फ़ एक OAuth2 क्लाइंट कॉन्फ़िगरेशन हो सकता है. क्रेडेंशियल पेज पर OAuth 2.0 क्लाइंट आईडी देखकर, यह पता लगाया जा सकता है कि किसी क्लाउड प्रोजेक्ट में OAuth2 क्लाइंट कॉन्फ़िगरेशन सेट है या नहीं. आपको कोई ऐसा Cloud प्रोजेक्ट चुनना होगा जिसमें Notebook Authenticator ने पहले से ही, साथ काम करने वाला कॉन्फ़िगरेशन सेट अप किया हो. इसके अलावा, कोई ऐसा Cloud प्रोजेक्ट चुनें या बनाएं जिसमें कोई OAuth2 क्लाइंट न हो. प्रमाणित करने वाला टूल, इस प्रोजेक्ट को अपने-आप कॉन्फ़िगर कर देगा. माफ़ करें, OAuth सिस्टम उपयोगकर्ताओं को कॉन्फ़िगरेशन मिटाने की अनुमति नहीं देता. इसलिए, किसी दूसरे प्रोजेक्ट का इस्तेमाल करना ज़रूरी है. यह ज़रूरी नहीं है कि यह वही प्रोजेक्ट हो जिसका इस्तेमाल Earth Engine के अन्य कामों के लिए किया जाता है. ध्यान दें कि यह गड़बड़ी Colab मोड में नहीं होती.
गड़बड़ी: "gcloud failed. कृपया ऊपर दी गई गड़बड़ियों की जांच करें और ज़रूरत पड़ने पर gcloud इंस्टॉल करें."
यह गड़बड़ी तब हो सकती है, जब gcloud इंस्टॉल न हो या आपके PATH पर न हो. ऐसा तब भी हो सकता है, जब नोटबुक के कोड सेल से ee.Authenticate(auth_mode='gcloud') को कॉल किया जाए. इसके बजाय, ee.Authenticate() का इस्तेमाल करें. यह डिफ़ॉल्ट रूप से, नोटबुक मोड की मदद से पुष्टि करने की सुविधा का इस्तेमाल करेगा. अगर आपको प्रोजेक्ट बनाने में समस्या आ रही है, तो ऊपर दिया गया समाधान देखें.
अगर मेरे पास gcloud इंस्टॉल करने के लिए, लोकल मशीन का ऐक्सेस नहीं है, तो क्या होगा?
अगर आपके पास लोकल टर्मिनल का ऐक्सेस नहीं है और सिर्फ़ वेब पर काम किया जा रहा है, लेकिन आपको अब भी रिमोट टर्मिनल का इस्तेमाल करना है, तो earthengine
authenticate --auth_mode=notebook कमांड चलाकर नोटबुक मोड को ट्रिगर करके, कमांड लाइन टूल को शुरू किया जा सकता है.
गड़बड़ी 400: redirect_uri_mismatch
अगर किसी ऐसी रिमोट मशीन पर पुष्टि की जाती है जिस पर वेब ब्राउज़र का ऐक्सेस नहीं है, तो आपको यह गड़बड़ी दिख सकती है. अगर कमांड लाइन से earthengine authenticate को चलाया जा रहा है, तो --quiet को जोड़कर देखें. इसके अलावा, अगर Python क्लाइंट का इस्तेमाल किया जा रहा है, तो ee.Authenticate(quiet=True) को जोड़कर देखें. इसके लिए, आपको किसी ऐसी मशीन से gcloud में अपनी पहचान की पुष्टि करनी होगी जिसमें वेब ब्राउज़र का ऐक्सेस हो.
गड़बड़ी: "आपका ऐप्लिकेशन, लोकल ऐप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके पुष्टि कर रहा है. earthengine.googleapis.com API के लिए, कोटा प्रोजेक्ट की ज़रूरत होती है. यह डिफ़ॉल्ट रूप से सेट नहीं होता."
यह गड़बड़ी तब हो सकती है, जब Earth Engine आपके प्रोजेक्ट आईडी का पता न लगा पाए. अगर Google Cloud में समस्या हल करने के विकल्प काम नहीं करते हैं, तो earthengine set_project YOUR_PROJECT_ID या gcloud
auth application-default set-quota-project YOUR_PROJECT_ID चलाकर देखें.
गड़बड़ी: "[Cloud Storage / BigQuery] के लिए ज़रूरी स्कोप मौजूद नहीं हैं"
यह गड़बड़ी तब होती है, जब Earth Engine का कोई अनुरोध, Cloud Storage या BigQuery के संसाधनों को ऐक्सेस करता है. हालांकि, Earth Engine को शुरू करने के लिए इस्तेमाल किए गए क्रेडेंशियल में, उस सेवा के लिए ज़रूरी स्कोप शामिल नहीं होते. इसके अलावा, cloud-platform स्कोप भी शामिल नहीं होता, जिसमें Google Cloud की सभी सेवाएं शामिल होती हैं. आम तौर पर, ऐसा तब होता है, जब आपने पुष्टि करने के दौरान scopes पैरामीटर को पसंद के मुताबिक बनाया हो. उदाहरण के लिए, ee.Authenticate(scopes=[...]) को सिर्फ़ Earth Engine के स्कोप उपलब्ध कराए हों या मौजूदा क्रेडेंशियल, उन स्कोप के बिना बनाए गए हों.
इस समस्या को हल करने के दो तरीके हैं:
- डिफ़ॉल्ट स्कोप के साथ फिर से पुष्टि करें: Earth Engine के डिफ़ॉल्ट क्रेडेंशियल में
cloud-platformस्कोप शामिल होता है. इसमें Cloud Storage और BigQuery, दोनों शामिल होते हैं. डिफ़ॉल्ट सेटिंग का इस्तेमाल करके, फिर से पुष्टि करें:- Python में:
ee.Authenticate(force=True) - कमांड लाइन पर:
earthengine authenticate --force
- Python में:
- ज़रूरी स्कोप शामिल करें: अगर आपके एनवायरमेंट में स्कोप को पसंद के मुताबिक बनाने की ज़रूरत है, तो पक्का करें कि आपकी
scopesसूची मेंhttps://www.googleapis.com/auth/cloud-platformया सेवा का कोई खास स्कोप शामिल हो. जैसे, Cloud Storage के लिएhttps://www.googleapis.com/auth/devstorage.full_controlयाhttps://www.googleapis.com/auth/devstorage.read_onlyया BigQuery के लिएhttps://www.googleapis.com/auth/bigquery.
उपलब्ध स्कोप के बारे में ज़्यादा जानकारी के लिए, स्कोप के बारे में जानकारी देखें.
तकनीकी नोट
तकनीकी तौर पर दिलचस्पी रखने वालों के लिए: क्रेडेंशियल बनाने के इन अलग-अलग तरीकों की ज़रूरत इसलिए होती है, ताकि क्रेडेंशियल को किसी जाने-पहचाने और भरोसेमंद प्लैटफ़ॉर्म पर पास किया जा सके. यहां ऊपर दिए गए अलग-अलग मामलों के बारे में खास जानकारी दी गई है.
- पहले
pasteमोड हुआ करता था, जो आपको कहीं भी चिपकाने के लिए एक टोकन देता था. हालांकि, इसे बहुत जोखिम भरा माना गया और अब यह उपलब्ध नहीं है. colab:auth.authenticate_user()आपको "Colab" के ऑथ क्लाइंट के साथ क्रेडेंशियल शेयर करने के लिए कहेगा. यह नोटबुक का एनवायरमेंट है. इसके बाद, येgoogle.auth.default()पर उपलब्ध होते हैं औरee.Initialize()इनका इस्तेमाल करते हैं.localhost: क्रेडेंशियल, ब्राउज़र से आपकी लोकल मशीन के पोर्ट पर भेजे जाते हैं. इस स्थिति में, एंड-टू-एंड सुरक्षा इस बात पर निर्भर करती है कि आपकी लोकल मशीन के साथ कोई छेड़छाड़ न की गई हो. आपको जो ऑथराइज़ेशन क्लाइंट दिखेगा वह "Earth Engine Authenticator" है.gcloud: यह gcloud रेफ़रंस में बताए गए--launch-browserफ़्लो का इस्तेमाल करता है. साथ ही, रिमोट मशीन पर होने पर--no-launch-browserका इस्तेमाल करता है. पुष्टि करने के लिए, "Google Auth Library" क्लाइंट का इस्तेमाल किया जाता है.notebook: हम खास तौर पर आपके काम के लिए, एक नया ऑथ क्लाइंट बनाते हैं. आपको सहमति वाले पेज पर अपना ईमेल पता दिखेगा. इस क्लाइंट को "डेवलपमेंट" मोड में सेट किया गया है. यह एक खास केस है, जिसमें पुराने पेस्ट मोड के टोकन इस्तेमाल किए जा सकते हैं. इसके लिए, हमें आपके प्रोजेक्ट का इस्तेमाल करना होगा. इसकी वजह यह है कि इस तरह के क्लाइंट को बड़ी संख्या में उपयोगकर्ताओं के साथ शेयर नहीं किया जा सकता.