Migra servicios del entorno estándar al entorno flexible

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 Platform.

Consulta las secciones siguientes para obtener instrucciones sobre cómo migrar servicios 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í, hay diferencias menores que debes tener en cuenta cuando migras del entorno estándar al entorno flexible:

  • Las rutas con /_ah/ no están bloqueadas 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 a continuación.

  • Los límites de gasto solo están disponibles en el entorno estándar de App Engine. En el entorno flexible, debes considerar crear presupuestos y configurar alarmas.

Identidad de la app

Si ejecutas tu 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 Google Compute Engine:

Información de la aplicación Cómo acceder a ella
Aplicación/ID del 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 de Administrador de App Engine
Service account name 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 depósito de Cloud Storage predeterminado para tu proyecto. Para usar un depósito en tu aplicación, puedes crear un depósito 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 administración de identidades y accesos (IAM) de Google 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}.

Hilos 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 los entornos estándar y flexible. Usa las bibliotecas cliente de Google Cloud para almacenar y recuperar datos en Cloud Storage.

Para obtener más información, consulta la siguiente guía:

Capacidades

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. Si deseas obtener más información, consulta las siguientes guías:

Datastore

Puedes acceder a Datastore desde cualquier lugar con 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 cliente de App Engine, las bibliotecas cliente de Google Cloud o si llamas directamente a la API.

La biblioteca ndb no se admite fuera del entorno estándar. Se está desarrollando una biblioteca python-ndb que admitirá Python 3 y plataformas adicionales, incluido el entorno flexible.

Para obtener más información, consulta la siguiente guía:

Images

El servicio de Imágenes no está disponible fuera del entorno estándar. Sin embargo, puedes entregar imágenes fácilmente directo 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 Pillow.

El servicio de imágenes 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 mediante una URL de servicio. Si deseas una funcionalidad similar, puedes generar las imágenes de 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 con solicitudes y los registros de stdout y stderr se recopilarán por separado.

Si quieres tener más control sobre el registro de aplicaciones, la capacidad de agrupar registros y la capacidad de registrar metadatos adicionales, puedes usar Cloud Logging API directamente con el Bibliotecas cliente de Google Cloud.

Para obtener más detalles, consulta la guía siguiente:

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.

En las siguientes guías, se muestra cómo usar estos servicios con el entorno flexible:

Memcache

El servicio Memcache no está disponible en el entorno flexible de App Engine. Para 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 Administrador de App Engine para obtener información sobre los servicios en ejecución de tu 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 tu aplicación.

Espacios de nombres

Fuera del entorno estándar, solo Datastore es compatible con multitenancy directamente. Para obtener otros servicios, deberás gestionar la modalidad multiusuario manualmente. Para tener instancias de servicios totalmente aisladas, 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

El servicio de OAuth no está disponible en el entorno flexible. Si necesitas verificar los tokens 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. La mayoría de los servicios de copia de seguridad, como Datastore, a los que se puede acceder desde el entorno flexible, también son accesibles desde cualquier lugar.

El servicio de búsqueda no está disponible fuera del entorno estándar. Puedes alojar bases de datos de búsqueda de texto completo, como ElasticSearch en Google Compute Engine, y acceder a ellas 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.

Task Queue

Para usar el servicio de lista de tareas en cola fuera del entorno estándar de primera generación, puedes usar Cloud Tasks.

En muchos casos en los que puedes usar listas de extracción (como poner en cola las tareas o los mensajes que se extraen y procesan con trabajadores independientes), Cloud Pub/Sub puede ser una buena alternativa ya que ofrece funcionalidades similares y garantías de entrega.

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. Recomendamos el uso de Solicitudes.

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:

Ten en cuenta que, como el servicio de usuarios no está disponible, no es posible usar app.yaml para que solo los administradores puedan acceder a ellas. Tendrás que gestionar esta lógica dentro de tu 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 de App Engine.