सेवा खाते

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

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

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

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

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

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

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

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

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

Application Default Credentials (एडीसी), बिना निगरानी वाले एनवायरमेंट (जैसे, Cloud Run या Compute Engine) में पुष्टि करने का सबसे सही तरीका है. इससे निजी कुंजियों को मैन्युअल तरीके से मैनेज करने की ज़रूरत नहीं पड़ती.

import google.auth
import ee

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

निजी पासकोड का इस्तेमाल करके पुष्टि करना

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

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

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

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

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

डिफ़ॉल्ट सेवा खाते का इस्तेमाल करके, Earth Engine में पुष्टि करने के लिए, इस कोड का इस्तेमाल करें:

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

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

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

समस्या का हल

गड़बड़ी: invalid_grant

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

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

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