View a markdown version of this page

Eksekusi SDK yang tahan lama - AWS Lambda

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

Eksekusi SDK yang tahan lama

SDK eksekusi yang tahan lama adalah fondasi untuk membangun fungsi yang tahan lama. Ini memberikan primitif untuk memeriksa kemajuan, menangani percobaan ulang, dan mengelola alur eksekusi. SDK mengabstraksi kompleksitas manajemen pos pemeriksaan dan pemutaran ulang, memungkinkan Anda menulis kode sekuensial yang secara otomatis menjadi toleran terhadap kesalahan.

SDK tersedia untuk JavaScript,, Python TypeScript, dan Java. Untuk dokumentasi API lengkap, tutorial mulai cepat, dan panduan khusus bahasa, lihat Panduan Pengembang SDK Eksekusi AWS Tahan Lama.

Apa yang dilakukan SDK

Manajemen pos pemeriksaan: SDK secara otomatis membuat pos pemeriksaan saat fungsi Anda menjalankan operasi yang tahan lama. Setiap pos pemeriksaan mencatat jenis operasi, input, dan hasil. Saat fungsi Anda menyelesaikan langkah, SDK akan tetap berada di pos pemeriksaan sebelum melanjutkan. Ini memastikan fungsi Anda dapat dilanjutkan dari operasi yang selesai jika terputus.

Koordinasi pemutaran ulang: Saat fungsi Anda dilanjutkan setelah jeda atau interupsi, SDK akan melakukan pemutaran ulang. Ini menjalankan kode Anda dari awal tetapi melewatkan operasi yang telah selesai, menggunakan hasil pos pemeriksaan yang disimpan alih-alih mengeksekusinya kembali. SDK memastikan pemutaran ulang bersifat deterministik. Dengan input dan log pos pemeriksaan yang sama, fungsi Anda menghasilkan hasil yang sama.

Isolasi status: SDK mempertahankan status eksekusi secara terpisah dari logika bisnis Anda. Setiap eksekusi tahan lama memiliki log pos pemeriksaannya sendiri yang tidak dapat diakses oleh eksekusi lain. SDK mengenkripsi data pos pemeriksaan saat istirahat dan memastikan status tetap konsisten di seluruh pemutaran ulang.

Untuk penjelasan mendetail tentang cara kerja checkpointing dan perilaku pemutaran ulang, lihat Konsep utama dalam Panduan Pengembang SDK Eksekusi AWS Tahan Lama.

Operasi tahan gangguan

SDK menyediakan fungsi Anda dengan DurableContext objek. Konteks ini menggantikan konteks Lambda standar dan menyediakan metode untuk membuat pos pemeriksaan, mengelola alur eksekusi, dan berkoordinasi dengan sistem eksternal.

DurableContextIni menyediakan operasi berikut untuk membangun alur kerja yang tahan lama:

Operasi Deskripsi
Langkah Jalankan dan periksa unit kerja dengan strategi coba ulang yang dapat dikonfigurasi dan semantik eksekusi.
Tunggu Jeda eksekusi untuk durasi tertentu tanpa menggunakan sumber daya komputasi.
Tunggu Kondisi Polling untuk kondisi dengan pos pemeriksaan otomatis di antara upaya.
Callback Jeda eksekusi dan tunggu sistem eksternal memberikan masukan melalui API Lambda.
Memohon Panggil fungsi Lambda lain dan tunggu hasilnya, dengan pos pemeriksaan otomatis.
Paralel Jalankan beberapa operasi secara bersamaan dengan kebijakan penyelesaian yang dapat dikonfigurasi.
Peta Memproses setiap item dalam koleksi bersamaan dengan kontrol konkurensi opsional.
Konteks Anak Buat konteks eksekusi terisolasi untuk mengelompokkan beberapa operasi.

