Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Runtime Python untuk Instans Terkelola Lambda
Runtime Lambda menggunakan beberapa proses Python untuk menangani permintaan bersamaan. Setiap permintaan bersamaan berjalan dalam proses terpisah dengan ruang memori dan inisialisasi sendiri. Setiap proses menangani satu permintaan pada satu waktu, secara serempak. Proses tidak berbagi memori secara langsung, sehingga variabel global, cache tingkat modul, dan objek tunggal diisolasi di antara permintaan bersamaan.
Konfigurasi konkurensi
Jumlah maksimum permintaan bersamaan yang dikirim Lambda ke setiap lingkungan eksekusi dikendalikan oleh pengaturan PerExecutionEnvironmentMaxConcurrency dalam konfigurasi fungsi. Ini adalah pengaturan opsional, dan nilai default bervariasi tergantung pada runtime. Untuk runtime Python, defaultnya adalah 16 permintaan bersamaan per vCPU, atau Anda dapat mengonfigurasi nilai Anda sendiri. Nilai ini juga menentukan jumlah proses yang digunakan oleh runtime Python. Lambda secara otomatis menyesuaikan jumlah permintaan bersamaan hingga maksimum yang dikonfigurasi berdasarkan kapasitas setiap lingkungan eksekusi untuk menyerap permintaan tersebut.
penting
Menggunakan konkurensi berbasis proses berarti setiap proses runtime worker melakukan inisialisasi sendiri. Total penggunaan memori sama dengan memori per-proses dikalikan dengan jumlah proses bersamaan. Jika Anda memuat pustaka atau kumpulan data besar dan memiliki konkurensi tinggi, Anda akan memiliki jejak memori yang besar. Menurut beban kerja Anda, Anda mungkin perlu menyetel CPU-to-memory rasio Anda atau menggunakan pengaturan konkurensi yang lebih rendah untuk menghindari melebihi memori yang tersedia. Anda dapat menggunakan MemoryUtilization metrik CloudWatch untuk melacak konsumsi memori.
Membangun fungsi untuk multi-konkurensi
Karena model multi-konkurensi berbasis proses, fungsi Instans Terkelola Lambda menggunakan runtime Python tidak mengakses sumber daya dalam memori secara bersamaan dari beberapa pemanggilan. Anda tidak perlu menerapkan praktik pengkodean untuk keamanan konkurensi dalam memori.
Direktori bersama/tmp
/tmpDirektori dibagikan di semua permintaan bersamaan di lingkungan eksekusi. Menulis bersamaan ke file yang sama dapat menyebabkan kerusakan data, misalnya jika proses lain menimpa file. Untuk mengatasinya, terapkan penguncian file untuk file bersama atau gunakan nama file unik per proses atau per permintaan untuk menghindari konflik. Ingatlah untuk membersihkan file yang tidak dibutuhkan untuk menghindari kehabisan ruang yang tersedia.
Logging
Log interleaving (entri log dari permintaan berbeda yang disisipkan dalam log) adalah normal dalam sistem multi-konkuren.
Fungsi yang menggunakan Instans Terkelola Lambda selalu menggunakan format log JSON terstruktur yang diperkenalkan dengan kontrol logging lanjutan. Format ini mencakuprequestId, memungkinkan entri log dikorelasikan dengan satu permintaan. Bila Anda menggunakan logging modul dari pustaka standar Python di Lambda, secara otomatis disertakan dalam setiap requestId entri log. Untuk informasi lebih lanjut, lihat Menggunakan kontrol logging lanjutan Lambda dengan Python.
Konteks permintaan
Gunakan context.aws_request_id untuk mengakses ID permintaan untuk permintaan saat ini.
Dengan runtime Python, Anda dapat menggunakan variabel _X_AMZN_TRACE_ID lingkungan untuk mengakses ID jejak X-Ray dengan Instans Terkelola Lambda. ID jejak X-Ray disebarkan secara otomatis saat menggunakan AWS SDK.
Inisialisasi dan shutdown
Inisialisasi fungsi terjadi sekali per proses. Anda mungkin melihat entri log berulang jika fungsi Anda memancarkan log selama inisialisasi.
Untuk fungsi Lambda dengan ekstensi, lingkungan eksekusi memancarkan sinyal SIGTERM saat dimatikan. Sinyal ini digunakan oleh ekstensi untuk memicu tugas pembersihan, seperti pembilasan buffer. Anda dapat berlangganan peristiwa SIGTERM untuk memicu tugas pembersihan fungsi, seperti menutup koneksi database. Untuk mempelajari lebih lanjut tentang siklus hidup lingkungan eksekusi, lihat Memahami siklus hidup lingkungan eksekusi Lambda.
Versi ketergantungan
Instans Terkelola Lambda memerlukan versi paket minimum berikut:
-
Powertools untuk AWS Lambda (Python): versi 3.23.0 atau yang lebih baru
Powertools untuk AWS Lambda (Python)
Powertools untuk AWS Lambda (Python) kompatibel dengan Instans Terkelola Lambda dan menyediakan utilitas untuk logging, tracing, metrik, dan banyak lagi. Untuk informasi selengkapnya, lihat Powertools untuk AWS Lambda (Python)