Questions fréquentes sur App Engine

Comment puis-je me connecter à mon compte App Engine ?

Pour les comptes Google normaux, y compris les utilisateurs Gmail, vous pouvez vous connecter à votre compte App Engine en accédant à la console Google Cloud Platform.

Comment puis-je créer un projet Cloud pour App Engine ?

Vous pouvez créer un projet Cloud à l'aide de la console Google Cloud Platform.

Quels sont les langages compatibles avec Google App Engine ?

À l'heure actuelle, l'environnement standard App Engine est compatible avec Java, Python, PHP, Go et Node.js. Vos modèles de site Web peuvent également intégrer du code JavaScript parallèlement au code HTML, ce qui vous permet notamment de développer des applications Web compatibles avec AJAX.

Quels types de certifications App Engine a-t-il reçus ?

App Engine a passé le processus d'audit pour les normes SAS70 Type II, SSAE 16 Type II, ISO 27001 et ISAE 3402 Type II.

Quels sont mes droits sur les projets que je crée ?

Entre Google et un client App Engine, le client détient tous les droits de propriété intellectuelle sur ses données stockées, ainsi que sur le code de son application et de son projet. Google détient tous les droits de propriété intellectuelle sur les services et logiciels d'App Engine et de Google Cloud Platform.

Pour en savoir plus et découvrir les définitions de ces termes, consultez les Conditions d'utilisation de Google Cloud.

Puis-je quand même développer une application App Engine si je ne possède pas de compte ?

Bien sûr ! Même si vous ne possédez pas encore de compte App Engine, vous pouvez télécharger notre SDK et commencer à développer des applications.

Combien d'applications puis-je créer avec App Engine ?

Le nombre de projets App Engine que vous pouvez créer dépend de nombreux facteurs, dont les ressources que vous utilisez et votre historique d'utilisation avec Google Cloud Platform. Les clients peuvent avoir des quotas différents en fonction de ces facteurs et d'autres.

Si vous tentez de dépasser la limite de projets, la console GCP vous invite à remplir un formulaire de demande. Cela se produit lorsque vous essayez de créer un projet alors que vous avez déjà atteint votre quota. Le formulaire vous invite à spécifier le nombre de projets supplémentaires dont vous avez besoin, les comptes de messagerie et de facturation correspondants, ainsi que l'utilisation prévue.

Vous trouverez plus d'informations sur les demandes d'augmentation de quota sur la page des demandes de quota de projet.

Quels sont les types de contenus autorisés sur Google App Engine ?

Veuillez consulter nos Conditions d'utilisation si vous avez des questions sur les types de contenus autorisés dans App Engine.

Pourquoi une erreur d'URI est-elle renvoyée pour /favicon.ico ?

Les applications qui ne disposent pas d'un fichier favicon.ico peuvent inclure l'URI /favicon.ico dans la liste des URI erronés. Le fichier favicon.ico est requis par le navigateur Web d'un utilisateur lorsque ce dernier tente de charger la page. Il représente l'icône de votre site Web et s'affiche en principe dans la barre d'adresse du navigateur de l'utilisateur, à côté de l'adresse Web du site.

Pour votre application, le fichier favicon.ico doit correspondre à une image statique. Vous pouvez importer un fichier favicon.ico avec votre application, puis configurer le fichier app.yaml afin d'afficher cette image lorsque le fichier url/favicon.ico est demandé. Vous trouverez ci-dessous des exemples d'entrées dans appengine-web.xml (Java) et app.yaml (Python/PHP/Go). Dans l'exemple Python/PHP/Go, favicon.ico se trouve dans static/images. Dans l'exemple Java, et pour des raisons de simplicité, ce fichier se trouve dans le répertoire racine (war).

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>

En quoi consiste GQL ?

