View a markdown version of this page

Praktik terbaik untuk Instans Terkelola Lambda - AWS Lambda

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

Praktik terbaik untuk Instans Terkelola Lambda

Konfigurasi penyedia kapasitas

Pisahkan penyedia kapasitas berdasarkan tingkat kepercayaan. Buat penyedia kapasitas yang berbeda untuk beban kerja dengan persyaratan keamanan yang berbeda. Semua fungsi yang ditugaskan ke penyedia kapasitas yang sama harus saling dipercaya, karena penyedia kapasitas berfungsi sebagai batas keamanan.

Gunakan nama deskriptif. Sebutkan penyedia kapasitas untuk menunjukkan dengan jelas tujuan penggunaan dan tingkat kepercayaan mereka (misalnya,production-trusted,dev-sandbox). Ini membantu tim memahami tujuan dan postur keamanan masing-masing penyedia kapasitas.

Gunakan beberapa Zona Ketersediaan. Tentukan subnet di beberapa Zona Ketersediaan saat membuat penyedia kapasitas. Lambda meluncurkan tiga instans secara default untuk ketahanan AZ, memastikan ketersediaan tinggi untuk fungsi Anda.

Pemilihan tipe instans

Biarkan Lambda memilih jenis instance. Secara default, Lambda memilih jenis instans terbaik untuk beban kerja Anda. Sebaiknya biarkan Instans Terkelola Lambda memilih jenis instans untuk Anda, karena membatasi jumlah jenis instans yang mungkin dapat mengakibatkan ketersediaan lebih rendah.

Tentukan jenis instans untuk persyaratan tertentu. Jika Anda memiliki persyaratan perangkat keras tertentu, setel jenis instans yang diizinkan ke daftar instans yang kompatibel. Contoh:

  • Untuk aplikasi yang membutuhkan bandwidth jaringan tinggi, pilih beberapa jenis instance n

  • Untuk lingkungan pengujian atau pengembangan dengan kendala biaya, pilih jenis instans yang lebih kecil seperti m7a.large

Konfigurasi fungsi

Pilih memori yang sesuai dan pengaturan vCPU. Pilih memori dan konfigurasi vCPU yang mendukung eksekusi multi-bersamaan dari fungsi Anda. Ukuran fungsi minimum yang didukung adalah 2GB dan 1 vCPU.

  • Untuk aplikasi Python, pilih rasio memori yang lebih tinggi terhadap vCPU (seperti 4 banding 1 atau 8 banding 1) karena cara Python menangani multi-konkurensi

  • Untuk CPU-intensive operasi atau fungsi yang melakukan sedikit IO, pilih lebih dari satu vCPU

  • Untuk IO-heavy aplikasi seperti layanan web atau pekerjaan batch, multi-konkurensi memberikan manfaat terbesar

Konfigurasikan konkurensi maksimum dengan tepat. Lambda memilih default yang masuk akal untuk konkurensi maksimum yang menyeimbangkan konsumsi sumber daya dan throughput. Sesuaikan pengaturan ini berdasarkan penggunaan sumber daya fungsi Anda:

  • Tingkatkan konkurensi maksimum (hingga 64 per vCPU) jika pemanggilan fungsi Anda menggunakan CPU yang sangat sedikit

  • Kurangi konkurensi maksimum jika aplikasi Anda mengkonsumsi sejumlah besar memori dan CPU yang sangat sedikit

Perhatikan bahwa lingkungan eksekusi dengan konkurensi yang sangat rendah mungkin mengalami throttle dan kesulitan penskalaan.

Konfigurasi penskalaan

Tetapkan pemanfaatan sumber daya target yang sesuai. Secara default, Lambda mempertahankan headroom yang cukup agar lalu lintas Anda berlipat ganda dalam waktu 5 menit tanpa throttle. Sesuaikan ini berdasarkan karakteristik beban kerja Anda:

  • Untuk beban kerja yang sangat stabil atau aplikasi yang tidak sensitif terhadap throttle, tetapkan target ke tingkat tinggi untuk mencapai pemanfaatan yang lebih tinggi dan biaya yang lebih rendah

  • Untuk beban kerja dengan potensi ledakan lalu lintas, tetapkan target sumber daya ke tingkat rendah untuk mempertahankan headroom tambahan

