View a markdown version of this page

Konsep Basic - AWS Lambda

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

Konsep Basic

AWS Durable Execution SDK adalah fondasi untuk membangun fungsi yang tahan lama, menyediakan primitif yang Anda butuhkan untuk memeriksa kemajuan, menangani percobaan ulang, dan mengelola alur eksekusi. SDK tersedia untuk JavaScript/TypeScript, Python, dan Java. Untuk dokumentasi SDK lengkap termasuk referensi API, tutorial mulai cepat, dan panduan khusus bahasa, lihat Panduan Pengembang SDK Eksekusi AWS Tahan Lama.

Eksekusi tahan lama

Eksekusi yang tahan lama mewakili siklus hidup lengkap fungsi tahan lama Lambda, menggunakan mekanisme pos pemeriksaan dan pemutaran ulang untuk melacak kemajuan logika bisnis, menangguhkan eksekusi, dan memulihkan dari kegagalan. Ketika fungsi dilanjutkan setelah penangguhan atau interupsi, pos pemeriksaan yang telah selesai sebelumnya diputar ulang dan fungsi melanjutkan eksekusi.

Siklus hidup dapat mencakup beberapa pemanggilan fungsi Lambda untuk menyelesaikan eksekusi, terutama setelah penangguhan atau pemulihan kegagalan. Pendekatan ini memungkinkan fungsi Anda berjalan untuk waktu yang lama (hingga satu tahun) sambil mempertahankan kemajuan yang dapat diandalkan meskipun ada gangguan.

Cara kerja replay

Lambda menyimpan log berjalan dari semua operasi tahan lama (langkah, menunggu, dan operasi lainnya) saat fungsi Anda dijalankan. Ketika fungsi Anda perlu menjeda atau mengalami gangguan, Lambda menyimpan log pos pemeriksaan ini dan menghentikan eksekusi. Ketika tiba waktunya untuk melanjutkan, Lambda memanggil fungsi Anda lagi dari awal dan memutar ulang log pos pemeriksaan, menggantikan nilai yang disimpan untuk operasi yang diselesaikan. Ini berarti kode Anda berjalan lagi, tetapi langkah yang telah diselesaikan sebelumnya tidak dijalankan kembali. Hasil tersimpan mereka digunakan sebagai gantinya.

Mekanisme replay ini sangat penting untuk memahami fungsi yang tahan lama. Kode Anda harus deterministik selama pemutaran ulang, artinya menghasilkan hasil yang sama dengan input yang sama. Hindari operasi dengan efek samping (seperti menghasilkan angka acak atau mendapatkan waktu saat ini) di luar langkah, karena ini dapat menghasilkan nilai yang berbeda selama pemutaran ulang dan menyebabkan perilaku non-deterministik.

DurableContext

DurableContextadalah objek konteks yang diterima fungsi tahan lama Anda. Ini menyediakan metode untuk operasi tahan lama seperti langkah-langkah dan menunggu yang membuat pos pemeriksaan dan mengelola alur eksekusi.

Fungsi tahan lama Anda menerima DurableContext bukan konteks Lambda default:

TypeScript
import { DurableContext, withDurableExecution, } from "@aws/durable-execution-sdk-js"; export const handler = withDurableExecution( async (event: any, context: DurableContext) => { const result = await context.step(async () => { return "step completed"; }); return result; }, );
Python
from aws_durable_execution_sdk_python import ( DurableContext, durable_execution, durable_step, ) @durable_step def my_step(step_context, data): # Your business logic return result @durable_execution def handler(event, context: DurableContext): result = context.step(my_step(event["data"])) return result

MelaluiDurableContext, fungsi Anda memiliki akses ke operasi tahan lama yang memeriksa kemajuan dan mengoordinasikan pekerjaan:

  • Langkah-langkah menjalankan logika bisnis dengan percobaan ulang bawaan dan pos pemeriksaan otomatis. Setiap langkah menyimpan hasilnya, sehingga fungsi Anda dilanjutkan dari langkah terakhir yang diselesaikan setelah gangguan.

  • Penantian adalah jeda yang direncanakan di mana fungsi Anda berhenti berjalan dan berhenti mengisi daya hingga waktunya untuk melanjutkan. Gunakan mereka untuk jangka waktu, panggilan balik eksternal, atau polling untuk suatu kondisi.

  • Invoke memanggil fungsi Lambda lainnya dan pos pemeriksaan hasilnya. Fungsi yang dipanggil dapat menjadi fungsi standar atau tahan lama. Cross-account pemanggilan tidak didukung.

