Preguntas frecuentes sobre App Engine

¿Cómo accedo a mi cuenta de App Engine?

En las Cuentas de Google normales, lo que incluye a los usuarios de Gmail, para acceder a tu cuenta de App Engine, visita Google Cloud Platform Console.

¿Cómo creo un proyecto de Cloud para App Engine?

Usa Google Cloud Platform Console para crear un proyecto de Cloud.

¿Qué lenguajes admite Google App Engine?

Actualmente, el entorno estándar de App Engine admite Java, Python, PHP, Go y Node.js. Además, tus plantillas de sitio web pueden incluir JavaScript junto con tu HTML que, entre otras funciones, te permite escribir aplicaciones web habilitadas para AJAX.

¿Qué tipo de certificaciones recibió App Engine?

App Engine completó correctamente el proceso de auditoría para los estándares SAS 70 Tipo II, SSAE 16 Tipo II, ISO 27001 y, además, ISAE 3402 Tipo II.

¿Cuáles son mis derechos sobre los proyectos que creo?

Entre Google y los clientes de App Engine, el cliente posee todos los derechos de propiedad intelectual de sus datos almacenados y su código de aplicación y proyecto. Google posee todos los derechos de propiedad intelectual de los servicios y software de App Engine y Google Cloud Platform.

Para obtener más información, incluidas las definiciones de estos términos, consulta las Condiciones del Servicio de Google Cloud.

¿Puedo desarrollar una aplicación de App Engine aunque no tenga una cuenta?

Por supuesto. Incluso si aún no tienes una cuenta de App Engine, puedes descargar nuestro SDK y comenzar el desarrollo.

¿Cuántas aplicaciones puedo crear con App Engine?

La cantidad de proyectos de App Engine que puedes crear depende de una variedad de factores, incluidos los recursos que utilizas y tu historial de uso anterior de Google Cloud Platform. Los clientes pueden tener una cuota diferente en función de estos y otros factores.

Si intentas exceder tu límite de proyectos, GCP Console te solicitará que llenes un formulario de solicitud. Esto sucede si intentas crear un proyecto cuando ya alcanzaste tu cuota. El formulario requiere que especifiques la cantidad de proyectos adicionales que necesitas, junto con sus correspondientes cuentas de correo electrónico, cuentas de facturación y usos previstos.

Puedes encontrar más información sobre las solicitudes de aumento de cuota en la página de solicitudes de cuota de proyecto.

¿Qué tipo de contenido está permitido en Google App Engine?

Consulta nuestras Condiciones del Servicio si tienes preguntas sobre qué tipo de contenido está permitido en App Engine.

¿Por qué ocurre el error de URI para /favicon.ico?

Las aplicaciones que no incluyeron un archivo favicon.ico pueden incluir el URI /favicon.ico en la lista de URI con error. Favicon.ico es un archivo que solicita el navegador web de un usuario cuando intenta cargar la página. Favicon.ico es el ícono de tu sitio web, y generalmente se muestra en la barra de URL del navegador del usuario, junto a la dirección web de tu sitio.

Para tu aplicación, favicon.ico debería ser una imagen estática. Puedes subir un archivo favicon.ico con tu aplicación y, en tu archivo app.yaml, configurar tu aplicación para que entregue la imagen cuando se solicite la URL /favicon.ico. A continuación, se muestran entradas de ejemplo en appengine-web.xml (Java) y app.yaml (Python/PHP/Go). En el ejemplo de Python/PHP/Go, favicon.ico se encuentra en static/images. Para simplificar, el mismo archivo está en el directorio raíz (war) en el ejemplo de Java.

Python/PHP/Go

app.yaml
- url: /favicon\.ico
  static_files: static/images/favicon.ico
  upload: static/images/favicon\.ico

Java

appengine-web.xml
<static-files>
  <include path="/favicon.ico" />
</static-files>

¿Qué es GQL?

