Una cuenta de servicio es una cuenta asociada a una aplicación en lugar de a 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 Cloud Console () 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 vínculo + CREAR CUENTA DE SERVICIO.
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 el Rol de la cuenta de servicio, 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 tu VM de Cloud. Asegúrate de que el proyecto de Cloud esté registrado para acceder a Earth Engine y de 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.
Inicializa la biblioteca pasando tu ID del proyecto de Cloud (reemplaza my-project por tu ID del proyecto):
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-project')
Autenticación 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 puede usar ADC), haz lo siguiente:
-
Crea una clave privada para la cuenta de servicio:
- Ve 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.
- Protege tu 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. Si pierdes tu clave privada, puedes revocar el acceso a una cuenta de servicio y crear una nueva con Cloud Console. Consulta Crea y borra claves de cuentas de servicio para obtener más detalles.
-
Prueba el siguiente código de Python desde donde hayas colocado el archivo
.private-key.json(reemplazamy-projectpor el ID de tu proyecto de 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')
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 tenga el permiso "Permitir 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 (reemplaza my-project por el ID de tu proyecto de 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')
Configura el acceso a la API de REST
Si la cuenta de servicio realizará cálculos con la API de REST, debes otorgarle permisos 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 horaria. Si tienes la certeza de que configuraste todo correctamente, verifica si el reloj de tu computadora está sincronizado con la hora de la red.
Error: "Los permisos proporcionados no están autorizados" al exportar a Cloud Storage
Si ves este error cuando ejecutas una tarea de Cloud Run, no establezcas el argumento scopes cuando crees credenciales (p.ej., en google.auth.default(scopes=...)). Especificar permisos puede interferir con los permisos predeterminados en este entorno.