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

SDK AWS Eksekusi Tahan Lama adalah dasar 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 memulai cepat, dan panduan khusus bahasa, lihat Panduan Pengembang SDK Eksekusi T AWS ahan Lama.

Eksekusi tahan lama

Ek sekusi tahan lama mewakili siklus hidup lengkap fungsi tahan lama Lambda, menggunakan mekanisme checkpoint dan replay 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 mungkin 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 andal meskipun ada gangguan.

Cara kerja replay

Lambda menyimpan log yang berjalan dari semua operasi yang tahan lama (langkah, tunggu, 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-langkah yang telah diselesaikan sebelumnya tidak dieksekusi ulang. Hasil yang disimpan 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 yang tahan lama seperti langkah-langkah dan penantian yang membuat pos pemeriksaan dan mengelola alur eksekusi.

Fungsi tahan lama Anda menerima a 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 checkpointing 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 sampai waktunya untuk melanjutkan. Gunakan mereka untuk periode waktu, panggilan balik eksternal, atau polling untuk suatu kondisi.

  • Memang gil fungsi Lambda lainnya dan memeriksa hasilnya. Fungsi yang dipanggil dapat berupa fungsi standar atau tahan lama. Cross-account pemanggilan tidak didukung.

Untuk referensi bahasa lengkap untuk semua operasi tahan lama yang tersedia, lihat Referensi SDK di Panduan Pengembang SDK AWS Eksekusi 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 eksekusi yang tahan lama.

Ob DurableConfig jek mendefinisikan konfigurasi untuk fungsi tahan lama:

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

Batas waktu pelaksanaan

Waktu tunggu eksekusi mengontrol berapa lama eksekusi tahan lama dapat berjalan dari awal hingga selesai. Ini berbeda dari 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, tunggu, dan pemutaran ulang. Waktu tunggu eksekusi berlaku untuk total waktu yang telah berlalu dari eksekusi tahan lama, bukan untuk pemanggilan fungsi individu.

Memahami perbedaannya

Batas waktu fungsi Lambda (maksimum 15 menit) membatasi setiap pemanggilan individu fungsi Anda. Batas waktu eksekusi yang tahan lama (maksimum 1 tahun) membatasi total waktu dari saat eksekusi dimulai hingga selesai, gagal, atau batas waktu. Selama periode ini, fungsi Anda mungkin dipanggil beberapa kali saat memproses langkah-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 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 detik (default: 86400 detik/24 jam, minimum: 60 detik, maksimum: 31536000 detik/1 tahun).

catatan

Waktu tunggu 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). Waktu tunggu eksekusi mengontrol total waktu yang telah berlalu untuk seluruh eksekusi tahan lama (maksimum 1 tahun).

Periode retensi

Periode retensi mengontrol berapa lama Lambda menyimpan riwayat eksekusi dan data pos pemeriksaan setelah eksekusi 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 (SUCCEED, FAILED, STOPPED, 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 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