Despliega tu aplicación para subirla y ejecutarla en App Engine. Cuando despliegas tus aplicaciones, creas versiones de esas aplicaciones y sus servicios correspondientes en App Engine. Puedes desplegar aplicaciones completas, incluido todo el código fuente y los archivos de configuración, o bien desplegar y actualizar versiones o archivos de configuración concretos.
Para desplegar tus aplicaciones de forma programática, usa la API Admin.
Antes de empezar
Antes de poder desplegar tu aplicación, debes hacer lo siguiente:
El propietario del proyecto Google Cloud debe crear la aplicación de App Engine.
Asegúrate de que tu cuenta de usuario incluya los privilegios necesarios.
Concede permiso a Cloud Build para implementar aplicaciones en tu proyecto. Cuando despliegas tu aplicación, App Engine usa Cloud Build para compilar la aplicación en un contenedor y desplegar el contenedor en el tiempo de ejecución de la región de la aplicación. Cloud Build no tiene permiso para desplegar aplicaciones Java 8 de forma predeterminada, por lo que debes conceder permiso antes de poder desplegar aplicaciones.
Configurar la herramienta de compilación Maven (opción recomendada)
Para desplegar tu aplicación con la herramienta de compilación Maven, debes configurar tu proyecto para que use el complemento de Maven para App Engine.
- Instala gcloud CLI y el componente
app-engine-java
e inicia sesión. - Compilar y crear un proyecto con el complemento de Maven
Instalar gcloud CLI
Para desplegar tu aplicación con gcloud CLI, debes descargar, instalar e inicializar gcloud CLI.
Si ya tienes instalada la CLI de gcloud y quieres configurarla para que use un ID de proyecto distinto del que usaste para inicializarla, consulta Gestionar configuraciones de la CLI de gcloud. Google Cloud
Utilizar un proxy
Si ejecutas el comando de implementación desde un sistema que usa un proxy HTTP o HTTPS, debes configurar la herramienta para que pueda comunicarse a través del proxy.
Ejecuta los siguientes comandos para configurar la CLI de gcloud:
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
También puedes definir un username
y un password
para el proxy. Para obtener más información, consulta gcloud config.
Desplegar una aplicación
Para desplegar tu aplicación en App Engine, usa la herramienta de compilación Maven (recomendada) o el comando gcloud app deploy
desde el directorio raíz de tu aplicación.
Usar Maven (opción recomendada)
Para desplegar tu aplicación con la herramienta de compilación Maven, ejecuta el siguiente comando desde el directorio de nivel superior de tu proyecto, donde se encuentra el archivo pom.xml
:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sustituye PROJECT_ID por el ID de tu Google Cloud proyecto. Si tu archivo pom.xml
ya especifica tu ID de proyecto, no es necesario que incluyas la propiedad -Dapp.deploy.projectId
en el comando que ejecutes.
Usar la línea de comandos gcloud
gcloud app deploy [CONFIGURATION_FILES]
Sustituye [CONFIGURATION_FILES]
por la ruta a uno o varios archivos de configuración.
Usa un solo espacio en blanco para separar los nombres de ruta.
Marcas posibles
--version
: especifica un ID de versión personalizado. Si no especifica un ID de versión, App Engine genera uno.--no-promote
: implementa tu aplicación sin enrutar automáticamente todo el tráfico a esa versión. De forma predeterminada, cada versión que implementes se configura automáticamente para recibir el 100% del tráfico.--project
: especifica un ID de proyecto Google Cloud alternativo al que has inicializado como predeterminado en gcloud CLI.
Para obtener más información, consulta la gcloud app deploy
referencia
o ejecuta gcloud help
desde la línea de comandos.
Elegir IDs de versión únicos
En el caso de las instancias escaladas manualmente, el ID de la versión debe empezar por una letra para distinguirlas de los IDs de instancia numéricos. De esta forma, las solicitudes se dirigen al destino correcto y se evita la ambigüedad con patrones de URL como123-dot-my-service.[REGION_ID].r.appspot.com
, que se pueden interpretar de dos formas:
- Si existe la versión
123
, la solicitud se enruta a la versión123
del serviciomy-service
. - Si no existe la versión
123
, la solicitud se enruta al ID de instancia123
, donde se ejecutan las versiones del serviciomy-service
.
Puedes asignar el nombre que quieras a las versiones de las instancias configuradas para el escalado automático o básico, ya que no se admite la segmentación de esas instancias.
Desplegar varias aplicaciones de servicio
Cuando tu aplicación se factoriza en varios servicios, puedes implementar y actualizar servicios específicos o todos los servicios simultáneamente. Para implementar actualizaciones en los servicios, se pueden actualizar los archivos de configuración individuales o el código fuente de las versiones correspondientes.
Por ejemplo, puedes desplegar y crear dos versiones en App Engine, donde cada versión se ejecuta en su propio servicio. La primera versión actúa como servicio frontend y la otra como backend de tu aplicación. Después, puedes desplegar archivos de configuración individuales para actualizar solo los ajustes de un servicio. También puedes desplegar una nueva versión en un servicio para actualizar el código fuente del frontend, el backend o ambos simultáneamente.
Requisitos de varios servicios
Para desplegar y actualizar los distintos servicios de tu aplicación, debes usar los mismos comandos de implementación y cumplir los siguientes requisitos:
Primero debes desplegar una versión de tu aplicación en el servicio
default
para poder crear y desplegar otros servicios.Debe especificar el ID de su servicio en el archivo de configuración
appengine-web.xml
de la versión correspondiente. Para especificar el ID de servicio, incluye la definición del elementomodule: [YOUR_SERVICE_ID]
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
.Debes especificar todos los archivos de configuración
appengine-web.xml
correspondientes en el comando de implementación para implementar varios servicios simultáneamente. El serviciodefault
debe aparecer en primer lugar.
Para implementar varios servicios
Desde el directorio raíz de la aplicación donde se encuentran los archivos de configuración, ejecuta el comando de implementación y especifica las rutas relativas y los nombres de archivo de cada archivo appengine-web.xml
de servicio.
Usar la herramienta de compilación Maven
Si el directorio raíz de tu proyecto solo contiene tus servicios, puedes desplegar todos esos servicios con un solo comando de Maven.
El comando de despliegue de Maven itera por cada uno de los servicios de tu proyecto para localizar sus archivos de configuración y, a continuación, desplegar cada servicio.
Para desplegar varios servicios con el complemento de Maven, sigue estos pasos:
- Asegúrate de que se ha añadido appengine-maven-plugin a tu archivo parent
pom.xml
. Ejecuta el siguiente comando:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Sustituye PROJECT_ID por el ID de tu Google Cloud proyecto. Si tu archivo
pom.xml
ya especifica tu ID de proyecto, no es necesario que incluyas la propiedad-Dapp.deploy.projectId
en el comando que ejecutes.
Usar gcloud
gcloud app deploy [CONFIGURATION_FILES]
Sustituye [CONFIGURATION_FILES]
por la ruta a uno o varios archivos de configuración.
Usa un solo espacio en blanco para separar los nombres de ruta.
Recibirás una verificación a través de la línea de comandos a medida que se implemente cada servicio correctamente.
Ver registros de compilación
Cloud Build transmite registros de compilación y despliegue que se pueden ver en la sección Historial de Cloud Build de laGoogle Cloud consola. Para ver las compilaciones de la región de la aplicación, usa el menú desplegable Región de la parte superior de la página para elegir la región por la que quieras filtrar.
Actualizar índices
Para crear o actualizar los índices que usan tus aplicaciones, sube el archivo de configuración datastore-indexes.xml
a Datastore. Los índices que aún no existen se crean después de subir el archivo de configuración.
Datastore puede tardar un tiempo en crear todos los índices, por lo que estos no estarán disponibles inmediatamente para App Engine. Si tu aplicación ya está configurada para recibir tráfico, pueden producirse excepciones en las consultas que requieran un índice que aún esté en proceso de creación.
Para evitar excepciones, debes dejar tiempo para que se creen todos los índices. Por ejemplo:
Sube el archivo de configuración
index.xml
a Datastore antes de implementar tu versión:Sube el archivo
index.xml
a Datastore: Para obtener información, consulta la referencia degcloud datastore indexes create index.yaml
gcloud datastore
.Usa la Google Cloud consola para monitorizar el estado de todos tus índices:
Una vez que se hayan creado todos los índices, despliega la nueva versión en App Engine.
Crea los índices antes de migrar o dividir el tráfico a tu versión:
-
Define un nuevo ID de versión en el archivo
appengine-web.xml
de tu aplicación. - Despliega la nueva versión.
- Usa la Google Cloud consola para monitorizar el estado de todos tus índices:
- Una vez que se hayan creado todos los índices, usa la Google Cloud consola para migrar o dividir el tráfico a tu versión:
-
Define un nuevo ID de versión en el archivo
Para obtener más información sobre los índices, consulta Configurar índices de Datastore.
Solución de problemas
A continuación se indican algunos de los mensajes de error más habituales:
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. Command not found
- Consulta Utilizar el servidor de desarrollo local para obtener instrucciones sobre cómo configurar la herramienta del servidor de desarrollo local.
Import Error
- Si has instalado tanto la CLI de gcloud como el SDK de App Engine original, las entradas de tu PATH podrían entrar en conflicto y provocar errores de importación. Si has recibido errores al ejecutar comandos de la CLI de gcloud, sigue las instrucciones para ejecutar el servidor de desarrollo local.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
- Antes de desplegar y crear los distintos servicios de tu aplicación, debes desplegar y crear el
default
servicio. Para obtener información sobre cómo desplegar una versión en el serviciodefault
, consulta el artículo Desplegar varias aplicaciones de servicio .
Too Many Versions (403)
- App Engine tiene un límite en el número de versiones desplegadas de tu aplicación. Estos datos son diferentes para las aplicaciones gratuitas y las aplicaciones implementadas.
Puedes usar la Google Cloud consola
para eliminar una versión anterior y, a continuación, subir tu código más reciente.
You do not have permission to modify this app (403)
- Esto puede ocurrir cuando la cuenta con la que te has autenticado no tiene permiso para implementar en el ID de aplicación especificado en tu comando o en tu
appengine-web.xml
. Comprueba que el ID de aplicación sea correcto y coincida con el valor del Google Cloud console ID de proyecto. A continuación, comprueba los permisos del proyecto en la consola y verifica que tu cuenta aparece con un nivel de permiso suficiente para permitir la implementación de aplicaciones. [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 se crea tu aplicación. Este contenedor es necesario para almacenar el contenido de tu aplicación. Este error se devuelve cuando no se puede crear este segmento en los siguientes casos:
La cuenta de servicio de App Engine predeterminada no está presente en tu proyecto. Si tu cuenta se ha eliminado antes de que transcurrieran 30 días desde su eliminación, puedes restaurarla.
Tu proyecto pertenece a 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. Deberás 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.
[13] An internal error occurred
Este error puede producirse si el archivo de
app.yaml
configuración de App Engine contiene un recurso no válidoname
en la clavevpc_access_connector
. Asegúrate de que el camponame
contenga el proyecto y la región correctos en los que se ha creado el conector de acceso a VPC sin servidor.Si el problema persiste después de comprobar que la configuración de
app.yaml
es válida, usa el SDK de Google Cloud para volver a implementar el servicio, añade la--verbosity=debug
marca y ponte en contacto con el servicio de asistencia de Cloud proporcionando el resultado del comando.- Otro error de despliegue
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 implementas una aplicación, pero si alguien ha inhabilitado la API, las implementaciones fallarán.
Siguientes pasos
- Usa servicios para crear una aplicación grande.
- Dividir el tráfico o migrar el tráfico para dirigir el tráfico a las versiones que implementes.
- Consulta los
gcloud app deploy
argumentos de línea de comandos y las marcas.