Un account di servizio è un account associato a un'applicazione anziché a un utente finale. Potresti dover utilizzare un account di servizio per eseguire l'autenticazione in Earth Engine se stai sviluppando un'app o utilizzando l'API REST. Scopri di più sull'autenticazione con gli account di servizio.
Crea un account di servizio
Innanzitutto, crea un progetto Google Cloud se non l'hai già fatto.
Puoi gestire gli account di servizio per il tuo progetto Cloud andando al menu della console Cloud () e selezionando IAM e amministrazione > Account di servizio. (Scegli il progetto se richiesto.)
Per creare un nuovo account di servizio, fai clic sul link + CREA ACCOUNT DI SERVIZIO.
Se hai creato un progetto App Engine, potresti già avere un account di servizio predefinito (Service account predefinito di App Engine) per quel progetto. Se stai configurando un progetto App Engine, per il ruolo dell'account di servizio Ruolo, scegli Progetto > Editor.
Configura l'account di servizio per utilizzare Earth Engine
Tutti gli account di servizio vengono creati all'interno di un progetto Cloud, che può essere lo stesso progetto utilizzato per l'app App Engine o la VM Cloud. Assicurati che il progetto Cloud sia registrato per accedere a Earth Engine e che l' API Earth Engine sia abilitata nel progetto. Tutti gli account di servizio nel progetto con le autorizzazioni corrette avranno accesso a Earth Engine.
Esegui l'autenticazione in Earth Engine utilizzando le Credenziali predefinite dell'applicazione
Le Credenziali predefinite dell'applicazione (ADC) sono il modo consigliato per eseguire l'autenticazione in ambienti automatici (come Cloud Run o Compute Engine) senza gestire manualmente le chiavi private.
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-ee-project')
Esegui l'autenticazione con una chiave privata
Se la tua applicazione deve eseguire l'autenticazione utilizzando una chiave privata dell'account di servizio (non consigliata per gli ambienti di produzione in cui è possibile utilizzare ADC):
-
Crea una chiave privata per il service account:
- Vai alla pagina Account di servizio nella console Cloud.
- Fai clic sul menu dell'account (), quindi su Crea chiave > JSON.
- Scarica il file della chiave JSON.
- Tieni al sicuro il file della chiave. Il file della chiave è un file speciale che consente ai programmi di accedere alle API di Google per conto del tuo service account. Non archiviare mai la chiave privata in un luogo pubblico Se perdi la chiave privata, puoi revocare l'accesso a un account di servizio e creare uno nuovo utilizzando la console Cloud. Per maggiori dettagli, vedi Creare ed eliminare le chiavi degli account di servizio.
-
Prova il seguente codice Python da dove hai inserito il
.private-key.jsonfile:import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
Se riesci a inizializzare senza errori, il tuo service account è pronto per l'uso.
Utilizza un account di servizio predefinito su Compute Engine
Se utilizzi un account di servizio predefinito, devi prima modificare gli ambiti di accesso della VM per il service account Compute Engine in modo da "Consentire l'accesso completo a tutte le API Cloud". (Se utilizzi account di servizio predefiniti in Dataflow o App Engine, questo passaggio non è necessario.)Per eseguire l'autenticazione in Earth Engine utilizzando un account di servizio predefinito, utilizza il seguente codice:
from google.auth import compute_engine import ee credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine']) ee.Initialize(credentials)
Configura l'accesso all'API REST
Se l'account di servizio deve eseguire calcoli utilizzando l'API REST, devi concedergli l'autorizzazione a livello di progetto, in particolare il ruolo Visualizzatore risorse Earth Engine. A seconda della configurazione del progetto, potresti anche dover assegnare all'account di servizio il ruolo Consumer utilizzo servizi. Per ulteriori informazioni sulle autorizzazioni del progetto necessarie per utilizzare Earth Engine, consulta la pagina Controllo dell'accesso.
Risoluzione dei problemi
Errore: invalid_grant
OAuth2 può essere molto sensibile alla distorsione dell'orologio. Se hai la certezza di aver configurato tutto correttamente, controlla se l'orologio del computer è sincronizzato con l'ora di rete.
Errore: "Gli ambiti forniti non sono autorizzati" durante l'esportazione in Cloud Storage
Se visualizzi questo errore durante l'esecuzione in un'attività Cloud Run, non impostare l'
scopes argomento durante la creazione delle credenziali (ad es. in
google.auth.default(scopes=...)). La specifica degli ambiti può interferire con le
autorizzazioni predefinite in questo ambiente.