

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tutorial: Siapkan PyCharm profesional dengan titik akhir pengembangan
<a name="dev-endpoint-tutorial-pycharm"></a>

Tutorial ini menunjukkan cara menghubungkan IDE Python [PyCharm Profesional](https://www.jetbrains.com/pycharm/) yang berjalan di mesin lokal Anda ke titik akhir pengembangan sehingga Anda dapat menjalankan, men-debug, dan menguji skrip AWS Glue ETL (ekstrak, transfer, dan muat) secara interaktif sebelum menerapkannya. Instruksi dan tangkapan layar dalam tutorial didasarkan pada versi PyCharm Profesional 2019.3.

Untuk terhubung ke titik akhir pengembangan secara interaktif, Anda harus menginstal PyCharm Profesional. Anda tidak dapat melakukan ini dengan menggunakan edisi gratis.

**catatan**  
Tutorial ini menggunakan Amazon S3 sebagai sumber data. Jika Anda ingin menggunakan sumber data JDBC sebagai gantinya, maka Anda harus menjalankan titik akhir pengembangan Anda di virtual private cloud (VPC). Untuk terhubung dengan SSH ke titik akhir pengembangan di sebuah VPC, Anda harus membuat terowongan SSH. Tutorial ini tidak menyertakan petunjuk untuk membuat terowongan SSH. Untuk informasi tentang penggunaan SSH untuk terhubung ke titik akhir pengembangan di VPC, lihat [Connect dengan Aman ke Instans Linux yang Berjalan di VPC Amazon Pribadi](https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/) di blog keamanan. AWS 

**Topics**
+ [Menghubungkan PyCharm profesional ke titik akhir pengembangan](#dev-endpoint-tutorial-pycharm-connect)
+ [Menerapkan skrip ke titik akhir pengembangan Anda](#dev-endpoint-tutorial-pycharm-deploy)
+ [Mengkonfigurasi penerjemah jarak jauh](#dev-endpoint-tutorial-pycharm-interpreter)
+ [Menjalankan skrip Anda di titik akhir pengembangan](#dev-endpoint-tutorial-pycharm-debug-run)

## Menghubungkan PyCharm profesional ke titik akhir pengembangan
<a name="dev-endpoint-tutorial-pycharm-connect"></a>

1. Buat proyek pure-Python baru dengan nama. PyCharm `legislators`

1. Membuat file bernama `get_person_schema.py` dalam proyek tersebut dengan konten berikut:

   ```
   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. Lakukan salah satu tindakan berikut:
   + Untuk AWS Glue versi 0.9, unduh file perpustakaan Python AWS Glue, `PyGlue.zip`, dari `https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip` ke lokasi yang nyaman pada mesin lokal Anda.
   + Untuk AWS Glue versi 1.0 dan versi yang lebih baru, unduh file perpustakaan Python AWS Glue, `PyGlue.zip`, dari `https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip` ke lokasi yang nyaman pada mesin lokal Anda.

1. Tambahkan `PyGlue.zip` sebagai root konten untuk proyek Anda di PyCharm:
   + Di PyCharm, pilih **File**, **Pengaturan** untuk membuka kotak dialog **Pengaturan**. (Anda juga dapat menekan `Ctrl+Alt+S`.)
   + Perluas proyek `legislators` dan pilih **Struktur Proyek**. Kemudian di panel kanan, pilih **\$1Tambah Root Konten**.
   + Navigasi ke lokasi tempat Anda menyimpan `PyGlue.zip`, pilih, lalu pilih **Terapkan**.

    Layar **Pengaturan** akan terlihat seperti berikut ini:  
![\[Layar PyCharm Pengaturan PyGlue dengan.zip ditambahkan sebagai root konten.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/PyCharm_AddContentRoot.png)

   Biarkan kotak dialog **Pengaturan** terbuka setelah Anda memilih **Terapkan**.

1. Konfigurasikan opsi penerapan untuk mengunggah skrip lokal ke titik akhir pengembangan Anda menggunakan SFTP (kemampuan ini hanya tersedia di Profesional): PyCharm 
   + Di kotak dialog **Pengaturan**, perluas bagian **Membangun, Eksekusi, Deployment**. Pilih subbagian **Deployment**.
   + Pilih ikon **\$1** di bagian atas panel tengah untuk menambahkan sebuah server baru. Atur **Jenis**-nya ke `SFTP` dan beri nama.
   + Atur **Host SFTP** ke **Alamat Publik** dari titik akhir pengembangan Anda, seperti yang tercantum pada halaman detailnya. (Pilih nama titik akhir pengembangan Anda di konsol AWS Glue untuk menampilkan halaman detail). Untuk titik akhir pengembangan yang berjalan di sebuah VPC, atur **Host SFTP** ke alamat host dan atur port lokal terowongan SSH Anda ke titik akhir pengembangan.
   + Atur **Nama pengguna** ke `glue`.
   + Atur **Jenis autentikasi** ke **Pasangan kunci (OpenSSH atau Putty)**. Atur **File kunci privat** dengan menelusuri ke lokasi di mana file kunci privat dari titik akhir pengembangan Anda terletak. Perhatikan bahwa PyCharm hanya mendukung tipe kunci OpenSSH DSA, RSA dan ECDSA, dan tidak menerima kunci dalam format pribadi Putty. Anda dapat menggunakan up-to-date versi `ssh-keygen` untuk menghasilkan tipe pasangan kunci yang PyCharm menerima, menggunakan sintaks seperti berikut:

     ```
     ssh-keygen -t rsa -f <key_file_name> -C "<your_email_address>"
     ```
   + Pilih **Uji koneksi**, dan biarkan koneksi diuji. Jika koneksi berhasil, pilih **Terapkan**.

    Layar **Pengaturan** sekarang akan terlihat seperti berikut ini:  
![\[Layar PyCharm Pengaturan dengan server SFTP yang ditentukan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/PyCharm_SFTP.png)

   Sekali lagi, biarkan kotak dialog **Pengaturan** terbuka setelah Anda memilih **Terapkan**.

1. Memetakan direktori lokal ke direktori jarak jauh untuk deployment:
   + Dalam panel kanan di halaman **Deployment**, pilih tab tengah di bagian atas, yang berlabel **Pemetaan**.
   + Di kolom **Path Deployment**, masukkan sebuah path di bawah `/home/glue/scripts/` untuk deployment path proyek Anda. Sebagai contoh: `/home/glue/scripts/legislators`.
   + Pilih **Terapkan**.

    Layar **Pengaturan** sekarang akan terlihat seperti berikut ini:  
![\[Layar PyCharm Pengaturan setelah pemetaan penerapan.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/PyCharm_Mapping.png)

   Pilih **OK** untuk menutup kotak dialog **Pengaturan**.

## Menerapkan skrip ke titik akhir pengembangan Anda
<a name="dev-endpoint-tutorial-pycharm-deploy"></a>

1. Pilih **Alat**, **Deployment**, kemudian pilih nama di mana Anda menyiapkan titik akhir pengembangan Anda, seperti yang ditunjukkan pada gambar berikut ini:  
![\[Item menu untuk men-deploy skrip Anda.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/PyCharm_Deploy.png)

   Setelah skrip Anda di-deploy, bagian bawah layar akan terlihat seperti berikut ini:  
![\[Bagian bawah PyCharm layar setelah penyebaran yang berhasil.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/PyCharm_Deployed.png)

1. Pada bilah menu, pilih **Alat**, **Deployment**, **Unggah Otomatis (selalu)**. Pastikan bahwa tanda centang muncul di samping **Unggah Otomatis (selalu)**.

   Ketika opsi ini diaktifkan, PyCharm secara otomatis mengunggah file yang diubah ke titik akhir pengembangan.

## Mengkonfigurasi penerjemah jarak jauh
<a name="dev-endpoint-tutorial-pycharm-interpreter"></a>

Konfigurasikan PyCharm untuk menggunakan interpreter Python pada titik akhir pengembangan.

1. Dari menu **File**, pilih **Pengaturan**.

1. Perluas **legislator** proyek dan pilih **Penerjemah proyek**.

1. Pilih ikon roda gigi di samping **Penerjemah proyek**, dan kemudian pilih **Tambahkan**.

1. Di kotak dialog **Tambahkan Penerjemah Python**, di panel sebelah kiri, pilih **Penerjemah SSH**.

1. Pilih **Konfigurasi server yang ada**, dan di daftar **Konfigurasi deployment**, pilih konfigurasi Anda.

   Layar Anda akan terlihat seperti gambar berikut.  
![\[Di panel kiri, Penerjemah SSH sudah dipilih, dan di panel kanan, tombol radio Konfigurasi server yang ada sudah dipilih. Bidang Konfigurasi deployment berisi nama konfigurasi dan pesan "SDK Jarak Jauh disimpan dalam pengaturan IDE, sehingga server deployment harus disimpan di sana juga. Mana yang Anda suka?" Berikut ini adalah pilihan di bawah pesan tersebut: "Buat salinan server deployment ini di pengaturan IDE" dan "Pindahkan server ini ke pengaturan IDE."\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/PyCharm_Interpreter1.png)

1. Pilih **Pindahkan server ini ke pengaturan IDE**, lalu pilih **Selanjutnya**.

1. Di bidang **Penerjemah**, ubah path ke ` /usr/bin/gluepython` jika Anda menggunakan Python 2, atau ke `/usr/bin/gluepython3` jika Anda menggunakan Python 3. Lalu pilih **Selesai**.

## Menjalankan skrip Anda di titik akhir pengembangan
<a name="dev-endpoint-tutorial-pycharm-debug-run"></a>

Untuk menjalankan skrip tersebut:
+ Di panel kiri, klik kanan nama file dan pilih **Jalankan ''. *<filename>***

  Setelah serangkaian pesan, output akhir seharusnya menunjukkan jumlah dan skema.

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

Anda sekarang disiapkan untuk melakukan debug pada skrip Anda dari jarak jauh pada titik akhir pengembangan Anda.