ID de región
El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.
Aprende a ejecutar tu aplicación de forma local, desplegarla y probarla en App Engine.
Ejecutar localmente
Para probar tu aplicación antes de desplegarla, ejecútala en tu entorno local con las herramientas de desarrollo que sueles usar.
Te recomendamos que uses herramientas estándar de Python, como virtualenv, para crear
entornos aislados y pytest para ejecutar pruebas unitarias y pruebas de integración, en lugar de depender de dev_appserver, el servidor de desarrollo local que se proporciona con el SDK de Google Cloud.
Por ejemplo, normalmente puedes ejecutar una aplicación Flask con el servidor de desarrollo de Flask mediante el siguiente comando:
python main.pyInicia aplicaciones Django con el siguiente comando:
python manage.py runserver
Para simular un entorno de producción de App Engine, ejecuta el servidor completo de interfaz de pasarela de servidor web (WSGI) de forma local. Usa el mismo comando que se especifica como punto de entrada en el archivo app.yaml. Por ejemplo:
gunicorn -b :$PORT main:app
Antes de desplegar tu aplicación
Antes de desplegar tu aplicación:
- El propietario del proyecto Google Cloud debe configurar el proyecto para App Engine Google Cloud .
- Asegúrate de que tu cuenta de usuario incluya los privilegios necesarios.
Desplegar una aplicación
Despliega tu aplicación en App Engine con el comando
gcloud app deploy. Durante la implementación, el servicio Cloud Build crea una imagen de contenedor de tu aplicación para que se ejecute en el entorno estándar.
Cada compilación se ejecuta en la misma región que tu Google Cloud proyecto. Para obtener más información, consulta el artículo sobre cómo gestionar imágenes de compilación.
Para desplegar tus aplicaciones de forma programática, usa la API Admin.
Desplegar un servicio
Para desplegar tu aplicación en App Engine, debes desplegar las versiones de los servicios de tu aplicación y cada uno de sus archivos de configuración.
Para desplegar una versión del servicio de tu aplicación, ejecuta el siguiente comando desde el directorio en el que se encuentra el archivo app.yaml de tu servicio:
gcloud app deploy
Si no especificas ningún archivo con el comando, solo se implementará el archivo app.yaml del directorio actual. De forma predeterminada, el comando deploy genera un ID único para la versión que despliegues, la despliega en el proyectoGoogle Cloud que hayas configurado para usar la CLI de Google Cloud y dirige todo el tráfico a la nueva versión.
Puedes cambiar el comportamiento predeterminado del comando segmentando archivos específicos o incluyendo parámetros adicionales:
- Para implementar los demás archivos de configuración de tu servicio, debes seleccionar e implementar cada archivo por separado. Por ejemplo:
gcloud app deploy cron.yaml gcloud app deploy dispatch.yaml gcloud app deploy index.yaml
- Para especificar un ID de versión personalizado, usa la marca
--version. - Para evitar que el tráfico se dirija automáticamente a la nueva versión, usa la marca
--no-promote. - Para implementar en un proyecto específico, usa la marca
--project. Google Cloud
Por ejemplo, para desplegar el servicio definido por el archivo app.yaml en un proyectoGoogle Cloud específico, asígnale un ID de versión personalizado e impide que el tráfico se dirija a la nueva versión:
gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote
Para obtener más información sobre este comando, consulta la gcloud app deploy
referencia.
Cuando despliegas una versión nueva con el mismo nombre que una versión ya existente, App Engine migra inmediatamente el tráfico a la nueva versión. Hay un pico de latencia cuando App Engine carga solicitudes a la nueva versión. La nueva versión sobrescribe la anterior y no podrás migrar el tráfico a la versión anterior. Todas las instancias de la versión anterior se cierran inmediatamente. Para obtener más información, consulta el artículo Migrar tráfico.
Desplegar varios servicios
Utilizas el mismo comando de implementación para implementar o actualizar los distintos servicios que componen tu aplicación.
Antes de empezar:
- Primero debes desplegar una versión de tu aplicación en el servicio
defaultpara poder crear y desplegar otros servicios. - El ID de cada uno de tus servicios debe especificarse en sus correspondientes archivos de configuración
app.yaml. Para especificar el ID de servicio, incluye la definición del elementoserviceen cada archivo de configuración. De forma predeterminada, si excluyes esta definición de elemento de tu archivo de configuración, la versión se desplegará en el serviciodefault.
Para desplegar varios servicios, despliega por separado el archivo app.yaml
de cada servicio. Puedes especificar varios archivos con un único comando gcloud app deploy:
gcloud app deploy service1/app.yaml service2/app.yaml
Ver registros de compilación
Cloud Build transmite los registros de compilación y despliegue, que se pueden ver en la sección Historial de compilaciones de Cloud Build en la consola de Google Cloud . Para ver las compilaciones de la región de la aplicación, usa el menú Región para filtrar por región.
Gestionar imágenes de compilación
Cada vez que implementes una nueva versión:
App Engine crea una imagen de contenedor con el servicio Cloud Build.
Cloud Build crea la imagen de contenedor en la región de la aplicación y se ejecuta en el entorno estándar de App Engine.
App Engine almacena las imágenes de contenedor creadas en Artifact Registry. Puedes descargar estas imágenes para conservarlas o ejecutarlas en otro lugar.
Una vez completado el despliegue, App Engine ya no necesita las imágenes de contenedor. Las imágenes de contenedor no se eliminan automáticamente. Para no alcanzar tu cuota de almacenamiento, puedes eliminar de forma segura las imágenes que no necesites. Sin embargo, si crees que podrías necesitar las imágenes en el futuro o quieres conservar una copia, debes exportarlas antes de eliminarlas. Si quieres obtener más información sobre cómo gestionar imágenes en Artifact Registry, consulta el artículo sobre cómo gestionar imágenes.
Ignorar archivos
Puedes usar un archivo .gcloudignore para especificar los archivos y directorios que no se subirán a App Engine cuando despliegues tus servicios. Esto es útil para ignorar artefactos de compilación y otros archivos que no es necesario subir con tu implementación.
Ver tu solicitud
Después de desplegar la aplicación en App Engine, puedes ejecutar el siguiente comando para iniciar el navegador y verla en
https://PROJECT_ID.REGION_ID.r.appspot.com:
gcloud app browse
Hacer pruebas en App Engine antes de cambiar el tráfico
Antes de configurar una nueva versión para que reciba tráfico, puedes probarla en App Engine. Por ejemplo, para probar una nueva versión de tu servicio default, sigue estos pasos:
Despliega la nueva versión, pero evita que el tráfico se dirija automáticamente a ella:
gcloud app deploy --no-promote
Para acceder a la nueva versión, ve a la siguiente URL:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.comAhora puedes probar la nueva versión en el entorno de tiempo de ejecución de App Engine. Puedes depurar tu aplicación consultando sus registros. Para obtener más información, consulta el artículo Escribir registros de aplicaciones.
App Engine dirige las solicitudes enviadas a
https://PROJECT_ID.REGION_ID.r.appspot.coma la versión configurada anteriormente para recibir tráfico.Cuando quieras enviar tráfico a la nueva versión, usa laGoogle Cloud consola para migrar el tráfico:
Seleccione la versión que acaba de implementar y haga clic en Migrar tráfico.
Puedes usar el mismo proceso para probar nuevas versiones de otros servicios. Para ello, sustituye default en la URL por el nombre de tu servicio:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
Para obtener más información sobre cómo orientar las solicitudes a servicios y versiones específicos, consulta Cómo se enrutan las solicitudes.
Usar variables de entorno de compilación
Puedes definir variables de entorno de compilación para los tiempos de ejecución que admitan paquetes de compilación.
Las variables de entorno de compilación son pares clave-valor que puede especificar para configurar el paquete de compilación que usa para desplegar su aplicación. Por ejemplo, puede especificar opciones de compilador.
Antes de empezar:
- Las claves deben empezar por una letra ASCII en mayúscula y pueden incluir letras ASCII en mayúscula, números y guiones bajos.
- No debes crear ninguna variable con el prefijo de clave
GOOGLE_*. - Las siguientes claves están reservadas para el uso de Google:
GOOGLE_RUNTIMEGOOGLE_RUNTIME_VERSIONGOOGLE_ENTRYPOINTGOOGLE_DEVMODE
- Puedes usar cualquier clave compatible con buildpacks.
Para usar variables de entorno con buildpacks, especifica el campo
build_env_variables
en tu archivo app.yaml.
Más información sobre los buildpacks
Usar el servidor de desarrollo local
La CLI de Google Cloud incluye un servidor de desarrollo local llamado dev_appserver que puedes ejecutar localmente para simular el funcionamiento de tu aplicación en el entorno de producción de App Engine. Este servidor de desarrollo simula parcialmente el entorno en el que se ejecuta tu aplicación, lo que te permite probar aplicaciones escritas para cualquiera de los tiempos de ejecución del entorno estándar.
Ejecutar el servidor de desarrollo local
Una vez que hayas creado el archivo de configuración app.yaml
de tu aplicación, puedes iniciar el servidor de desarrollo local
con el comando dev_appserver.py para ejecutar la aplicación de forma local.
Para obtener las credenciales de acceso de tu cuenta de usuario, ejecuta el siguiente comando:
gcloud auth loginPermite que tu aplicación local use temporalmente tus credenciales de usuario para acceder a la API:
gcloud auth application-default loginPara iniciar el servidor de desarrollo local, sigue estos pasos:
En el directorio que contiene el archivo de configuración
app.yaml, ejecuta el comandodev_appserver.pyy especifica el ID del proyecto y la ruta al archivoapp.yaml:python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --application=PROJECT_ID app.yaml
Para cambiar el puerto, incluye la opción
--port:python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --application=PROJECT_ID app.yaml --port=9999
Para probar una aplicación de Python 3, ejecuta
dev_appserver.pycon un intérprete de Python 3. Debes especificar el archivo binario de Python 3 en la marca--runtime_python_path. Por ejemplo:python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --runtime_python_path=/usr/bin/python3 --application=PROJECT_ID app.yaml --port=9999
Para obtener más información sobre las opciones del comando
dev_appserver.py, consulta Opciones del servidor de desarrollo local.Cuando se inicia el servidor de desarrollo local, se configura un entorno de desarrollo que preinstala las dependencias que se encuentran en el archivo
requirements.txt.El servidor de desarrollo local ya está en funcionamiento y a la espera de solicitudes. Visita http://localhost:8080/ en tu navegador web para ver la aplicación en acción.
Si has especificado un puerto personalizado con la opción
--port, recuerda abrir tu navegador en ese puerto.Para detener el servidor local desde la línea de comandos, pulsa Control-C en el teclado.
Detectar el entorno de tiempo de ejecución de la aplicación
Para determinar si tu código se está ejecutando en producción o en el servidor de desarrollo local, puedes consultar la variable de entorno GAE_ENV:
if os.getenv('GAE_ENV', '').startswith('standard'):
# Production in the standard environment
else:
# Local execution.Usar el servidor de desarrollo local con los servicios de Google Cloud
Puedes integrar dev_appserver con otros Google Cloud componentes.
Bibliotecas de cliente de Cloud
Muchas bibliotecas de cliente de Google Cloud dependen de la presencia de la variable de entorno GOOGLE_CLOUD_PROJECT, que debe ser elGoogle Cloud ID de tu proyecto. Puedes consultar su valor ejecutando el comando gcloud config list project o en la página de tu proyecto en laGoogle Cloud console.
Para asegurarte de que esta variable de entorno se define correctamente durante el desarrollo local, inicializa dev_appserver con el parámetro --application=PROJECT_ID, tal como se muestra en el ejemplo anterior.
Emuladores de Cloud
Puedes probar tu aplicación con emuladores de Cloud Datastore, Cloud Bigtable y Cloud Pub/Sub.
Recarga automática de los cambios de requirements.txt y app.yaml
El servidor de desarrollo local instala automáticamente las dependencias que se encuentran en el archivo requirements.txt. dev_appserver también te permite probar las funciones que se configuran a través de app.yaml. Por ejemplo, puedes probar la capacidad de tu aplicación para servir archivos estáticos. Cuando dev_appserver está en ejecución, cualquier cambio en requirements.txt y app.yaml reinicia automáticamente tu aplicación para reflejar estos cambios. Esto puede provocar un retraso temporal mientras se descargan e instalan las dependencias.
Gestión de instancias y enrutamiento en el servidor de desarrollo
Descubrir direcciones de instancias
El servidor de desarrollo local crea todas las instancias de escalado manual al iniciarse. Las instancias de los servicios de escalado automático y básico se gestionan de forma dinámica. El servidor asigna un puerto a cada servicio y los clientes pueden depender del servidor para equilibrar la carga y seleccionar una instancia automáticamente. Las asignaciones de puertos para dirigirse a cada servicio aparecen en el flujo de mensajes de registro del servidor.
Estos son los puertos de una aplicación que define tres servicios:
INFO Starting module "default" running at: http://localhost:8084 INFO Starting module "service1" running at: http://localhost:8082 INFO Starting module "service2" running at: http://localhost:8083
Cuando usas la dirección de un servicio, por ejemplo, http://localhost:8082/, el servidor crea o selecciona una instancia del servicio y envía la solicitud a esa instancia.
El servidor asigna puertos únicos a cada instancia de un servicio. Puedes usar el servidor de administración para descubrir estos puertos. Hay un puerto único para el servidor de administración, que aparece en el registro de mensajes:
INFO Starting admin server at: http://localhost:8000
Esta dirección te lleva a la consola del servidor de administración. Haz clic en Instancias para ver el estado dinámico de las instancias de tu aplicación.
Aparece una entrada independiente por cada instancia manual y básica. Los números de instancia son enlaces con direcciones de puerto únicas para cada instancia. Haga clic en el enlace para enviar una solicitud directamente a esa instancia.
Archivos de envío
Si tu aplicación incluye un archivo dispatch.yaml, el flujo de mensajes de registro incluye un puerto de distribuidor:
INFO Starting dispatcher running at: http://localhost:8080
Las solicitudes a este puerto se enrutan según las reglas del archivo de envío.
El servidor no admite reglas de archivos dispatch.yaml que incluyan nombres de host, como url: "customer1.myapp.com/*". Las reglas con patrones de ruta relativos (url: "*/fun") sí funcionan, por lo que puedes usar URLs como http://localhost/fun/mobile para acceder a las instancias. El servidor registra un error en el flujo de registro si intentas iniciar una aplicación con un archivo dispatch.yaml que contenga reglas basadas en el host.
Usar Cloud Trace
Cloud Trace es útil para entender cómo se propagan las solicitudes por toda la aplicación. Puedes inspeccionar información detallada sobre la latencia de una solicitud o ver la latencia agregada de toda tu aplicación.
Para ver los detalles de las trazas en Cloud Trace, puedes seguir las instrucciones de Buscar y explorar trazas. En el explorador de trazas, puedes usar los filtros para filtrar por tu servicio y versión específicos de App Engine.