Didacticiel : Configuration de PyCharm Professional avec un point de terminaison de développement - AWS Glue

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Didacticiel : Configuration de PyCharm Professional avec un point de terminaison de développement

Ce didacticiel vous montre comment connecter l'environnement IDE Python PyCharm Professional qui s'exécute sur votre ordinateur local à un point de terminaison de développement afin de pouvoir exécuter, déboguer et tester de façon interactive les scripts ETL (extraction, transformation et chargement) AWS Glue avant de les déployer. Les instructions et les captures d'écran présentées dans le didacticiel sont basées sur PyCharm Professional version 2019.3.

Pour vous connecter à un point de terminaison de développement de façon interactive, PyCharm Professional doit être installé. Vous ne pouvez pas le faire avec la version gratuite.

Note

Le didacticiel utilise Amazon S3 comme source de données. Si vous souhaitez utiliser une source de données JDBC à la place, vous devez exécuter votre point de terminaison de développement dans un cloud privé virtuel (VPC). Pour vous connecter avec SSH à un point de terminaison de développement dans un VPC, vous devez créer un tunnel SSH. Ce didacticiel ne contient pas d'instructions pour la création d'un tunnel SSH. Pour plus d'informations sur l'utilisation de SSH pour la connexion à un point de terminaison de développement dans un VPC, consultez Securely Connect to Linux Instances Running in a Private Amazon VPC sur AWS Security Blog.

