सेवा खाते

एक सेवा खाता, असली उपयोगकर्ता के बजाय किसी ऐप्लिकेशन से जुड़ा खाता होता है. अगर कोई ऐप्लिकेशन डेवलप किया जा रहा है या REST API का इस्तेमाल किया जा रहा है, तो Earth Engine में पुष्टि करने के लिए, सेवा खाते का इस्तेमाल करना पड़ सकता है. सेवा खातों की मदद से पुष्टि करने के बारे में ज़्यादा जानें.

सेवा खाता बनाना

अगर आपने पहले से कोई Google Cloud प्रोजेक्ट नहीं बनाया है, तो सबसे पहले उसे बनाएं.

Cloud Console के मेन्यू () पर जाकर और IAM & Admin > सेवा खाते को चुनकर, अपने Cloud प्रोजेक्ट के सेवा खातों को मैनेज किया जा सकता है. (अगर आपसे प्रोजेक्ट चुनने के लिए कहा जाता है, तो प्रोजेक्ट चुनें.)

नया सेवा खाता बनाने के लिए, + सेवा खाता बनाएं लिंक पर क्लिक करें.

अगर आपने App Engine प्रोजेक्ट बनाया है, तो हो सकता है कि आपके पास उस प्रोजेक्ट के लिए पहले से ही कोई डिफ़ॉल्ट सेवा खाता (App Engine का डिफ़ॉल्ट सेवा खाता) हो. अगर App Engine प्रोजेक्ट सेट अप किया जा रहा है, तो सेवा खाते के लिए रोल में, प्रोजेक्ट > एडिटर को चुनें.

Earth Engine का इस्तेमाल करने के लिए, सेवा खाते को कॉन्फ़िगर करना

सभी सेवा खाते, Cloud प्रोजेक्ट में बनाए जाते हैं. यह वही प्रोजेक्ट हो सकता है जिसका इस्तेमाल आपके App Engine ऐप्लिकेशन या Cloud VM के लिए किया जाता है. पक्का करें कि Earth Engine को ऐक्सेस करने के लिए, क्लाउड प्रोजेक्ट रजिस्टर किया गया हो और प्रोजेक्ट में Earth Engine API चालू हो. प्रोजेक्ट में मौजूद सभी सेवा खातों के पास, सही अनुमतियां होने पर Earth Engine का ऐक्सेस होगा.

ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके, Earth Engine में पुष्टि करना

बिना निगरानी वाले एनवायरमेंट (जैसे, Cloud Run या Compute Engine) में, मैन्युअल तरीके से निजी कुंजियों को मैनेज किए बिना पुष्टि करने के लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (एडीसी) का इस्तेमाल करने का सुझाव दिया जाता है. अपनी Cloud प्रोजेक्ट आईडी डालकर, लाइब्रेरी को शुरू करें. इसके लिए, my-project की जगह अपनी प्रोजेक्ट आईडी डालें:

import google.auth
import ee

credentials, project_id = google.auth.default()
ee.Initialize(credentials, project='my-project')

निजी कुंजी की मदद से पुष्टि करना

अगर आपके ऐप्लिकेशन को सेवा खाते की निजी कुंजी का इस्तेमाल करके पुष्टि करनी है (प्रोडक्शन एनवायरमेंट के लिए यह तरीका सही नहीं है, क्योंकि यहां एडीसी का इस्तेमाल किया जा सकता है):

  1. सेवा खाते के लिए निजी कुंजी बनाएं:
  2. अपनी कुंजी की फ़ाइल को सुरक्षित रखें. कुंजी की फ़ाइल एक खास फ़ाइल होती है. इसकी मदद से, प्रोग्राम आपके सेवा खाते की ओर से Google API को ऐक्सेस कर सकते हैं. अपनी निजी कुंजी को कभी भी सार्वजनिक जगह पर सेव न करें. अगर आपकी निजी कुंजी खो जाती है, तो Cloud Console का इस्तेमाल करके, सेवा खाते का ऐक्सेस रद्द किया जा सकता है और नई कुंजी बनाई जा सकती है. ज़्यादा जानकारी के लिए, सेवा खाते की कुंजियां बनाना और मिटाना लेख पढ़ें.
  3. जहां भी आपने .private-key.json फ़ाइल रखी है, वहां से Python के इस कोड को आज़माएं. इसके लिए, my-project की जगह अपना Google Cloud प्रोजेक्ट आईडी डालें:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials, project='my-project')

अगर बिना किसी गड़बड़ी के लाइब्रेरी शुरू हो जाती है, तो आपका सेवा खाता इस्तेमाल के लिए तैयार है.

Compute Engine पर डिफ़ॉल्ट सेवा खाते का इस्तेमाल करना

अगर डिफ़ॉल्ट सेवा खाते का इस्तेमाल किया जा रहा है , तो आपको सबसे पहले Compute Engine के सेवा खाते के लिए, VM के ऐक्सेस स्कोप में बदलाव करना होगा. इसके लिए, "सभी Cloud API का पूरा ऐक्सेस दें" विकल्प चुनें . (अगर Dataflow या App Engine में डिफ़ॉल्ट सेवा खातों का इस्तेमाल किया जा रहा है, तो यह चरण ज़रूरी नहीं है.)

डिफ़ॉल्ट सेवा खाते का इस्तेमाल करके, Earth Engine में पुष्टि करने के लिए, यह कोड इस्तेमाल करें (my-project की जगह अपना Google Cloud प्रोजेक्ट आईडी डालें):

from google.auth import compute_engine
import ee
credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine'])
ee.Initialize(credentials, project='my-project')

REST API का ऐक्सेस सेट अप करना

अगर सेवा खाते को REST API का इस्तेमाल करके कंप्यूटेशन करने हैं, तो आपको उसे प्रोजेक्ट-लेवल की अनुमति देनी होगी. खास तौर पर, उसे Earth Engine के संसाधन देखने वाले की भूमिका असाइन करनी होगी. प्रोजेक्ट के कॉन्फ़िगरेशन के आधार पर, आपको सेवा खाते को सेवा उपयोग करने वाले की भूमिका भी असाइन करनी पड़ सकती है. Earth Engine का इस्तेमाल करने के लिए ज़रूरी प्रोजेक्ट की अनुमतियों के बारे में ज़्यादा जानने के लिए, ऐक्सेस कंट्रोल पेज देखें.

समस्या का हल

गड़बड़ी: invalid_grant

OAuth2, घड़ी के समय में होने वाले मामूली अंतर के प्रति भी काफ़ी संवेदनशील हो सकता है. अगर आपको पक्का है कि आपने सब कुछ सही तरीके से सेट अप किया है तो देखें कि आपके कंप्यूटर की घड़ी, नेटवर्क के समय के साथ सिंक है या नहीं.

Cloud Storage में एक्सपोर्ट करते समय, "दी गई अनुमतियां मान्य नहीं हैं" गड़बड़ी का मैसेज दिखना

अगर Cloud Run टास्क में काम करते समय यह गड़बड़ी दिखती है, तो क्रेडेंशियल बनाते समय scopes आर्ग्युमेंट सेट न करें. जैसे, google.auth.default(scopes=...) में. स्कोप की जानकारी देने से, इस एनवायरमेंट में डिफ़ॉल्ट अनुमतियों में रुकावट आ सकती है.