חשבון שירות הוא חשבון שמשויך לאפליקציה ולא למשתמש קצה. אם אתם מפתחים אפליקציה או משתמשים ב-API ל-REST, יכול להיות שתצטרכו להשתמש בחשבון שירות כדי לבצע אימות ב-Earth Engine. מידע נוסף על אימות באמצעות חשבונות שירות
יצירה של חשבון שירות
קודם כול, יוצרים פרויקט ב-Google Cloud, אם עדיין לא עשיתם זאת.
כדי לנהל את חשבונות השירות בפרויקט ב-Cloud, נכנסים לתפריט של מסוף Cloud (Service accounts. (בוחרים את הפרויקט אם מתבקשים).
) ובוחרים באפשרות IAM & Admin >כדי ליצור חשבון שירות חדש, לוחצים על הקישור + CREATE SERVICE ACCOUNT.
אם יצרתם פרויקט ב-App Engine, יכול להיות שכבר יש לכם חשבון שירות שמוגדר כברירת מחדל (חשבון השירות שמוגדר כברירת מחדל ב-App Engine) לפרויקט הזה. אם מגדירים פרויקט ב-App Engine, בוחרים באפשרות Project > Editor בתפריט Role של חשבון השירות.
יצירת מפתח פרטי לחשבון השירות
אחרי שיוצרים חשבון שירות, לוחצים על התפריט של החשבון הזה (
) ואז על Create key (יצירת מפתח) > JSON. מורידים את קובץ המפתח בפורמט JSON.שמירה על קובץ המפתח
קובץ המפתח הוא קובץ מיוחד שמאפשר לתוכניות לגשת ל-Google APIs בשם חשבון השירות שלכם. חשוב לוודא שאף אחד לא יכול לקבל גישה לא מורשית אליו, כי הוא יוכל לגשת לממשקי Google API בשמכם. אף פעם אל תשמרו את המפתח הפרטי במקום ציבורי, כמו תיקייה משותפת או מאגר מקורות. אם המפתח הפרטי שלכם אבד, תוכלו לבטל בקלות את הגישה לחשבון השירות וליצור חשבון חדש באמצעות מסוף Cloud. פרטים נוספים זמינים במדריך הזה.
רישום חשבון השירות לשימוש ב-Earth Engine
כל חשבונות השירות נוצרים בפרויקט ב-Cloud, שיכול להיות אותו פרויקט שבו נעשה שימוש לאפליקציה שלכם ב-App Engine או למכונה הווירטואלית ב-Cloud. מוודאים שהפרויקט ב-Cloud רשום כדי לגשת ל-Earth Engine, ושה-Earth Engine API מופעל בפרויקט. לכל חשבונות השירות בפרויקט עם ההרשאות הנכונות תהיה גישה ל-Earth Engine, ולא צריך לרשום אותם בנפרד.
חשוב לדעת: אי אפשר יותר לרשום חשבונות שירות ספציפיים, אלא רק את הפרויקט ב-Cloud עצמו.
שימוש בחשבון שירות עם מפתח פרטי
כדי לבצע אימות ב-Earth Engine באמצעות חשבון שירות:
- יוצרים ומורידים קובץ מפתח פרטי בפורמט JSON (
.private-key.json
) לחשבון השירות. - בודקים את קוד Python הבא מכל מקום שבו שמרתם את הקובץ
.private-key.json
:import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
אם השירות הופעל ללא שגיאות, חשבון השירות מוכן לשימוש.
מה עושים אם מופיעה הודעת השגיאה invalid_grant?
OAuth2 יכול להיות רגיש מאוד לסטייה בשעון. אם אתם בטוחים שהגדרתם את כל הפרטים בצורה נכונה ואיש הקשר שלכם ב-Google אישר שחשבון השירות אושר, כדאי לבדוק אם השעון במחשב מסונכרן עם שעון הרשת.
במערכות Ubuntu, הקריאה לסנכרון של שעון המחשב היא:
ntpdate ntp.ubuntu.com
במערכות עם OS X, פותחים את העדפות המערכת > תאריך ושעה > תאריך ושעה (שוב) ובוחרים באפשרות הגדרת התאריך והשעה באופן אוטומטי.
שימוש בחשבון שירות שמוגדר כברירת מחדל
אם אתם משתמשים בחשבון שירות שמוגדר כברירת מחדל, תחילה עליכם לשנות את היקפי הגישה של המכונה הווירטואלית לחשבון השירות של 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)
הגדרת גישה ל-API ל-REST
אם חשבון השירות אמור לבצע חישובים באמצעות ה-API ל-REST, צריך לתת לו הרשאה ברמת הפרויקט, ובמיוחד את התפקיד צפייה במשאבי Earth Engine. בהתאם להגדרות הפרויקט, יכול להיות שתצטרכו גם להקצות לחשבון השירות את התפקיד צרכן של שימוש בשירות. מידע נוסף על הרשאות הפרויקט הנדרשות לשימוש ב-Earth Engine זמין בדף בקרת גישה.