Dienstkonten

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 ein Google Cloud-Projekt, falls Sie das noch nicht getan haben.

Sie können die Dienstkonten für Ihr Cloud-Projekt verwalten, indem Sie im Cloud Console-Menü () IAM & Verwaltung > Dienstkonten auswählen. Wählen Sie das Projekt aus, wenn Sie dazu aufgefordert werden.

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.

Dienstkonto für die Verwendung von Earth Engine konfigurieren

Alle Dienstkonten werden in einem Cloud-Projekt erstellt. Das kann dasselbe Projekt sein, das für Ihre App Engine-App oder Cloud-VM verwendet wird. Achten Sie darauf, dass das Cloud-Projekt für den Zugriff auf Earth Engine registriert ist und die Earth Engine API für das Projekt aktiviert ist. Alle Dienstkonten im Projekt mit den richtigen Berechtigungen haben Zugriff auf Earth Engine.

Mit Standardanmeldedaten für Anwendungen bei Earth Engine authentifizieren

Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) sind die empfohlene Methode zur Authentifizierung in unbeaufsichtigten Umgebungen (z. B. Cloud Run oder Compute Engine), ohne private Schlüssel manuell verwalten zu müssen.

import google.auth
import ee

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

Mit einem privaten Schlüssel authentifizieren

Wenn sich Ihre Anwendung mit dem privaten Schlüssel eines Dienstkontos authentifizieren muss (nicht für Produktionsumgebungen empfohlen, in denen ADC verwendet werden kann):

  1. Erstellen Sie einen privaten Schlüssel für das Dienstkonto:
    • Rufen Sie in der Cloud Console die Seite „Dienstkonten“ auf.
    • Klicken Sie auf das Menü für das Konto () und dann auf Schlüssel erstellen > JSON.
    • Laden Sie die JSON-Schlüsseldatei herunter.
  2. Bewahren Sie die Schlüsseldatei sicher auf. Die Schlüsseldatei ist eine spezielle Datei, mit der Programme im Namen Ihres Dienstkontos auf Google APIs zugreifen können. Bewahren Sie Ihren privaten Schlüssel niemals an einem öffentlichen Ort auf. Wenn Sie Ihren privaten Schlüssel verlieren, können Sie den Zugriff auf ein Dienstkonto widerrufen und über die Cloud Console ein neues erstellen. Weitere Informationen finden Sie unter Dienstkontoschlüssel erstellen und löschen.
  3. Testen Sie den folgenden Python-Code von dem Ort aus, an dem Sie die Datei .private-key.json gespeichert haben:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

Wenn Sie die Initialisierung ohne Fehler durchführen können, ist Ihr Dienstkonto einsatzbereit.

Standarddienstkonto in Compute Engine 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 durchführen soll, müssen Sie ihm Berechtigungen auf Projektebene erteilen, insbesondere die Rolle „Earth Engine Resource Viewer“. Je nach Projektkonfiguration müssen Sie dem Dienstkonto möglicherweise auch die Rolle „Service Usage Consumer“ zuweisen. Weitere Informationen zu den Projektberechtigungen, die für die Verwendung von Earth Engine erforderlich sind, finden Sie auf der Seite Zugriffssteuerung.

Fehlerbehebung

Fehler: invalid_grant

OAuth2 reagiert sehr empfindlich auf Zeitabweichungen. Wenn Sie sicher sind, dass Sie alles richtig eingerichtet haben, prüfen Sie, ob die Uhr Ihres Computers mit der Netzwerkzeit synchronisiert ist.

Fehler: „Provided scope(s) are not authorized“ (Bereitgestellte Bereiche sind nicht autorisiert) beim Exportieren nach Cloud Storage

Wenn dieser Fehler bei der Ausführung in einem Cloud Run-Task auftritt, legen Sie das Argument scopes beim Erstellen von Anmeldedaten (z.B. in google.auth.default(scopes=...)) nicht fest. Die Angabe von Bereichen kann die Standardberechtigungen in dieser Umgebung beeinträchtigen.