Una cuenta de servicio es una cuenta asociada con una aplicación en lugar de un usuario final. Es posible que debas usar una cuenta de servicio para autenticarte en Earth Engine si desarrollas una app o usas la API de REST. Obtén más información para autenticarte con cuentas de servicio.
Crea una cuenta de servicio
Primero, crea un proyecto de Google Cloud si aún no lo hiciste.
Para administrar las cuentas de servicio de tu proyecto de Cloud, ve al menú de la consola de Cloud () y selecciona IAM y administración > Cuentas de servicio. (Elige el proyecto si se te solicita).
Para crear una cuenta de servicio nueva, haz clic en el + CREAR CUENTA DE SERVICIO vínculo.
Si creaste un proyecto de App Engine, es posible que ya tengas una cuenta de servicio predeterminada (cuenta de servicio predeterminada de App Engine) para ese proyecto. Si configuras un proyecto de App Engine, para la cuenta de servicio Función, elige Proyecto > Editor.
Configura la cuenta de servicio para usar Earth Engine
Todas las cuentas de servicio se crean dentro de un proyecto de Cloud, que puede ser el mismo proyecto que se usa para tu app de App Engine o VM de Cloud. Asegúrate de que el proyecto de Cloud esté registrado para acceder a Earth Engine y que la API de Earth Engine esté habilitada en el proyecto. Todas las cuentas de servicio del proyecto con los permisos correctos tendrán acceso a Earth Engine.
Autentícate en Earth Engine con las credenciales predeterminadas de la aplicación
Las credenciales predeterminadas de la aplicación (ADC) son la forma recomendada de autenticarse en entornos desatendidos (como Cloud Run o Compute Engine) sin administrar claves privadas de forma manual.
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-ee-project')
Autentícate con una clave privada
Si tu aplicación necesita autenticarse con una clave privada de cuenta de servicio (no se recomienda para entornos de producción en los que se pueden usar ADC), haz lo siguiente:
-
Crea una clave privada para la cuenta de servicio:
- Dirígete a la página Cuentas de servicio en la consola de Cloud.
- Haz clic en el menú de la cuenta () y, luego, en Crear clave > JSON.
- Descarga el archivo de claves JSON.
- Mantén seguro el archivo de claves. El archivo de claves es un archivo especial que permite que los programas accedan a las APIs de Google en nombre de tu cuenta de servicio. Nunca almacenes tu clave privada en un lugar público place. Si pierdes tu clave privada, puedes revocar el acceso a una cuenta de servicio y crear una nueva con la consola de Cloud. Consulta Crea y borra claves de cuentas de servicio para obtener más detalles.
-
Prueba el siguiente código de Python desde donde colocaste el
.private-key.jsonarchivo:import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
Si puedes inicializar sin errores, tu cuenta de servicio está lista para usarse.
Usa una cuenta de servicio predeterminada en Compute Engine
Si usas una cuenta de servicio predeterminada, primero debes modificar los permisos de acceso de la VM para que la cuenta de servicio de Compute Engine "Permita el acceso total a todas las APIs de Cloud". (Si usas cuentas de servicio predeterminadas en Dataflow o App Engine, este paso no es necesario).Para autenticarte en Earth Engine con una cuenta de servicio predeterminada, usa el siguiente código:
from google.auth import compute_engine import ee credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine']) ee.Initialize(credentials)
Configura el acceso a la API de REST
Si la cuenta de servicio debe realizar cálculos con la API de REST, debes otorgarle permiso a nivel del proyecto, específicamente el rol de visualizador de recursos de Earth Engine. Según la configuración de tu proyecto, es posible que también debas otorgarle a la cuenta de servicio el rol de consumidor de Service Usage. Consulta la página Control de acceso para obtener más información sobre los permisos del proyecto necesarios para usar Earth Engine.
Solución de problemas
Error: invalid_grant
OAuth2 puede ser muy sensible a la diferencia de reloj. Si estás seguro de que configuraste todo correctamente, verifica si el reloj de tu computadora está sincronizado con la hora de la red.
Error: "Provided scope(s) are not authorized" cuando se exporta a Cloud Storage
Si ves este error cuando se ejecuta en una tarea de Cloud Run, no configures el
scopes argumento cuando crees credenciales (p.ej., en
google.auth.default(scopes=...)). Especificar permisos puede interferir con los
permisos predeterminados en este entorno.