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.

Authentifizierung bei Earth Engine mit Standardanmeldedaten für Anwendungen

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. Initialisieren Sie die Bibliothek, indem Sie Ihre Cloud-Projekt-ID übergeben (ersetzen Sie my-project durch Ihre Projekt-ID):

import google.auth
import ee

credentials, project_id = google.auth.default()
ee.Initialize(credentials, project='my-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 abgelegt haben. Ersetzen Sie my-project durch Ihre Google Cloud-Projekt-ID:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials, project='my-project')

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.

Wenn Sie sich mit einem Standarddienstkonto bei Earth Engine authentifizieren möchten, verwenden Sie den folgenden Code (ersetzen Sie my-project durch Ihre Google Cloud-Projekt-ID):

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

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“ 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.