Implementa tu aplicación para subirla y ejecutarla en App Engine. Cuando implementas tus aplicaciones, creas versiones de esas aplicaciones y los servicios correspondientes en App Engine. Puedes implementar apps completas, incluidos todos los archivos de configuración y de código fuente, o bien puedes implementar y actualizar versiones o archivos de configuración individuales.
Para implementar tus aplicaciones de manera programática, utiliza la API de administrador.
Antes de comenzar
Antes de que implementes la app, ten en cuenta lo siguiente:
El propietario del proyecto de Google Cloud debe crear la aplicación de App Engine.
Asegúrate de que tu cuenta de usuario tenga los privilegios necesarios.
Otorga a Cloud Build permiso para implementar apps en tu proyecto. Cuando implementas la app, App Engine usa Cloud Build para compilarla en un contenedor, así como implementar el contenedor en el entorno de ejecución en la región de la app. Cloud Build no tiene permiso para implementar apps de Java 8 de forma predeterminada, por lo que debes otorgarle permiso antes de poder implementarlas.
Configura la herramienta de compilación de Maven (recomendado)
A fin de implementar la aplicación con la herramienta de compilación de Maven, debes configurar tu proyecto para usar el complemento de Maven para App Engine.
- Instala la CLI de gcloud, el componente
app-engine-java
y accede. - Compila y crea tu proyecto con el complemento de Maven.
Instala la CLI de gcloud
Para implementar la app con la CLI de gcloud, debes descargar, instalar e inicializar la CLI de gcloud.
Si ya tienes la CLI de gcloud instalada y deseas configurarla para usar un ID del proyecto de Google Cloud distinto del que usaste en su inicialización, consulta Administra las opciones de configuración de la CLI de gcloud.
Usa 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 establecer un username
y una password
para el proxy. Para obtener más información, consulta el archivo de configuración de gcloud.
Implementa una aplicación
Para implementar tu aplicación en App Engine, usa la herramienta de compilación de Maven (se recomienda) o el comando gcloud app deploy
desde el directorio raíz de tu aplicación.
Utiliza Maven (recomendado)
Para implementar tu app con la herramienta de compilación de 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
Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud. Si tu archivo pom.xml
ya especifica tu ID del proyecto, no necesitas incluir la propiedad -Dapp.deploy.projectId
en el comando que ejecutas.
Uso de la línea de comandos de gcloud
gcloud app deploy [CONFIGURATION_FILES]
Reemplaza [CONFIGURATION_FILES]
con la ruta a uno o más archivos de configuración.
Usa un solo espacio en blanco para separar los nombres de ruta.
Marcas opcionales:
--version
: Especifica un ID de versión personalizado. Si no especificas 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 todo el tráfico.--project
: Especifica un ID del proyecto de Google Cloud alternativo al que inicializaste como predeterminado en la CLI de gcloud.
Para obtener más información, consulta la referencia de gcloud app deploy
o ejecuta gcloud help
desde la línea de comandos.
Elige ID de versión únicos
El ID de versión de las instancias escaladas de forma manual debe comenzar con una letra para distinguirlo de los ID numéricos de las instancias. De esta manera, te aseguras de que las solicitudes se enruten al destino correcto y evitas la ambigüedad en los patrones de URL como123-dot-my-service.[REGION_ID].r.appspot.com
, que pueden interpretarse de dos maneras:
- Si existe la versión
123
, la solicitud se enruta a la versión123
del serviciomy-service
. - Si la versión
123
no existe, la solicitud se enruta al ID de instancia123
en el que se ejecutan las versiones del serviciomy-service
.
Puedes nombrar de la manera que quieras las versiones de las instancias configuradas con ajuste de escala automático o básico, ya que no se admite la orientación hacia esas instancias.
Implementa aplicaciones de varios servicios
Cuando tu aplicación incluye varios servicios, puedes implementar y actualizar servicios determinados de manera individual o todos los servicios en simultáneo. La implementación de actualizaciones en los servicios puede incluir la actualización de archivos de configuración individuales o del código fuente en las versiones correspondientes.
Por ejemplo, puedes implementar y crear dos versiones en App Engine, de modo que cada versión se ejecute en su propio servicio. La primera versión actúa como el servicio de frontend de la app y la otra como su backend. Luego, puedes implementar archivos de configuración individuales para actualizar solo la configuración de un servicio. También puedes optar por implementar una versión nueva en un servicio para actualizar el código fuente del frontend, del backend o de ambos de manera simultánea.
Requisitos para servicios varios
Para implementar y actualizar los servicios múltiples de tu aplicación, debes usar los mismos comandos de implementación y cumplir los siguientes requisitos:
Primero debes implementar una versión de la app en el servicio
default
, antes de poder crear e implementar los servicios posteriores.Debes especificar el ID del servicio en el archivo de configuración
appengine-web.xml
de la versión correspondiente. Para especificar el ID del servicio, incluye la definición del elementomodule: [YOUR_SERVICE_ID]
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
.Tienes que especificar todos los archivos de configuración
appengine-web.xml
correspondientes en tu comando de implementación para implementar varios servicios en simultáneo. El serviciodefault
debe aparecer en primer lugar.
Implementa varios servicios
Desde el directorio raíz de la aplicación, en el que se ubican los archivos de configuración, ejecuta el comando de implementación, y especifica las rutas de acceso y los nombres de archivo relacionados de cada archivo appengine-web.xml
del servicio.
Usa la herramienta de compilación de Maven
Si el directorio raíz de tu proyecto contiene solo tus servicios, puedes implementarlos todos juntos con un solo comando de Maven.
El comando de implementación de Maven itera a través de cada uno de los servicios de tu proyecto para ubicar sus archivos de configuración y, luego, implementar cada servicio.
Para implementar varios servicios con el complemento de Maven, sigue estos pasos:
- Asegúrate de haber agregado appengine-maven-plugin en tu archivo
pom.xml
superior. Ejecuta el siguiente comando:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud. Si tu archivo
pom.xml
ya especifica tu ID del proyecto, no necesitas incluir la propiedad-Dapp.deploy.projectId
en el comando que ejecutas.
Usa gcloud
gcloud app deploy [CONFIGURATION_FILES]
Reemplaza [CONFIGURATION_FILES]
con la ruta a uno o más archivos de configuración.
Usa un solo espacio en blanco para separar los nombres de ruta.
A medida que los distintos servicios se implementen correctamente, recibirás la verificación a través de la línea de comandos.
Visualiza registros de compilación
Cloud Build transmite y, luego, implementa registros que se pueden ver en la sección del historial de Cloud Build de la consola de Google Cloud. Para ver las compilaciones en una región de la app, usa el menú desplegable Región en la parte superior de la página a fin de elegir la región que deseas filtrar.
Actualiza índices
Para crear o actualizar los índices que usan tus apps, sube el archivo de configuración datastore-indexes.xml
a Datastore. Los índices que todavía no existen se crean luego de subir el archivo de configuración.
Es posible que le lleve un tiempo considerable a Datastore crear todos los índices, por lo que estos no estarán disponibles de inmediato para App Engine. Si tu app ya está configurada para recibir tráfico, pueden generarse excepciones ante consultas que requieran un índice que aún se encuentra en proceso de creación.
A fin de evitar las excepciones, tienes que destinar el tiempo necesario para que se creen todos los índices, por ejemplo, de las siguientes maneras:
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 consola de Google Cloud para supervisar el estado de todos los índices:
Una vez que se hayan creado todos los índices, implementa la versión nueva en App Engine.
Crea los índices antes de dividir o migrar el tráfico a tu versión:
- Define un nuevo ID de versión en el archivo
appengine-web.xml
de tu app. - Implementa la versión nueva.
- Utiliza la consola de Google Cloud para supervisar el estado de todos tus índices:
- Una vez que se hayan creado todos los índices, usa la consola de Google Cloud para dividir el tráfico o migrarlo a la versión:
- Define un nuevo ID de versión en el archivo
Si quieres obtener más información sobre índices, consulta Cómo configurar los índices en Datastore.
Solución de problemas
A continuación, se muestran algunos mensajes de error comunes que puedes encontrar:
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Si el proyecto de Google 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 rol de propietario tienen los permisos necesarios para crear aplicaciones de App Engine. Command not found
- Consulta Usa el servidor de desarrollo local para obtener instrucciones para configurar la herramienta del servidor de desarrollo local.
Import Error
- Si instalaste la CLI de gcloud y el SDK de App Engine original, las entradas a tu RUTA DE ACCESO podrían entrar en conflicto unas con otras y causar errores de importación. Si recibiste errores cuando ejecutaste los comandos de gcloud CLI, 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 que puedas implementar y crear los varios servicios de la aplicación, debes implementar y crear el servicio
default
. Para obtener detalles sobre cómo implementar una versión en el serviciodefault
, consulta la sección Implementa aplicaciones de varios servicios. Too Many Versions (403)
- App Engine tiene un límite en cuanto a la cantidad de versiones implementadas de la aplicación. Existen diferencias entre el límite para las aplicaciones gratuitas y las implementadas.
Puedes usar la consola de Google Cloud para borrar una versión anterior y, luego, subir tu código más reciente.
You do not have permission to modify this app (403)
- Esto puede ocurrir cuando la cuenta en la que estás autenticado no tiene permiso para implementar en el ID de aplicación que se especifica en tu comando o en tu
appengine-web.xml
. Comprueba que tu ID de aplicación sea preciso y que coincida con el valor del ID del proyecto de la consola de Google Cloud. A continuación, comprueba los permisos del proyecto en la consola y verifica que tu cuenta posea un nivel de permisos suficiente para poder implementar aplicaciones. [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. Se muestra este error cuando no se puede crear este bucket en las siguientes situaciones:
La cuenta de servicio de App Engine predeterminada no está presente en tu proyecto. Si tu cuenta se quitó antes de que transcurrieran 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 el archivo de configuración
app.yaml
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 crea el conector de Acceso a VPC sin servidores.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 Cloud; para ello, proporciona el resultado del comando.- Otro error de implementación
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.
Próximos pasos
- Utiliza servicios para crear una aplicación grande.
- Divide el tráfico o mígralo para enrutarlo hacia las versiones que implementes.
- Revisa las marcas y los argumentos de línea de comandos de
gcloud app deploy
.