GQL est un langage de requête utilisé avec Datastore. Les applications Python peuvent l'employer pour exécuter des requêtes sur des entités. Pour récupérer des entités complètes à partir du datastore de vos applications, ce langage utilise une syntaxe s'apparentant à celle du langage SQL. Il vous permet également de filtrer ces entités en fonction de leurs propriétés, de spécifier l'ordre de tri des résultats et de limiter le nombre de résultats renvoyés. La documentation de référence complète sur le langage GQL est disponible ici.

GQL est-il disponible pour Java ?

GQL n'est pas inclus dans le SDK Java, mais il peut être utilisé via l'API Cloud Datastore. Nous recommandons aux développeurs Java d'utiliser JDO ou JPA au lieu de GQL, car ces langages sont sécurisés. L'utilisation de JDO/JPA permet au développeur de détecter les erreurs dans l'environnement de développement intégré plutôt qu'à l'exécution, et de réduire les risques d'attaques par injection SQL.

Pourquoi mes requêtes doivent-elles être indexées et comment procéder à cette indexation ?

Lorsque vous exécutez des requêtes qui appliquent plusieurs filtres de propriété aux entités ou qui trient les résultats en fonction de plusieurs propriétés, vous devez recourir à un index. Toutes les requêtes de ce type exécutées dans le cadre de votre application doivent en effet être indexées. L'index de datastore pour une requête gère et met à jour une liste de clés triées selon la manière spécifiée par la requête pour permettre un accès rapide aux données du datastore. Une explication complète des index de datastore est disponible dans notre documentation (Java | Python | Go).

Lorsque vous développez votre application avec le SDK Cloud, chaque requête exécutée automatiquement est indexée si nécessaire. Si vous testez votre application de manière approfondie avant de l'importer dans votre site Web, tous les index nécessaires à l'application seront inclus dans ses fichiers index.yaml. Vous pouvez ajouter manuellement des index si vous constatez qu'une requête n'a pas été couverte par vos tests de développement. Pour découvrir comment écrire des index pour votre application, consultez la documentation sur les index.

Pourquoi mes index affichent-ils l'état Error (Erreur) ?

Ces index sont peut-être exponentiels (Python | Java | Go) ou il est possible qu'ils aient rencontré d'autres problèmes similaires lors de l'écriture d'entités spécifiques dans votre datastore. Vous pouvez les supprimer et essayer de les recréer en suivant les instructions des sections "Requêtes" (Python | Java | Go) et Index (Python | Java | Go).

Pourquoi mes index restent-ils à l'état Building (En cours de création) ou Deleting (En cours de suppression) pendant de longues périodes ?

Même si vous ne disposez pas d'un grand nombre d'entités du ou des genres correspondants, la durée requise pour créer ou supprimer des index peut varier considérablement en fonction de la quantité totale de données dans le datastore, du nombre d'index en cours de création pour d'autres applications, et de la charge du datastore due aux requêtes utilisateur, entre autres. Dans certains cas, l'exécution de tâches en rapport avec les index peut prendre plusieurs heures, voire plusieurs jours.

Même dans ces circonstances, nous pouvons parfois vous aider à débloquer les index qui ne semblent plus réagir. Si vous pensez que c'est le cas de vos index, vous pouvez poser une question dans le groupe google-appengine.

Comment authentifier les utilisateurs de mon application ?

Le service Users (Java | Python | Go) vous permet d'authentifier les utilisateurs possédant un compte Google, un compte appartenant à leur propre domaine G Suite. Vous choisissez l'une de ces formes d'authentification pour votre application.

Si votre application utilise un compte Google, l'utilisateur est redirigé vers une page de connexion Google qui l'invite à saisir son nom d'utilisateur et son mot de passe, ou à créer un compte. Une fois la connexion établie, l'utilisateur est renvoyé sur votre site Web, et votre application peut accéder à ses informations via la propriété Users.

Existe-t-il des bibliothèques tierces non compatibles avec App Engine ?

Python

