Probar y desplegar una aplicación

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.

Más información sobre los IDs de región

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.

Desplegar una aplicación

Despliega tu aplicación en App Engine con el comando gcloud 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:

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.

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

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:

  1. Sube tus imágenes a un repositorio de Artifact Registry. Para obtener más información, consulta Enviar y extraer imágenes.
  2. 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:

  1. Despliega la nueva versión e incluye la marca --no-promote:

    gcloud app deploy --no-promote

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

  3. Cuando quieras enviar tráfico a la nueva versión, usa laGoogle Cloud consola para migrar el tráfico:

    Gestionar versiones

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

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 ubicaciones europe-west1, debes modificar la restricción para permitir los recursos en in:eu-locations, que incluye todas las regiones EU. Esto es necesario porque los segmentos creados por App Engine son multirregionales. Si tu aplicación de App Engine se crea en la región US, debes permitir in:us-locations. Si se crea en las regiones ASIA, debes permitir in: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:

  1. Asegúrese de que la configuración de app.yaml sea válida.
  2. 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.
  3. 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.

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.