Accéder à App Engine avec l'API Remote

La bibliothèque de l'API Remote permet à tout client Python d'accéder aux services disponibles pour les applications App Engine.

Par exemple, si votre application App Engine utilise Cloud Datastore ou Google Cloud Storage, un client Python peut accéder à ces ressources de stockage à l'aide de l'API Remote.

L'API Remote vous permet d'accéder au datastore de votre application à partir d'une application s'exécutant sur votre ordinateur ou depuis l'interface système de l'API Remote interactive locale. Étant donné que l'API Remote interagit avec des services réels, des quotas et des ressources facturables sont utilisés.

La bibliothèque de l'API Remote est incluse dans le SDK App Engine pour Python.

Activer l'accès à l'API Remote dans votre application

La meilleure façon d'activer l'API Remote pour votre application est d'utiliser l'instruction builtins du fichier app.yaml, qui spécifie l'URL par défaut /_ah/remote_api/. Si vous souhaitez spécifier une autre URL, choisissez l'instruction url de ce même fichier.

builtin

L'instruction builtins du fichier app.yaml rend l'API Remote accessible à l'adresse URL par défaut /_ah/remote_api :

runtime: python27
api_version: 1
threadsafe: true

builtins:
- remote_api: on

URL

L'utilisation de l'instruction url dans le fichier app.yaml vous permet de spécifier une autre URL à utiliser avec l'API Remote :

- url: /some-URL/*
  script: google.appengine.ext.remote_api.handler.application

Veillez à déployer votre application sur App Engine après avoir effectué cette modification.

Utiliser l'interface système de l'API Remote

Le SDK App Engine pour Python comprend l'interface système de l'API Remote, qui permet d'appeler des commandes Python sur les services App Engine utilisés par votre application. Aucune autre forme d'authentification n'est nécessaire, car les identifiants que vous avez indiqués pour télécharger l'application sur App Engine sont automatiquement appliqués.

Pour démarrer l'interface système de l'API Remote, procédez comme suit :

  1. Appelez la commande suivante depuis une fenêtre de terminal sur votre ordinateur :

     [GAE-SDK-INSTALL-DIRECTORY]/remote_api_shell.py -s [YOUR-PROJECT-ID].appspot.com
    

    Remplacez [GAE-SDK-INSTALL-DIRECTORY] par le chemin d'accès au SDK App Engine pour Python et [YOUR-PROJECT-ID] par votre ID de projet.

  2. Dans l'interface interactive affichée, appelez les commandes Python que vous souhaitez exécuter. Par exemple, si votre application utilise Cloud Datastore, appelez la requête ndb suivante pour extraire 10 enregistrements :

     >>> from google.appengine.ext import ndb
     >>>
     >>> # Fetch 10 keys from the datastore
     >>> ndb.Query().fetch(10, keys_only=True)
    

Utiliser l'API Remote dans un client local

Vous avez également la possibilité d'utiliser l'API Remote dans des applications locales pour accéder aux services utilisés par votre application s'exécutant dans App Engine.

Pour utiliser l'API Remote dans une application locale, procédez comme suit :

  1. Activez l'API Remote.

  2. Exportez la variable d’environnement PYTHONPATH de votre répertoire Python, par exemple :

     export PYTHONPATH=/usr/somedir/v3/bin/python2.7
    

    Remplacez ce chemin par les valeurs réelles de votre emplacement Python.

  3. Ajoutez l'emplacement du SDK App Engine pour Python à PYTHONPATH :

     export GAE_SDK_ROOT="/usr/local/home/mydir/google_appengine"
     export PYTHONPATH=${GAE_SDK_ROOT}:${PYTHONPATH}
    

    Remplacez le chemin du SDK indiqué ci-dessus par votre chemin d'accès réel au SDK App Engine.

  4. Dans votre code client, importez dev_appserver et appelez la fonction dev_appserver.fix_sys_path() pour vous assurer que tous les modules du SDK App Engine sont correctement importés :

    try:
        import dev_appserver
        dev_appserver.fix_sys_path()

  5. Ajoutez le code remote_api_stub suivant à votre application, en veillant à lui transmettre votre ID de projet dans le code :

    remote_api_stub.ConfigureRemoteApiForOAuth(
        '{}.appspot.com'.format(project_id),
        '/_ah/remote_api')

    Si vous n'utilisez pas l'URL par défaut /_ah/remote_api de l'API Remote, vous devez modifier le code ci-dessus pour intégrer l'URL choisie. Pour accéder à la définition et à la documentation de remote_api_stub.ConfigureRemoteApiForOAuth, reportez-vous au fichier SDK [GAE-SDK-INSTALL-DIRECTORY]/google/appengine/ext/remote_api/remote_api_stub.py.

  6. Ajoutez toutes les importations App Engine et le code Python nécessaires pour accéder aux services App Engine souhaités. L'exemple de code ci-dessous permet d'accéder au datastore du projet :

    import argparse
    
    try:
        import dev_appserver
        dev_appserver.fix_sys_path()
    except ImportError:
        print('Please make sure the App Engine SDK is in your PYTHONPATH.')
        raise
    
    from google.appengine.ext import ndb
    from google.appengine.ext.remote_api import remote_api_stub
    
    def main(project_id):
        remote_api_stub.ConfigureRemoteApiForOAuth(
            '{}.appspot.com'.format(project_id),
            '/_ah/remote_api')
    
        # List the first 10 keys in the datastore.
        keys = ndb.Query().fetch(10, keys_only=True)
    
        for key in keys:
            print(key)
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(
            description=__doc__,
            formatter_class=argparse.RawDescriptionHelpFormatter)
        parser.add_argument('project_id', help='Your Project ID.')
    
        args = parser.parse_args()
    
        main(args.project_id)

  7. Une fois votre application déployée dans App Engine, démarrez le client API Remote :

     python your-client.py YOUR-PROJECT-ID
    

    Remplacez your-client.py par votre module client et YOUR-PROJECT-ID par votre ID de projet. Cela suppose que votre client accepte l'ID de projet comme entrée de ligne de commande, comme indiqué dans l'exemple de code client.py.

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

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python