Rencanakan pertumbuhan lalu lintas. Jika lalu lintas Anda lebih dari dua kali lipat dalam waktu 5 menit, Anda mungkin melihat pembatasan saat Lambda meningkatkan instans dan lingkungan eksekusi. Rancang aplikasi Anda untuk menangani potensi pelambatan selama periode peningkatan skala yang cepat.

Keamanan

Terapkan hak istimewa paling sedikit untuk PassCapacityProvider izin. Ber lambda:PassCapacityProvider ikan izin hanya untuk penyedia kapasitas yang diperlukan. Gunakan izin tingkat sumber daya untuk membatasi penyedia kapasitas mana yang dapat ditetapkan pengguna ke fungsi.

Pantau penggunaan penyedia kapasitas. Gunakan AWS CloudTrail untuk memantau penugasan penyedia kapasitas dan pola akses. Ini membantu mengidentifikasi upaya akses yang tidak sah dan memastikan kepatuhan terhadap kebijakan keamanan.

Pisahkan beban kerja yang tidak tepercaya. Jangan mengandalkan wadah untuk isolasi keamanan antara beban kerja yang tidak tepercaya. Gunakan penyedia kapasitas yang berbeda untuk memisahkan beban kerja yang tidak saling dipercaya.

Optimalisasi biaya

Gunakan opsi harga EC2. Manfaatkan Paket Tabungan EC2 dan Instans Cadangan untuk mengurangi biaya. Opsi penetapan harga ini berlaku untuk komputasi EC2 yang mendasarinya (biaya manajemen 15% tidak didiskon).

Optimalkan untuk beban kerja kondisi mapan. Instans Terkelola Lambda paling cocok untuk fungsi steady-state dengan lalu lintas volume tinggi yang dapat diprediksi. Untuk pola lalu lintas yang meledak, Lambda (default) mungkin lebih hemat biaya.

Memantau pemanfaatan sumber daya. Lacak CloudWatch metrik untuk memahami pemanfaatan CPU dan memori. Sesuaikan alokasi memori fungsi dan pemilihan jenis instans berdasarkan pola penggunaan aktual untuk mengoptimalkan biaya.

Pemantauan dan observabilitas

Pantau metrik penyedia kapasitas. Melacak metrik tingkat penyedia kapasitas termasuk CPUUtilization, MemoryUtilization, vcpuAvailable, dan MemoryAvailable untuk memverifikasi sumber daya yang cukup tersedia untuk beban kerja Anda.

Pantau metrik lingkungan eksekusi. Melacak metrik tingkat lingkungan eksekusi termasuk ExecutionEnvironmentConcurrency dan ExecutionEnvironmentConcurrencyLimit untuk memahami perilaku penskalaan dan mengidentifikasi potensi pelambatan.

Siapkan CloudWatch alarm. Buat CloudWatch alarm untuk metrik utama untuk mengidentifikasi masalah secara proaktif:

  • Pemanfaatan CPU atau memori yang tinggi

  • Kapasitas yang tersedia rendah

  • Mendekati batas konkurensi

Language-specific pertimbangan

Ikuti praktik terbaik khusus bahasa. Setiap bahasa pemrograman menangani multi-concurrency secara berbeda. Tinjau panduan khusus bahasa untuk rekomendasi terperinci:

  • Java: Gunakan koleksi Thread-safe,AtomicInteger, dan ThreadLocal untuk status khusus permintaan

  • Node.js: Gunakan InvokeStore untuk semua status khusus permintaan dan hindari variabel global

  • Python: Gunakan nama file unik /tmp dengan ID permintaan dan pertimbangkan isolasi memori berbasis proses

  • Karat: Gunakan run_concurrent alih run -alih, dengan concurrency-tokio fitur diaktifkan. Handler harus Clone +Send.

Uji keamanan utas dan masalah konkurensi. Sebelum menerapkan ke produksi, uji fungsi Anda secara menyeluruh untuk masalah keamanan benang, kondisi balapan, dan isolasi keadaan yang tepat di bawah beban bersamaan.

Langkah selanjutnya