

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Tutorial: PyCharm Professional mit einem Entwicklungsendpunkt einrichten
<a name="dev-endpoint-tutorial-pycharm"></a>

Dieses Tutorial zeigt Ihnen, wie Sie die [PyCharm Professional](https://www.jetbrains.com/pycharm/) Python IDE, die auf Ihrem lokalen Computer ausgeführt wird, mit einem Entwicklungsendpunkt verbinden, sodass Sie AWS Glue ETL-Skripts (Extrahieren, Übertragen und Laden) interaktiv ausführen, debuggen und testen können, bevor Sie sie bereitstellen. Die Anweisungen und Screenshots im Tutorial basieren auf der PyCharm Professional-Version 2019.3.

Um eine interaktive Verbindung zu einem Entwicklungsendpunkt herzustellen, muss PyCharm Professional installiert sein. Dies können Sie nicht mit der kostenlosen Version durchführen.

**Anmerkung**  
Im Tutorial wird Amazon S3 als Datenquelle verwendet. Wenn Sie stattdessen eine JDBC-Datenquelle verwenden möchten, müssen Sie Ihren Entwicklungsendpunkt in einer Virtual Private Cloud (VPC) ausführen. Um eine Verbindung mit SSH zu einem Entwicklungsendpunkt in einer VPC herzustellen, müssen Sie einen SSH-Tunnel erstellen. Dieses Tutorial enthält keine Anweisungen zum Erstellen eines SSH-Tunnels. Informationen zur Verwendung von SSH für die Connect mit einem Entwicklungsendpunkt in einer VPC finden Sie unter [Sichere Verbindung zu Linux-Instances, die in einer privaten Amazon-VPC ausgeführt](https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/) werden, im AWS Sicherheitsblog.

**Topics**
+ [PyCharm Professionelle Verbindung zu einem Entwicklungsendpunkt herstellen](#dev-endpoint-tutorial-pycharm-connect)
+ [Bereitstellen des Skripts auf Ihrem Entwicklungsendpunkt](#dev-endpoint-tutorial-pycharm-deploy)
+ [Konfigurieren eines Remote Interpreters](#dev-endpoint-tutorial-pycharm-interpreter)
+ [Ausführen Ihres Skripts auf dem Entwicklungsendpunkt](#dev-endpoint-tutorial-pycharm-debug-run)

## PyCharm Professionelle Verbindung zu einem Entwicklungsendpunkt herstellen
<a name="dev-endpoint-tutorial-pycharm-connect"></a>

1. Erstellen Sie ein neues Pure-Python-Projekt in PyCharm named. `legislators`

1. Erstellen Sie im Projekt eine Datei mit dem Namen `get_person_schema.py` und dem folgenden Inhalt:

   ```
   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()
   ```

1. Führen Sie eine der folgenden Aktionen aus:
   + Laden Sie für AWS Glue 0.9 die AWS Glue-Python-Bibliotheksdatei `PyGlue.zip` von `https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip` in einen geeigneten Speicherort auf Ihrem lokalen Computer herunter.
   + Laden Sie für AWS Glue 1.0 und höhere Versionen die AWS Glue-Python-Bibliotheksdatei `PyGlue.zip` von `https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip` in einen geeigneten Speicherort auf Ihrem lokalen Computer herunter.

1. Fügen Sie `PyGlue.zip` es als Inhaltsstamm für Ihr Projekt hinzu in: PyCharm
   + Wählen Sie in PyCharm **Datei**, **Einstellungen**, um das Dialogfeld **Einstellungen** zu öffnen. (Sie können auch `Ctrl+Alt+S` betätigen.)
   + Erweitern Sie das Projekt `legislators` und wählen Sie **Project Structure** (Projektstruktur) aus. Wählen Sie anschließend auf der rechten Seite **\$1 Add Content Root** (\$1 Inhalts-Stammverzeichnis hinzufügen) aus.
   + Navigieren Sie zum Speicherort, an dem Sie `PyGlue.zip` gespeichert haben, und wählen Sie dann **Apply** (Anwenden) aus.

    Der Bildschirm **Settings** (Einstellungen) sollte etwa wie folgt aussehen:  
![\[Der PyCharm Einstellungsbildschirm mit der hinzugefügten PyGlue ZIP-Datei als Inhaltsstamm.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/PyCharm_AddContentRoot.png)

   Lassen Sie das Dialogfeld **Settings** (Einstellungen) geöffnet, nachdem Sie **Apply** (Anwenden) ausgewählt haben.

1. Konfigurieren Sie die Bereitstellungsoptionen, um das lokale Skript mithilfe von SFTP auf Ihren Entwicklungsendpunkt hochzuladen (diese Funktion ist nur in PyCharm Professional verfügbar):
   + Erweitern Sie im Dialogfeld **Settings** (Einstellungen) den Abschnitt **Build, Execution, Deployment** (Erstellung, Ausführung, Bereitstellung). Wählen Sie den Teilabschnitt **Deployment** (Bereitstellung) aus.
   + Wählen Sie das Symbol **\$1** oben im mittleren Bereich aus, um einen neuen Server hinzuzufügen. Setzen Sie seinen **Type (Typ)** auf `SFTP`, und geben Sie ihm einen Namen.
   + Legen Sie den **SFTP-Host** auf die **Public Address (Öffentliche Adresse)** Ihres Entwicklungsendpunkts fest, wie auf der Detailseite aufgeführt. (Wählen Sie den Namen Ihres Entwicklungsendpunkts in der AWS Glue-Konsole, um die Detailseite anzuzeigen). Legen Sie für einen Entwicklungsendpunkt, der in einer VPC ausgeführt wird, den **SFTP-Host** auf die Hostadresse und den lokalen Port des SSH-Tunnels auf den Entwicklungsendpunkt fest.
   + Legen Sie den **User name** (Benutzername) auf `glue` fest.
   + Legen Sie den **Auth type** (Authentifizierungstyp) auf **Key pair (OpenSSH or Putty)** (Schlüsselpaar (OpenSSH oder PuTTY)) fest. Legen Sie die **Private key file** (Datei für den privaten Schlüssel) fest, indem Sie zum Speicherort navigieren, an dem die Datei für den privaten Schlüssel Ihres Entwicklungsendpunkts gespeichert ist. Beachten Sie, dass PyCharm nur die OpenSSH-Schlüsseltypen DSA, RSA und ECDSA unterstützt werden und keine Schlüssel im privaten Format von Putty akzeptiert. Sie können eine up-to-date Version von verwenden, um einen Schlüsselpaartyp `ssh-keygen` zu generieren, der akzeptiert, und zwar mit einer Syntax wie der folgenden: PyCharm 

     ```
     ssh-keygen -t rsa -f <key_file_name> -C "<your_email_address>"
     ```
   + Wählen Sie **Test SFTP connection (SFTP-Verbindung testen)** aus, und lassen Sie das Testen der Verbindung zu. Wenn die Verbindung erfolgreich hergestellt wird, wählen Sie **Apply** (Anwenden) aus.

    Der Bildschirm **Settings** (Einstellungen) sollte nun etwa wie folgt aussehen:  
![\[Der PyCharm Einstellungsbildschirm mit einem definierten SFTP-Server.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/PyCharm_SFTP.png)

   Lassen Sie wiederum das Dialogfeld **Settings** (Einstellungen) geöffnet, nachdem Sie **Apply** (Anwenden) ausgewählt haben.

1. Ordnen Sie das lokale Verzeichnis einem Remote-Verzeichnis für die Bereitstellung zu:
   + Wählen Sie rechts auf der Seite **Deployment** (Bereitstellung) die mittlere Registerkarte mit der Bezeichnung **Mappings** aus.
   + Geben Sie in der Spalte **Deployment Path** (Bereitstellungspfad) einen Pfad für die Bereitstellung Ihres Projekts unter `/home/glue/scripts/` ein. Beispiel: `/home/glue/scripts/legislators`.
   + Wählen Sie **Anwenden** aus.

    Der Bildschirm **Settings** (Einstellungen) sollte nun etwa wie folgt aussehen:  
![\[Der PyCharm Einstellungsbildschirm nach einer Bereitstellungszuweisung.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/PyCharm_Mapping.png)

   Klicken Sie auf **OK**, um das Dialogfeld ** Settings (Einstellungen)** zu schließen.

## Bereitstellen des Skripts auf Ihrem Entwicklungsendpunkt
<a name="dev-endpoint-tutorial-pycharm-deploy"></a>

1. Wählen Sie **Tools (Extras)**, **Deployment (Bereitstellung)**, und wählen Sie dann den Namen, unter dem Sie Ihren Entwicklungsendpunkt einrichten, wie im folgenden Image dargestellt:  
![\[Die Menüoption zur Bereitstellung Ihres Skripts.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/PyCharm_Deploy.png)

   Nachdem Ihr Skript bereitgestellt wurde, sollte der untere Bereich des Bildschirms etwa wie folgt aussehen:  
![\[Der untere PyCharm Bildschirmrand nach einer erfolgreichen Bereitstellung.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/PyCharm_Deployed.png)

1. Wählen Sie in der Menüleiste **Tools (Extras)**, **Deployment (Bereitstellung)**, **Automatic Upload (always) (Automatischer Upload (immer))**. Stellen Sie sicher, dass neben **Automatic Upload (always) (Automatischer Upload (immer))** ein Häkchen angezeigt wird.

   Wenn diese Option aktiviert ist, PyCharm werden geänderte Dateien automatisch auf den Entwicklungsendpunkt hochgeladen.

## Konfigurieren eines Remote Interpreters
<a name="dev-endpoint-tutorial-pycharm-interpreter"></a>

Konfigurieren Sie so PyCharm , dass der Python-Interpreter auf dem Entwicklungsendpunkt verwendet wird.

1. Wählen Sie im Menü **File (Datei)** die Option **Open (Öffnen)** aus.

1. Erweitern Sie die **Project legislators (Projektgesetzgeber)**, und wählen Sie **Project Interpreter**.

1. Wählen Sie das Zahnradsymbol neben der Liste **Project Interpreter**, und wählen Sie dann **Add (Hinzufügen)**.

1. Wählen Sie im Dialogfeld **Add Python Interpreter (Python-Interpreter hinzufügen)** im linken Bereich die Option **SSH-Interpreter**.

1. Wählen Sie **Existing server configuration (Vorhandene Serverkonfiguration)**, und wählen Sie in der Liste **Deployment configuration (Bereitstellungskonfiguration)** Ihre Konfiguration aus.

   Ihr Bildschirm sollte ungefähr wie das folgende Image aussehen.  
![\[Im linken Bereich ist SSH-Interpreter ausgewählt, und im rechten Bereich ist das Optionsfeld „Existing server configuration (Vorhandene Serverkonfiguration)“ aktiviert. Das Feld „Deployment configuration (Bereitstellungskonfiguration)“ enthält den Konfigurationsnamen und die Meldung „Remote SDK is saved in IDE settings, so it needs the deployment server to be saved there too. Which do you prefer? (Remote-SDK wird in IDE-Einstellungen gespeichert. Daher muss auch der Bereitstellungsserver dort gespeichert werden.Was bevorzugen Sie?)“. Folgende Optionen stehen unter dieser Meldung zur Auswahl: „Create copy of this deployment server in IDE settings (Kopie dieses Bereitstellungsservers in IDE-Einstellungen erstellen)“ und „Move this server to IDE settings. (Diesen Server in IDE-Einstellungen verschieben)“.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/PyCharm_Interpreter1.png)

1. Wählen Sie **Move this server to IDE settings (Diesen Server in IDE-Einstellungen verschieben)** und dann **Next (Weiter)**.

1. Ändern Sie im Feld **Interpreter** den Pfad zu ` /usr/bin/gluepython`, wenn Sie Python 2 verwenden, oder zu `/usr/bin/gluepython3`, wenn Sie Python 3 verwenden. Klicken Sie auf **Finish (Fertig stellen)**.

## Ausführen Ihres Skripts auf dem Entwicklungsendpunkt
<a name="dev-endpoint-tutorial-pycharm-debug-run"></a>

So führen Sie das Skript aus:
+ Klicken Sie im linken Bereich mit der rechten Maustaste auf den Dateinamen und wählen Sie **Ausführen '*<filename>*'** aus.

  Nach einer Reihe von Nachrichten sollte die endgültige Ausgabe die Anzahl und das Schema anzeigen.

  ```
  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
  ```

Nun können Sie Ihr Skript remote auf Ihrem Entwicklungsendpunkt debuggen.