Un faible pourcentage de modules et de sous-ensembles Python C natifs n'est pas compatible avec App Engine. Les modules désactivés concernent les catégories suivantes :

  • Les bibliothèques qui gèrent des bases de données sur disque ne sont pas activées dans Python pour App Engine.
  • Le système ne permet pas d'appeler des sous-processus, et certaines méthodes du système d'exploitation du module sont donc désactivées.
  • Le threading n'est pas disponible.
  • Pour des raisons de sécurité, la plupart des modules basés sur C sont désactivés.
  • Les fonctionnalités suivantes sont également limitées :
    • Le module marshal est désactivé.
    • Le module cPickle est un alias de pickle.
    • Les appels système sont désactivés.

N'oubliez pas que les packages tiers qui exploitent l'une des fonctionnalités ci-dessus ne fonctionneront pas avec App Engine (packages tels que PostgreSQL, etc.).

Go

La majorité des packages Go purs fonctionnent sur App Engine. Un package peut ne pas fonctionner pour l'une des raisons suivantes :

  • Le package importe syscall ou unsafe.
  • Le package utilise le composant cgo ou assembly.
  • Le package nécessite des fonctions dans des packages verrouillés, telles que l'écriture sur disque ou l'accès direct au réseau.

Pourquoi mon application a-t-elle été désactivée ?

Une application peut être désactivée si elle ne respecte pas nos Conditions d'utilisation. En outre, si nous constatons qu'une application utilise une quantité excessive de ressources système en raison d'un bug ou d'un autre problème entraînant une utilisation inefficace des ressources, nous pouvons la désactiver de façon à permettre au développeur de résoudre les problèmes à l'aide de notre SDK de développement, puis la réactiver sur App Engine.

Pourquoi mon application dépasse-t-elle ses quotas de ressources ?

App Engine alloue à toutes les applications des quotas de ressources système qui limitent leur consommation quotidienne. Les quotas de ressources gratuits qui leur sont alloués par défaut garantissent leur fonctionnement efficace avec la consultation d'environ cinq millions de pages par mois. Pour en savoir plus sur les quotas système, consultez la documentation sur les quotas.

Plus votre application connaît un développement important, plus ses besoins en ressources système sont susceptibles de dépasser les quotas de ressources qui lui sont alloués par défaut. Vous pouvez acheter des ressources informatiques supplémentaires en activant la facturation pour votre application. La facturation permet aux développeurs d'augmenter les limites de toutes les ressources système et de payer pour étendre encore davantage les limites liées à l'utilisation des processeurs, de la bande passante, du stockage et de la messagerie.

Comment puis-je signaler une application enfreignant vos conditions d'utilisation ?

Pour signaler une application enfreignant les conditions d'utilisation d'App Engine, contactez-nous. Nous déterminerons si l'application signalée enfreint effectivement nos conditions d'utilisation et, si tel est le cas, nous prendrons contact avec le développeur concerné pour lui faire part de ce problème.

Dois-je utiliser le SDK pour diffuser des requêtes externes ?

Conçu pour effectuer des tests de développement locaux uniquement, le serveur dev_appserver n'autorise pas par défaut les connexions externes. Vous pouvez modifier ce comportement en utilisant l'indicateur --host <hostname> lors de son exécution, mais cela n'est pas recommandé, car le SDK n'a pas été renforcé pour la sécurité et peut comporter des failles.

Comment puis-je diffuser du contenu compressé ?

App Engine fait tout pour diffuser du contenu compressé avec gzip aux navigateurs qui l'acceptent. Cet avantage est automatiquement mis à profit et vous n'avez pas besoin d'apporter au préalable des modifications à vos applications.

Afin de savoir si le navigateur des utilisateurs finaux accepte ou non le contenu gzip, nous utilisons des en-têtes de requête spécifiques (Accept-Encoding, User-Agent) associés à des en-têtes de réponse spécifiques (Content-Type). Cette approche nous permet d'éviter les bugs connus associés au contenu gzip qui se produisent avec les navigateurs les plus courants. Pour forcer la diffusion de contenu au format gzip, les en-têtes de requête Accept-Encoding et User-Agent doivent tous deux contenir la valeur "gzip". En l'absence d'en-tête Accept-Encoding, il est impossible de compresser les contenus au format gzip.

