Solucionar errores de App Engine

Implementación

Si tienes problemas para implementar tu aplicación con la API de App Engine Admin, en esta página, se muestran los mensajes de error que puedes ver y se proporcionan sugerencias sobre cómo 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:

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 la función 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.

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:

  1. Verifica si otorgaste el rol de editor (roles/editor) a la cuenta de servicio predeterminada de App Engine.
  2. Verifica si otorgaste los siguientes roles 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):

  3. Otorga las funciones si la cuenta de servicio no las tiene.

  4. Si implementas en la configuración de VPC compartida y pasas instance_tag en app.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 de app.yaml y vuelve a implementarlo.

Errores en la implementación de apps con 3 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 4 instancias máximas en 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 demax_instances en tuapp.yaml a un valor inferior a este límite o borrar algunos servicios o versiones para incorporar la suma demax_instances dentro del límite.

La compilación durante la implementación falla sin errores en los registros de compilación

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:

La compilación durante la implementación falla cuando se ejecuta con NODE_ENV=development

Este error puede ocurrir cuando implementas una aplicación Node.js. De forma predeterminada, el entorno de ejecución de Node.js se ejecutaránpm run build si se detecta una secuencia de comandos build en el archivo package.json.

Esto puede provocar comportamientos inesperados, como compilaciones de larga duración o errores de memoria insuficiente.

Especifica NODE_ENV=development en el archivo app.yaml para garantizar que la ejecución tenga todas las dependencias necesarias.

A pesar del error, puedes forzar la producción si especificas NODE_ENV: 'production' en build-env-variables en el archivo app.yaml:

  build_env_variables:
    NODE_ENV: 'production'

Para obtener más información, consulta Ejecuta pasos de compilación personalizados durante la implementación.

Entrega

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 aplicación 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. 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.

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 de App Engine se puede borrar o reemplazar por una cuenta de servicio que crees después de una implementación exitosa.

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.

Errores de seguridad cuando se usan servicios agrupados en paquetes heredados para Python

Si usas una API de servicios agrupados en paquetes heredados cuando se inicia una app de Python 3, es posible que veas el siguiente mensaje de error:

Attempted RPC call without active security ticket

Este error puede ocurrir en situaciones como la lectura de ciertos valores de Memcache cuando tu app comienza a configurar una conexión de base de datos o establecer una variable global.

Para resolver este problema, puedes intentar mover esa lógica a una solicitud de preparación.