حساب الخدمة هو حساب مرتبط بتطبيق بدلاً من مستخدم نهائي. قد تحتاج إلى استخدام حساب خدمة للمصادقة على Earth Engine إذا كنت بصدد تطوير تطبيق أو استخدام واجهة REST API. مزيد من المعلومات حول المصادقة باستخدام حسابات الخدمة
إنشاء حساب خدمة
أولاً، أنشئ مشروعًا على Google Cloud إذا لم يسبق لك إنشاء مشروع.
يمكنك إدارة حسابات الخدمة لمشروعك على السحابة الإلكترونية من خلال الانتقال إلى قائمة Cloud Console () واختيار إدارة الهوية وإمكانية الوصول (IAM) والمشرف > حسابات الخدمة. (اختَر المشروع إذا طُلب منك ذلك).
لإنشاء حساب خدمة جديد، انقر على الرابط + إنشاء حساب خدمة.
إذا أنشأت مشروعًا على App Engine، قد يكون لديك حساب خدمة تلقائي (حساب خدمة App Engine التلقائي) لهذا المشروع. إذا كنت بصدد إعداد مشروع App Engine، اختَر مشروع > محرِّر في الدور الخاص بحساب الخدمة.
ضبط حساب الخدمة لاستخدام Earth Engine
يتم إنشاء جميع حسابات الخدمة ضمن مشروع على السحابة الإلكترونية، وقد يكون هذا المشروع هو نفسه المستخدَم لتطبيق App Engine أو Cloud VM. تأكَّد من تسجيل مشروع على السحابة الإلكترونية للوصول إلى Earth Engine، ومن تفعيل Earth Engine API في المشروع. ستتمكّن جميع حسابات الخدمة في المشروع التي لديها الأذونات الصحيحة من الوصول إلى Earth Engine.
المصادقة على Earth Engine باستخدام بيانات الاعتماد التلقائية للتطبيق
إنّ "بيانات الاعتماد التلقائية للتطبيق" (ADC) هي الطريقة المقترَحة للمصادقة في البيئات غير الخاضعة للإشراف (مثل Cloud Run أو Compute Engine) بدون إدارة المفاتيح الخاصة يدويًا.
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-ee-project')
المصادقة باستخدام مفتاح خاص
إذا كان تطبيقك بحاجة إلى المصادقة باستخدام مفتاح خاص لحساب خدمة (لا يُنصح بذلك في بيئات الإنتاج التي يمكن فيها استخدام ADC):
-
أنشئ مفتاحًا خاصًا لحساب الخدمة:
- انتقِل إلى صفحة "حسابات الخدمة" في Cloud Console.
- انقر على قائمة الحساب ()، ثم على إنشاء مفتاح > JSON.
- نزِّل ملف مفتاح JSON.
- الحفاظ على أمان ملف المفتاح ملف المفتاح هو ملف خاص يتيح للبرامج الوصول إلى Google APIs نيابةً عن حساب الخدمة. يجب عدم تخزين مفتاحك الخاص في مكان عام. في حال فقدان مفتاحك الخاص، يمكنك إبطال إذن الوصول إلى حساب خدمة وإنشاء حساب جديد باستخدام Cloud Console. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة إنشاء مفاتيح حساب الخدمة وحذفها.
-
اختبِر رمز Python التالي من أي مكان وضعت فيه ملف
.private-key.json: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 APIs". (إذا كنت تستخدم حسابات الخدمة التلقائية في 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
إذا كان حساب الخدمة سيجري عمليات حسابية باستخدام واجهة REST API، عليك منحه إذنًا على مستوى المشروع، وتحديدًا دور "مشاهد موارد Earth Engine". استنادًا إلى إعدادات مشروعك، قد تحتاج أيضًا إلى منح حساب الخدمة دور مستخدم Service Usage. راجِع صفحة التحكّم في الوصول للحصول على مزيد من المعلومات حول أذونات المشروع المطلوبة لاستخدام Earth Engine.
تحديد المشاكل وحلّها
الخطأ: invalid_grant
يمكن أن يكون بروتوكول OAuth2 حساسًا جدًا لانحراف الوقت. إذا كنت متأكدًا من إعداد كل شيء بشكل صحيح، تحقّق مما إذا كانت ساعة الكمبيوتر تتم مزامنتها مع وقت الشبكة.
الخطأ: "النطاقات المقدَّمة غير مسموح بها" عند التصدير إلى Cloud Storage
إذا ظهر لك هذا الخطأ عند التشغيل في مهمة Cloud Run، لا تضبط الوسيطة
scopes عند إنشاء بيانات الاعتماد (على سبيل المثال، في
google.auth.default(scopes=...)). يمكن أن يؤدي تحديد النطاقات إلى تعارض مع الأذونات التلقائية في هذه البيئة.