Setiap operasi yang tahan lama membuat pos pemeriksaan secara otomatis, memastikan fungsi Anda dapat dilanjutkan dari titik mana pun. Untuk referensi API mendetail, contoh kode, dan penggunaan khusus bahasa, lihat Referensi SDK di Panduan Pengembang SDK Eksekusi AWS Tahan Lama.

Bagaimana operasi tahan lama diukur

Setiap operasi tahan lama yang Anda panggil DurableContext membuat pos pemeriksaan untuk melacak kemajuan eksekusi dan menyimpan data status. Operasi ini dikenakan biaya berdasarkan penggunaannya, dan pos pemeriksaan mungkin berisi data yang berkontribusi pada biaya penulisan dan penyimpanan data Anda. Data yang disimpan mencakup data peristiwa pemanggilan, muatan yang dikembalikan dari langkah, dan data yang diteruskan saat menyelesaikan panggilan balik. Memahami bagaimana operasi tahan lama diukur membantu Anda memperkirakan biaya eksekusi dan mengoptimalkan alur kerja Anda. Untuk detail tentang harga, lihat halaman harga Lambda.

Ukuran muatan mengacu pada ukuran data serial yang tetap ada operasi yang tahan lama. Data diukur dalam byte dan ukurannya dapat bervariasi tergantung pada serializer yang digunakan oleh operasi. Muatan operasi bisa menjadi hasil itu sendiri untuk penyelesaian yang berhasil, atau objek kesalahan serial jika operasi gagal.

Operasi dasar

Operasi dasar adalah blok bangunan mendasar untuk fungsi tahan lama:

Operasi Waktu pos pemeriksaan Jumlah operasi Data bertahan
Eksekusi Dimulai 1 Ukuran muatan masukan
Eksekusi Selesai (Succeeded/Failed/Stopped) 0 Ukuran muatan keluaran
Langkah Retry/Succeeded/Failed 1 + N mencoba lagi Ukuran muatan yang dikembalikan dari setiap upaya
Tunggu Dimulai 1 N/A
WaitForCondition Setiap upaya jajak pendapat 1 + N jajak pendapat Ukuran payload yang dikembalikan dari setiap upaya polling
Invocation-level Coba lagi Dimulai 1 Muatan untuk objek kesalahan

Operasi callback

Operasi callback memungkinkan fungsi Anda berhenti sejenak dan menunggu sistem eksternal memberikan masukan. Operasi ini membuat pos pemeriksaan saat callback dibuat dan saat selesai:

Operasi Waktu pos pemeriksaan Jumlah operasi Data bertahan
CreateCallback Dimulai 1 N/A
Penyelesaian panggilan balik melalui panggilan API Selesai 0 Payload panggilan balik
WaitForCallback Dimulai 3 + N mencoba ulang (konteks+panggilan balik+langkah) Muatan yang dikembalikan oleh upaya langkah pengirim, ditambah dua salinan payload callback

Operasi majemuk

Operasi gabungan menggabungkan beberapa operasi tahan lama untuk menangani pola koordinasi yang kompleks seperti eksekusi paralel, pemrosesan array, dan konteks bersarang:

Operasi Waktu pos pemeriksaan Jumlah operasi Data bertahan
Paralel Dimulai 1 + N cabang (1 konteks induk+N konteks anak) Hingga dua salinan ukuran muatan yang dikembalikan dari setiap cabang, ditambah status masing-masing cabang
Peta Dimulai 1 + N cabang (1 konteks induk+N konteks anak) Hingga dua salinan ukuran payload yang dikembalikan dari setiap iterasi, ditambah status setiap iterasi
Penolong janji Selesai 1 Ukuran muatan yang dikembalikan dari janji
RunInChildContext Succeeded/Failed 1 Ukuran payload yang dikembalikan dari konteks anak

Untuk konteks, seperti dari runInChildContext atau digunakan secara internal oleh operasi gabungan, hasil yang lebih kecil dari 256 KB diperiksa secara langsung. Hasil yang lebih besar tidak disimpan — sebaliknya, mereka direkonstruksi selama pemutaran ulang dengan memproses ulang operasi konteks.