Ein Dienstkonto ist ein Konto, das mit einer Anwendung und nicht mit einem Endnutzer verknüpft ist. Wenn Sie eine App entwickeln oder die REST API verwenden, müssen Sie sich möglicherweise mit einem Dienstkonto bei Earth Engine authentifizieren. Weitere Informationen zur Authentifizierung über Dienstkonten
Dienstkonto erstellen
Erstellen Sie zuerst ein Google Cloud-Projekt, falls Sie das noch nicht getan haben.
Sie können die Dienstkonten für Ihr Cloud-Projekt verwalten, indem Sie das Cloud Console-Menü (Dienstkonten auswählen. Wählen Sie bei Aufforderung das Projekt aus.
) aufrufen und IAM & Verwaltung >Klicken Sie auf den Link + DIENSTKONTO ERSTELLEN, um ein neues Dienstkonto zu erstellen.
Wenn Sie ein App Engine-Projekt erstellt haben, haben Sie möglicherweise bereits ein Standarddienstkonto (App Engine-Standarddienstkonto) für dieses Projekt. Wenn Sie ein App Engine-Projekt einrichten, wählen Sie für die Rolle des Dienstkontos Projekt > Bearbeiter aus.
Privaten Schlüssel für das Dienstkonto erstellen
Klicken Sie auf das Dreistrich-Menü für das Dienstkonto (
) und dann auf Schlüssel erstellen > JSON. Laden Sie die JSON-Schlüsseldatei herunter.Schlüsseldatei sicher aufbewahren
Die Schlüsseldatei ist eine spezielle Datei, die es Programmen ermöglicht, im Namen Ihres Dienstkontos auf Google APIs zuzugreifen. Achten Sie darauf, dass niemand unbefugt darauf zugreifen kann, da er sonst in Ihrem Namen auf Google APIs zugreifen könnte. Speichern Sie Ihren privaten Schlüssel niemals an einem öffentlichen Ort, z. B. in einem freigegebenen Ordner oder einem Quell-Repository. Wenn Sie Ihren privaten Schlüssel verlegen, können Sie den Zugriff auf ein Dienstkonto ganz einfach widerrufen und über die Cloud Console ein neues erstellen. Weitere Informationen finden Sie in diesem Leitfaden.
Dienstkonto für die Verwendung von Earth Engine registrieren
Alle Dienstkonten werden in einem Cloud-Projekt erstellt. Das kann dasselbe Projekt sein, das Sie für Ihre App Engine-Anwendung oder Cloud-VM verwendet haben. Das Cloud-Projekt muss für den Zugriff auf die Earth Engine registriert sein und die Earth Engine API muss für das Projekt aktiviert sein. Alle Dienstkonten im Projekt mit den richtigen Berechtigungen haben Zugriff auf Earth Engine und müssen nicht separat registriert werden.
Die Registrierung einzelner Dienstkonten ist nicht mehr möglich. Das Cloud-Projekt selbst muss registriert werden.
Dienstkonto mit einem privaten Schlüssel verwenden
So authentifizieren Sie sich mit einem Dienstkonto bei Earth Engine:
- Erstellen Sie eine JSON-Datei mit dem privaten Schlüssel (
.private-key.json
) für das Dienstkonto und laden Sie sie herunter. - Testen Sie den folgenden Python-Code an dem Speicherort, an dem Sie die Datei
.private-key.json
abgelegt haben:import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
Wenn die Initialisierung ohne Fehler abgeschlossen werden kann, ist Ihr Dienstkonto einsatzbereit.
Was kann ich tun, wenn ich die Fehlermeldung „invalid_grant“ erhalte?
OAuth2 kann sehr empfindlich auf Zeitabweichungen reagieren. Wenn Sie sicher sind, dass Sie alles richtig eingerichtet haben, und Ihr Google-Kontakt bestätigt hat, dass das Dienstkonto genehmigt wurde, prüfen Sie, ob die Uhr Ihres Computers mit der Netzwerkzeit synchronisiert ist.
Unter Ubuntu-Systemen lautet der Befehl zum Synchronisieren der Uhr des Computers:
ntpdate ntp.ubuntu.com
Öffnen Sie auf Systemen mit OS X die Systemeinstellungen > Datum und Uhrzeit > Datum und Uhrzeit und wählen Sie Datum und Uhrzeit automatisch einstellen aus.
Standarddienstkonto verwenden
Wenn Sie ein Standarddienstkonto verwenden, müssen Sie zuerst die Zugriffsbereiche der VM für das Compute Engine-Dienstkonto in „Uneingeschränkten Zugriff auf alle Cloud APIs zulassen“ ändern. Wenn Sie Standarddienstkonten in Dataflow oder App Engine verwenden, ist dieser Schritt nicht erforderlich.Verwenden Sie den folgenden Code, um sich mit einem Standarddienstkonto bei Earth Engine zu authentifizieren:
from google.auth import compute_engine import ee credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine']) ee.Initialize(credentials)
REST API-Zugriff einrichten
Wenn das Dienstkonto Berechnungen mit der REST API ausführen soll, müssen Sie ihm eine Berechtigung auf Projektebene erteilen, insbesondere die Rolle Earth Engine Resource Viewer. Je nach Projektkonfiguration müssen Sie dem Dienstkonto möglicherweise auch die Rolle Nutzer der Dienstnutzung zuweisen. Weitere Informationen zu den Projektberechtigungen, die für die Verwendung von Earth Engine erforderlich sind, finden Sie auf der Seite Zugriffssteuerung.