Account di servizio

Un service account è un account associato a un'applicazione anziché a un utente finale. Potresti dover utilizzare un service account per autenticarti in Earth Engine se stai sviluppando un'app o utilizzando l'API REST. Scopri di più sull'autenticazione con i service account.

Crea un account di servizio

Innanzitutto, crea un progetto Google Cloud se non l'hai ancora fatto.

Puoi gestire i service account per il tuo progetto Cloud andando al menu della console Google Cloud () e selezionando IAM e amministrazione > Service account. (Scegli il progetto se richiesto.)

Per creare un nuovo service account, fai clic sul link + CREA SERVICE ACCOUNT.

Se hai creato un progetto App Engine, potresti già disporre di un service account predefinito (service account predefinito di App Engine) per quel progetto. Se stai configurando un progetto App Engine, per il Ruolo dell'account di servizio, scegli Progetto > Editor.

Configura il service account per utilizzare Earth Engine

Tutti gli account di servizio vengono creati all'interno di un progetto Cloud, che può essere lo stesso 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 i service account nel progetto con le autorizzazioni corrette avranno accesso a Earth Engine.

Eseguire l'autenticazione in Earth Engine utilizzando le credenziali predefinite dell'applicazione

Le credenziali predefinite dell'applicazione (ADC) sono il modo consigliato per autenticarsi in ambienti automatici (come Cloud Run o Compute Engine) senza gestire manualmente le chiavi private. Inizializza la libreria passando l'ID del tuo progetto Cloud (sostituisci my-project con il tuo ID progetto):

import google.auth
import ee

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

Eseguire l'autenticazione con una chiave privata

Se la tua applicazione deve autenticarsi utilizzando una chiave privata del service account (non consigliato per gli ambienti di produzione in cui è possibile utilizzare ADC):

  1. Crea una chiave privata per il service account:
    • Vai alla pagina Service account nella console Cloud.
    • Fai clic sul menu dell'account (), poi su Crea chiave > JSON.
    • Scarica il file della chiave JSON.
  2. Conserva il file della chiave in un luogo sicuro. Il file chiave è un file speciale che consente ai programmi di accedere alle API di Google per conto del tuo service account. Non memorizzare mai la chiave privata in un luogo pubblico. Se smarrisci la chiave privata, puoi revocare l'accesso a un service account e crearne uno nuovo utilizzando la console Cloud. Per i dettagli, consulta Creare ed eliminare le chiavi dei service account.
  3. Prova il seguente codice Python da dove hai inserito il file .private-key.json (sostituisci my-project con l'ID progetto 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')

Se riesci a inizializzare senza errori, il service account è pronto per l'uso.

Utilizzare un service account predefinito su Compute Engine

Se utilizzi un service account predefinito, devi prima modificare gli ambiti di accesso della VM per il service account Compute Engine in "Consenti accesso completo a tutte le API Cloud". Se utilizzi i service account predefiniti in Dataflow o App Engine, questo passaggio non è necessario.

Per l'autenticazione a Earth Engine utilizzando un service account predefinito, utilizza il seguente codice (sostituisci my-project con l'ID progetto 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')

Configurare l'accesso all'API REST

Se il service account 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, potrebbe essere necessario concedere al service account anche il ruolo Service Usage Consumer. Per saperne di più sulle autorizzazioni per i progetti richieste per utilizzare Earth Engine, consulta la pagina Controllo dell'accesso.

Risoluzione dei problemi

Errore: invalid_grant

OAuth2 può essere molto sensibile alla differenza di orologio. Se hai la certezza di aver configurato tutto correttamente, verifica che l'orologio del computer sia 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'argomento scopes 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.