El entorno flexible de App Engine no proporciona las bibliotecas de API incluidas en el SDK de App Engine. Si decides migrar tu aplicación del entorno estándar de App Engine al entorno flexible, debes actualizar tu código para usar los servicios y las API disponibles en todos los entornos de Google Cloud.
Consulta las secciones siguientes para obtener instrucciones sobre cómo migrar servicios agrupados en paquetes heredados y API 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 describen aquí, las rutas de acceso con /_ah/
no se bloquean en el entorno flexible. Si la aplicación en el entorno estándar usa rutas con /_ah/
para acceder a servicios específicos, consulta la sección del servicio correspondiente que se encuentra a continuación.
Identidad de la app
Si ejecutas la aplicación en el entorno flexible, puedes obtener información sobre ella con una combinación de variables de entorno y el servicio de metadatos de Compute Engine:
Información de la aplicación | Cómo acceder a ella |
---|---|
Aplicación/ID del proyecto | 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 de Administrador de App Engine |
Nombre de la cuenta de servicio | El recurso /instance/service-accounts en el servidor de metadatos |
Token de acceso de OAuth 2.0 | El recurso /instances/service-accounts en el servidor de metadatos. Consulta la documentación de autenticación con credenciales de la cuenta de servicio de Compute Engine. |
La funcionalidad siguiente no está directamente disponible:
- No hay un bucket de Cloud Storage predeterminado para tu proyecto. Para usar un bucket en la aplicación, puedes crear un bucket de Cloud Storage cuyo nombre sea el ID del proyecto. A continuación, puedes usar la variable de entorno
GOOGLE_CLOUD_PROJECT
en tu aplicación como nombre del depósito. - No puedes firmar los BLOB con la cuenta de servicio predeterminada. Puedes solucionar esto con la API de Identity and Access Management (IAM) o proporcionando una clave privada de cuenta de servicio a tu aplicación cuando la implementes.
- Del mismo modo, no hay una API incorporada para obtener certificados públicos a fin de verificar firmas. Sin embargo, los certificados públicos de cada cuenta 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 de
SystemProperty
de App Enigne no están disponibles para el entorno flexible de App Engine. Sin embargo, puedes establecer variables de entorno en
app.yaml
y usarSystem.env
para obtener los valores, como se describe en Define variables de entorno.
Para obtener más detalles sobre las variables de entorno, consulta las páginas de descripción general del entorno de ejecución o la
página de referencia de app.yaml
.
Subprocesos en segundo plano
Debido a que el entorno flexible no tiene limitaciones de zona de pruebas, puedes crear subprocesos o procesos que estén fuera del entorno de solicitud. Por lo general, solo necesitas usar las herramientas de subprocesamiento o multiprocesamiento integradas del lenguaje.
Blobstore
Cloud Storage reemplazó en gran medida el uso del servicio de Blobstore en el entorno estándar y el flexible. Usa las bibliotecas cliente de Google Cloud para almacenar y recuperar datos en Cloud Storage.
Para obtener más información, consulta Usa Cloud Storage.
Funciones
No hay ninguna función similar al servicio de capacidades disponible fuera del entorno estándar.
WebSockets
El entorno flexible de App Engine es compatible con websockets. Para obtener más información, consulta Crea conexiones persistentes con WebSockets.
Firestore en modo Datastore (Datastore)
Puedes acceder a Datastore desde cualquier lugar mediante la API de Datastore. Usa las bibliotecas cliente de Google Cloud para almacenar y recuperar datos de Datastore.
Los mismos datos de Datastore están disponibles sin importar si usas las bibliotecas de App Engine, las bibliotecas cliente de Google Cloud o si llamas a la API directamente.
Si usas la biblioteca ndb
de Python y prefieres el acceso de Datastore de estilo NDB, te recomendamos que migres a
Cloud NDB. Consulta el repositorio
de Cloud NDB para obtener más información.
Si bien las bibliotecas cliente de Cloud NDB y Datastore son compatibles con Python 2 y 3, y funcionan para el entorno estándar o flexible de App Engine y las apps que no son de App Engine, su propósito principal es ayudar a los desarrolladores de Python 2 a dejar de usar servicios heredados en paquetes, como App Engine ndb
.
Cloud NDB tiene el objetivo adicional de preservar la experiencia del usuario de NDB.
Para obtener más información, consulta Usa Datastore.
Imágenes
El servicio de Imágenes no está disponible fuera del entorno estándar. Sin embargo, puedes procesar fácilmente imágenes directamente desde tu aplicación o desde Cloud Storage.
Si necesitas realizar el procesamiento de imágenes, puedes instalar y usar cualquier biblioteca de procesamiento de imágenes, como las siguientes:
- Pillow para Python
- ImageJ2, STATcalr o SavedModelator para Java
- imaging para Go
- GD o ImageMagick para PHP
El servicio de imágenes también proporcionó la funcionalidad para evitar solicitudes dinámicas a la aplicación con el manejo del cambio de tamaño de la imagen mediante una URL de entrega. Si deseas una funcionalidad similar, puedes generar las imágenes con tamaño nuevo 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.
Para ver más recursos, consulta las guías siguientes:
Logging
Logging funciona automáticamente en el entorno flexible y en el entorno estándar. Sin embargo, los registros se recopilan en un formato diferente.
Los registros no se agruparán por solicitudes, y los de stdout
y stderr
se recopilarán por separado.
Si deseas tener más control sobre los registros de la aplicación y la capacidad de agrupar registros y registrar metadatos adicionales, puedes usar la API de Cloud Logging directamente con las bibliotecas cliente de Google Cloud.
Para obtener más información, consulta Escribe registros de aplicaciones.
Correo electrónico
El servicio de correo electrónico de App Engine no está disponible fuera del entorno estándar. Deberás usar un proveedor de correo electrónico de terceros, como SendGrid, Mailgun o Mailjet para enviar correos electrónicos. Todos estos servicios ofrecen API para enviar correos electrónicos desde aplicaciones que se ejecutan en cualquier lugar.
Para obtener más detalles, consulta Envía mensajes con servicios de terceros.
Memcache
El servicio de Memcache no está disponible en el entorno flexible de App Engine. A fin de almacenar en caché los datos de la aplicación, usa Memorystore para Redis.
Módulos
La API de módulos no está disponible fuera del entorno estándar. Sin embargo, puedes usar una combinación de variables de entorno y la API de App Engine Admin para obtener información sobre los servicios en ejecución de la aplicación y modificarlos:
Información del servicio | Cómo acceder a ella |
---|---|
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 de App Engine |
Lista de servicios | Método apps.services.list de la API de Administrador de App Engine |
Lista de versiones para un servicio | Método apps.services.versions.list de la API de Administrador de App Engine |
Versión predeterminada para un servicio, incluidas las divisiones del tráfico | Método apps.services.get de la API de Administrador de App Engine |
Lista de instancias en ejecución para una versión | Método apps.services.versions.instances.list de la API de Administrador de App Engine |
También puedes usar la API de Administrador de App Engine para implementar y administrar servicios y versiones en la aplicación.
Para obtener más detalles sobre las variables de entorno, consulta las páginas de descripción general del entorno de ejecución o la
página de referencia de app.yaml
.
Espacios de nombres
Solo Datastore admite la modalidad multiusuario directamente fuera del entorno estándar. Para obtener otros servicios, deberás controlar la modalidad 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
El servicio de OAuth no está disponible en el entorno flexible. Si necesitas verificar los tokens de OAuth 2.0, puedes hacerlo con el método oauth2.tokeninfo
de la API de OAuth 2.0.
Remota
El servicio de API remota no es aplicable al entorno flexible. Se puede acceder desde cualquier lugar a la mayoría de los servicios de copia de seguridad, como Datastore, a los que también se puede acceder desde el entorno flexible.
Buscar
El servicio de búsqueda no está disponible fuera del entorno flexible. Puedes alojar cualquier base de datos de búsqueda en el texto completo, como ElasticSearch en Compute Engine, y acceder a ella desde los entornos estándar y flexible.
Sockets
El entorno flexible no tiene restricciones de zona de pruebas, por lo que puedes abrir y usar sockets de salida de forma normal.
Lista de tareas en cola
Para usar el servicio de lista de tareas en cola fuera del entorno estándar de primera generación, puedes usar Google Tasks.
En muchos casos en los que puedes usar listas de extracción, como poner en cola tareas o mensajes que se extraen y procesan con trabajadores separados, Pub/Sub puede ser una buena alternativa, ya que ofrece funcionalidades y garantías de entrega similares.
Recuperación de URL
El servicio de recuperación de URL no está disponible en el entorno flexible. Sin embargo, no hay restricciones en la zona de pruebas, por lo que tu aplicación puede usar cualquier biblioteca HTTP para obtener la funcionalidad de recuperación de URL.
Si usas Python, te recomendamos usar Solicitudes. Si usas Java, te recomendamos usar OkHttp o la biblioteca cliente HTTP de Google para Java.
Usuarios
El servicio de usuarios no está disponible fuera del entorno estándar. En cambio, 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 la autenticación y autorización de las cuentas de usuario de Google.
- Firebase Authentication, que proporciona autenticación con la identidad federada y el nombre de usuario/contraseña mediante Google, Facebook, Twitter y más.
- Auth0, que proporciona autenticación con varios proveedores de identidad y funciones de inicio de sesión único.
- OAuth 2.0 y OpenID Connect, que proporcionan una identidad federada del proveedor de tu elección. Google es un proveedor de identidad de OpenID Connect. También hay otros proveedores disponibles.
Ten en cuenta que, como el servicio de usuarios no está disponible, no es posible usar
appengine-web.xml
para Java o
app.yaml
para otros entornos de ejecución para que
solo los administradores puedan acceder a las URL. Tendrás que gestionar esta lógica dentro de la aplicación.
¿Qué sigue?
Para obtener una descripción general de las diferencias clave entre el entorno flexible y el estándar, con pautas que sirven para las aplicaciones que usan ambos, consulta Entorno flexible de App Engine para usuarios del entorno estándar.