El entorno flexible de App Engine no proporciona las bibliotecas de APIs presentes en el SDK de App Engine. Si decides migrar tu aplicación del entorno estándar de App Engine al entorno flexible, debes actualizar el código para usar servicios y APIs que estén disponibles en todos los entornos. Google Cloud
En las secciones siguientes se explica cómo migrar servicios y APIs antiguos específicos del entorno estándar al entorno flexible.
Diferencias entre el entorno estándar y el entorno flexible
Además de las diferencias clave que se indican aquí, las rutas con /_ah/
no se bloquean en el entorno flexible. Si tu aplicación en el entorno estándar usa rutas con /_ah/
para acceder a servicios específicos, consulta la sección del servicio correspondiente más abajo.
Identidad de la aplicación
Cuando se ejecuta en el entorno flexible, puedes usar una combinación de variables de entorno y el servicio de metadatos de Compute Engine para obtener información sobre tu aplicación:
Información de la aplicación | Cómo acceder |
---|---|
ID de aplicación o de proyecto | La variable de entorno GOOGLE_CLOUD_PROJECT o el recurso /project/project-id en el servidor de metadatos |
Nombre de host predeterminado | Método apps.get de la API Admin de App Engine |
Nombre de la cuenta de servicio | El recurso /instance/service-accounts en el servidor de metadatos |
Token de acceso OAuth 2.0 | El recurso /instances/service-accounts en el servidor de metadatos. Consulta la documentación sobre la autenticación con credenciales de cuenta de servicio de Compute Engine. |
Las siguientes funciones no están disponibles directamente:
- No hay ningún segmento de Cloud Storage predeterminado para tu proyecto. Para usar un segmento en tu aplicación, puedes crear un segmento de Cloud Storage y usar el ID del proyecto como nombre del segmento. Después, puedes usar la variable de entorno
GOOGLE_CLOUD_PROJECT
en tu aplicación como nombre del contenedor. - No puedes firmar blobs con la cuenta de servicio predeterminada. Para solucionar este problema, puedes usar la API Identity and Access Management (IAM) o proporcionar una clave privada de cuenta de servicio a tu aplicación al implementarla.
- Del mismo modo, no hay ninguna API integrada para obtener certificados públicos para verificar firmas. Sin embargo, los certificados públicos de todas las cuentas de servicio están disponibles en
https://www.googleapis.com/robot/v1/metadata/x509/{service account email}
. - Ten en cuenta que, si usas el entorno de ejecución de Java, las APIs SystemProperty de App Engine no estarán disponibles en el entorno flexible de App Engine. Sin embargo, puedes definir variables de entorno en
app.yaml
y usarSystem.env
para obtener los valores, tal como se describe en el artículo Definir variables de entorno.
Para obtener más información sobre las variables de entorno, consulta las páginas de descripción general del tiempo de ejecución o la página de referencia de app.yaml
.
Hilos en segundo plano
Como el entorno flexible no tiene limitaciones de zona de pruebas, puedes crear hilos o procesos que se ejecuten fuera del entorno de la solicitud. Por lo general, no necesitas usar nada más que las herramientas de multihilo o multiproceso integradas en tu lenguaje.
Almacén de blobs
El uso del servicio Blobstore se ha sustituido en gran medida tanto en el entorno estándar como en el flexible por Cloud Storage. Usa las Google Cloud bibliotecas de cliente para almacenar y recuperar datos en Cloud Storage.
Para obtener más información, consulta Usar Cloud Storage.
Funciones
No hay ninguna función similar al servicio Capabilities disponible fuera del entorno estándar.
WebSockets
El entorno flexible de App Engine admite websockets. Para obtener más información, consulta el artículo sobre cómo crear conexiones persistentes con WebSockets.
Firestore en modo Datastore
Puedes acceder a Datastore desde cualquier lugar mediante la API de Datastore. Usa las Google Cloud bibliotecas de cliente para almacenar y recuperar datos de Datastore.
Los mismos datos de Datastore están disponibles independientemente de si usas las bibliotecas de App Engine, las Google Cloud bibliotecas de cliente o llamas a la API directamente.
Si usas la biblioteca ndb
de Python y prefieres el acceso a Datastore con el estilo de NDB, te recomendamos que migres a Cloud NDB. Consulta el repositorio de Cloud NDB para obtener más información.
Aunque las bibliotecas de cliente de Cloud NDB y Datastore son compatibles con Python 2 y 3, y funcionan en el entorno estándar o flexible de App Engine, así como en aplicaciones que no son de App Engine, su objetivo principal es ayudar a los desarrolladores de Python 2 a dejar de usar servicios antiguos agrupados, como App Engine ndb
.
Cloud NDB también tiene el objetivo de conservar la experiencia de usuario de NDB.
Para obtener más información, consulta Usar Datastore.
Imágenes
El servicio Imágenes no está disponible fuera del entorno estándar. Sin embargo, puedes publicar imágenes fácilmente directamente desde tu aplicación o desde Cloud Storage.
Si necesitas procesar imágenes, puedes instalar y usar cualquier biblioteca de procesamiento de imágenes, como las siguientes:
- Pillow para Python
- ImageJ2, imgscalr o thumbnailator para Java
- Imágenes de Go
- GD o ImageMagick para PHP
El servicio Imágenes también ofrecía funciones para evitar solicitudes dinámicas a tu aplicación gestionando el cambio de tamaño de las imágenes mediante una URL de servicio. Si quieres una función similar, puedes generar las imágenes redimensionadas con antelación y subirlas a Cloud Storage para publicarlas. También puedes usar un servicio de red de distribución de contenido (CDN) de terceros que ofrezca la función de cambiar el tamaño de las imágenes.
Para obtener más recursos, consulta las siguientes guías:
Almacenamiento de registros
Al igual que en el entorno estándar, el registro funciona automáticamente en el entorno flexible. Sin embargo, los registros se recogen en un formato diferente.
Los registros no se agruparán por solicitudes y los registros de stdout
y stderr
se recogerán por separado.
Si quieres tener más control sobre el registro de aplicaciones, agrupar registros y registrar metadatos adicionales, puedes usar la API Cloud Logging directamente con las bibliotecas de clienteGoogle Cloud .
Para obtener más información, consulta Escribir registros de aplicaciones.
Correo
El servicio de correo de App Engine no está disponible fuera del entorno estándar. Para enviar correos, tendrás que usar un proveedor de correo de terceros, como SendGrid, Mailgun o Mailjet. Todos estos servicios ofrecen APIs para enviar correos desde aplicaciones que se ejecutan en cualquier lugar.
Para obtener más información, consulta el artículo Enviar mensajes con servicios de terceros.
Memcache
El servicio Memcache no está disponible en el entorno flexible de App Engine. Para almacenar en caché datos de aplicaciones, usa Memorystore para Redis.
Módulos
La API Modules no está disponible fuera del entorno estándar. Sin embargo, puedes usar una combinación de variables de entorno y la API Admin de App Engine para obtener información sobre los servicios en ejecución de tu aplicación y modificarlos:
Información sobre el servicio | Cómo acceder |
---|---|
Nombre del servicio actual | Variable de entorno GAE_SERVICE |
Versión actual del servicio | Variable de entorno GAE_VERSION |
ID de instancia actual | Variable de entorno GAE_INSTANCE |
Nombre de host predeterminado | Método apps.get de la API Admin de App Engine |
Lista de servicios | Método apps.services.list de la API Admin de App Engine |
Lista de versiones de un servicio | Método apps.services.versions.list de la API Admin de App Engine |
Versión predeterminada de un servicio, incluidas las divisiones de tráfico | Método apps.services.get de la API Admin de App Engine |
Lista de instancias en ejecución de una versión | Método apps.services.versions.instances.list de la API Admin de App Engine |
También puedes usar la API Admin de App Engine para implementar y gestionar servicios y versiones en tu aplicación.
Para obtener más información sobre las variables de entorno, consulta las páginas de descripción general del tiempo de ejecución o la página de referencia de app.yaml
.
Espacios de nombres
Fuera del entorno estándar, solo Datastore admite multitenancy directamente. En el caso de otros servicios, tendrás que gestionar la arquitectura multiempresa manualmente. Para tener instancias de servicios completamente aisladas, puedes crear proyectos nuevos de forma programática con la API Cloud Resource Manager y acceder a recursos de diferentes proyectos.
OAuth
El servicio OAuth no está disponible en el entorno flexible. Si necesitas verificar tokens de OAuth 2.0, puedes hacerlo con el método oauth2.tokeninfo
de la API OAuth 2.0.
Remoto
El servicio de API remota no se aplica al entorno flexible. La mayoría de los servicios de backend, como Datastore, a los que se puede acceder desde el entorno flexible también se pueden usar desde cualquier lugar.
Buscar
Actualmente, el servicio de búsqueda no está disponible fuera del entorno flexible. Puedes alojar cualquier base de datos de búsqueda de texto completo, como Apache Solr en Compute Engine o Elasticsearch Service en Elastic Cloud, y acceder a ella desde el entorno estándar y el flexible.
Sockets
El entorno flexible no tiene restricciones de zona de pruebas, por lo que puedes abrir y usar sockets salientes con normalidad.
Cola de tareas
Para usar el servicio de colas de tareas push fuera del entorno estándar de primera generación, puedes usar Google Tasks.
En muchos casos en los que podrías usar colas para tareas extraídas, como poner en cola tareas o mensajes que se extraerán y procesarán por trabajadores independientes, Pub/Sub puede ser una buena alternativa, ya que ofrece funciones y garantías de entrega similares.
Obtención de URL
El servicio de obtención de URLs no está disponible en el entorno flexible. Sin embargo, no hay restricciones en el entorno aislado, por lo que tu aplicación puede usar cualquier biblioteca HTTP para obtener la función de obtención de URLs.
Si usas Python, te recomendamos que utilices Requests. Si usas Java, te recomendamos que utilices la biblioteca de cliente HTTP de Google para Java o OkHttp.
Usuarios
El servicio Users no está disponible fuera del entorno estándar. Puedes usar cualquier mecanismo de autenticación basado en HTTP en el entorno flexible, como los siguientes:
- Google Identity Platform, que ofrece muchas opciones para autenticar y autorizar cuentas de usuario de Google.
- Firebase Authentication, que proporciona autenticación mediante nombre de usuario y contraseña, e identidad federada mediante Google, Facebook, Twitter y más.
- Auth0, que ofrece autenticación con varios proveedores de identidades y funciones de inicio de sesión único.
- OAuth 2.0 y OpenID Connect que proporcionan una identidad federada del proveedor que elijas. Google es un proveedor de identidades de OpenID Connect. También hay otros proveedores disponibles.
Ten en cuenta que, como el servicio Usuarios no está disponible, no se puede usar
appengine-web.xml
para Java ni
app.yaml
para otros tiempos de ejecución para que solo los administradores puedan acceder a las URLs. Deberás gestionar esta lógica en tu aplicación.
Siguientes pasos
Para obtener un resumen de las principales diferencias entre el entorno flexible y el entorno estándar, así como directrices para las aplicaciones que usan ambos entornos, consulta el artículo Entorno flexible de App Engine para usuarios del entorno estándar.