Tutoriel : Configuration d'un PyCharm environnement professionnel avec un terminal 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.

Tutoriel : Configuration d'un PyCharm environnement professionnel avec un terminal de développement

Ce didacticiel explique comment connecter l'IDE Python PyCharm professionnel exécuté sur votre machine locale à un point de développement afin de pouvoir exécuter, déboguer et tester de manière interactive AWS Glue Scripts ETL (extraction, transfert et chargement) avant de les déployer. Les instructions et les captures d'écran du didacticiel sont basées sur la version PyCharm professionnelle 2019.3.

Pour vous connecter à un point de développement de manière interactive, PyCharm Professional doit être installé sur votre ordinateur. 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 se connecter à un point de terminaison de développement dans un VPC, consultez la section Connexion sécurisée aux instances Linux exécutées dans un Amazon VPC privé sur le blog de sécurité. AWS

Connecter un PyCharm professionnel à un terminal de développement

  1. Créez un nouveau projet en Python pur dans named. PyCharm 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 :

    • Dans AWS Glue version 0.9, téléchargez le AWS Glue Fichier de bibliothèque PythonPyGlue.zip, depuis https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip un emplacement pratique sur votre machine locale.

    • Dans AWS Glue version 1.0 et versions ultérieures, téléchargez le AWS Glue Fichier de bibliothèque PythonPyGlue.zip, depuis https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip un emplacement pratique sur votre machine locale.

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

    • Dans PyCharm, choisissez Fichier, Paramètres pour ouvrir la boîte de dialogue 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 PyCharm paramètres avec PyGlue .zip ajouté en tant que racine de contenu.

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

  5. Configurez les options de déploiement pour télécharger le script local sur votre terminal de développement à l'aide du protocole SFTP (cette fonctionnalité n'est disponible que 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 le AWS Glue console 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 seuls les types de clés DSA, RSA et ECDSA OpenSSH sont pris en charge et que les clés au format privé de Putty ne sont pas acceptées. Vous pouvez utiliser une up-to-date version de ssh-keygen pour générer un type de paire de clés qui PyCharm accepte, en utilisant une syntaxe similaire à 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 :

    L'écran des PyCharm paramètres 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. olpPar exemple : /home/glue/scripts/legislators.

    • Choisissez Appliquer.

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

    L'écran PyCharm des paramètres après un mappage de 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 :

    En bas de l' PyCharm écran 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, les fichiers modifiés PyCharm sont automatiquement téléchargés sur le terminal 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 volet de gauche, cliquez avec le bouton droit sur le nom du fichier et choisissez Exécuter <filename> « ».

    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.