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):
-
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.
- 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.
-
Przetestuj ten kod w Pythonie w miejscu, w którym umieścisz plik
.private-key.json(zastąpmy-projectidentyfikatorem 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.