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. Por ejemplo, normalmente puedes ejecutar una aplicación Flask con el servidor de desarrollo de Flask mediante el siguiente comando:
python main.py
Inicia aplicaciones Django con el siguiente comando:
python manage.py runserver
Para simular un entorno de App Engine de producción, puedes ejecutar el servidor de interfaz de pasarela de servidor web (WSGI) completo de forma local. Usa el mismo comando especificado como entrypoint
en tu archivo app.yaml
. Por ejemplo:
gunicorn -b :$PORT main:app
Desplegar una aplicación
Despliega tu aplicación en App Engine con el comandogcloud app deploy
.
El servicio Cloud Build compila automáticamente tu despliegue en una imagen de contenedor y la despliega en el entorno flexible de App Engine. El contenedor incluye las modificaciones locales que hayas hecho en la imagen del entorno de ejecución.
Para desplegar tus aplicaciones de forma programática, usa la API Admin.
Antes de empezar
Antes de poder implementar tu aplicación, debes hacer lo siguiente:
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.
Asegurar que la implementación se realice correctamente
Si habilitas las comprobaciones de salud actualizadas,
las implementaciones se revierten si tu aplicación no alcanza el estado correcto.
Cuando despliegues tu primera aplicación en el entorno flexible, puede que haya un retraso mientras se configuran tu máquina virtual y otra infraestructura.
Después de la configuración inicial, las comprobaciones de estado se aseguran de que tu instancia esté en buen estado y lista para recibir tráfico. Si tu aplicación no alcanza el estado ready en un periodo de tiempo especificado, indicado por el campo initial_delay_sec
de la sección liveness_check
de tu archivo app.yaml
, la implementación fallará y se revertirá.
Es posible que tu aplicación necesite más tiempo para estar lista. Por ejemplo, puedes inicializar tu aplicación descargando archivos grandes o precargando cachés. Si usas comprobaciones de estado actualizadas, puedes aumentar el tiempo modificando el ajuste de configuración app_start_timeout_sec
en la sección readiness_check
de tu archivo app.yaml
.
Si la implementación falla, comprueba que la API de Cloud Build esté habilitada en tu proyecto. App Engine habilita esta API automáticamente la primera vez que despliegas una aplicación, pero si alguien la ha inhabilitado, los despliegues fallarán.
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 el 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
De forma predeterminada, el comando gcloud app deploy
solo implementa el archivo app.yaml
en el directorio actual. Cada vez que ejecutas este comando, App Engine genera un ID único para la versión que despliegas, despliega la versión en elGoogle Cloud proyecto que has configurado para que use la interfaz de línea de comandos gcloud y dirige todo el tráfico a la nueva versión. La nueva versión se convierte en la versión predeterminada.
Puedes cambiar el comportamiento predeterminado del comando de implementación si te diriges a archivos específicos, especificas versiones o incluyes parámetros adicionales:
Puedes desplegar los otros archivos de configuración de tu servicio segmentando y desplegando 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, asigna al servicio 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, consulta la referencia de gcloud app deploy
.
Puedes definir propiedades para la CLI de gcloud y crear y gestionar configuraciones del SDK para no tener que especificar marcas como --project
cada vez que implementes.
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. Cuando implementas una nueva versión con el mismo nombre que la versión anterior, App Engine implementa la nueva imagen de contenedor en las máquinas virtuales que ya tienes para que la implementación sea más rápida y actualiza el contenedor de tu aplicación en las máquinas virtuales.
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
default
para poder crear y desplegar otros servicios.El ID de cada uno de tus servicios debe especificarse en sus archivos de configuración
app.yaml
correspondientes. Para especificar el ID de servicio, incluye la definición del elementoservice
en cada archivo de configuración. De forma predeterminada, si excluyes esta definición de elemento de tu archivo de configuración, se desplegará la versión en el serviciodefault
.
Para implementar varios servicios, debes implementar por separado el archivo app.yaml
de cada servicio. Por ejemplo:
gcloud app deploy service1/app.yaml
gcloud app deploy service2/app.yaml
Puedes especificar varios archivos con un solo comando de implementación:
gcloud app deploy service1/app.yaml service2/app.yaml
Ignorar archivos
Puedes usar un archivo .gcloudignore
para especificar los archivos y directorios que no se deben subir a Google Cloud
cuando implementes tus servicios. Esto resulta útil para ignorar artefactos de compilación y otros archivos que no es necesario subir con tu implementación.
Consulta más información sobre la sintaxis del archivo .gcloudignore
en la referencia de gcloud
.
Crear manualmente un contenedor para el despliegue
Para crear tus imágenes de contenedor fuera de Google Cloud, sigue estos pasos:
- Sube tus imágenes a un repositorio de Artifact Registry. Para obtener más información, consulta Enviar y extraer imágenes.
- Despliega la aplicación en App Engine con el comando
gcloud app deploy
.
Por ejemplo, si creas tus imágenes de contenedor de forma local con Docker, puedes enviar esas imágenes a Artifact Registry y especificar la URL de tu imagen en la marca --image-url
del comando:
gcloud app deploy --image-url LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
Sustituye:
LOCATION con la ubicación del repositorio donde se almacena la imagen.
PROJECT-ID con tu Google Cloud ID de proyecto.
REPOSITORY por el nombre del repositorio en el que se almacena la imagen.
IMAGE con el nombre de tu imagen de contenedor.
Usar flujos de procesamiento de despliegue continuo automatizados
Puedes usar Cloud Build para automatizar los despliegues en las canalizaciones de despliegue continuo. Para obtener más información, consulta los artículos Desplegar en App Engine y Crear y gestionar activadores de compilación de la documentación de Cloud Build.
Imágenes base de Docker
Si quieres crear una aplicación de tiempo de ejecución personalizada, consulta el artículo Crear un archivo Docker.
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
Probar en App Engine
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 e incluye la marca
--no-promote
: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.com
Ahora puedes probar la nueva versión en el entorno de tiempo de ejecución de App Engine. Puedes depurar tu aplicación viendo sus registros en elGoogle Cloud Explorador de registros de la consola. Para obtener más información, consulta Escribir registros de aplicaciones.
Las solicitudes enviadas a
https://PROJECT_ID.REGION_ID.r.appspot.com
se seguirán dirigiendo a 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 variables con el prefijo de clave
GOOGLE_*
. - Las siguientes claves están reservadas para el uso de Google:
GOOGLE_RUNTIME
GOOGLE_RUNTIME_VERSION
GOOGLE_ENTRYPOINT
GOOGLE_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 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.
Puedes ver los detalles de la traza. En el Explorador de trazas, puedes filtrar por el servicio y la versión específicos de App Engine.
Solucionar problemas
A continuación se indican algunos de los mensajes de error más habituales que pueden aparecer al implementar aplicaciones:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Si el Google Cloud proyecto no incluye la aplicación de App Engine obligatoria, el comando
gcloud app deploy
puede fallar al intentar ejecutar el comandogcloud app create
. Solo las cuentas con el rol de propietario tienen los permisos necesarios para crear aplicaciones de App Engine. 502 Bad Gateway
- El Google Cloud proyecto no se puede iniciar si
app.yaml
está mal configurado. Consulta los registros de la aplicación para ver mensajes de error más detallados. [13] An internal error occurred while creating a Cloud Storage bucket.
App Engine crea un segmento multirregional de Cloud Storage predeterminado en tu nombre en la misma región en la que crea tu aplicación. Necesita este segmento para almacenar el contenido de tu aplicación. El error se devuelve cuando no se puede crear este segmento, como en los siguientes casos:
El agente de servicio de entorno flexible de App Engine no está presente en tu proyecto o no tiene el rol
App Engine flexible environment Service Agent
. Para volver a añadir la cuenta de servicio del agente a tu proyecto, debes concederle los permisos de gestión de identidades y accesos correctos. Consulta Restaurar un agente de servicio eliminado.La cuenta de servicio predeterminada de App Engine no está presente en tu proyecto. Si la cuenta de servicio de App Engine se eliminó hace menos de 30 días, puedes restaurarla.
Tu proyecto está en una organización que aplica la política
constraints/gcp.resourceLocations
y la organización no permite la creación de recursos en la misma región en la que se creó tu App Engine. Debes anular la políticaconstraints/gcp.resourceLocations
obligatoria de tu proyecto y permitir las ubicaciones multirregionales en la misma región en la que se haya creado tu aplicación de App Engine.
Por ejemplo, si tu aplicación de App Engine se crea en la región
europe-west
, aunque la región se asigne a las ubicacioneseurope-west1
, debes modificar la restricción para permitir los recursos enin:eu-locations
, que incluye todas las regionesEU
. Esto es necesario porque los segmentos creados por App Engine son multirregionales. Si tu aplicación de App Engine se crea en la regiónUS
, debes permitirin:us-locations
. Si se crea en las regionesASIA
, debes permitirin:asia-locations
.[13] An internal error occurred.
Este error puede producirse si implementas tu servicio con una configuración de red que usa una configuración de VPC compartida. Prueba a hacer lo siguiente:
- Asegúrese de que la configuración de
app.yaml
sea válida. - Comprueba que tu entorno flexible de App Engine cumpla todos los requisitos para configurar una VPC compartida. Consulta Usar el entorno flexible de App Engine en una red de VPC compartida.
- Asegúrate de que has configurado cuentas de servicio en tu proyecto. Si no es así, debes restaurar las cuentas. La región de la subred del proyecto de host de VPC compartida debe coincidir con la ubicación en la que se creó tu entorno de App Engine.
- Asegúrese de que la configuración de
Si el problema persiste, vuelve a implementar el servicio con el SDK de Google Cloud. Asegúrate de añadir la marca
--verbosity=debug
. Ponte en contacto con el Google Cloud equipo de Asistencia y proporciona el resultado del comando.IP space of {USER_SUBNETWORK_NAME} is exhausted and needs to be expanded.
Si la implementación falla y aparece este mensaje de error, significa que la red configurada para el servicio de App Engine no tiene direcciones disponibles para asignar a las nuevas instancias del servicio. Para resolver el problema, amplía los intervalos de VPC en la subred configurada para tu servicio del entorno flexible de App Engine.