GQL es un lenguaje de consulta que se usa con Datastore. Las aplicaciones de Python pueden usarlo para buscar entidades. Emplea una sintaxis similar a SQL para recuperar entidades enteras del almacén de datos de tu aplicación y, además, incluye la capacidad de filtrar propiedades, especificar el orden de clasificación de los resultados y limitar el número de entidades mostradas. Aquí puedes encontrar la referencia completa del lenguaje GQL.

¿GQL está disponible para Java?

GQL no está incluido en el SDK de Java; sin embargo, se puede usar a través de la API de Cloud Datastore. Recomendamos que los desarrolladores de Java usen JDO o JPA en lugar de GQL porque ofrecen seguridad de tipos. El uso de JDO o JPA permite al desarrollador descubrir errores en el IDE en lugar de en el entorno de ejecución, y ofrece menos espacio para ataques de inyección de código SQL.

¿Por qué mis consultas deben estar cubiertas por índices y cómo las incluyo?

Si ejecutas una consulta que filtra las propiedades de varias entidades o también ordena los resultados por varias propiedades, necesitarás un índice para esa consulta. Debes tener un índice para cada consulta de ese tipo que ejecutes con tu aplicación. El índice del almacén de datos para una consulta mantiene y actualiza una lista de claves ordenadas de la manera que especifica la consulta para permitir un acceso rápido a los datos en el almacén de datos. Puedes encontrar una explicación completa de los índices del almacén de datos en nuestra documentación (Java | Python | Go).

Cuando desarrollas tu aplicación con el SDK de Cloud, cada consulta que ejecutas automáticamente se indexa en el momento en que es necesario. Si pruebas exhaustivamente tu aplicación antes de subirla a tu sitio web, todos los índices que necesitará tu aplicación se incluirán en los archivos index.yaml de la aplicación. Puedes agregar índices manualmente si encuentras una consulta que no fue cubierta por tus pruebas de desarrollo. Si deseas obtener más información sobre cómo escribir índices para tu aplicación, consulta la documentación del índice.

¿Por qué mis índices se marcaron como error?

Pueden ser índices con alto crecimiento (Python | Java | Go), o pueden haber ocurrido otros problemas similares durante la escritura de entidades particulares en tu almacén de datos. Puedes vaciarlos y, a continuación, intentar compilarlos nuevamente con la ayuda de las instrucciones de Consultas (Python | Java | Go) y de Índices (Python | Java | Go).

¿Por qué mis índices permanecen en los estados de compilación o borrado por largos períodos de tiempo?

Incluso si no tienes muchas entidades de los tipos correspondientes, el tiempo que toma compilar o borrar los índices puede variar ampliamente en función de la cantidad total de datos en el almacén de datos, los índices que se están compilando en la actualidad para otras aplicaciones y la carga del almacén de datos debido a las solicitudes de usuario, entre otros factores. En algunos casos, los trabajos de índice pueden tardar horas o incluso días en completarse.

Aun así, a veces podemos ayudar con índices que parecen estar atascados. Si crees que esto le ha sucedido a tus índices, puedes publicar una pregunta en el grupo google-appengine.

¿Cómo puedo autenticar a los usuarios de mi aplicación?

El servicio de usuarios (Java | Python | Go) te permite autenticar a los usuarios que tienen una Cuenta de Google o una cuenta en su propio dominio de G Suite. Debes elegir una de estas formas de autenticación para tu aplicación.

Si tu aplicación usa Cuentas de Google, cuando solicita el acceso de un usuario, el usuario es dirigido a una página de acceso de Google para ingresar un nombre de usuario y contraseña, o a fin de crear una cuenta nueva. Una vez que accedió correctamente, el usuario vuelve a tu sitio web y la información del usuario está disponible para tu aplicación a través de la propiedad del usuario.

¿Hay alguna biblioteca de terceros que no sea compatible con App Engine?

Python

