Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Lambda SnapStart dapat memberikan kinerja startup serendah sub-detik, biasanya tanpa perubahan pada kode fungsi Anda. SnapStart membuatnya lebih mudah untuk membangun aplikasi yang sangat responsif dan skalabel tanpa menyediakan sumber daya atau menerapkan pengoptimalan kinerja yang kompleks.
Kontributor terbesar untuk latensi startup (sering disebut sebagai cold start time) adalah waktu yang dihabiskan Lambda untuk menginisialisasi fungsi, yang mencakup memuat kode fungsi, memulai runtime, dan menginisialisasi kode fungsi. Dengan SnapStart, Lambda menginisialisasi fungsi Anda saat Anda mempublikasikan versi fungsi. Lambda mengambil snapshot MicroVM Firecracker
Untuk memastikan ketahanan, Lambda menyimpan beberapa salinan dari setiap snapshot. Lambda secara otomatis menambal snapshot dan salinannya dengan runtime terbaru dan pembaruan keamanan. Saat Anda memanggil versi fungsi untuk pertama kalinya, dan saat pemanggilan meningkat, Lambda melanjutkan lingkungan eksekusi baru dari snapshot yang di-cache alih-alih menginisialisasinya dari awal, meningkatkan latensi startup.
penting
Jika aplikasi Anda bergantung pada keunikan status, Anda harus mengevaluasi kode fungsi Anda dan memverifikasi bahwa itu tahan terhadap operasi snapshot. Untuk informasi selengkapnya, lihat Menangani keunikan dengan Lambda SnapStart.
Topik
Kapan harus menggunakan SnapStart
Lambda SnapStart dirancang untuk mengatasi variabilitas latensi yang diperkenalkan oleh kode inisialisasi satu kali, seperti memuat dependensi modul atau kerangka kerja. Operasi ini terkadang membutuhkan waktu beberapa detik untuk diselesaikan selama pemanggilan awal. Gunakan SnapStart untuk mengurangi latensi ini dari beberapa detik menjadi serendah sub-detik, dalam skenario optimal. SnapStart bekerja paling baik saat digunakan dengan pemanggilan fungsi dalam skala besar. Fungsi yang jarang dipanggil mungkin tidak mengalami peningkatan kinerja yang sama.
SnapStart sangat bermanfaat untuk dua jenis aplikasi utama:
-
Aliran sensitif terhadap latensi APIs dan pengguna: Fungsi yang merupakan bagian dari titik akhir API kritis atau alur yang dihadapi pengguna dapat memperoleh manfaat dari pengurangan latensi dan waktu respons yang SnapStart ditingkatkan.
-
Alur kerja pemrosesan data yang sensitif terhadap latensi: Alur kerja pemrosesan data terikat waktu yang menggunakan fungsi Lambda dapat mencapai throughput yang lebih baik dengan mengurangi latensi inisialisasi fungsi outlier.
Konkurensi yang disediakan membuat fungsi diinisialisasi dan siap merespons dalam milidetik dua digit. Gunakan konkurensi yang disediakan jika aplikasi Anda memiliki persyaratan latensi start dingin yang ketat yang tidak dapat ditangani secara memadai oleh. SnapStart
Fitur yang didukung dan batasan
SnapStart tersedia untuk runtime terkelola Lambda berikut:
-
Java 11 dan setelahnya
-
Python 3.12 dan yang lebih baru
-
.NET 8 dan yang lebih baru. Jika Anda menggunakan kerangka kerja Anotasi Lambda untuk.NET, tingkatkan ke Amazon.Lambda.Annotations versi 1.6.0 atau yang lebih baru untuk memastikan kompatibilitas dengan. SnapStart
Runtime terkelola lainnya (seperti nodejs22.x
danruby3.3
),Runtime khusus OS, dan gambar kontainer tidak didukung.
SnapStart tidak mendukung konkurensi yang disediakan, Amazon Elastic File System (Amazon EFS), atau penyimpanan sementara yang lebih besar dari 512 MB.
catatan
Anda SnapStart hanya dapat menggunakan pada versi fungsi yang diterbitkan dan alias yang mengarah ke versi. Anda tidak dapat menggunakan SnapStart pada versi fungsi yang tidak dipublikasikan ($LATEST).
Wilayah yang Didukung
Untuk runtime Java, SnapStart Lambda tersedia di semua Wilayah komersial kecuali Asia Pasifik (Malaysia).
Untuk runtime Python dan .NET, Lambda SnapStart tersedia sebagai berikut: Wilayah AWS
AS Timur (N. Virginia)
AS Timur (Ohio)
AS Barat (Oregon)
Asia Pasifik (Singapura)
Asia Pasifik (Sydney)
Asia Pasifik (Tokyo)
Eropa (Frankfurt)
Eropa (Irlandia)
Eropa (Stockholm)
Pertimbangan kompatibilitas
Dengan SnapStart, Lambda menggunakan satu snapshot sebagai status awal untuk beberapa lingkungan eksekusi. Jika fungsi Anda menggunakan salah satu dari berikut ini selama fase inisialisasi, maka Anda mungkin perlu membuat beberapa perubahan sebelum menggunakan SnapStart:
- Keunikan
-
Jika kode inisialisasi Anda menghasilkan konten unik yang disertakan dalam snapshot, maka konten tersebut mungkin tidak unik saat digunakan kembali di seluruh lingkungan eksekusi. Untuk mempertahankan keunikan saat menggunakan SnapStart, Anda harus menghasilkan konten unik setelah inisialisasi. Ini termasuk rahasia unik IDs, unik, dan entropi yang digunakan untuk menghasilkan pseudorandomness. Untuk mempelajari cara mengembalikan keunikan, lihat. Menangani keunikan dengan Lambda SnapStart
- Koneksi jaringan
-
Status koneksi yang ditetapkan fungsi Anda selama fase inisialisasi tidak dijamin saat Lambda melanjutkan fungsi Anda dari snapshot. Validasi status koneksi jaringan Anda dan buat kembali seperlunya. Dalam kebanyakan kasus, koneksi jaringan yang dibuat AWS SDK secara otomatis dilanjutkan. Untuk koneksi lain, tinjau praktik terbaik.
- Data sementara
-
Beberapa fungsi mengunduh atau menginisialisasi data sementara, seperti kredensil sementara atau stempel waktu yang di-cache, selama fase inisialisasi. Segarkan data singkat di penangan fungsi sebelum menggunakannya, bahkan saat tidak menggunakan. SnapStart
SnapStart harga
catatan
Untuk runtime terkelola Java, tidak ada biaya tambahan untuk SnapStart. Anda dikenakan biaya berdasarkan jumlah permintaan untuk fungsi Anda, waktu yang dibutuhkan kode Anda untuk menjalankan, dan memori yang dikonfigurasi untuk fungsi Anda.
Biaya penggunaan SnapStart meliputi:
-
Caching: Untuk setiap versi fungsi yang Anda publikasikan dengan SnapStart diaktifkan, Anda membayar biaya caching dan mempertahankan snapshot. Harganya tergantung pada jumlah memori yang Anda alokasikan untuk fungsi Anda. Anda dikenakan biaya minimal 3 jam. Anda akan terus dikenakan biaya selama fungsi Anda tetap aktif. Gunakan tindakan ListVersionsByFunctionAPI untuk mengidentifikasi versi fungsi, lalu gunakan DeleteFunctionuntuk menghapus versi yang tidak digunakan. Untuk menghapus versi fungsi yang tidak digunakan secara otomatis, lihat pola Pembersihan Versi Lambda
di Tanah Tanpa Server. -
Restorasi: Setiap kali instance fungsi dipulihkan dari snapshot, Anda membayar biaya pemulihan. Harganya tergantung pada jumlah memori yang Anda alokasikan ke fungsi Anda.
Seperti semua fungsi Lambda, biaya durasi berlaku untuk kode yang berjalan di penangan fungsi. Untuk SnapStart fungsi, biaya durasi juga berlaku untuk kode inisialisasi yang dideklarasikan di luar handler, waktu yang diperlukan untuk memuat runtime, dan kode apa pun yang berjalan di hook runtime. Durasi dihitung dari waktu kode Anda mulai berjalan hingga kembali atau berakhir, dibulatkan ke 1 ms terdekat. Lambda menyimpan salinan snapshot Anda yang di-cache untuk ketahanan dan secara otomatis menerapkan pembaruan perangkat lunak, seperti peningkatan runtime dan patch keamanan padanya. Biaya berlaku setiap kali Lambda menjalankan kembali kode inisialisasi Anda untuk menerapkan pembaruan perangkat lunak.
Untuk informasi selengkapnya tentang biaya penggunaan SnapStart, lihat AWS Lambda Harga