Membuat fungsi Lambda 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.

Membuat fungsi Lambda yang tahan lama

Untuk memulai dengan fungsi Lambda yang tahan lama, 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 menunjukkan eksekusi berbasis pos pemeriksaan.

Saat Anda menjalankan 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 saat fungsi Anda dilanjutkan setelah menunggu.

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

Tip

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

Prasyarat

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

Untuk mendaftar untuk Akun AWS
  1. Buka https://portal.aws.amazon.com/billing/pendaftaran.

  2. Ikuti petunjuk online.

    Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

    Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan tugas yang memerlukan akses pengguna root.

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk https://aws.amazon.com.rproxy.govskope.cake/ dan memilih Akun Saya.

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

Amankan Anda Pengguna root akun AWS
  1. Masuk ke Konsol Manajemen AWSsebagai pemilik akun dengan memilih pengguna Root dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

    Untuk bantuan masuk dengan menggunakan pengguna root, lihat Masuk sebagai pengguna root di AWS Sign-In Panduan Pengguna.

  2. Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.

    Untuk petunjuk, lihat Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan Pengguna IAM.

Buat pengguna dengan akses administratif
  1. Aktifkan Pusat Identitas IAM.

    Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .

  2. Di Pusat Identitas IAM, berikan akses administratif ke pengguna.

    Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM di Panduan AWS IAM Identity Center Pengguna.

Masuk sebagai pengguna dengan akses administratif
  • Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.

    Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.

Tetapkan akses ke pengguna tambahan
  1. Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

    Untuk petunjuknya, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.

  2. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

    Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.

Buat fungsi Lambda yang tahan lama dengan konsol

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

Fungsi Anda juga menunjukkan operasi tunggu, menghentikan 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 yang tahan lama.

Lambda membuat fungsi tahan lama Anda dengan peran eksekusi yang menyertakan izin untuk operasi pos pemeriksaan (dan). lambda:CheckpointDurableExecutions lambda:GetDurableExecutionState

catatan

Runtime Lambda menyertakan Durable Execution SDK, sehingga Anda dapat menguji fungsi yang tahan lama tanpa dependensi kemasan. Namun, sebaiknya sertakan SDK dalam paket penerapan Anda untuk produksi. Ini memastikan konsistensi versi dan menghindari kemungkinan pembaruan runtime 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, ganti kode yang dibuat Lambda.

    import { DurableContext, 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 Deploy untuk memperbarui kode fungsi Anda:

    Tombol terapkan di editor kode konsol Lambda
Memahami kode fungsi tahan lama Anda

Sebelum Anda pindah ke langkah berikutnya, mari kita lihat kode fungsi dan pahami konsep fungsi kunci yang tahan lama.

  • withDurableExecutionPembungkusnya:

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

  • DurableContextObjek:

    Alih-alih konteks Lambda standar, fungsi Anda menerima file. DurableContext 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 ini tidak menjalankan kembali langkah-langkah yang telah selesai. Ini menggunakan hasil yang disimpan sebagai gantinya.

  • Tunggu operasi:

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

  • Mekanisme replay:

    Ketika fungsi Anda dilanjutkan setelah menunggu atau interupsi, Lambda menjalankan kode Anda dari awal. Namun, langkah yang diselesaikan tidak dijalankan 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 yang menunjukkan editor kode konsol dan file lambda_function.py di file explorer
  2. Tempelkan kode berikut ke tab lambda_function.py, ganti 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 Deploy untuk memperbarui kode fungsi Anda:

    Tombol terapkan di editor kode konsol Lambda
Memahami kode fungsi tahan lama Anda

Sebelum Anda pindah ke langkah berikutnya, mari kita lihat kode fungsi dan pahami konsep fungsi kunci yang tahan lama.

  • @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 dihiasi dengan@durable_step. Dekorator ini menandai fungsi sebagai langkah tahan lama yang menciptakan pos pemeriksaan.

  • DurableContextObjek:

    Alih-alih konteks Lambda standar, fungsi Anda menerima file. DurableContext 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 ini tidak menjalankan kembali langkah-langkah yang telah selesai. Ini menggunakan hasil yang disimpan sebagai gantinya.

  • Tunggu operasi:

    context.wait()Panggilan menjeda eksekusi tanpa menghabiskan sumber daya komputasi. Ketika menunggu 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 digunakan. await Semua operasi tahan lama adalah panggilan metode sinkron.

Memanggil fungsi tahan lama menggunakan editor kode konsol

Fungsi yang tahan lama membutuhkan ARN yang memenuhi syarat untuk pemanggilan. Sebelum Anda dapat menjalankan fungsi tahan lama Anda, terbitkan versi.

Untuk mempublikasikan 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 termasuk :1 di akhir, menunjukkan ini adalah versi 1.

Sekarang buat acara uji 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 Acara, 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 ini termasuk menunggu 10 detik, pemanggilan awal selesai dengan cepat, dan fungsi dilanjutkan setelah periode tunggu. Anda dapat melihat progres eksekusi di tab Eksekusi tahan lama.

Untuk melihat eksekusi fungsi tahan lama Anda
  1. Pilih tab Eksekusi 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 keluaran konsol dari setiap langkah.

Untuk melihat catatan pemanggilan fungsi Anda di Log CloudWatch
  1. Buka halaman Grup log 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.

Bersihkan

Setelah 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 kolom input teks dan pilih Hapus.

Untuk menghapus grup log
  1. Buka halaman Grup log 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 konsol AWS Identity and Access Management (IAM).

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

  3. Pilih Hapus.

  4. Di kotak dialog Hapus peran, masukkan nama peran, lalu pilih Hapus.

Sumber daya tambahan dan langkah selanjutnya

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

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

  • Pahami cara memantau eksekusi fungsi yang tahan lama dengan CloudWatch metrik dan riwayat eksekusi. Lihat Monitoring dan debugging.

  • Pelajari tentang menjalankan fungsi tahan lama secara sinkron dan asinkron, serta mengelola eksekusi yang berjalan lama. Lihat Memanggil fungsi yang 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 Menguji fungsi tahan lama.