En esta página, se describen métodos de solución de problemas para los errores que puedes encontrar cuando usas App Engine.
Consulta el Panel de Google Cloud Service Health para obtener información acerca de los incidentes que afectan a los servicios de Google Cloud, como App Engine.
Implementación
Si tienes problemas para implementar tu aplicación con la API de App Engine Admin, en esta sección, se muestran los mensajes de error y las sugerencias para corregir cada error.
El emisor no tiene permiso para acceder al proyecto
El siguiente error ocurre cuando implementas tu app:
User EMAIL_ADDRESS does not have permission to access project PROJECT_ID (or it may not exist): The caller does not have permission
Este error se produce si la cuenta que usaste en la implementación de la app no tiene permiso para implementar apps en el proyecto actual.
Para resolver este problema, otorga la función de implementador de App Engine (roles/appengine.deployer
) a la cuenta. Si deseas ver qué cuenta usaste para realizar la implementación, realiza una de las siguientes acciones:
- Si usaste Google Cloud CLI para realizar la implementación, ejecuta el comando
gcloud auth list
. - Si realizaste la implementación desde un IDE, consulta la configuración del complemento de Cloud Tools.
No se pudieron recuperar los metadatos del registro
El siguiente error ocurre cuando implementas tu app:
Failed to fetch metadata from the registry, with reason: generic::permission_denied
Este error se produce si usas el comando gcloud app deploy
desde una cuenta de servicio que no tiene la función de administrador de almacenamiento (roles/storage.admin
).
Para resolver este problema, otorga la función de administrador de almacenamiento a la cuenta de servicio:
- Para ver qué cuenta usaste, ejecuta el comando
gcloud auth list
. - Para comprender por qué asignar solo la función de implementador de App Engine (
roles/appengine.deployer
) no es suficiente en algunos casos, consulta Funciones de App Engine.
Las cuentas de servicio deben tener permisos en la imagen
El siguiente error ocurre cuando implementas tu app:
The App Engine appspot and App Engine flexible environment service accounts must have permissions on the image IMAGE_NAME
Este error ocurre por uno de los siguientes motivos:
La cuenta de servicio predeterminada de App Engine no tiene la función de visualizador de objetos de almacenamiento (
roles/storage.objectViewer
).- Para resolver este problema, otorga la función de visualizador de objetos de Storage a la cuenta de servicio.
Tu proyecto tiene un perímetro de servicio de VPC que limita el acceso a la API de Cloud Storage mediante los niveles de acceso.
- A fin de resolver este problema, agrega la cuenta de servicio que usas para implementar tu app en el perímetro de servicio de VPC accessPolicies correspondiente.
No se pudo crear Cloud Build
El siguiente error ocurre cuando implementas tu app:
Failed to create cloud build: Permission denied
Este error ocurre si usas el comando gcloud app deploy
desde una cuenta que no tiene la función de editor de Cloud Build (roles/cloudbuild.builds.editor
).
Para resolver este problema, otorga la función de editor de Cloud Build a la cuenta de servicio que usas para implementar tu app.
Para ver qué cuenta usaste, ejecuta el comando gcloud auth list
.
Error de permisos cuando se recupera la aplicación
El siguiente error ocurre cuando implementas tu app:
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
Si ejecutas la versión 328 o posterior de Google Cloud CLI, se produce el siguiente error cuando implementas tu app:
Permissions error fetching application apps/app_name. Please 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.
Este error ocurre si la cuenta que usaste para implementar tu
app no tiene el rol de implementador de App Engine
(roles/appengine.deployer
).
Para resolver este problema, verifica si otorgaste la función de implementador de App Engine a la cuenta de servicio que usaste para implementar tu app. Otorga la función si la cuenta de servicio no la tiene. Si deseas ver qué cuenta usaste para realizar la implementación, realiza una de las siguientes acciones:
- Si usaste Google Cloud CLI para realizar la implementación, ejecuta el comando
gcloud auth list
. - Si realizaste la implementación desde un IDE, consulta la configuración del complemento de Cloud Tools.
La implementación falla para los proyectos nuevos
Es posible que veas el siguiente error cuando implementes tu app 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
Varios factores pueden causar este error, como permisos faltantes y cambios en las políticas de la organización.
Para resolver este problema, verifica si otorgaste el rol Administrador de almacenamiento (roles/storage.admin
) a la
cuenta de servicio predeterminada. Para otorgar el rol de administrador de almacenamiento, consulta Almacena registros de compilación en un bucket creado por el usuario.
Si ya otorgaste el rol de administrador de almacenamiento, junto con otros roles necesarios según los diferentes errores de permiso que encuentres durante la implementación y aún no puedas implementar tu app, es posible que se deba a los siguientes cambios en las políticas de la organización:
A partir de mayo de 2024, Google Cloud aplica políticas seguras de forma predeterminada para todos los recursos de la organización. Estas políticas evitan que App Engine otorgue el rol
Editor
a las cuentas de servicio predeterminadas de App Engine de forma predeterminada.A partir de junio de 2024, Cloud Build cambió el comportamiento predeterminado de la forma en que Cloud Build usa cuentas de servicio en proyectos nuevos. Este cambio se detalla en Cambio de cuenta de servicio de Cloud Build. Como resultado de este cambio, es posible que los proyectos nuevos que implementan versiones por primera vez usen la cuenta de servicio predeterminada de App Engine con permisos insuficientes para implementar versiones.
Para solucionar este problema, haz lo siguiente:
Otorga el rol
Editor
a la cuenta de servicio predeterminada de App Engine (PROJECT_ID@appspot.gserviceaccount.com
).Revisa la guía de Cloud Build sobre los cambios en la cuenta de servicio predeterminada y, también, inhabilita los cambios predeterminados en los proyectos nuevos.
Se agotó el tiempo de espera para que la infraestructura de la app alcance un buen estado
El siguiente error ocurre cuando implementas tu app:
Timed out waiting for the app infrastructure to become healthy
Varios factores pueden causar este error, como permisos faltantes, errores de código, CPU o memoria insuficientes o verificaciones de estado con errores. El error solo ocurre en el entorno flexible de App Engine.
Para resolver este problema, descarta las siguientes causas posibles:
- Verifica si otorgaste el rol de editor (
roles/editor
) a la cuenta de servicio predeterminada de App Engine. - Verifica si la política de la organización del proyecto restringe el acceso a las direcciones IP externas. Para obtener más información, consulta Problemas conocidos del entorno flexible de App Engine.
Verifica si otorgaste las siguientes funciones a la cuenta de servicio que usas para ejecutar tu aplicación (por lo general, la cuenta de servicio predeterminada,
app-id@appspot.gserviceaccount.com
):Otorga las funciones si la cuenta de servicio no las tiene.
Si implementas en la configuración de VPC compartida y pasas
instance_tag
enapp.yaml
, consulta esta sección para solucionar el problema.
Error de permisos cuando se implementa un servicio con el conector de Acceso a VPC sin servidores
El siguiente error ocurre cuando implementas tu app:
Please ensure you have [compute.globalOperations.get] on the service project
Este error se produce cuando el usuario o la cuenta de servicio que intenta implementar la app con el conector de VPC sin servidores no tiene los permisos necesarios.
Para resolver este problema, asegúrate de que la cuenta de usuario o servicio que realiza la implementación tenga funciones de usuario de Acceso a VPC sin servidores y de visualizador de IAM para Compute.
Error de valor no válido cuando se realizan implementaciones en una configuración de VPC compartida
El siguiente error se muestra en Cloud Logging para las instancias de VM de Flex cuando implementas tu app:
Invalid value for field 'resource.tags.items[1]': 'aef-instance'. Duplicate tags are not allowed: aef-instance on compute.instances.insert
Este error se debe a un problema conocido actual en el que la configuración de instance_tag genera errores cuando se crean instancias.
Para resolver el problema, quita el campo instance_tag
del archivo app.yaml
y vuelve a implementarlo.
Errores en la implementación de apps con tres instancias como máximo o menos
Las apps implementadas con max_instances
establecido en 3 o menos pueden experimentar errores o tiempos de inactividad inesperados. Para resolver el
problema, especifica al menos cuatro instancias máximas en tu archivo app.yaml
y vuelve a implementar.
Error cuando se excede el límite de instancias máximas
El siguiente error ocurre cuando implementas tu app:
You may not have more than 'xx' total max instances in your project.
Existe un límite para la cantidad máxima de instancias que puedes crear por proyecto. Las solicitudes para crear instancias adicionales fallan si superas este límite.
Para resolver este problema, establece el valor de max_instances
en tu archivo app.yaml
a un valor inferior a este límite
o borra algunos servicios o versiones para incorporar la suma de max_instances
dentro
del límite.
Se produce un error cuando se reinician instancias con versiones en ejecución.
El siguiente error ocurre cuando implementas tu app:
error when restarting the instance under the running versions
A partir de mayo de 2024, Google Cloud aplica la política de la organización Exigir configuración del SO para todos los proyectos nuevos. Esta política requiere que todas las instancias de VM creadas en proyectos nuevos tengan habilitado un administrador de VMs. En los proyectos nuevos y existentes, esta restricción impide las actualizaciones de metadatos que inhabilitan VM Manager a nivel del proyecto o de la instancia.
Para resolver este problema, debes inhabilitar la restricción de la política de la organización constraints/compute.requireOsConfig
.
Se requiere el permiso “compute.firewalls.list”.
El siguiente error se produce cuando implementas tu app 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 la red de Compute (roles/compute.networkUser
):
A fin de resolver este problema, verifica si otorgaste la función de usuario de Compute Network a las cuentas de servicio del agente de servicio de las API de Google y del entorno flexible de App Engine para el proyecto host. Otorga la función si las cuentas de servicio no la tienen.
La compilación durante la implementación falla sin errores en los registros
El siguiente error ocurre cuando implementas tu app:
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 sigues el vínculo en el mensaje de error, se mostrará que todos los pasos de compilación se completaron correctamente. Sin embargo, no se pudo compilar la app.
Este problema se produce si usas claves de encriptación administradas por el cliente
(CMEK) o si configuraste una política de retención de datos
para tu bucket staging.PROJECT_ID.appspot.com
.
A fin de solucionar este problema, cambia la siguiente configuración para
tu bucket staging.PROJECT_ID.appspot.com
:
- Configura la encriptación como claves de Google y claves administradas por Google.
- Quita la política de retención.
La implementación falla debido a una restricción de la política de la organización
El siguiente error ocurre cuando implementas tu app:
ERROR: (gcloud.app.deploy) Error Response: [13] An internal error occurred while processing task /app-engine-flex/....: Request to https://compute.googleapis.com/compute/[VERSSION]/[PROJECT_ID]/... failed, details: Constraint constraints/compute.disableGuestAttributesAccess violated for project [PROJECT_ID].
Este error puede ocurrir debido a la aplicación de la restricción de la política de la organización constraints/compute.disableGuestAttributesAccess
cuando se implementa tu app. Esta política se aplica de forma predeterminada a todas las apps del entorno flexible de App Engine.
Para resolver este problema, debes inhabilitar la restricción de la política de la organización constraints/compute.disableGuestAttributesAccess
.
Errores en la implementación en una versión de entorno flexible existente
El siguiente error puede ocurrir cuando se implementa en una versión 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 una implementación en mal estado con una imagen de Docker que funciona no siempre da como resultado una implementación en buen estado. El resultado depende del estado de las instancias de la implementación en mal estado. A pesar del error, si proporcionas una buena imagen de Docker, la implementación podría llegar a estar en buen estado. No se recomienda actualizar una versión existente con una nueva imagen de Docker, aunque está permitida. No hay reversión en caso de falla de la versión.
Entrega errores
En las siguientes secciones, se abordan los errores de inicialización y entrega de la app.
Error de permiso cuando se crea una app con la cuenta de servicio predeterminada
Cuando creas una app después de habilitar la API de App Engine por primera vez, falla con los siguientes errores:
gcloud CLI
An internal error occurred while calling service consumer manager for service account.
Creating App Engine application in project [PROJECT__ID] and [REGION]....failed. DEBUG: (gcloud.app.create) Error Response: [13] an internal error has occurred
Solicita registros.
Service account creation is not allowed on this project.
Console
Error while initialising App Engine.
Este error puede ocurrir debido a la aplicación de la restricción de la política de la organización constraints/iam.disableServiceAccountCreation
cuando se crea tu
app. Esta política evita el aprovisionamiento de la cuenta de servicio predeterminada de App Engine PROJECT_ID@appspot.gserviceaccount.com
.
Para resolver este problema, debes quitar de forma temporal la restricción constraints/iam.disableServiceAccountCreation
de la política de la organización para permitir la creación y la implementación de la cuenta de servicio predeterminada de App Engine. La cuenta
de servicio predeterminada es necesaria para crear la app y no se puede omitir. Esto también se
aplica cuando usas una cuenta de servicio por versión.
La cuenta de servicio predeterminada de App Engine se puede borrar o reemplazar
por una cuenta de servicio que crees después de una implementación realizada de forma correcta.
Si usas una cuenta de servicio que creaste, revisa la Descripción general de las recomendaciones de roles para comprender cómo aplicar la restricción de permisos, como proporcionar una función de creador de tokens en la cuenta de servicio que creas para el agente de servicio.
Nginx no se puede conectar ni comunicar con el contenedor de la app
El siguiente error solo ocurre en el entorno flexible de App Engine y, por lo general, se muestra inmediatamente como error 502 después de que sucede:
recv() failed (104: Connection reset by peer) while reading response header from upstream
Este error indica que el proxy inverso de nginx (archivo adicional de nginx) no puede acceder al contenedor de la app. En los registros, puedes comparar el tiempo cercano del error 502 en el registro de nginx con el tiempo del registro de nginx.error. Es probable que un error nginx.error seguido inmediatamente de un error 502 de nginx sea la causa de este error.
Este error ocurre a menudo cuando el tiempo de espera de la conexión keepalive de la aplicación es menor que el tiempo de espera de keepalive de nginx. Como nginx en el entorno flexible de App Engine tiene keepalive_timeout
de 650 segundos, las aplicaciones deben mantener las conexiones en funcionamiento durante al menos este tiempo. De forma predeterminada, las aplicaciones de Node.js tienen keepAliveTimeout
de 5,000 milisegundos. En este caso, puedes establecer server.keepAliveTimeout
en 700,000 milisegundos.
Para solucionar el problema, verifica los registros escritos por el código que se ejecuta en el contenedor de tu app mediante la conexión a la instancia de VM y agrega más registros, si es necesario, a fin de encontrar la causa raíz.
Memoria insuficiente
El siguiente error ocurre en el entorno flexible de App Engine y, por lo general, se muestra con errores 502:
kernel: [ 133.706951] Out of memory: Kill process 4490 (java) score 878 or sacrifice child kernel: [ 133.714468] Killed process 4306 (java) total-vm:5332376kB, anon-rss:2712108kB, file-rss:0kB
Este error indica que App Engine cerró la aplicación.
Este error ocurre cuando la instancia no tiene memoria suficiente. De forma predeterminada, el entorno flexible de App Engine tiene 1 GB de memoria, con solo 600 MB disponibles para el contenedor de la aplicación.
Para solucionar el problema, verifica los registros y si ves una entrada de memoria insuficiente. Actualiza tu configuración de memory_gb
y vuelve a implementarla.
Conexiones abiertas insuficientes para manejar solicitudes entrantes
Las apps pueden encontrar un error 502 si la cantidad máxima de conexiones en espera es igual o mayor que el 75% de la cantidad de conexiones activas.
Para resolver el problema, verifica las Métricas de Cloud Monitoring para descubrir la cantidad máxima de conexiones activas y en espera, y disminuye la cantidad de conexiones en espera para garantizar que la cantidad máxima de conexiones en espera sea menor o igual que el 75% de la cantidad de conexiones activas.