Las bibliotecas cliente de Cloud ahora proporcionan la mayoría de las funciones que prestan los servicios agrupados en paquetes heredados. 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, es posible que 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 heredados, puedes seguir usando App Engine o migrar a Cloud Run. Cloud Run está diseñado para mejorar la experiencia de App Engine y, además, 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 la de algunos de los servicios heredados en paquetes en el entorno de ejecución de Python. Para los servicios agrupados heredados que no están disponibles como productos independientes en Google Cloud, como el correo y la mensajería, esta guía recomienda proveedores de terceros o algunas otras soluciones.
En esta página, se presenta la ruta de migración para los servicios en paquetes heredados.
Información sobre los permisos de Google Cloud
Tu app migrada y los servicios de Google Cloud 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, tu app debe proporcionar las credenciales de una cuenta autorizada para 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 las 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 proyectos deGoogle Cloud .
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 porque 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 los Google Cloud servicios desde una app de Python, instala la biblioteca cliente de Python para el servicio. Google Cloud Los servicios también proporcionan APIs de REST y otras interfaces.
Para instalar una biblioteca cliente para el tiempo 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
Puedes entregar imágenes desde Cloud Storage, entregarlas directamente o usar una red de distribución de contenidos (CDN) de terceros.
Para cambiar el tamaño de las imágenes, convertirlas y manipularlas, usa una biblioteca de procesamiento de imágenes, como Pillow o una interfaz de Python para ImageMagick.
A fin de usar una de estas bibliotecas de terceros, agrega la biblioteca como dependencia y actualiza tu código para llamar a las API de la biblioteca.
El servicio de imágenes de App Engine también proporcionó la funcionalidad para evitar solicitudes dinámicas a tu aplicación mediante el manejo del cambio de tamaño de la imagen a través de una URL de entrega. Si deseas una funcionalidad similar, puedes generar las imágenes con cambio de tamaño por adelantado y subirlas a Cloud Storage para entregarlas. De forma alternativa, puedes usar un servicio de red de distribución de contenidos (CDN) de terceros que permita cambiar el tamaño de las 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 una entrega confiable de grandes volúmenes de correos electrónicos, te recomendamos que migres de la API de Mail heredada 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 una combinación de variables de entorno y la API de App Engine Admin:
| 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 Administrador |
Para obtener más información sobre los datos disponibles sobre los servicios en ejecución de tu aplicación, consulta el entorno de ejecución de Python 3 .
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 servicios de Google Cloudno lo hacen. Si tu app multiusuario usa otros servicios de Google Cloud, 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 con 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 muestra, consulta Cómo usar las tareas de extracción de App Engine a una app de muestra 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 para 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.