ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que seleccionas cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
Aprende cómo ejecutar, implementar y probar tu aplicación de manera local en App Engine.
Cómo ejecutar de manera local
Para probar la funcionalidad antes de la implementación, ejecuta tu aplicación en un entorno local con las herramientas de desarrollo que sueles usar.
Un ejemplo es el comandogo run
.
Implementa tu aplicación
Implementa la aplicación en App Engine mediante el comando gcloud app deploy
, que ensamblará de forma correcta las dependencias de la aplicación de la misma manera que la herramienta de go
.
Con este comando, se compila de manera automática una imagen de contenedor mediante el servicio de Cloud Build y, luego, se implementa en el entorno flexible de App Engine. El contenedor incluirá las modificaciones locales que realizaste en la imagen del entorno de ejecución.
Para implementar tus aplicaciones de manera programática, utiliza la API de administrador.
Antes de comenzar
Antes de implementar tu aplicación:
El propietario del proyecto de Cloud debe habilitar App Engine.
Asegúrate de que tu cuenta de usuario tenga los privilegios necesarios.
Cómo garantizar una implementación exitosa
Si habilitas las verificaciones de estado actualizadas, las implementaciones se revierten en caso de que tu aplicación no alcance un buen estado.
Cuando implementas tu primera aplicación en el entorno flexible, es posible que se produzca una demora por la configuración de tu máquina virtual (VM) y otra infraestructura.
Después de la configuración inicial, las verificaciones de estado se aseguran de que tu instancia esté en buen estado y lista para recibir el tráfico. Si la aplicación no alcanza un estado que muestre que está lista en un período específico, indicado por el campo initial_delay_sec
en la sección liveness_check
del archivo app.yaml, la implementación falla y se revierte.
Tu aplicación puede necesitar más tiempo para estar lista. Por ejemplo, puedes inicializar tu aplicación si descargas archivos grandes o precargas cachés. Si usas verificaciones de estado actualizadas, puedes modificar la configuración app_start_timeout_sec
de la sección readiness_check
del archivo app.yaml
para aumentar la cantidad de tiempo.
Si la implementación falla, asegúrate de que la API de Cloud Build esté habilitada en el proyecto. App Engine habilita esta API de forma automática la primera vez que implementas una app, pero si alguien inhabilitó la API luego, las implementaciones fallarán.
Implementa un servicio
Para implementar tu aplicación en App Engine, debes implementar versiones de sus servicios y cada uno de sus archivos de configuración.
Para implementar el servicio de tu aplicación, ejecuta el siguiente comando desde el directorio donde se encuentra ubicado el archivo app.yaml
del servicio:
gcloud app deploy
De forma predeterminada, el comando de gcloud app deploy
solo implementa el archivo app.yaml
en tu directorio actual. Cada vez que ejecutas este comando, App Engine genera un ID único para la versión que implementas, implementa la versión en el proyecto de Cloud en el que configuraste la CLI de gcloud y enruta todo el tráfico a la nueva versión. La versión nueva se convierte en la versión predeterminada.
Para cambiar el comportamiento predeterminado del comando gcloud app deploy
orienta los archivos específicos, especifica las versiones o incluye parámetros adicionales:
Puedes implementar los otros archivos de configuración de tu servicio si implementas y orientas 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 enrute de manera automática a la versión nueva, usa la marca
--no-promote
.Para realizar una implementación en un proyecto de Cloud específico, usa la marca
--project
.
Por ejemplo, para implementar el servicio que define app.yaml
en un proyecto específico de Cloud, asígnale un ID de versión personalizado y evita que el tráfico se enrute a la versión nueva:
gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote
Para obtener más información sobre este comando, consulta la referencia de gcloud app deploy
.
Implementa varios servicios
Puedes usar el mismo comando de implementación para implementar o actualizar varios de los servicios que conforman tu aplicación.
Para implementar varios servicios, debes implementar cada archivo app.yaml
del servicio por separado. Por ejemplo:
gcloud app deploy service1/app.yaml
gcloud app deploy service2/app.yaml
Puedes especificar varios archivos con un comando de implementación simple:
gcloud app deploy service1/app.yaml service2/app.yaml
Requisitos para implementar varios servicios
Debes implementar una versión de la aplicación en el servicio
default
antes de poder crear y, luego, implementar los servicios posteriores.El ID de cada uno de los servicios se debe especificar en los 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 se excluye la definición de este elemento del archivo de configuración, se implementa la versión en el serviciodefault
.
Omite archivos
Puedes usar un archivo .gcloudignore
para especificar los archivos y directorios que no se deben subir a Google Cloud cuando implementes los servicios. Esto es útil para ignorar artefactos de compilación y otros archivos que no necesitan subirse con la implementación.
Obtén más información sobre la sintaxis del archivo .gcloudignore
en la referencia de gcloud
.
Compila un contenedor para la implementación de forma manual
Para compilar las imágenes de contenedor fuera de Google Cloud Platform, primero debes subir las imágenes a un repositorio de imágenes de contenedor antes de poder implementarlas en App Engine con el comando gcloud app deploy
.
Por ejemplo, si compilas las imágenes de contenedor de manera local con Docker, puedes enviarlas a Google Container Registry y, luego, especificar la URL de la imagen en la marca --image-url
del comando:
gcloud app deploy --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGEPara obtener más información sobre cómo compilar tu propia imagen de contenedor, consulta la sección Ampliación del entorno de ejecución.
Cómo usar las canalizaciones de implementación continua y automática
Puedes utilizar Cloud Build para automatizar las implementaciones en las canalizaciones continuas. Para obtener más información, consulta Implementa artefactos y Automatiza compilaciones mediante activadores de compilación en la documentación de Cloud Build.
Visualiza tu aplicación
Una vez que implementes la aplicación en App Engine, puedes ejecutar el siguiente comando para iniciar el navegador y visualizarla en https://PROJECT_ID.REGION_ID.r.appspot.com
:
gcloud app browse
Realiza pruebas en App Engine
Antes de configurar una versión nueva para que reciba tráfico, puedes probarla en App Engine. Por ejemplo, para probar una versión nueva del servicio default
, sigue estos pasos:
Implementa la versión nueva e incluye la marca
--no-promote
:gcloud app deploy --no-promote
Accede a la nueva versión desde la siguiente URL:
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
Ahora puedes probar tu nueva versión en el entorno de ejecución de App Engine. Puedes depurar la aplicación si visualizas los registros en el Explorador de registros de Google Cloud Console. Para obtener más información, consulta Escribe registros de aplicaciones.
Las solicitudes enviadas a
https://PROJECT_ID.REGION_ID.r.appspot.com
se enrutarán a la versión que se configuró antes para recibir tráfico.Cuando desees enviar tráfico a la nueva versión, usa la consola de Google Cloud para migrar el tráfico:
Selecciona la versión que acabas de implementar y haz clic en Migrar tráfico.
Puedes usar el mismo proceso para probar las versiones nuevas de otros servicios si reemplazas default
en la URL por el nombre del servicio:
Soluciona problemas
Los siguientes son mensajes de error comunes que pueden surgir cuando implementas apps:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Si el proyecto de Cloud no incluye la aplicación de App Engine obligatoria, es posible que el comando
gcloud app deploy
falle cuando intente ejecutar el comandogcloud app create
. Solo las cuentas con función de propietario tienen los permisos necesarios para crear aplicaciones de App Engine. 502 Bad Gateway
- Es posible que el proyecto de Cloud falle cuando se inicie si
app.yaml
está mal configurado. Para obtener información detallada sobre los mensajes de error, consulta Verifica los registros de la app. [13] An internal error occurred while creating a Cloud Storage bucket.
App Engine crea un bucket multirregional de Cloud Storage predeterminado, en la misma región en la que se crea tu aplicación. Este bucket es necesario para almacenar el contenido de tu aplicación. Este error se muestra cuando no se puede crear este bucket en las siguientes situaciones:
El agente de servicio del entorno flexible de App Engine predeterminado no está presente en tu proyecto o no tiene el rol
App Engine flexible environment Service Agent
. Para volver a agregar la cuenta de servicio del agente en tu proyecto, otorga los permisos de IAM correctos.La cuenta de servicio de App Engine no está presente en tu proyecto. Si la cuenta de servicio de App Engine se quitó antes de que transcurran 30 días desde su eliminación, puedes restablecerla.
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 tu App Engine se creó. Deberás anular la políticaconstraints/gcp.resourceLocations
aplicada en el proyecto y permitir las ubicaciones multirregionales en la misma región en la que App Engine se creó.
[13] An internal error occurred.
Este error puede ocurrir si implementas tu servicio con una configuración de red mediante una configuración de VPC compartida. Asegúrate de que tu entorno flexible de App Engine cumpla con todos los requisitos para esta configuración. A continuación, asegúrate de que las cuentas de servicio configuradas para esta configuración estén presentes en tu proyecto; de lo contrario, tendrás que restablecer las cuentas. Ten en cuenta que la región de la subred en el proyecto host de la VPC compartida debe coincidir con la ubicación en la que se creó el entorno de App Engine.
Si el problema persiste después de asegurarte de que la configuración de
app.yaml
sea válida, usa el SDK de Google Cloud para volver a implementar el servicio, agrega la marca--verbosity=debug
y comunícate con la Asistencia de GCP proporcionando el resultado del comando.IP space of {USER_SUBNETWORK_NAME} is exhausted and needs to be expanded.
Si la implementación falla con este mensaje de error, significa que la red configurada para el servicio de App Engine no tiene direcciones que asignar a las instancias nuevas del servicio. Puedes resolver el problema si expandes los rangos de VPC en la subred configurada para tu servicio de entorno flexible de App Engine.