

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

# Menggunakan platform Python Elastic Beanstalk
<a name="create-deploy-python-container"></a>

Topik ini menjelaskan cara mengonfigurasi, membangun, dan menjalankan aplikasi Python Anda di Elastic Beanstalk.

AWS Elastic Beanstalk mendukung sejumlah cabang platform untuk berbagai versi bahasa pemrograman Python. Lihat [Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python) di dokumen *AWS Elastic Beanstalk Platform* untuk daftar lengkapnya.

Aplikasi web Python dapat berjalan di belakang server proxy dengan WSGI. Elastic [Beanstalk](https://gunicorn.org/) menyediakan Gunicorn sebagai server WSGI default. 

Anda dapat menambahkan `Procfile` ke paket sumber untuk menentukan dan mengonfigurasi server WSGI bagi aplikasi Anda. Untuk detail selengkapnya, lihat [Mengkonfigurasi server WSGI dengan Procfile pada Elastic Beanstalk](python-configuration-procfile.md).

Anda dapat menggunakan file `Pipfile` dan `Pipfile.lock` yang dibuat oleh Pipenv untuk menentukan dependensi paket Python dan persyaratan lainnya. Untuk detail tentang menentukan dependensi, lihat [Menentukan dependensi menggunakan file persyaratan pada Elastic Beanstalk](python-configuration-requirements.md).

Elastic [Beanstalk menyediakan](command-options.md) opsi konfigurasi yang dapat Anda gunakan untuk menyesuaikan perangkat lunak yang berjalan EC2 pada instance di lingkungan Elastic Beanstalk Anda. Anda dapat mengonfigurasi variabel lingkungan yang diperlukan aplikasi Anda, mengaktifkan rotasi log ke Amazon S3, dan memetakan folder dalam sumber aplikasi Anda yang berisi file statis ke jalur yang disajikan server proksi.

Opsi konfigurasi tersedia di konsol Elastic Beanstalk untuk [memodifikasi konfigurasi dari lingkungan yang sedang berjalan](environment-configuration-methods-after.md). Agar Anda tidak kehilangan konfigurasi lingkungan ketika mengakhirinya, Anda dapat menggunakan [konfigurasi tersimpan](environment-configuration-savedconfig.md) untuk menyimpan pengaturan dan kemudian menerapkannya ke lingkungan lain.

Untuk menyimpan pengaturan di kode sumber, Anda dapat menyertakan [file konfigurasi](ebextensions.md). Pengaturan di file konfigurasi diterapkan setiap kali Anda membuat lingkungan atau men-deploy aplikasi Anda. Anda juga dapat menggunakan file konfigurasi untuk menginstal paket, menjalankan penulisan, dan melakukan operasi penyesuaian instans lainnya selama deployment.

Pengaturan yang diterapkan di konsol Elastic Beanstalk mengganti pengaturan yang sama di file konfigurasi, jika ada. Hal tersebut memungkinkan Anda memiliki pengaturan default di file konfigurasi, dan mengganti keduanya dengan pengaturan khusus lingkungan di konsol tersebut. Untuk informasi lebih lanjut tentang yang diutamakan, dan metode lain untuk mengubah pengaturan, lihat [Opsi konfigurasi](command-options.md).

Untuk paket Python tersedia dari `pip`, Anda dapat menyertakan file persyaratan di akar kode sumber aplikasi Anda. Elastic Beanstalk menginstal paket dependensi yang ditentukan dalam file persyaratan selama deployment. Untuk detail selengkapnya, lihat [Menentukan dependensi menggunakan file persyaratan pada Elastic Beanstalk](python-configuration-requirements.md).

Untuk detail tentang berbagai cara memperluas platform berbasis Linux Elastic Beanstalk, lihat [Memperluas platform Linux Elastic Beanstalk](platforms-linux-extend.md).

## Mengonfigurasi lingkungan Python Anda
<a name="create-deploy-python-container-console"></a>

Pengaturan platform Python memungkinkan Anda menyempurnakan perilaku instans Amazon Anda. EC2 Anda dapat mengedit konfigurasi instans Amazon lingkungan Elastic Beanstalk menggunakan konsol EC2 Elastic Beanstalk.

Gunakan konsol Elastic Beanstalk untuk mengonfigurasi AWS X-Ray pengaturan proses Python, mengaktifkan, mengaktifkan rotasi log ke Amazon S3, dan mengonfigurasi variabel yang dapat dibaca aplikasi Anda dari lingkungan.

**Untuk mengonfigurasi lingkungan Python Anda di konsol Elastic Beanstalk**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

1. Di panel navigasi, pilih **Lingkungan**, dan kemudian pilih nama lingkungan Anda dari daftar.

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Dalam kategori konfigurasi **Pembaruan, pemantauan, dan pencatatan**, pilih **Edit**.

### Pengaturan Python
<a name="python-console-settings"></a>
+ **Server proksi** – Server proksi yang akan digunakan pada instans lingkungan Anda. Secara default, nginx digunakan.
+ **Jalur WSGI** – Nama atau jalur ke file aplikasi utama Anda. Misalnya, `application.py`, atau `django/wsgi.py`.
+ **NumProcesses**— Jumlah proses yang dijalankan pada setiap instance aplikasi.
+ **NumThreads**— Jumlah thread yang akan dijalankan di setiap proses.

### AWS X-Ray pengaturan
<a name="python-console-xray"></a>
+ **Daemon X-Ray** - Jalankan AWS X-Ray daemon untuk memproses data jejak dari. [AWS X-Ray SDK for Python](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html)

### Opsi log
<a name="create-deploy-python-container.console.logoptions"></a>

Bagian Opsi Log memiliki dua pengaturan:
+ **Profil instans**– Menentukan profil instans yang memiliki izin untuk mengakses bucket Amazon S3 yang terkait dengan aplikasi Anda.
+ **Aktifkan rotasi file log ke Amazon S3** — Menentukan apakah file log untuk EC2 instans Amazon aplikasi Anda disalin ke bucket Amazon S3 yang terkait dengan aplikasi Anda.

### File statis
<a name="python-platform-staticfiles"></a>

Untuk meningkatkan kinerja, Anda dapat menggunakan bagian **File statis** untuk mengkonfigurasi server proxy untuk melayani file statis (misalnya, HTML atau gambar) dari satu set direktori di dalam aplikasi web Anda. Untuk setiap direktori, Anda mengatur jalur virtual ke pemetaan direktori. Saat server proksi menerima permintaan untuk file di jalur yang ditentukan, server langsung menyajikan file daripada merutekan permintaan ke aplikasi Anda.

Untuk detail tentang mengonfigurasi file statis menggunakan file konfigurasi atau konsol Elastic Beanstalk, lihat. [Menyajikan file statis](environment-cfg-staticfiles.md)

Secara default, server proksi di lingkungan Python menyajikan file apa pun dalam folder bernama `static` di jalur `/static`. Misalnya, jika sumber aplikasi Anda berisi file bernama `logo.png` dalam folder bernama `static`, server proksi menyajikannya untuk pengguna di `{{subdomain}}.elasticbeanstalk.com/static/logo.png`. Anda dapat mengonfigurasi pemetaan tambahan seperti yang dijelaskan di bagian ini.

### Properti lingkungan
<a name="create-deploy-python-custom-container-envprop"></a>

Anda dapat menggunakan properti lingkungan untuk memberikan informasi ke aplikasi Anda dan mengonfigurasi variabel lingkungan. Misalnya, Anda dapat membuat properti lingkungan bernama `CONNECTION_STRING` yang menentukan string koneksi yang dapat digunakan aplikasi Anda agar terhubung ke basis data.

Di dalam lingkungan Python yang berjalan di Elastic Beanstalk, nilai-nilai ini dapat diakses menggunakan kamus `os.environ` Python. Untuk informasi lebih lanjut, lihat [http://docs.python. org/library/os.html](http://docs.python.org/library/os.html).

Anda dapat menggunakan kode yang terlihat mirip dengan yang berikut untuk mengakses kunci dan parameter:

```
import os
endpoint = os.environ['{{API_ENDPOINT}}']
```

Properti lingkungan juga dapat memberikan informasi ke kerangka kerja. Misalnya, Anda dapat membuat properti bernama `DJANGO_SETTINGS_MODULE` untuk mengonfigurasi Django agar menggunakan modul pengaturan khusus. Bergantung pada lingkungan, nilai bisa saja `development.settings`, `production.settings`, dll.

Lihat [Variabel lingkungan dan pengaturan perangkat lunak lainnya](environments-cfg-softwaresettings.md) untuk informasi selengkapnya.

## Namespace konfigurasi Python
<a name="python-namespaces"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengatur opsi konfigurasi dan melakukan tugas-tugas konfigurasi instans lain selama deployment. Opsi konfigurasi dapat berupa [platform khusus](command-options-specific.md) atau berlaku untuk [semua platform di layanan](command-options-general.md) Elastic Beanstalk secara keseluruhan. Opsi konfigurasi diatur ke dalam *ruang nama*.

Platform Python mendefinisikan opsi dalam namespace `aws:elasticbeanstalk:environment:proxy`, `aws:elasticbeanstalk:environment:proxy:staticfiles`, dan `aws:elasticbeanstalk:container:python`.

File konfigurasi contoh berikut menentukan pengaturan opsi konfigurasi untuk membuat properti lingkungan bernama `DJANGO_SETTINGS_MODULE`, memilih server proksi Apache, menentukan dua opsi file statis yang memetakan direktori bernama `statichtml` ke jalur `/html` dan sebuah direktori bernama `staticimages` ke jalur `/images`, dan menentukan pengaturan tambahan di namespace `[aws:elasticbeanstalk:container:python](command-options-specific.md#command-options-python)`. Namespace ini berisi opsi yang memungkinkan Anda menentukan lokasi skrip WSGI dalam kode sumber Anda, dan jumlah utas serta proses untuk berjalan di WSGI.

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: production.settings
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /html: statichtml
    /images: staticimages
  aws:elasticbeanstalk:container:python:
    WSGIPath: ebdjango.wsgi:application
    NumProcesses: 3
    NumThreads: 20
```

**Catatan**  
Jika Anda menggunakan versi platform Python Amazon Linux AMI (Amazon Linux 2 yang terdahulu), ganti nilai `WSGIPath` dengan `ebdjango/wsgi.py`. Nilai dalam contoh berfungsi dengan menggunakan server Gunicorn WSGI, yang tidak didukung pada versi platform Amazon Linux AMI.
Selain itu, versi platform yang lebih lama ini menggunakan namespace yang berbeda dalam mengonfigurasi file statis—`aws:elasticbeanstalk:container:python:staticfiles`. Platform tersebut memiliki nama opsi dan makna yang sama dengan namespace file statis standar.

File konfigurasi juga mendukung beberapa kunci untuk [memodifikasi perangkat lunak lebih lanjut pada instans lingkungan Anda](customize-containers-ec2.md). Contoh ini menggunakan kunci [paket](customize-containers-ec2.md#linux-packages) untuk menginstal Memcached dengan `yum` dan [perintah kontainer](customize-containers-ec2.md#linux-container-commands) untuk menjalankan perintah yang mengonfigurasi server selama deployment:

```
packages:
  yum:
    libmemcached-devel: '0.31'

container_commands:
  collectstatic:
    command: "django-admin.py collectstatic --noinput"
  01syncdb:
    command: "django-admin.py syncdb --noinput"
    leader_only: true
  02migrate:
    command: "django-admin.py migrate"
    leader_only: true
  03wsgipass:
    command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
  99customize:
    command: "scripts/customize.sh"
```

Elastic Beanstalk memberikan banyak opsi konfigurasi untuk menyesuaikan lingkungan Anda. Selain file konfigurasi, Anda juga dapat mengatur opsi konfigurasi menggunakan konsol tersebut, konfigurasi tersimpan, EB CLI, atau AWS CLI. Untuk informasi selengkapnya, lihat [Opsi konfigurasi](command-options.md).

## Yang dapat `python3` dieksekusi
<a name="python3-executable"></a>

Versi `python3` executable yang tersedia pada EC2 instance di lingkungan Elastic Beanstalk Python tidak akan selalu sesuai dengan versi Python yang sama yang digunakan oleh platform. Misalnya, pada platform Python 3.12 AL2 023, menunjuk `/usr/bin/python3` ke Python 3.9. Ini karena Python 3.9 adalah sistem *Python* pada 023. AL2 Untuk informasi selengkapnya, lihat [Python di AL2 023 di Panduan](https://docs.aws.amazon.com/linux/al2023/ug/python.html) Pengguna *Amazon Linux 2023*. Anda dapat mengakses executable yang sesuai dengan versi Python yang digunakan oleh platform di lokasi berversi (misalnya`/usr/bin/python3.12`) atau di direktori lingkungan virtual aplikasi (misalnya). `bin` `/var/app/venv/staging-LQM1lest/bin/python3` Platform menggunakan executable Python yang benar yang sesuai dengan cabang platform. 