Ce sujet est abordé plus en détail dans la documentation de l'environnement d'exécution (Python | Java | PHP | Go).

App Engine accepte-t-il le protocole SSL (HTTPS) ?

App Engine vous permet de diffuser du trafic SSL (HTTPS) via votre domaine appspot.com. Pour cela, il vous suffit d'ajouter le paramètre "secure" au gestionnaire app.yaml des URL qui doivent prendre en charge le trafic sécurisé. Pour obtenir des informations complètes sur la configuration de votre application pour un trafic sécurisé, consultez la documentation concernant la configuration des applications (Java | Python | PHP | Go).

Vous pouvez également diffuser du trafic SSL (HTTPS) via un domaine personnalisé. En outre, vous avez la possibilité d'utiliser des domaines nus si vous employez un domaine personnalisé avec SSL.

Puis-je utiliser des en-têtes Strict-Transport-Security dans mon projet ?

Il est possible d'utiliser Strict-Transport-Security dans App Engine. Pour ajouter des en-têtes HTTP Strict-Transport-Security (HSTS) à votre application, vous devez les mettre en œuvre dans le code de l'application, et non dans son fichier de configuration (app.yaml ou appengine-web.xml).

Puis-je utiliser le protocole SSL (HTTPS) sur App Engine avec mon domaine personnalisé ?

Vous pouvez diffuser du trafic SSL via votre domaine personnalisé.

Les outils comme remote_api utilisent-ils le protocole SSL (HTTPS) ?

Les outils du SDK qui nécessitent une connexion (remote_api, appengine_rpc) utilisent le protocole SSL pour communiquer votre adresse e-mail et votre mot de passe.

Les SDK Python et Go permettent de valider le certificat SSL via la connexion à distance. Pour cela, vous devez installer le module Python ssl sur votre système. Si vous utilisez Python 2.5, vous pouvez installer le module depuis la page http://pypi.python.org/pypi/ssl/. En cas d'erreur lors de la validation du certificat SSL, les outils génèrent une exception InvalidCertificateException décrivant le problème.

Le SDK Java active également SSL par défaut. Si une erreur se produit lors de la validation du certificat SSL, une exception javax.net.ssl.SSLHandshakeException est générée.

