View a markdown version of this page

Menciptakan fungsi tahan lama Lambda - AWS Lambda

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

Menciptakan fungsi tahan lama Lambda

Untuk memulai fungsi tahan lama Lambda, gunakan konsol Lambda untuk membuat fungsi yang tahan lama. Dalam beberapa menit, Anda dapat membuat dan menerapkan fungsi tahan lama yang menggunakan langkah-langkah dan menunggu untuk mendemonstrasikan eksekusi berbasis checkpoint.

Anda juga dapat membuat fungsi tahan lama menggunakan infrastruktur AWS CLI atau sebagai kode (IAc).

Saat Anda melakukan tutorial, Anda akan mempelajari konsep fungsi dasar yang tahan lama, seperti cara menggunakan DurableContext objek, membuat pos pemeriksaan dengan langkah-langkah, dan menjeda eksekusi dengan menunggu. Anda juga akan mempelajari cara kerja replay ketika fungsi Anda dilanjutkan setelah menunggu.

Agar semuanya tetap sederhana, tutorial ini menunjukkan cara membuat fungsi Anda menggunakan Python atau Node.js runtime. Dengan bahasa yang ditafsirkan ini, Anda dapat mengedit kode fungsi langsung di editor kode bawaan konsol.

catatan

Fungsi tahan lama saat ini mendukung runtime Python, Node.js (JavaScript/TypeScript), dan Java, serta image container (OCI). Untuk daftar lengkap versi runtime yang didukung dan opsi gambar kontainer, lihat Runtime yang didukung untuk fungsi tahan lama. Untuk informasi selengkapnya tentang menggunakan gambar kontainer dengan Lambda, lihat Membuat gambar wadah Lambda di Panduan Pengembang Lambda.

Tip

Untuk mempelajari cara membuat solusi tanpa server, lihat Panduan Pengembang Tanpa Server.

Buat fungsi tahan lama Lambda dengan konsol

Dalam contoh ini, fungsi tahan lama Anda memproses pesanan melalui beberapa langkah dengan checkpointing otomatis. Fungsi mengambil objek JSON yang berisi ID pesanan, memvalidasi pesanan, memproses pembayaran, dan mengkonfirmasi pesanan. Setiap langkah secara otomatis diperiksa, jadi jika fungsi terganggu, itu dilanjutkan dari langkah terakhir yang diselesaikan.

Fungsi Anda juga menunjukkan operasi tunggu, menjeda eksekusi untuk waktu yang singkat untuk mensimulasikan menunggu konfirmasi eksternal.

Untuk membuat fungsi yang tahan lama dengan konsol
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih Buat fungsi.

  3. Pilih Penulis dari awal.

  4. Di panel informasi dasar, untuk Nama fungsi, masukkanmyDurableFunction.

  5. Untuk Runtime, pilih Node.js 24 atau Python 3.14.

  6. Pilih Aktifkan eksekusi tahan lama.

Lambda menciptakan fungsi tahan lama Anda dengan peran eksekusi yang mencakup izin untuk operasi pos pemeriksaan (lambda:CheckpointDurableExecutiondanlambda:GetDurableExecutionState).

catatan

Runtime Lambda menyertakan SDK Eksekusi Tahan Lama, sehingga Anda dapat menguji fungsi tahan lama tanpa ketergantungan pengemasan. Namun, sebaiknya sertakan SDK dalam paket penerapan untuk produksi. Ini memastikan konsistensi versi dan menghindari pembaruan runtime potensial yang mungkin memengaruhi fungsi Anda.

Gunakan editor kode bawaan konsol untuk menambahkan kode fungsi tahan lama Anda.