Un pequeño porcentaje de módulos nativos C de Python y subconjuntos de módulos nativos C de Python no están disponibles con App Engine. Los módulos inhabilitados se dividen en las siguientes categorías:

  • Las bibliotecas que mantienen bases de datos en el disco no están habilitadas en Python para App Engine.
  • El sistema no te permite invocar subprocesos y, como resultado, algunos métodos de SO del módulo están inhabilitados.
  • Los subprocesos no están disponibles.
  • Por motivos de seguridad, la mayoría de los módulos basados en C están inhabilitados.
  • Otras características limitadas son las que se indican a continuación:
    • El cálculo de referencia está inhabilitado.
    • cPickle tiene un alias para pickle.
    • Las llamadas al sistema están inhabilitadas.

Ten en cuenta que los paquetes de terceros que usan cualquiera de las características anteriores no funcionarán con App Engine (paquetes como PostgreSQL, etcétera).

Go

La mayoría de los paquetes de Go puros funcionan en App Engine. Es posible que un paquete no funcione debido a uno de estos motivos:

  • El paquete importa syscall o unsafe.
  • El paquete usa cgo o assembly.
  • El paquete requiere funciones en paquetes que están bloqueadas, como escribir en el disco o acceso directo a la red.

¿Por qué mi aplicación se inhabilitó?

Una aplicación puede inhabilitarse si no cumple con nuestros Términos y Condiciones. Además, si se descubre que una aplicación utiliza una cantidad excesiva de recursos del sistema debido a un error o a otro problema que conduce a un uso ineficiente de los recursos, podemos inhabilitar la aplicación para que el desarrollador pueda solucionar los problemas de desarrollo mediante nuestro SDK de desarrollo antes de volver a habilitar la aplicación en App Engine.

¿Por qué mi aplicación supera la cuota?

App Engine establece límites de cuota en la cantidad de cada recurso del sistema que una aplicación puede consumir en un día. Todas las aplicaciones tienen una configuración de cuota predeterminada, o "cuotas libres", que deberían permitir aproximadamente 5 millones de páginas vistas al mes para una aplicación eficiente. Puedes leer más sobre las cuotas del sistema en la documentación de cuota.

A medida que tu aplicación crece, puede necesitar una asignación de recursos mayor que la que proporciona la configuración de cuota predeterminada. Para comprar recursos de procesamiento adicionales, habilita la facturación de tu aplicación. La facturación permite a los desarrolladores aumentar los límites de todos los recursos del sistema y pagar límites aún más altos en el uso de CPU, ancho de banda, almacenamiento y correo electrónico.

¿Cómo informo una aplicación que infringe los Términos y Condiciones?

Para informar una aplicación que infringe los Términos y Condiciones de App Engine, comunícate con nosotros. Determinaremos si la aplicación está en infracción y, si es necesario, contactaremos al desarrollador de la aplicación en relación con la infracción.

¿Debo usar el SDK para entregar solicitudes externas?

El comando dev_appserver está diseñado para las pruebas locales y no permite las conexiones externas de forma predeterminada. Puedes anular esto con la marca --host <hostname> cuando lo ejecutas, pero no se recomienda hacerlo porque el SDK no se reforzó para seguridad y puede contener vulnerabilidades.

¿Cómo entrego contenido comprimido?

App Engine hace todo lo posible para entregar contenido en formato gzip a los navegadores que lo admiten. El aprovechamiento de este esquema es automático y no requiere modificaciones en las aplicaciones.

Usamos una combinación de encabezados de solicitud (Accept-Encoding y User-Agent) y encabezados de respuesta (Content-Type) para determinar si el usuario final puede o no aprovechar el contenido en formato gzip. Este enfoque evita algunos errores conocidos con contenido en formato gzip en navegadores populares. Para forzar la entrega del contenido en formato gzip, los clientes pueden proporcionar gzip como el valor de los encabezados de solicitud Accept-Encoding y User-Agent. El contenido nunca se comprimirá en formato gzip si no hay un encabezado Accept-Encoding presente.

Esto se describe en más detalle en la documentación de entorno de ejecución (Python | Java | PHP | Go).

¿App Engine admite SSL (HTTPS)?

