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