La mayoría de las funciones que prestan los servicios agrupados en paquetes heredados ahora las proporcionan las bibliotecas cliente de Cloud. Para obtener más información, consulta las alternativas recomendadas que se mencionan a continuación.
Si migrar a una solución sin agrupar no es una opción para tu proyecto, entonces quizás puedas continuar usando servicios agrupados en paquetes heredados en tus apps de Python 3 como resguardo. Este enfoque te brinda la flexibilidad para pasar a los servicios sin agrupar más adelante en el ciclo de migración.
Después de migrar de los servicios agrupados en paquetes heredados, puedes seguir usando App Engine o migrar a Cloud Run. Cloud Run está diseñado para mejorar la experiencia de App Engine, ya que incorpora muchas de las mejores funciones del entorno estándar y del entorno flexible. Para comparar funciones y comprender cómo migrar, consulta la guía de comparación de App Engine y Cloud Run.
Google Cloud proporciona productos independientes que ofrecen una funcionalidad similar a los de algunos de los servicios en paquetes heredados en el entorno de ejecución de Python. En esta guía, se recomienda usar proveedores de terceros o algunas otras soluciones para los servicios en paquetes heredados que no están disponibles como productos independientes en Google Cloud, como el correo electrónico y la mensajería.
En esta página, se presenta la ruta de migración para los servicios agrupados en paquetes heredados.
Comprende los Google Cloud permisos
Tu app migrada y los Google Cloud servicios que usa no se ejecutan en el mismo entorno de zona de pruebas, y tu app requiere autorización para acceder a cada servicio. Por ejemplo, para interactuar con Firestore en modo Datastore (Datastore) o Cloud Tasks, la app debe proporcionar las credenciales de una cuenta autorizada a fin de acceder a esos servicios.
De forma predeterminada, las apps que se ejecutan en el entorno estándar de App Engine proporcionan las credenciales de la cuenta de servicio predeterminada de App Engine , que está autorizada para acceder a bases de datos en el mismo proyecto que tu app.
Si se cumple alguna de las siguientes condiciones, usa un método de autenticación alternativo que proporcione credenciales de forma explícita:
Tu app y la base de datos de Memorystore están en diferentes Google Cloud proyectos.
Cambiaste las funciones asignadas a la cuenta de servicio predeterminada de App Engine.
Si deseas obtener información sobre métodos de autenticación alternativos, consulta Configura la autenticación para aplicaciones de producción de servidor a servidor.
Autenticación para el desarrollo local
Para desarrollar o probar la app de forma local, crea y usa una cuenta de servicio. No uses la cuenta de servicio predeterminada de App Engine , ya que tiene permisos amplios para tu proyecto. En su lugar, crea y usa una cuenta de servicio con los permisos mínimos que necesites para tus tareas específicas de desarrollo y prueba.
Para configurar una cuenta de servicio y conectarla a tu app, consulta Obtén y proporciona credenciales de cuenta de servicio de forma manual.
Instala bibliotecas cliente
Para usar Google Cloud servicios desde una app de Python, instala la biblioteca cliente de Python para el servicio. Google Cloud servicios también proporcionan APIs de REST y otras interfaces.
Para instalar una biblioteca cliente para el entorno de ejecución de Python 3, haz lo siguiente:
Agrega el nombre de la biblioteca al archivo
requirements.txtde tu app. Por ejemplo:google-cloud-ndb
App Engine sube todas las bibliotecas que se enumeran en el archivo requirements.txt al entorno de ejecución de Python 3 de forma automática.
Rutas de migración para los servicios en paquetes de App Engine
Blobstore
Para almacenar y recuperar datos, usa Cloud Storage a través de las bibliotecas cliente de Cloud. Para comenzar, consulta Usa Cloud Storage y la guía Migra de Blobstore a Cloud Storage. Para simular esta migración, agrega el uso de Blobstore a una app de ejemplo y migra a Cloud Storage.
Datastore
Si tu app de Python 2 usa NDB para interactuar con Datastore, migra a la biblioteca de Cloud NDB. Cloud NDB está diseñado principalmente como una herramienta de transición para migrar apps de Python 2. Recomendamos que las apps de Python 3 usen la biblioteca cliente en modo Datastore.
Para obtener más información, consulta Migra a Cloud NDB. Para simular esta migración con una app de muestra, consulta Migra desde App Engine a Cloud NDB.
Imágenes
Para migrar el servicio de imágenes de App Engine, implementa un servicio de transformación de imágenes en contenedores en Cloud Run y enruta a él las llamadas al servicio de imágenes de App Engine. Para alojar y entregar imágenes, almacénalas en un bucket de Cloud Storage o distribúyelas con Cloud CDN. Para obtener más información, consulta Migra el servicio de imágenes.Logging
Recomendamos que actualices tu app para usar Cloud Logging, que admite funciones como ver registros en el explorador de registros, descargar registros, filtrar mensajes por gravedad y correlacionar los mensajes de apps con solicitudes específicas. Como alternativa, si prefieres la simplicidad en lugar de la exactitud de los datos, puedes escribir registros estructurados en stdout o stderr.
Para obtener más información, consulta
Escribe y visualiza registros y Migra a Cloud Logging.
Correo electrónico
Para mejorar la seguridad del correo electrónico y garantizar la entrega confiable de correos electrónicos de gran volumen, te recomendamos que migres del servicio de correo electrónico heredado a un servicio de correo electrónico basado en SMTP como SendGrid, Mailgun o Mailjet.Memcache
A fin de almacenar en caché los datos de la aplicación, usa Memorystore para Redis.
Para obtener más información, consulta Migra Memcache a Memorystore. Para simular esta migración, agrega el uso de Memcache a una app de ejemplo y migra a Memorystore for Redis.
En el caso de las apps que usan Memcache solo para reducir la latencia de las solicitudes de NDB (o Cloud NDB), usa la compatibilidad integrada de Cloud NDB para Redis en lugar de Memcache o Memorystore for Redis.
Módulos
Para obtener información y modificar los servicios en ejecución de tu aplicación, usa la API de App Engine Admin junto con una combinación de variables de entorno:
| Información del servicio | Cómo acceder |
|---|---|
| ID de aplicación actual | Con la variable de entorno GAE_APPLICATION. |
| ID del proyecto actual | Con la variable de entorno GOOGLE_CLOUD_PROJECT. |
| Nombre del servicio actual | Con la variable de entorno GAE_SERVICE. |
| Versión del servicio actual | Con la variable de entorno GAE_VERSION. |
| ID de instancia actual | Con la variable de entorno GAE_INSTANCE. |
| Nombre de host predeterminado | Método apps.get de la API de Administrador |
| Lista de servicios | Método apps.services.list de la API de Administrador |
| Lista de versiones para un servicio | Método apps.services.versions.list de la API de Administrador |
| Versión predeterminada para un servicio, incluidas las divisiones del tráfico | Método apps.services.get de la API de Administrador |
| Lista de instancias en ejecución para una versión | Método apps.services.versions.instances.list de la API de Admin |
Espacios de nombres
La API de espacios de nombres habilitó a las apps multiusuario a dividir los datos entre los usuarios con solo especificar una string de espacio de nombres única para cada usuario.
Si bien Datastore admite multiusuario directamente, otros Google Cloud servicios no lo hacen. Si tu app multiusuario usa otros Google Cloud servicios, deberás administrar la función multiusuario de forma manual. Para tener instancias de servicios aisladas por completo, puedes crear proyectos nuevos de manera programática mediante la API de Cloud Resource Manager y acceder a los recursos de todos los proyectos.
OAuth
En lugar de usar el servicio de OAuth de App Engine para verificar los tokens de OAuth 2.0, usa el método oauth2.tokeninfo de la API de OAuth 2.0.
Búsqueda
Aloja cualquier base de datos de búsqueda en el texto completo, como ElasticSearch, en Compute Engine y accede a ella desde tu servicio.
Lista de tareas en cola
El servicio de lista de tareas en cola de App Engine está disponible en dos modos diferentes. Migración desde ambos puntos hacia dos productos diferentes de Cloud independientes.
Tareas de envío
En lugar del servicio de tareas de aplicaciones en cola de la lista de tareas en cola de App Engine para la ejecución de código asíncrono, usa las bibliotecas cliente de Cloud Tasks con un extremo del entorno estándar de Python 3 como objetivo. Para obtener más información, consulta Migra listas de aplicaciones en cola a Cloud Tasks.
Para simular esta migración con una app de muestra, consulta Cómo usar las listas de aplicaciones en cola de App Engine en apps de Flask y Migra a Cloud Tasks.
Extraer tareas
Si usas el servicio de tareas de extracción de la lista de tareas en cola, por ejemplo, poner en cola tareas o mensajes que procesarán los trabajadores separados, Cloud Pub/Sub puede ser una buena alternativa. Ofrece garantías de funcionalidad y entrega similares. Al igual que otros servicios de Cloud, Pub/Sub proporciona bibliotecas cliente convenientes para acceder al servicio. Para obtener más información, consulta Escribe y responde mensajes de Pub/Sub y Tareas de extracción de listas de tareas en cola a Pub/Sub.
Para simular esta migración con una app de ejemplo, consulta Cómo usar las tareas de extracción de App Engine a una app de ejemplo y Migra a Pub/Sub.
Recuperación de URL
De forma predeterminada, el entorno de ejecución de Python 2.7 usa el servicio de recuperación de URL a fin de controlar las solicitudes HTTP(S) salientes, incluso si usas las bibliotecas de Python estándar para emitir esas solicitudes.
Si la app usa las API de recuperación de URL directamente, por ejemplo, para realizar solicitudes asíncronas , recomendamos migrar a una biblioteca de Python estándar , como la biblioteca de solicitudes.
Para obtener más información, consulta Migra solicitudes salientes.
Autenticación de usuarios
Para una alternativa a la API de usuarios, usa cualquiera de los mecanismos de autenticación basados en HTTP descritos en la página Autenticación de usuarios.