Konta usługi

Konto usługi jest powiązane z aplikacją, a nie z użytkownikiem. Jeśli tworzysz aplikację lub używasz interfejsu REST API, może być konieczne uwierzytelnienie w Earth Engine za pomocą konta usługi. Więcej informacji o uwierzytelnianiu za pomocą kont usługi

Tworzenie konta usługi

Najpierw utwórz projekt Google Cloud (jeśli jeszcze go nie masz).

Kontami usługi w projekcie w chmurze możesz zarządzać, otwierając menu konsoli Cloud () i wybierając Uprawnienia i administracja > Konta usługi. (W razie potrzeby wybierz projekt).

Aby utworzyć nowe konto usługi, kliknij link + UTWÓRZ KONTO USŁUGI.

Jeśli masz projekt App Engine, możesz mieć już domyślne konto usługi (Domyślne konto usługi App Engine) dla tego projektu. Jeśli konfigurujesz projekt App Engine, w przypadku konta usługi Roli, wybierz Projekt > Edytor.

Konfigurowanie konta usługi do korzystania z Earth Engine

Wszystkie konta usługi są tworzone w projekcie w chmurze, który może być tym samym projektem, którego używasz w aplikacji App Engine lub maszynie wirtualnej Cloud. Sprawdź, czy projekt Cloud jest zarejestrowany na potrzeby dostępu do Earth Engine i czy w projekcie jest włączony interfejs Earth Engine API. Wszystkie konta usługi w projekcie z odpowiednimi uprawnieniami będą miały dostęp do Earth Engine.

Uwierzytelnianie w Earth Engine za pomocą domyślnego uwierzytelniania aplikacji

Domyślne uwierzytelnianie aplikacji (ADC) to zalecany sposób uwierzytelniania w środowiskach nienadzorowanych (takich jak Cloud Run czy Compute Engine) bez ręcznego zarządzania kluczami prywatnymi. Zainicjuj bibliotekę, przekazując identyfikator projektu w chmurze (zastąp my-project identyfikatorem projektu):

import google.auth
import ee

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

Uwierzytelnianie za pomocą klucza prywatnego

Jeśli aplikacja musi uwierzytelniać się za pomocą klucza prywatnego konta usługi (niezalecane w środowiskach produkcyjnych, w których można używać ADC):

  1. Utwórz klucz prywatny konta usługi:
    • W konsoli Cloud otwórz stronę Konta usługi.
    • Kliknij menu konta (), a następnie Utwórz klucz > JSON.
    • Pobierz plik klucza JSON.
  2. Chroń plik klucza. Plik klucza to specjalny plik, który umożliwia programom dostęp do interfejsów API Google w imieniu konta usługi. Nigdy nie przechowuj klucza prywatnego w miejscu publicznym. Jeśli zgubisz klucz prywatny, możesz cofnąć dostęp do konta usługi i utworzyć nowe konto za pomocą konsoli Cloud. Szczegółowe informacje znajdziesz w artykule Tworzenie i usuwanie kluczy kont usługi.
  3. Przetestuj ten kod w Pythonie w miejscu, w którym umieścisz plik .private-key.json (zastąp my-project identyfikatorem projektu Google Cloud):
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials, project='my-project')

Jeśli inicjowanie przebiegnie bez błędów, konto usługi będzie gotowe do użycia.

Używanie domyślnego konta usługi w Compute Engine

Jeśli używasz domyślnego konta usługi, musisz najpierw zmodyfikować zakresy dostępu maszyny wirtualnej dla konta usługi Compute Engine, aby "zezwolić na pełny dostęp do wszystkich interfejsów Cloud API". (Jeśli używasz domyślnych kont usługi w Dataflow lub App Engine, ten krok nie jest konieczny).

Aby uwierzytelnić się w Earth Engine za pomocą domyślnego konta usługi, użyj tego kodu (zastąp my-project identyfikatorem projektu Google Cloud):

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')

Konfigurowanie dostępu do interfejsu REST API

Jeśli konto usługi ma wykonywać obliczenia za pomocą interfejsu REST API, musisz przyznać mu uprawnienia na poziomie projektu, a konkretnie rolę przeglądającego zasoby Earth Engine. W zależności od konfiguracji projektu może być też konieczne przyznanie kontu usługi roli konsumenta Wykorzystania usług . Więcej informacji o uprawnieniach w projektach wymaganych do korzystania z Earth Engine znajdziesz na stronie Kontrola dostępu.

Rozwiązywanie problemów

Błąd: invalid_grant

OAuth2 może być bardzo wrażliwy na różnice w czasie. Jeśli masz pewność, że wszystko zostało skonfigurowane prawidłowo, sprawdź, czy zegar komputera jest zsynchronizowany z czasem sieciowym.

Błąd: „Podane zakresy nie są autoryzowane” podczas eksportowania do Cloud Storage

Jeśli ten błąd występuje podczas uruchamiania zadania Cloud Run, nie ustawiaj argumentu scopes podczas tworzenia danych logowania (np. w google.auth.default(scopes=...)). Określenie zakresów może zakłócić domyślne uprawnienia w tym środowisku.