Connexion de PyCharm Professional à un point de terminaison de développement

  1. Créez un nouveau projet Python pur dans PyCharm, nommé legislators.

  2. Créez un fichier nommé get_person_schema.py dans le projet avec le contenu suivant :

    from pyspark.context import SparkContext from awsglue.context import GlueContext def main(): # Create a Glue context glueContext = GlueContext(SparkContext.getOrCreate()) # Create a DynamicFrame using the 'persons_json' table persons_DyF = glueContext.create_dynamic_frame.from_catalog(database="legislators", table_name="persons_json") # Print out information about this data print("Count: ", persons_DyF.count()) persons_DyF.printSchema() if __name__ == "__main__": main()
  3. Effectuez l’une des actions suivantes :

    • Pour la version 0.9 de AWS Glue, téléchargez le fichier de bibliothèque Python AWS Glue, PyGlue.zip à l'adresse https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip, vers un emplacement approprié sur votre ordinateur local.

    • Pour les versions 1.0 et ultérieures de AWS Glue, téléchargez le fichier de bibliothèque Python AWS Glue, PyGlue.zip à l'adresse https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip, vers un emplacement approprié sur votre ordinateur local.

  4. Ajoutez PyGlue.zip en tant que contenu racine pour votre projet dans PyCharm :

    • Dans PyCharm, choisissez File (Fichier), Settings (Paramètres) pour ouvrir la boîte de Settings (Paramètres). (Vous pouvez également appuyer sur Ctrl+Alt+S.)

    • Développez le projet legislators et choisissez Project Structure (Structure du projet). Ensuite, dans le panneau droit, sélectionnez + Add Content Root (+ Ajouter le contenu racine).

    • Accédez à l'emplacement où vous avez enregistré PyGlue.zip, sélectionnez-le, puis choisissez Apply (Appliquer).

    L'écran Settings (Paramètres) doit ressembler à ceci :

    L'écran des paramètres PyCharm avec le fichier PyGlue.zip ajouté en tant que contenu racine.

    Laissez la boîte de dialogue Settings (Paramètres) ouverte après avoir choisi Apply (Appliquer).

  5. Configurez les options de déploiement pour charger le script local sur votre point de terminaison de développement à l'aide de SFTP (cette fonctionnalité est disponible uniquement dans PyCharm Professional) :

    • Dans la boîte de dialogue Settings (Paramètres), développez la section Build, Execution, Deployment (Création, exécution, déploiement). Choisissez la sous-section Deployment (Déploiement).

    • Sélectionnez l'icône + en haut du panneau central pour ajouter un nouveau serveur. Définissez Type sur SFTP et donnez-lui un nom.

    • Définissez SFTP host (Hôte SFTP) sur l'adresse publique de votre point de terminaison de développement, comme indiqué sur sa page de détails. (Choisissez le nom de votre point de terminaison de développement dans la console AWS Glue pour afficher la page de détails). Pour un point de terminaison de développement s'exécutant dans un VPC, définissez SFTP host (Hôte SFTP) sur l'adresse hôte et le port local de votre tunnel SSH sur le point de terminaison de développement.

    • Définissez le champ User name (Nom d'utilisateur) sur glue.

    • Définissez le champ Auth type (Type d'autorisation) sur Key pair (OpenSSH or Putty) (Paire de clés (OpenSSH ou Putty)). Définissez le champ Private key file (Fichier de clé privée) en accédant à l'emplacement du fichier de clé privée de votre point de terminaison de développement. Notez que PyCharm prend uniquement en charge les types de clés DSA, RSA et ECDSA OpenSSH, et n'accepte pas les clés au format privé Putty. Vous pouvez utiliser une version actualisée de ssh-keygen pour générer un type de paire de clés que PyCharm accepte, à l'aide d'une syntaxe telle que la suivante :

      ssh-keygen -t rsa -f <key_file_name> -C "<your_email_address>"
    • Choisissez Test connection (Tester la connexion) et autorisez le test de la connexion. Si la connexion est établie, choisissez Apply (Appliquer).

    L'écran Settings (Paramètres) doit désormais ressembler à ceci :

    Écran des paramètres PyCharm avec un serveur SFTP défini.

    Laissez à nouveau la boîte de dialogue Settings (Paramètres) ouverte après avoir choisi Apply (Appliquer).

  6. Mappez le répertoire local à un répertoire distant pour le déploiement :

    • Dans le panneau de droite de la page Deployment (Déploiement), sélectionnez l'onglet central en haut, intitulé Mappings (Mappages).

    • Dans la colonne Deployment Path (Chemin d'accès du déploiement), saisissez un chemin sous /home/glue/scripts/ pour le déploiement du chemin de votre projet. Par exemple : /home/glue/scripts/legislators.

    • Choisissez Appliquer.

    L'écran Settings (Paramètres) doit désormais ressembler à ceci :

    Écran des paramètres PyCharm après le mappage d'un déploiement.

    Choisissez OK pour fermer la boîte de dialogue Settings (Paramètres).

Déploiement du script sur votre point de terminaison de développement

  1. Choisissez Tools (Outils), Deployment (Déploiement), puis choisissez le nom sous lequel vous configurez votre point de terminaison de développement, comme illustré dans l'image suivante :

    Élément de menu pour le déploiement de votre script.

    Une fois que votre script a été déployé, le bas de l'écran doit ressembler à ce qui suit :

    Bas de l'écran PyCharm après un déploiement réussi.
  2. Dans la barre de menus, choisissez Tools (Outils), Deployment (Déploiement), Automatic Upload (always) [Téléchargement automatique (toujours)]. Assurez-vous qu'une coche s'affiche en regard de Automatic Upload (always) [Téléchargement automatique (toujours)].

    Lorsque cette option est activée, PyCharm télécharge automatiquement les fichiers modifiés sur le point de terminaison de développement.

Configuration d'un interpréteur distant

Configurez PyCharm pour utiliser l'interpréteur Python sur le point de terminaison de développement.

  1. Dans le menu File (Fichier), choisissez Settings (Paramètres).

  2. Développez les législateurs du projet et choisissez Project Interpreter (Interpréteur de projet).

  3. Choisissez l'icône représentant un engrenage en regard de la liste Project Interpreter (Interpréteur de projet), puis choisissez Add (Ajouter).

  4. Dans la boîte de dialogue Add Python Interpreter (Ajouter un interpréteur Python) dans le panneau gauche, sélectionnez SSH Interpreter (Interpréteur SSH).

  5. Choisissez Existing server configuration (Configuration du serveur existant), et, dans la liste Deployment configuration (Configuration du déploiement), choisissez votre configuration.

    Votre écran doit ressembler à l’image suivante.

    Dans le panneau gauche, l'interpréteur SSH est sélectionné et, dans le panneau droit, la case d’option Existing server configuration (Configuration du serveur existant) est sélectionnée. Le champ Deployment configuration (Configuration du déploiement) contient le nom de la configuration et le message « Remote SDK is saved in IDE settings, so it needs the deployment server to be saved there too. Which do you prefer? » À la suite de ce message, les choix suivants sont disponsibles : « Create copy of this deployment server in IDE settings » (Créer une copie de ce serveur de déploiement dans les paramètres IDE) et « Move this server to IDE settings. » (Déplacer ce serveur dans les paramètres IDE)
  6. Choisissez Move this server to IDE settings (Déplacer ce serveur dans les paramètres IDE, puis choisissez Next (Suivant).

  7. Dans le champ Interpreter (Interpréteur) modifiez le chemin d'accès en /usr/bin/gluepython si vous utilisez Python 2, ou en /usr/bin/gluepython3 si vous utilisez Python 3. Choisissez ensuite Finish (Terminer).

Exécution de votre script sur le point de terminaison de développement

Pour exécuter le script :

  • Dans le panneau gauche, cliquez avec le bouton droit sur le nom du fichier et sélectionnez Run (Exécuter) '<nom_fichier>'.

    Après une série de messages, la sortie finale doit afficher le nombre et le schéma.

    Count: 1961 root |-- family_name: string |-- name: string |-- links: array | |-- element: struct | | |-- note: string | | |-- url: string |-- gender: string |-- image: string |-- identifiers: array | |-- element: struct | | |-- scheme: string | | |-- identifier: string |-- other_names: array | |-- element: struct | | |-- lang: string | | |-- note: string | | |-- name: string |-- sort_name: string |-- images: array | |-- element: struct | | |-- url: string |-- given_name: string |-- birth_date: string |-- id: string |-- contact_details: array | |-- element: struct | | |-- type: string | | |-- value: string |-- death_date: string Process finished with exit code 0

Vous êtes maintenant en mesure de déboguer votre script à distance sur votre point de terminaison de développement.