Contas de serviço

Uma conta de serviço é uma conta associada a um aplicativo, e não a um usuário final. Talvez seja necessário usar uma conta de serviço para autenticar no Earth Engine se você estiver desenvolvendo um app ou usando a API REST. Saiba mais sobre a autenticação com contas de serviço.

Criar uma conta de serviço

Primeiro, crie um projeto do Google Cloud caso ainda não tenha feito isso.

Para gerenciar as contas de serviço do projeto na nuvem, acesse o menu do console do Cloud () e selecione IAM e administrador > Contas de serviço. Escolha o projeto, se solicitado.

Para criar uma nova conta de serviço, clique no + CRIAR CONTA DE SERVIÇO link.

Se você criou um projeto do App Engine, talvez já tenha uma conta de serviço padrão (conta de serviço padrão do App Engine) para ele. Se você estiver configurando um projeto do App Engine, para o papel da conta de serviço papel, escolha Projeto > Editor.

Configurar a conta de serviço para usar o Earth Engine

Todas as contas de serviço são criadas em um projeto na nuvem, que pode ser o mesmo usado para o app do App Engine ou a VM do Cloud. Verifique se o projeto na nuvem está registrado para acessar o Earth Engine e se a API Earth Engine está ativada no projeto. Todas as contas de serviço no projeto com as permissões corretas terão acesso ao Earth Engine.

Autenticar no Earth Engine usando o Application Default Credentials

O Application Default Credentials (ADC) é a maneira recomendada de autenticar em ambientes não supervisionados como o Cloud Run ou o Compute Engine) sem gerenciar chaves privadas manualmente.

import google.auth
import ee

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

Autenticar com uma chave privada

Se o aplicativo precisar de autenticação usando uma chave privada de conta de serviço (não recomendada para ambientes de produção em que o ADC pode ser usado):

  1. Crie uma chave privada para a conta de serviço:
    • Acesse a página Contas de serviço no console do Cloud.
    • Clique no menu da conta () e em Criar chave > JSON.
    • Faça o download do arquivo de chave JSON.
  2. Mantenha o arquivo de chave em segurança. Ele é um arquivo especial que permite que programas acessem as APIs do Google em nome da sua conta de serviço. Nunca armazene sua chave privada em um local público place. Se você perder a chave privada, poderá revogar o acesso a uma conta de serviço e criar uma nova usando o console do Cloud. Consulte Criar e excluir chaves de contas de serviço para mais detalhes.
  3. Teste o código Python a seguir de onde você colocou o .private-key.json arquivo:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

Se você conseguir inicializar sem um erro, a conta de serviço estará pronta para uso.

Usar uma conta de serviço padrão no Compute Engine

Se você estiver usando uma conta de serviço padrão, primeiro modifique os escopos de acesso da VM para a conta de serviço do Compute Engine para "Permitir acesso total a todas as APIs do Cloud". Se você estiver usando contas de serviço padrão no Dataflow ou no App Engine, essa etapa não será necessária.

Para autenticar no Earth Engine usando uma conta de serviço padrão, use o seguinte código:

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

Configurar o acesso à API REST

Se a conta de serviço for fazer cálculos usando a API REST, você precisará conceder a ela permissão para envolvidos no projeto, especificamente o papel de leitor de recursos do Earth Engine. Dependendo da configuração do projeto, talvez também seja necessário conceder à conta de serviço o papel de consumidor de Service Usage. Consulte a página Controle de acesso para mais informações sobre as permissões de projeto necessárias para usar o Earth Engine.

Solução de problemas

Erro: invalid_grant

O OAuth2 pode ser muito sensível ao desvio de relógio. Se você tiver certeza de que configurou tudo corretamente, verifique se o relógio do computador está sincronizado com a hora da rede.

Erro: "Os escopos fornecidos não estão autorizados" ao exportar para o Cloud Storage

Se você receber esse erro ao executar uma tarefa do Cloud Run, não defina o scopes argumento ao criar credenciais (por exemplo, em google.auth.default(scopes=...)). A especificação de escopos pode interferir nas permissões padrão nesse ambiente.