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 de acceso 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 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 Mediante la variable de entorno GOOGLE_CLOUD_PROJECT o con el recurso /project/project-id en el servidor de metadatos.
Nombre de host predeterminado Con el método apps.get de la API de Administrador de App Engine.
Nombre de la cuenta de servicio Mediante el recurso /instance/service-accounts en el servidor de metadatos.
Token de acceso de OAuth 2.0 Con 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}.
  • Las API de SystemProperty no están disponibles para el entorno flexible de App Engine. Sin embargo, puedes configurar las variables de entorno en app.yaml y usar System.env para obtener los valores, como se describe en la página sobre cómo definir variables de entorno.

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 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:

Cloud Datastore

Puedes acceder a Cloud Datastore desde cualquier lugar con la API de Cloud Datastore. Usa las bibliotecas cliente de Google Cloud para almacenar y recuperar datos de Cloud Datastore.

Los mismos datos de Cloud Datastore están disponibles sin importar si usas las bibliotecas de App Engine, las bibliotecas cliente de Google Cloud o si llamas directamente a la API.

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

Imágenes

El servicio de Imágenes no está disponible fuera del entorno estándar. Sin embargo, puedes entregar imágenes directo desde tu aplicación o desde Cloud Storage con facilidad.

Si necesitas procesar imágenes, puedes instalar y usar cualquier biblioteca de procesamiento de imágenes, como ImageJ2, imgscalr o thumbnailator.

El servicio de Imágenes también proporcionaba una funcionalidad para evitar las solicitudes dinámicas a tu aplicación al controlar el cambio de tamaño de las imágenes mediante una URL de entrega. Si deseas una funcionalidad similar, puedes generar las imágenes redimensionadas 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 en paquetes por solicitudes, y los registros de stdout y stderr se recopilarán por separado.

Si deseas tener más control sobre los registros de la aplicación y quieres disponer de la capacidad de agrupar registros y registrar metadatos adicionales, puedes utilizar la API de Stackdriver Logging directamente con las 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 de Memcache no se encuentra disponible para el entorno flexible de App Engine. Una versión Alfa del servicio de Memcache estará disponible en breve. Si deseas recibir una notificación cuando el servicio esté disponible, llena este formulario de acceso anticipado.

Si necesitas acceder a un servicio de Memcache de inmediato, puedes usar el servicio de Memcache externo de Redis Labs. Para acceder a este servicio, consulta cómo almacenar en caché los datos de aplicación con Memcache de Redis Labs.

También puedes usar Redis Cloud de Redis Labs, un servicio totalmente administrado por terceros. Para acceder a este servicio, consulta cómo almacenar en caché los datos de aplicación con Redis de Redis Labs.

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 Mediante el método apps.get de la API de Administrador de App Engine.
Lista de servicios Con el método apps.services.list de la API de Administrador de App Engine.
Lista de versiones para un servicio Mediante el 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 Con el método apps.services.get de la API de Administrador de App Engine.
Lista de instancias en ejecución para una versión Mediante el 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

Solo Cloud Datastore admite la modalidad multiusuario en forma directa fuera del entorno estándar. 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 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 Cloud Datastore, a los que se puede acceder desde un entorno flexible.

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.

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 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 de zona de pruebas, por lo que tu aplicación puede usar cualquier biblioteca HTTP para obtener la funcionalidad de recuperación de URL. Recomendamos usar la biblioteca cliente HTTP de Google para Java o, también, OkHttp.

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, debido a que el servicio de usuarios no está disponible, no puede usarse appengine-web.xml para que las URL sean accesibles solo por los administradores. Tendrás que controlar esta lógica dentro de tu aplicación.

Pasos siguientes

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.