Node.js
Untuk memodifikasi kode di konsol
  1. Pilih tab Kode.

    Di editor kode bawaan konsol, Anda akan melihat kode fungsi yang dibuat Lambda. Jika Anda tidak melihat tab index.mjs di editor kode, pilih index.mjs di file explorer seperti yang ditunjukkan pada diagram berikut.

    Diagram yang menunjukkan editor kode konsol dan file index.mjs di file explorer.
  2. Tempelkan kode berikut ke tab index.mjs, menggantikan kode yang dibuat Lambda.

    import { withDurableExecution, } from "@aws/durable-execution-sdk-js"; export const handler = withDurableExecution( async (event, context) => { const orderId = event.orderId; // Step 1: Validate order const validationResult = await context.step(async (stepContext) => { stepContext.logger.info(`Validating order ${orderId}`); return { orderId, status: "validated" }; }); // Step 2: Process payment const paymentResult = await context.step(async (stepContext) => { stepContext.logger.info(`Processing payment for order ${orderId}`); return { orderId, status: "paid", amount: 99.99 }; }); // Wait for 10 seconds to simulate external confirmation await context.wait({ seconds: 10 }); // Step 3: Confirm order const confirmationResult = await context.step(async (stepContext) => { stepContext.logger.info(`Confirming order ${orderId}`); return { orderId, status: "confirmed" }; }); return { orderId: orderId, status: "completed", steps: [validationResult, paymentResult, confirmationResult] }; } );
  3. Di bagian DEPLOY, pilih De ploy untuk memperbarui kode fungsi Anda:

    Menyebarkan tombol di editor kode konsol Lambda
Memahami kode fungsi tahan lama Anda

Sebelum Anda pindah ke langkah berikutnya, mari kita lihat kode fungsi dan memahami konsep fungsi tahan lama utama.

  • Pembung withDurableExecution kusnya:

    Fungsi tahan lama Anda dibungkus denganwithDurableExecution. Pembungkus ini memungkinkan eksekusi yang tahan lama dengan menyediakan DurableContext objek dan mengelola operasi pos pemeriksaan.

  • Ob DurableContext jek:

    Alih-alih konteks Lambda standar, fungsi Anda menerima aDurableContext. Objek ini menyediakan metode untuk operasi tahan lama seperti step() dan wait() yang membuat pos pemeriksaan.

  • Langkah-langkah dan pos pemeriksaan:

    Setiap context.step() panggilan membuat pos pemeriksaan sebelum dan sesudah eksekusi. Jika fungsi Anda terganggu, itu dilanjutkan dari pos pemeriksaan terakhir yang selesai. Fungsi tidak mengeksekusi ulang langkah-langkah yang telah selesai. Ini menggunakan hasil yang disimpan sebagai gantinya.

  • Tunggu operasi:

    Panggilan context.wait() menghentikan eksekusi tanpa menghabiskan sumber daya komputasi. Ketika penantian selesai, Lambda memanggil fungsi Anda lagi dan memutar ulang log pos pemeriksaan, menggantikan nilai yang disimpan untuk langkah-langkah yang diselesaikan.

  • Mekanisme putar ulang:

    Ketika fungsi Anda dilanjutkan setelah menunggu atau interupsi, Lambda menjalankan kode Anda dari awal. Namun, langkah yang telah selesai tidak dieksekusi ulang. Lambda memutar ulang hasil mereka dari log pos pemeriksaan. Inilah sebabnya mengapa kode Anda harus deterministik.

Python
Untuk memodifikasi kode di konsol
  1. Pilih tab Kode.

    Di editor kode bawaan konsol, Anda akan melihat kode fungsi yang dibuat Lambda. Jika Anda tidak melihat tab lambda_function.py di editor kode, pilih lambda_function.py di file explorer seperti yang ditunjukkan pada diagram berikut.

    Diagram menunjukkan editor kode konsol dan file lambda_function.py di file explorer.
  2. Tempelkan kode berikut ke tab lambda_function.py, menggantikan kode yang dibuat Lambda.

    from aws_durable_execution_sdk_python import ( DurableContext, durable_execution, durable_step, ) from aws_durable_execution_sdk_python.config import Duration @durable_step def validate_order(step_context, order_id): step_context.logger.info(f"Validating order {order_id}") return {"orderId": order_id, "status": "validated"} @durable_step def process_payment(step_context, order_id): step_context.logger.info(f"Processing payment for order {order_id}") return {"orderId": order_id, "status": "paid", "amount": 99.99} @durable_step def confirm_order(step_context, order_id): step_context.logger.info(f"Confirming order {order_id}") return {"orderId": order_id, "status": "confirmed"} @durable_execution def lambda_handler(event, context: DurableContext): order_id = event['orderId'] # Step 1: Validate order validation_result = context.step(validate_order(order_id)) # Step 2: Process payment payment_result = context.step(process_payment(order_id)) # Wait for 10 seconds to simulate external confirmation context.wait(Duration.from_seconds(10)) # Step 3: Confirm order confirmation_result = context.step(confirm_order(order_id)) return { "orderId": order_id, "status": "completed", "steps": [validation_result, payment_result, confirmation_result] }
  3. Di bagian DEPLOY, pilih De ploy untuk memperbarui kode fungsi Anda:

    Menyebarkan tombol di editor kode konsol Lambda
Memahami kode fungsi tahan lama Anda

Sebelum Anda pindah ke langkah berikutnya, mari kita lihat kode fungsi dan memahami konsep fungsi tahan lama utama.

  • @durable_executionDekorator:

    Fungsi handler Anda dihiasi dengan@durable_execution. Dekorator ini memungkinkan eksekusi yang tahan lama dengan menyediakan DurableContext objek dan mengelola operasi pos pemeriksaan.

  • @durable_stepDekorator:

    Setiap fungsi langkah didekorasi dengan@durable_step. Dekorator ini menandai fungsi sebagai langkah tahan lama yang menciptakan pos pemeriksaan.

  • Ob DurableContext jek:

    Alih-alih konteks Lambda standar, fungsi Anda menerima aDurableContext. Objek ini menyediakan metode untuk operasi tahan lama seperti step() dan wait() yang membuat pos pemeriksaan.

  • Langkah-langkah dan pos pemeriksaan:

    Setiap context.step() panggilan membuat pos pemeriksaan sebelum dan sesudah eksekusi. Jika fungsi Anda terganggu, itu dilanjutkan dari pos pemeriksaan terakhir yang selesai. Fungsi tidak mengeksekusi ulang langkah-langkah yang telah selesai. Ini menggunakan hasil yang disimpan sebagai gantinya.

  • Tunggu operasi:

    Panggilan context.wait() menghentikan eksekusi tanpa menghabiskan sumber daya komputasi. Ketika penantian selesai, Lambda memanggil fungsi Anda lagi dan memutar ulang log pos pemeriksaan, menggantikan nilai yang disimpan untuk langkah-langkah yang diselesaikan.

  • Python SDK sinkron:

    Perhatikan bahwa Python SDK tidak menggunakanawait. Semua operasi tahan lama adalah panggilan metode sinkron.

Memanggil fungsi tahan lama menggunakan editor kode konsol

Ketika tidak ada versi eksplisit yang ditentukan (atau diterbitkan), konsol memanggil fungsi tahan lama menggunakan kualifikasi $LATEST versi. Namun, untuk eksekusi deterministik kode Anda, Anda harus selalu menggunakan ARN yang memenuhi syarat yang menunjuk ke versi stabil.

Untuk menerbitkan versi fungsi Anda
  1. Pilih tab Versi.

  2. PilihPublikasikan versi baru.

  3. Untuk Deskripsi versi, masukkan Initial version (opsional).

  4. Pilih Terbitkan.

  5. Lambda membuat versi 1 dari fungsi Anda. Perhatikan bahwa fungsi ARN sekarang disertakan :1 di akhir, menunjukkan ini adalah versi 1.

Sekarang buat acara pengujian untuk dikirim ke fungsi Anda. Acara ini adalah dokumen berformat JSON yang berisi ID pesanan.

Untuk membuat acara pengujian
  1. Di bagian TEST EVENTS pada editor kode konsol, pilih Buat acara pengujian.

    Buat tombol acara uji di editor kode konsol Lambda
  2. Untuk Nama A cara, masukkanmyTestEvent.

  3. Di bagian Event JSON, ganti JSON default dengan yang berikut:

    { "orderId": "order-12345" }
  4. Pilih Simpan.

Untuk menguji fungsi tahan lama Anda dan melihat eksekusi

Di bagian TEST EVENTS pada editor kode konsol, pilih ikon jalankan di sebelah acara pengujian Anda:

Jalankan tombol acara uji di editor kode konsol Lambda.

Fungsi tahan lama Anda mulai dijalankan. Karena termasuk menunggu 10 detik, pemanggilan awal selesai dengan cepat, dan fungsi dilanjutkan setelah periode tunggu. Anda dapat melihat kemajuan eksekusi di tab Eksekusi tahan lama.

Untuk melihat eksekusi fungsi tahan lama Anda
  1. Pilih tab Ek sekusi tahan lama.

  2. Temukan eksekusi Anda dalam daftar. Eksekusi menunjukkan status saat ini (Berjalan, Berhasil, atau Gagal).

  3. Pilih ID eksekusi untuk melihat detail, termasuk:

    • Garis waktu eksekusi menunjukkan kapan setiap langkah selesai

    • Sejarah pos pemeriksaan

    • Periode tunggu

    • Hasil langkah

Anda juga dapat melihat log fungsi Anda di CloudWatch Log untuk melihat output konsol dari setiap langkah.

Untuk melihat catatan pemanggilan fungsi Anda di Log CloudWatch
  1. Buka halaman Grup log di CloudWatch konsol.

  2. Pilih grup log untuk fungsi Anda (/aws/lambda/myDurableFunction).

  3. Gulir ke bawah dan pilih aliran Log untuk pemanggilan fungsi yang ingin Anda lihat.

    Daftar aliran log untuk fungsi Lambda.

    Anda akan melihat entri log untuk setiap pemanggilan fungsi Anda, termasuk eksekusi awal dan pemutaran ulang setelah menunggu.

catatan

Saat Anda menggunakan logger dari DurableContext (seperti context.logger ataustepContext.logger), log juga muncul dalam eksekusi tahan lama dan tampilan langkah di konsol Lambda. Log ini mungkin membutuhkan waktu beberapa saat untuk dimuat.

Bersihkan

Ketika Anda selesai bekerja dengan contoh fungsi tahan lama, hapus. Anda juga dapat menghapus grup log yang menyimpan log fungsi, dan peran eksekusi yang dibuat konsol.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik confirm di bidang input teks dan pilih H apus.

Untuk menghapus grup log
  1. Buka halaman Grup log di CloudWatch konsol.

  2. Pilih grup log fungsi (/aws/lambda/myDurableFunction).

  3. Pilih Tindakan, Hapus grup log.

  4. Di kotak dialog Hapus grup log, pilih Hapus.

Untuk menghapus peran eksekusi
  1. Buka halaman Peran pada konsol AWS Identity and Access Management (IAM).

  2. Pilih peran eksekusi fungsi (misalnya,myDurableFunction-role-31exxmpl).

  3. Pilih Hapus.

  4. Di kotak dialog H apus peran, masukkan nama peran, lalu pilih H apus.

Sumber daya tambahan dan langkah selanjutnya

Sekarang setelah Anda membuat dan menguji fungsi tahan lama sederhana menggunakan konsol, lakukan langkah-langkah berikut ini:

  • Pelajari tentang kasus penggunaan umum untuk fungsi tahan lama, termasuk transaksi terdistribusi, pemrosesan pesanan, dan alur kerja peninjauan manusia. Lihat Contoh.

  • Memahami cara memantau eksekusi fungsi yang tahan lama dengan CloudWatch metrik dan riwayat eksekusi. Lihat Pem antauan dan debugging.

  • Pelajari tentang memanggil fungsi tahan lama secara sinkron dan asinkron, dan mengelola eksekusi yang berjalan lama. Lihat Mem anggil fungsi tahan lama.

  • Ikuti praktik terbaik untuk menulis kode deterministik, mengelola ukuran pos pemeriksaan, dan mengoptimalkan biaya. Lihat Praktik terbaik.

  • Pelajari cara menguji fungsi tahan lama secara lokal dan di cloud. Lihat Meng uji fungsi tahan lama.

  • Bandingkan fungsi tahan lama dengan Fungsi Langkah untuk memahami kapan setiap pendekatan paling efektif. Lihat Fungsi tahan lama atau Fungsi Langkah.