Varios factores pueden provocar errores de implementación en App Engine, como la falta de permisos, los cambios en las políticas de la organización y los problemas en la configuración de la aplicación.
En esta página se describen los siguientes errores de implementación habituales en App Engine y los métodos para solucionarlos:
Errores de permisos
En esta sección se describen los errores que pueden producirse al implementar tu aplicación debido a que faltan permisos de cuenta o a cambios en las políticas de la organización.
Para identificar la cuenta activa que usas para acceder a la CLI de Google Cloud y a otras herramientas de la plataforma Google Cloud , haz una de las siguientes acciones:
Si has usado la CLI de Google Cloud para realizar el despliegue, ejecuta el comando
gcloud auth list
.Si has implementado desde un IDE, consulta la configuración del complemento Cloud Tools.
Para saber por qué asignar solo el rol de desplegador de App Engine (roles/appengine.deployer
) puede no ser suficiente en algunos casos, consulta Roles de App Engine.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
La implementación falla en los proyectos nuevos
Es posible que veas el siguiente error cuando implementes tu aplicación por primera vez en un proyecto nuevo:
ERROR: (gcloud.app.deploy) Error Response: [13] Failed to create cloud build: com.google.net.rpc3.client.RpcClientException:..........invalid bucket "staging.PROJECT_ID.appspot.com"; service account PROJECT_ID@appspot.gserviceaccount.com does not have access to the bucket
Para resolver este problema, concede el rol Administrador de almacenamiento (roles/storage.admin
) a la cuenta de servicio predeterminada. Para obtener más información, consulta Almacenar registros de compilación en un bucket creado por un usuario.
Si ya has concedido el rol Administrador de almacenamiento, junto con los demás roles necesarios en función de los diferentes errores de permisos que se produzcan durante la implementación, y sigues sin poder implementar tu aplicación, puede deberse a los siguientes cambios en las políticas de la organización:
Desde mayo del 2024, Google Cloud aplica políticas de organización seguras de forma predeterminada a todos los recursos de la organización. Esta política impide que App Engine conceda el rol
Editor
a las cuentas de servicio predeterminadas de App Engine.En junio del 2024, Cloud Build cambió el comportamiento predeterminado de cómo usa las cuentas de servicio en los proyectos nuevos. Puedes consultar más detalles en el artículo sobre el cambio en la cuenta de servicio de Cloud Build. Como resultado de este cambio, es posible que los proyectos nuevos que implementen versiones por primera vez usen la cuenta de servicio predeterminada de App Engine con permisos insuficientes para implementar versiones.
Para solucionar este problema, sigue estos pasos:
Asigna el rol
Editor
a la cuenta de servicio predeterminada de App Engine (PROJECT_ID@appspot.gserviceaccount.com
).Consulta las directrices de Cloud Build sobre los cambios en la cuenta de servicio predeterminada y rechaza los cambios predeterminados en los proyectos nuevos.
El método llamador no tiene permiso para acceder al proyecto
Se produce el siguiente error si la cuenta de servicio no tiene permiso para desplegar aplicaciones en el proyecto actual:
User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist).
Para solucionar este problema, asigna el rol de implementador de App Engine (roles/appengine.deployer
)
a la cuenta de servicio.
No se han podido obtener los metadatos del registro
Se produce el siguiente error si usas el comando gcloud app deploy
desde una cuenta de servicio que no tiene el rol Administrador de Storage (roles/storage.admin
):
Failed to fetch metadata from the registry, with reason: generic::permission_denied
Para solucionar este problema, concede el rol Administrador de Storage a la cuenta de servicio.
Las cuentas de servicio deben tener permisos en la imagen
Se produce el siguiente error al implementar tu aplicación:
The App Engine appspot and App Engine flexible environment service accounts must
have permissions on the image IMAGE_NAME
Este error se produce por uno de los siguientes motivos:
La cuenta de servicio predeterminada de App Engine no tiene el rol Visor de objetos de Storage (
roles/storage.objectViewer
).Para solucionar este problema, asigna el rol Lector de objetos de Storage a la cuenta de servicio.
Tu proyecto tiene un perímetro de servicio de Controles de Servicio de VPC que limita el acceso a la API Cloud Storage mediante niveles de acceso.
Para resolver este problema, añade la cuenta de servicio que usas para desplegar tu aplicación a los accessPolicies del perímetro de servicio de Controles de Servicio de VPC correspondiente.
Después del 15 de mayo del 2024, Artifact Registry alojará imágenes del dominio
gcr.io
en proyectos Google Cloud sin uso previo de Container Registry. Si despliegas una aplicación en un proyecto nuevo creado después de esa fecha, es posible que la cuenta de servicio no tenga los permisos necesarios para desplegar la aplicación. Para conceder los permisos necesarios, consulta Desplegar en App Engine.
No se ha podido crear Cloud Build
Se produce el siguiente error si usas el comando gcloud app deploy
desde una cuenta de servicio que no tiene el rol Editor de Cloud Build (roles/cloudbuild.builds.editor
).
Failed to create cloud build: Permission denied
Para solucionar este problema, asigna el rol Editor de Cloud Build a la cuenta de servicio.
Error al obtener la aplicación
Se produce el siguiente error cuando la cuenta de servicio que has usado para desplegar tu aplicación no tiene el rol de desplegador de App Engine.
Permissions error fetching application apps/app_name. Please make sure you are using the correct project ID and that you have permission to view applications on the project.
If you are running Google Cloud CLI version 328 or later, the following error occurs
when you deploy your app:
make sure that you have permission to view applications on the project and that
SERVICE_ACCOUNT has the App Engine Deployer (roles/appengine.deployer) role.
Para solucionar este problema, asigna el rol de desplegador de App Engine a la cuenta de servicio que has usado para desplegar tu aplicación.
Error al implementar un servicio con un conector de Acceso a VPC sin servidor
Se produce el siguiente error cuando el usuario o la cuenta de servicio que intenta desplegar la aplicación con un conector de acceso a VPC sin servidor no tiene los permisos necesarios:
Please ensure you have [compute.globalOperations.get] on the service project
Para solucionar este problema, asegúrate de que el usuario o la cuenta de servicio que se usen para la implementación tengan los roles Usuario de acceso a VPC sin servidor y Lector de Compute IAM.
Se ha agotado el tiempo de espera para que la infraestructura de la aplicación esté en buen estado
Se produce el siguiente error al implementar tu aplicación:
Timed out waiting for the app infrastructure to become flex_await_healthy
Este error puede deberse a varios factores, como la falta de permisos, errores de código, una CPU o una memoria insuficientes o comprobaciones de estado fallidas.
Para solucionar este problema, descarta las siguientes causas posibles:
Comprueba si la política de la organización de tu proyecto restringe el acceso a direcciones IP externas. Para obtener más información, consulta los problemas conocidos del entorno flexible de App Engine.
Comprueba que has asignado los siguientes roles a la cuenta de servicio que usas para ejecutar tu aplicación (normalmente, la cuenta de servicio predeterminada,
app-id@appspot.gserviceaccount.com
):Concede los roles restantes en función de los errores de implementación, si la cuenta de servicio no los tiene.
Si realizas una implementación en una configuración de VPC compartida y configuras un
instance_tag
en tu archivoapp.yaml
, consulta el artículo Error de valor no válido al implementar en una configuración de VPC compartida para solucionar el problema.
Error al reiniciar instancias en versiones en ejecución
Se produce el siguiente error al implementar tu aplicación:
error when restarting the instance under the running versions
Desde mayo del 2024, Google Cloud aplica las políticas de organización seguras de forma predeterminada a todas las organizaciones nuevas. Esta política requiere que todas las instancias de VM creadas en proyectos nuevos habiliten VM Manager. En los proyectos nuevos o ya creados, esta restricción evita las actualizaciones de metadatos que inhabiliten Gestor de VMs a nivel de proyecto o de instancia.
Para solucionar este problema, debes inhabilitar la restricción de la política de organización
Require OS Config (constraints/compute.requireOsConfig
).
Si el problema persiste, también debes inhabilitar las siguientes políticas de la organización que pueden haberse habilitado a nivel de proyecto o de organización:
Define las IPs externas permitidas para las instancias de VM (
constraints/compute.vmExternalIpAccess
). Si tu aplicación está configurada para usar solo redes privadas, no tienes que inhabilitar esta restricción.Inhabilitar atributos de invitados de los metadatos de Compute Engine (
constraints/compute.disableGuestAttributesAccess
)
Permiso de compute.firewalls.list
obligatorio
Se produce el siguiente error al desplegar tu aplicación en una red de VPC compartida:
Request to https://compute.googleapis.com/compute/v1/projects/projects/PROJECT_ID/global/firewalls?key failed, details: Required 'compute.firewalls.list' permission for 'projects/PROJECT_ID'
Este error se produce si las siguientes cuentas de servicio del proyecto host no tienen el rol de usuario de red de Compute (roles/compute.networkUser
):
Para solucionar este problema, asigna el rol Usuario de red de Compute a las cuentas de servicio del agente de servicio de las APIs de Google y del agente de servicio del entorno flexible de App Engine del proyecto host.
La implementación falla debido a una restricción de la política de organización
Se produce el siguiente error al implementar una aplicación:
ERROR: (gcloud.app.deploy) Error Response: [13] An internal error occurred while processing task /app-engine-flex/....: Request to https://compute.googleapis.com/compute/VERSION/projects/PROJECT_ID/... failed, details: Constraint constraints/compute.disableGuestAttributesAccess violated for project PROJECT_ID.
Esto puede deberse a la aplicación de la restricción constraints/compute.disableGuestAttributesAccess
al desplegar tu aplicación. Todas las aplicaciones del entorno flexible de App Engine aplican esta política de organización de forma predeterminada.
Para solucionar este problema, debes inhabilitar la restricción constraints/compute.disableGuestAttributesAccess
.
Errores de implementación habituales
En esta sección se describen estrategias para solucionar errores de configuración en tu aplicación o proyecto.
Error de valor no válido al implementar en una configuración de VPC compartida
Al desplegar tu aplicación, se muestra el siguiente error en Cloud Logging para las instancias de VM flexibles:
Invalid value for field 'resource.tags.items[1]': 'aef-instance'. Duplicate
tags are not allowed: aef-instance on compute.instances.insert
Se trata de un problema conocido que se produce cuando se define instance_tag
en el archivo app.yaml
, lo que provoca errores al crear instancias.
Para solucionar el problema, quite el campo instance_tag
del archivo app.yaml
y vuelva a implementar.
Errores al implementar aplicaciones con tres o menos instancias máximas
Las aplicaciones implementadas con max_instances
definido en tres o menos pueden experimentar errores inesperados o tiempos de inactividad. Para resolver el problema, especifica al menos cuatro instancias máximas en el archivo app.yaml
y vuelve a implementar.
Superar el límite de instancias máximas
Se produce el siguiente error al implementar tu aplicación:
You may not have more than 'xx' total max instances in your project.
Hay un límite en el número máximo de instancias que puedes crear por proyecto. Si superas este límite, las solicitudes para crear instancias adicionales fallarán.
Para solucionar este problema, asigne al valor de max_instances
en su archivo app.yaml
un valor inferior a este límite o elimine algunos servicios o versiones para que la suma de max_instances
no supere el límite.
La compilación durante la implementación falla sin errores en los registros
Se produce el siguiente error al implementar tu aplicación:
ERROR: (gcloud.app.deploy) Cloud build failed. Check logs at https://console.cloud.google.com/cloud-build/builds/BUILD_ID?project=PROJECT_NUMBER Failure status: UNKNOWN: Error Response: [2] Build failed; check build logs for details
Si haces clic en el enlace del mensaje de error y ves que todos los pasos de compilación se han completado correctamente, pero la aplicación no se ha podido compilar, puede deberse a uno de los siguientes motivos:
- Usas claves de cifrado gestionadas por el cliente (CMEK).
- Has configurado una política de conservación de datos para tu segmento
staging.PROJECT_ID.appspot.com
.
Para solucionar este problema, cambia los siguientes ajustes de tu contenedor:
- Define el cifrado como Google-owned and Google-managed encryption keys.
- Elimina la política de conservación.
Errores al desplegar en una versión de App Engine
Puede producirse el siguiente error al implementar una versión en el entorno flexible de App Engine:
ERROR: (gcloud.app.deploy) Error Response: [9] An internal error occurred while
processing task /app-engine-flex/flex_await_healthy/flex_await_healthy
Este error indica que actualizar un despliegue incorrecto con una imagen Docker que funciona no siempre da como resultado un despliegue correcto. El resultado depende del estado de las instancias de la implementación que no está en buen estado. A pesar del error, si proporcionas una imagen de Docker adecuada, es posible que la implementación acabe funcionando correctamente. Aunque se permite actualizar una versión con una nueva imagen Docker, no es una práctica recomendada. No se puede restaurar una versión anterior en caso de fallo.
Error de IP interna al implementar en una configuración de VPC compartida
Puede que se produzca el siguiente error al implementar en una configuración de red de VPC compartida en un proyecto de servicio en el que se utiliza el ajuste de dirección IP privada predeterminado (private-ranges-only
).
ERROR: (gcloud.app.deploy) Error Response: [13] An internal error occurred.
Este error puede indicar que el agente de servicio del entorno flexible de App Engine del proyecto host de la VPC compartida no está disponible. Se ha quitado el agente de servicio del entorno flexible de App Engine o la API de App Engine no está habilitada en el proyecto host.
Para solucionar este problema, sigue estos pasos:
- Habilita la API App Engine en el proyecto host de la red de VPC compartida.
- Si la API de App Engine está habilitada, el agente de servicio del entorno flexible de App Engine no existe en el proyecto. Consulta Restaurar el rol necesario del agente de servicio.
Fallo de implementación debido a la falta de conectividad con las APIs de Google
Se produce el siguiente error al implementar tu aplicación:
Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe this was an error, try adjusting the app_start_timeout_sec setting in the readiness_check section.
Para solucionar este problema, asegúrate de que la VPC asociada a tu aplicación tenga una ruta estática local con el destino 0.0.0.0/0
y un salto siguiente de gateway de Internet predeterminado. Si usas servicios internos privados, habilita PGA en la subred seleccionada.