Untuk referensi bahasa lengkap ke semua operasi tahan lama yang tersedia, lihat Referensi SDK di Panduan Pengembang SDK Eksekusi AWS Tahan Lama.

Konfigurasi fungsi tahan lama

Fungsi tahan lama memiliki pengaturan konfigurasi khusus yang mengontrol perilaku eksekusi dan retensi data. Pengaturan ini terpisah dari konfigurasi fungsi Lambda standar dan berlaku untuk seluruh siklus hidup eksekusi yang tahan lama.

DurableConfigObjek mendefinisikan konfigurasi untuk fungsi tahan lama:

{ "ExecutionTimeout": Integer, "RetentionPeriodInDays": Integer }

Batas waktu pelaksanaan

Batas waktu eksekusi mengontrol berapa lama eksekusi yang tahan lama dapat berjalan dari awal hingga selesai. Ini berbeda dengan batas waktu fungsi Lambda, yang mengontrol berapa lama pemanggilan fungsi tunggal dapat berjalan.

Eksekusi yang tahan lama dapat mencakup beberapa pemanggilan fungsi Lambda saat berlangsung melalui pos pemeriksaan, menunggu, dan memutar ulang. Batas waktu eksekusi berlaku untuk total waktu yang telah berlalu dari eksekusi tahan lama, bukan untuk pemanggilan fungsi individual.

Memahami perbedaannya

Batas waktu fungsi Lambda (maksimum 15 menit) membatasi setiap pemanggilan fungsi Anda. Batas waktu eksekusi yang tahan lama (maksimum 1 tahun) membatasi total waktu sejak eksekusi dimulai hingga selesai, gagal, atau habis waktu. Selama periode ini, fungsi Anda mungkin dipanggil beberapa kali saat memproses langkah, menunggu, dan pulih dari kegagalan.

Misalnya, jika Anda menetapkan batas waktu eksekusi tahan lama 24 jam dan batas waktu fungsi Lambda 5 menit:

  • Setiap pemanggilan fungsi harus selesai dalam waktu 5 menit

  • Seluruh eksekusi yang tahan lama dapat berjalan hingga 24 jam

  • Fungsi Anda dapat dipanggil berkali-kali selama 24 jam tersebut

  • Operasi tunggu tidak dihitung terhadap batas waktu fungsi Lambda tetapi dihitung terhadap batas waktu eksekusi

Anda dapat mengonfigurasi batas waktu eksekusi saat membuat fungsi tahan lama menggunakan konsol Lambda AWS CLI,, atau. AWS SAM Di konsol Lambda, pilih fungsi Anda, lalu Konfigurasi, Eksekusi tahan lama. Atur nilai batas waktu eksekusi dalam hitungan detik (default: 86400 detik/ 24 jam, minimum: 60 detik, maksimum: 31536000 detik/ 1 tahun).

catatan

Batas waktu eksekusi dan batas waktu fungsi Lambda adalah pengaturan yang berbeda. Batas waktu fungsi Lambda mengontrol berapa lama setiap pemanggilan individu dapat berjalan (maksimum 15 menit). Batas waktu eksekusi mengontrol total waktu yang telah berlalu untuk seluruh eksekusi tahan lama (maksimum 1 tahun).

Periode retensi

Periode retensi mengontrol berapa lama Lambda mempertahankan riwayat eksekusi dan data pos pemeriksaan setelah eksekusi yang tahan lama selesai. Data ini mencakup hasil langkah, status eksekusi, dan log pos pemeriksaan lengkap.

Setelah periode retensi berakhir, Lambda menghapus riwayat eksekusi dan data pos pemeriksaan. Anda tidak dapat lagi mengambil detail eksekusi atau memutar ulang eksekusi. Periode retensi dimulai ketika eksekusi mencapai status terminal (BERHASIL, GAGAL, BERHENTI, atau TIMED_OUT).

Anda dapat mengonfigurasi periode retensi saat membuat fungsi tahan lama menggunakan konsol Lambda, AWS CLI, atau. AWS SAM Di konsol Lambda, pilih fungsi Anda, lalu Konfigurasi, Eksekusi tahan lama. Tetapkan nilai periode Retensi dalam beberapa hari (default: 14 hari, minimum: 1 hari, maksimum: 90 hari).

Pilih periode retensi berdasarkan persyaratan kepatuhan, kebutuhan debugging, dan pertimbangan biaya. Periode retensi yang lebih lama memberikan lebih banyak waktu untuk debugging dan audit tetapi meningkatkan biaya penyimpanan.

Lihat juga