App Engine te permite entregar tráfico SSL (HTTPS) a través de tu dominio appspot.com. Simplemente agrega el parámetro secure a tu controlador app.yaml para las URL a través de las cuales deseas admitir el tráfico seguro. Si deseas obtener información detallada acerca de cómo configurar tu aplicación para el tráfico seguro, consulta los documentos sobre la configuración de la aplicación (Java | Python | PHP | Go).

También puedes entregar tráfico SSL (HTTPS) mediante un dominio personalizado. Además, puedes usar dominios simples si empleas un dominio personalizado con SSL.

¿Puedo usar encabezados de Seguridad de transporte estricta en mi proyecto?

En App Engine, es posible usar Seguridad de transporte estricta. Para agregar encabezados HTTP con Strict-Transport-Security (HSTS) a tu aplicación, debes implementar los encabezados en el código de la aplicación, y no en el archivo de configuración de la aplicación (app.yaml o appengine-web.xml).

¿Puedo usar SSL (HTTPS) en App Engine con mi dominio personalizado?

Puedes entregar SSL a través de tu dominio personalizado.

¿Las herramientas como remote_api usan SSL (HTTPS)?

Las herramientas del SDK que usan acceso (remote_api, appengine_rpc) emplean SSL cuando comunican tu dirección de correo electrónico y contraseña.

Los SDK de Python y Go tienen la capacidad de validar el certificado SSL a través de la conexión remota. Para hacer esto, debes tener el módulo ssl de Python instalado en tu sistema. Si estás usando Python 2.5, puedes instalar el módulo desde http://pypi.python.org/pypi/ssl/. Si se produce un error durante la validación del certificado SSL, las herramientas generarán una InvalidCertificateException para explicar el error.

El SDK de Java también habilita SSL de forma predeterminada. Si se encuentra un error durante la validación del certificado SSL, arrojará una javax.net.ssl.SSLHandshakeException.

