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 fazer a autenticação 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 seu 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.

Fazer a autenticação no Earth Engine usando o Application Default Credentials

O Application Default Credentials (ADC) é a maneira recomendada de fazer a autenticação em ambientes não supervisionados (como o Cloud Run ou o Compute Engine) sem gerenciar chaves privadas manualmente. Inicialize a biblioteca transmitindo o ID do projeto na nuvem (substitua my-project por o ID do seu projeto):

import google.auth
import ee

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

Fazer a autenticação com uma chave privada

Se o aplicativo precisar fazer a autenticação usando uma chave privada da conta de serviço (não recomendado 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 os 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 (substitua my-project pelo ID do seu projeto do 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 você conseguir inicializar sem um erro, sua 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 fazer a autenticação no Earth Engine usando uma conta de serviço padrão, use o código a seguir (substitua my-project pelo ID do seu projeto do 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')

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 do 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.