क्लाइंट लाइब्रेरी के ज़रिए Earth Engine से अनुरोध करने से पहले, आपको पुष्टि करनी होगी. साथ ही, Earth Engine क्लाइंट को शुरू करने के लिए, पुष्टि के बाद मिले क्रेडेंशियल का इस्तेमाल करना होगा.
Earth Engine Code Editor और JavaScript
Code Editor में, पुष्टि करने और शुरू करने की प्रोसेस अपने-आप मैनेज होती है. आपके पास, कोड एडिटर में सबसे ऊपर दाईं ओर मौजूद लॉगिन से, अनुरोधों को किसी Cloud प्रोजेक्ट के ज़रिए रूट करने का विकल्प होता है.
अगर कोड एडिटर के बाहर JavaScript API का इस्तेमाल किया जा रहा है, तो ee.data में दिए गए किसी एक पुष्टि करने वाले हेल्पर का इस्तेमाल करें. उदाहरण के लिए, ee.data.authenticateViaPopup(). इसके बाद, ee.initialize() का इस्तेमाल करें. जैसा कि इस उदाहरण में दिखाया गया है.
Python और कमांड लाइन
Earth Engine Python क्लाइंट लाइब्रेरी का इस्तेमाल करने से पहले, आपको पुष्टि करनी होगी. इसके बाद, मिले हुए क्रेडेंशियल का इस्तेमाल करके, Python क्लाइंट को शुरू करना होगा. पुष्टि करने के लिए, पुष्टि करने के फ़्लो Cloud Projects का इस्तेमाल करते हैं. इनका इस्तेमाल, बिना शुल्क (मुफ़्त, गैर-व्यावसायिक) और शुल्क लेकर किया जाता है. पुष्टि करने और शुरू करने के लिए, यह कमांड चलाएं
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 VM, 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 notebook में कोड चलाया जा रहा है. ज़्यादा सटीक तरीके से कहें, तो उसी मशीन पर कोड चलाया जा रहा है जिस पर आपका वेब ब्राउज़र चल रहा है. इसमें रिमोट डेस्कटॉप की ऐसी स्थितियां शामिल हैं जहां 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कमांड से यह मैसेज दिखेगा: "Successfully saved authorization token." - कुछ मामलों में, वेब पेज आपको एक कोड देगा. इसे Python एनवायरमेंट में वापस चिपकाएं.
- ब्राउज़र में एक पेज दिखेगा. इसमें पुष्टि की जाएगी कि आपकी पहचान की पुष्टि हो गई है. साथ ही, आपकी टर्मिनल विंडो में
- शुरू करने की प्रोसेस जारी रखें.
auth_mode=localhost. यह gcloud जैसा फ़्लो है. इसका इस्तेमाल उन मामलों में किया जाता है जहां gcloud इंस्टॉल नहीं है. यह gcloud की तरह ही काम करता है, लेकिन सिर्फ़ लोकल केस के लिए काम करता है. इंटरनेट पोर्ट नंबर देना ज़रूरी नहीं है. उदाहरण के लिए, localhost:8086 या पोर्ट को अपने-आप चुनने के लिए localhost:0 का इस्तेमाल करें. डिफ़ॉल्ट पोर्ट 8085 होता है.
auth_mode=notebook. यह एक सामान्य मोड है. इसे ऐसी स्थितियों में काम करने के लिए डिज़ाइन किया गया है जहां स्थानीय कमांड लाइनें उपलब्ध नहीं हैं. यह आपको Notebook Authenticator पेज पर ले जाता है. यहां आपको "authentication project" चुनना या बनाना होगा. इसके बारे में ज़्यादा जानकारी और समस्या हल करने से जुड़ी गाइड यहां दी गई है. ee.Initialize() को पास किया गया प्रोजेक्ट, इससे मेल खाना ज़रूरी नहीं है. अलग-अलग नोटबुक में अलग-अलग प्रोजेक्ट पर काम करते समय, पुष्टि के लिए एक ही प्रोजेक्ट का इस्तेमाल किया जा सकता है. हमारा सुझाव है कि ee.Initialize() को साफ़ तौर पर कोई प्रोजेक्ट पास करें. हालांकि, पुष्टि करने वाले प्रोजेक्ट का इस्तेमाल डिफ़ॉल्ट रूप से किया जाएगा.
नोटबुक मोड के लिए सिलसिलेवार निर्देश
- ब्राउज़र: Notebook
- "नोटबुक" मोड का इस्तेमाल करके पुष्टि करने की प्रोसेस शुरू करने के लिए, नोटबुक कोड सेल में यह कोड चलाएं.
सेल के आउटपुट में मौजूद लिंक पर क्लिक करके, Notebook Authenticator पेज को नए टैब में खोलें.import ee ee.Authenticate()
- "नोटबुक" मोड का इस्तेमाल करके पुष्टि करने की प्रोसेस शुरू करने के लिए, नोटबुक कोड सेल में यह कोड चलाएं.
- ब्राउज़र: Notebook Authenticator
- पुष्टि करें कि उपयोगकर्ता का सही खाता दिख रहा हो.
- पुष्टि करने के लिए, कोई Google Cloud प्रोजेक्ट चुनें. अगर आपको नया प्रोजेक्ट बनाना है, तो हमारा सुझाव है कि आप "ee-xyz" नाम रखने के नियम का पालन करें. इसमें xyz, Earth Engine का आपका सामान्य उपयोगकर्ता नाम है. (अगर Cloud प्रोजेक्ट नहीं चुना जा सकता या बनाया नहीं जा सकता, तो यहां दिया गया समस्या हल करने वाला सेक्शन देखें.)
- 'टोकन जनरेट करें' पर क्लिक करें.
- ब्राउज़र: खाता चुनना
- आपको खाता चुनने का पेज दिखेगा. उस उपयोगकर्ता खाते पर क्लिक करें जिसे आपको नोटबुक से ऐक्सेस देना है.
- ब्राउज़र: चेतावनी वाला पेज
- एक चेतावनी पेज दिखता है. इससे पता चलता है कि Google ने ऐप्लिकेशन (यानी कि नोटबुक में मौजूद कोड) नहीं बनाया है. पुष्टि करने के लिए, जारी रखें पर क्लिक करें.
- ब्राउज़र: सहमति लेने के लिए दिखाई जाने वाली स्क्रीन
- बताएं कि क्या आपको अनुरोध किए गए स्कोप का ऐक्सेस देना है. इसके बाद, जारी रखें पर क्लिक करें.
- ब्राउज़र: ऑथराइज़ेशन कोड स्क्रीन
- ऑथराइज़ेशन पुष्टि करने के लिए कोड कॉपी करें
- ब्राउज़र: Notebook
- नोटबुक टैब पर वापस जाएं और पुष्टि करने वाले कोड को नोटबुक सेल आउटपुट में चिपकाएं.
- सेल के आउटपुट में यह दिखना चाहिए: "Successfully saved authorization token."
- शुरू करने की प्रोसेस जारी रखें.
नोटबुक मोड में, 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 GeoTIFF लोड करना या टास्क के आउटपुट एक्सपोर्ट करना):
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 Code Editor और क्लाइंट लाइब्रेरी (जैसे, ee.Authenticate()) के ज़रिए कॉन्फ़िगर किए गए डिफ़ॉल्ट स्कोप में ये सभी स्कोप शामिल होते हैं: earthengine, cloud-platform, और drive. ज़्यादा जानकारी के लिए, ऊपर दिया गया सेक्शन देखें.
इसलिए, स्कोप को पसंद के मुताबिक बनाने की सुविधा (उदाहरण के लिए, ee.Authenticate(scopes=[...]) में scopes पैरामीटर का इस्तेमाल करना) सिर्फ़ तब ज़रूरी होती है, जब सुरक्षा से जुड़ी कुछ खास पाबंदियां या संगठन की ऐसी नीतियां हों जिनके लिए अनुमतियों को सीमित करना ज़रूरी हो.
समस्या का हल
अगर मुझे Cloud Project बनाने में समस्या आ रही है, तो क्या होगा?
कुछ संगठन यह कंट्रोल करते हैं कि कौन Cloud प्रोजेक्ट बना सकता है. अगर आपको प्रोजेक्ट बनाते समय, Notebook Authenticator पेज पर कोई गड़बड़ी दिखती है, तो ये काम करके देखें:
- प्रोजेक्ट बनाएं और देखें कि आपके पास ज़रूरी अनुमतियां हैं या नहीं.
- अपने संगठन के एडमिन से बात करके जानें कि प्रोजेक्ट बनाने के लिए कौनसी प्रोसेस उपलब्ध हैं.
- किसी ऐसे खाते से प्रोजेक्ट बनाएं जो संगठन से जुड़ा न हो. इसके बाद, उस खाते को प्रोजेक्ट का मालिक बनाएं जिसका इस्तेमाल ऑफ़िस के काम के लिए किया जाता है. ध्यान दें: कुछ संगठनों की सुरक्षा नीतियां ऐसी होती हैं जो बाहरी प्रोजेक्ट से OAuth क्लाइंट को ऐक्सेस करने से रोकती हैं.
गड़बड़ी: "Earth Engine API को प्रोजेक्ट XXX में पहले कभी इस्तेमाल नहीं किया गया है या यह बंद है"
सबसे पहले, पक्का करें कि आपने ee.Initialize() या कमांड लाइन पर कोई प्रोजेक्ट कॉन्फ़िगर किया हो. Cloud और Colab की ओर से उपलब्ध कराए गए डिफ़ॉल्ट प्रोजेक्ट में, Earth Engine चालू नहीं होगा. दूसरा, पक्का करें कि आपके प्रोजेक्ट में Earth Engine API
चालू हो.
गड़बड़ी: "प्रोजेक्ट में OAuth2 क्लाइंट का कॉन्फ़िगरेशन काम नहीं करता"
क्लाउड प्रोजेक्ट में सिर्फ़ एक OAuth2 क्लाइंट कॉन्फ़िगरेशन हो सकता है. यह देखा जा सकता है कि किसी क्लाउड प्रोजेक्ट में OAuth2 क्लाइंट कॉन्फ़िगरेशन सेट है या नहीं. इसके लिए, क्रेडेंशियल पेज पर OAuth 2.0 क्लाइंट आईडी देखें. आपको ऐसा 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: हम आपके काम के लिए, खास तौर पर एक नया ऑथ क्लाइंट बनाते हैं. आपको सहमति वाले पेज पर अपना ईमेल पता दिखेगा. इस क्लाइंट को "development" मोड में सेट किया गया है. यह एक खास मामला है, जिसमें पुराने पेस्ट मोड वाले टोकन इस्तेमाल किए जा सकते हैं. इसके लिए, हमें आपके प्रोजेक्ट का इस्तेमाल करना होगा. ऐसा इसलिए, क्योंकि इस तरह के क्लाइंट को ज़्यादा उपयोगकर्ताओं के साथ शेयर नहीं किया जा सकता.