Konta usługi

Konto usługi to konto powiązane z aplikacją, a nie z użytkownikiem. Jeśli tworzysz aplikację lub używasz interfejsu REST API, do uwierzytelniania w Earth Engine może być konieczne użycie 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. (Wybierz projekt, jeśli pojawi się odpowiedni monit).

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). Jeśli konfigurujesz projekt App Engine, w przypadku Roli konta usługi wybierz Projekt > Edytujący.

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 przypadku aplikacji App Engine lub maszyny wirtualnej w chmurze. Sprawdź, czy projekt w chmurze jest zarejestrowany na potrzeby dostępu do Earth Engine i czy interfejs Earth Engine API jest włączony w projekcie. 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 bez nadzoru (takich jak Cloud Run czy Compute Engine) bez ręcznego zarządzania kluczami prywatnymi.

import google.auth
import ee

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

Uwierzytelnianie za pomocą klucza prywatnego

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

  1. Utwórz klucz prywatny dla 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 Twojego 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. Więcej informacji znajdziesz w artykule Tworzenie i usuwanie kluczy kont usługi.
  3. Przetestuj ten kod w Pythonie w miejscu, w którym znajduje się plik .private-key.json:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

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 zmienić zakresy dostępu maszyny wirtualnej dla konta usługi Compute Engine na „Zezwalaj na pełny dostęp do wszystkich interfejsów Cloud API”. (Jeśli używasz domyślnych kont usług 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:

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

Konfigurowanie dostępu do interfejsu API REST

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 usługi. Więcej informacji o uprawnieniach do projektu wymaganych do korzystania z Earth Engine znajdziesz na stronie Kontrola dostępu.

Rozwiązywanie problemów

Błąd: invalid_grant

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

Błąd: „Provided scope(s) are not authorized” (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ślanie zakresów może zakłócać domyślne uprawnienia w tym środowisku.