Me gustaría asignar mi aplicación a un dominio simple (como http://example.com).

Un "dominio simple" permite a los usuarios acceder a tu aplicación directamente en el nombre de dominio (http://example.com), sin requerir un subdominio como http://www.example.com o http://myapp.example.com. Puedes configurar tu aplicación de App Engine con un dominio simple en la consola del proyecto de Google Cloud Platform. Consulta sobre el uso de dominios personalizados.

Los dominios simples también son compatibles si usas un dominio personalizado con SSL.

Direcciones IP estáticas y aplicaciones de App Engine

App Engine actualmente no proporciona una forma de asignar direcciones IP estáticas a una aplicación. A fin de optimizar la ruta de acceso de red entre un usuario final y una aplicación de App Engine, los usuarios finales en ISP o ubicaciones geográficas diferentes pueden usar direcciones IP distintas para acceder a la misma aplicación de App Engine. El DNS puede mostrar direcciones IP diferentes para acceder a App Engine con el tiempo o desde distintas ubicaciones de red.

Los servicios salientes, como las API de URL Fetch, Sockets y correo electrónico, usan un gran conjunto de direcciones IP. Los rangos de direcciones IP en este grupo están sujetos a cambios de rutina. De hecho, puede parecer que dos llamadas a la API secuenciales desde la misma aplicación se originan en dos direcciones IP diferentes.

El rango actual de direcciones IP salientes de App Engine está codificado en el registro de Sender Policy Framework (SPF) de _cloud-netblocks.googleusercontent.com. Es posible que debas realizar búsquedas recurrentes de SPF de DNS para resolver la lista completa de rangos de IP. Para comenzar, resuelve _cloud-netblocks.googleusercontent.com de la siguiente manera:

nslookup -q=TXT _cloud-netblocks.googleusercontent.com 8.8.8.8

La respuesta mostrada contendrá todos los _cloud-netblocks actuales para App Engine. (Ten en cuenta que estos resultados no son estáticos: Google puede agregar entradas _cloud-netblocks nuevas en cualquier momento). Por ejemplo, esta consulta podría mostrar la respuesta siguiente:

Non-authoritative answer:
_cloud-netblocks.googleusercontent.com	text = "v=spf1 include:_cloud-netblocks1.googleusercontent.com include:_cloud-netblocks2.googleusercontent.com include:_cloud-netblocks3.googleusercontent.com ?all

A partir de esta respuesta, consultarás cada uno de los _cloud-netblocksN que se muestran en la respuesta. Mediante la respuesta del ejemplo anterior con las tres entradas _cloud-netblocksN, podrías hacer las tres consultas siguientes para encontrar todos los rangos de IP:

nslookup -q=TXT _cloud-netblocks1.googleusercontent.com 8.8.8.8
nslookup -q=TXT _cloud-netblocks2.googleusercontent.com 8.8.8.8
nslookup -q=TXT _cloud-netblocks3.googleusercontent.com 8.8.8.8

Los registros SPF que muestra la consulta de cada una de las entradas anteriores serán rangos de IP que puedes usar para el tráfico saliente de App Engine. Por ejemplo, la consulta de _cloud-netblocks1 anterior podría mostrar la respuesta siguiente:

Non-authoritative answer:
_cloud-netblocks1.googleusercontent.com	text = "v=spf1 ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:108.59.80.0/20 ip4:108.170.192.0/20 ip4:108.170.208.0/21 ip4:108.170.216.0/22 ip4:108.170.220.0/23 ip4:108.170.222.0/24 ?all"

En este ejemplo, vemos que ambos rangos de IP, 8.34.208.0/20 y 8.35.192.0/21, se pueden usar para el tráfico de App Engine.

Ten en cuenta que el uso del filtrado de direcciones IP estáticas no se considera un medio de protección seguro y efectivo. Por ejemplo, un atacante podría configurar una aplicación de App Engine maliciosa que podría compartir el mismo rango de direcciones IP que tu aplicación. En cambio, te sugerimos que adoptes un enfoque de defensa en profundidad con OAuth y Certs.

¿Puedo acceder a mi instancia de App Engine en una dirección IP privada?

App Engine aloja tu servicio en una dirección IP pública dinámica de un balanceador de cargas de Google. No puedes acceder a tu servicio en direcciones IP privadas (RFC 1918).

¿Cómo defino trabajos cron para mi aplicación?

Consulta la documentación específica del lenguaje a fin de obtener información sobre cómo definir trabajos cron para tu aplicación (Java | Python | Go | PHP).

¿Qué son las listas de tareas en cola?

Las listas de tareas en cola proporcionan un mecanismo para agregar dinámicamente solicitudes nuevas que se llevarán a cabo en un momento posterior. Si una aplicación necesita ejecutar algún trabajo en segundo plano, puede usar la API de la lista de tareas en cola para organizar ese trabajo en unidades pequeñas y discretas llamadas Tareas. Las tareas se insertan en una o más Colas. App Engine detecta automáticamente las tareas nuevas y las ejecuta cuando los recursos del sistema lo permiten. Para obtener más detalles, consulta la documentación de la API de la lista de tareas en cola (Java | Python | Go | PHP).

¿Puedo usar los Grupos de Google para otorgar acceso a mi proyecto de App Engine?

Si agregas un Grupo de Google a tu proyecto de App Engine, los miembros del grupo tendrán acceso a los recursos de ese proyecto, por ejemplo, Almacén de datos, Listas de tareas en cola, Memcache, etcétera.

¿Cómo evito que los usuarios o las subredes accedan a mi aplicación?

App Engine proporciona un servicio de protección de DoS que te permite incluir en la lista negra direcciones IP o subredes. Para obtener más detalles, consulta la documentación del servicio de protección de DoS (Java | Python | Go | PHP).

¿Cómo obtengo más información sobre interrupciones y problemas de accesibilidad de mi aplicación?

El Panel de estado de Google Cloud proporciona información de estado sobre los servicios que forman parte de Google Cloud Platform.

En China, la accesibilidad de App Engine puede ser intermitente. Consulta el Informe de transparencia de Google para obtener información sobre los problemas de accesibilidad de otros productos de Google en China.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de App Engine