Je souhaite mapper mon application à un domaine nu (par exemple, http://example.com).

Un "domaine nu" permet aux utilisateurs d'accéder directement à votre application à l'aide du nom de domaine (http://example.com), sans nécessiter de sous-domaine tel que http://www.example.com ou http://myapp.example.com. Vous pouvez configurer votre application App Engine avec un domaine nu dans la console de projet de Google Cloud Platform. Consultez la page Mapper les domaines personnalisés pour en savoir plus.

Les domaines nus sont également acceptés si vous utilisez un domaine personnalisé avec SSL.

Adresses IP statiques et applications App Engine

À l'heure actuelle, App Engine ne permet pas de mapper des adresses IP statiques à une application. Afin d'optimiser le chemin d'accès réseau entre un utilisateur final et une application App Engine, les utilisateurs finaux de différents FAI ou emplacements géographiques peuvent employer différentes adresses IP pour accéder à la même application App Engine. Le DNS peut renvoyer diverses adresses IP pour accéder à App Engine au fil du temps ou depuis plusieurs emplacements réseau.

Les services sortants, tels que les API URL Fetch, Sockets et Mail, utilisent un vaste pool d'adresses IP. Les plages d'adresses IP de ce pool sont sujettes à des modifications de routine. En effet, deux appels d'API séquentiels provenant de la même application peuvent sembler provenir de deux adresses IP différentes.

La plage actuelle d'adresses IP sortantes d'App Engine est encodée dans l'enregistrement SPF (Sender Policy Framework) de _cloud-netblocks.googleusercontent.com. Vous devrez peut-être effectuer des recherches DNS SPF de manière récursive pour résoudre la liste complète de plages d'adresses IP. Commencez par résoudre _cloud-netblocks.googleusercontent.com comme suit :

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

La réponse renvoyée contient toutes les entrées _cloud-netblocks actuelles pour App Engine. (Notez que ces résultats ne sont pas statiques : Google peut introduire de nouvelles entrées _cloud-netblocks à tout moment.) Par exemple, cette requête peut renvoyer la réponse suivante :

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

À partir de ce résultat, vous pouvez interroger chacune des entrées _cloud-netblocksN répertoriées dans la réponse. En utilisant l'exemple de réponse précédent avec les trois entrées _cloud-netblocksN, vous pouvez exécuter les trois requêtes suivantes pour rechercher toutes les plages d'adresses 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

Les enregistrements SPF renvoyés par la requête de chacune des entrées ci-dessus constituent des plages d'adresses IP que vous pouvez utiliser pour le trafic sortant d'App Engine. Par exemple, la requête de _cloud-netblocks1 ci-dessus peut renvoyer la réponse suivante :

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"

Dans cet exemple, nous constatons que les plages d'adresses IP 8.34.208.0/20 et 8.35.192.0/21 peuvent être utilisées pour le trafic App Engine.

Notez que le filtrage des adresses IP statiques n'est pas considéré comme un moyen de protection sûr et efficace. Par exemple, un pirate pourrait créer une application App Engine malveillante partageant la même plage d'adresses IP que votre application. Nous vous suggérons plutôt d'adopter une approche de défense en profondeur utilisant OAuth et Certs.

Puis-je accéder à mon instance App Engine avec une adresse IP privée ?

App Engine héberge votre service sur une adresse IP publique dynamique d'un équilibreur de charge Google. Vous ne pouvez pas accéder à votre service avec des adresses IP privées (RFC 1918).

Comment puis-je définir des tâches Cron pour mon application ?

Pour en savoir plus sur la définition des tâches Cron pour votre application, veuillez consulter la documentation du langage concerné (Java | Python | Go | PHP).

En quoi consistent les files d'attente de tâches ?

Les files d'attente de tâches permettent l'ajout dynamique de nouvelles requêtes à exécuter ultérieurement. Lorsqu'une application doit effectuer certains travaux en arrière-plan, elle peut utiliser l'API Task Queue pour les organiser sous forme de petites unités discrètes appelées tâches. Ces tâches sont ensuite ajoutées à une ou plusieurs files d'attente. Les nouvelles tâches sont immédiatement détectées par App Engine, puis exécutées dès que la quantité de ressources système disponibles est suffisante. Pour en savoir plus, consultez la documentation de l'API Task Queue (Java | Python | Go | PHP).

Puis-je utiliser des groupes Google pour accorder l'accès à mon projet App Engine ?

Si vous ajoutez un groupe Google à votre projet App Engine, les membres de ce groupe auront accès aux ressources de ce projet, par exemple Datastore, Task Queues, Memcache, etc.

Comment empêcher des utilisateurs/sous-réseaux d'accéder à mon application ?

Doté d'un programme de protection contre les attaques par déni de service, App Engine vous permet de mettre sur liste noire des adresses IP ou des sous-réseaux. Pour en savoir plus, consultez la documentation du service de protection contre les attaques DoS (Java | Python | Go | PHP).

Comment puis-je obtenir plus d'informations sur les interruptions de service et les problèmes d'accessibilité de mon application ?

Le tableau de bord d'état Google Cloud fournit des informations sur l'état des services faisant partie de Google Cloud Platform.

Pour la Chine, l'accessibilité d'App Engine peut être intermittente. Accédez au service Google Transparence des informations pour en savoir plus sur les problèmes d'accessibilité des autres produits Google en Chine.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation App Engine