Menguji dan men-debug fungsi tahan lama - AWS Serverless Application Model

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

Menguji dan men-debug fungsi tahan lama

Menguji dan men-debug fungsi tahan lama secara lokal bekerja mirip dengan fungsi Lambda biasa, dengan dukungan otomatis untuk checkpointing dan replay. Panduan ini mencakup skenario pengujian umum dan teknik pemecahan masalah.

Alur kerja pengujian lokal

Saat menguji fungsi tahan lama secara lokal, alur kerja berbeda dari fungsi Lambda biasa:

Alur kerja pengujian fungsi yang tahan lama
  1. Bangun aplikasi Anda:

    $ sam build
  2. Panggil fungsi tahan lama Anda:

    $ sam local invoke MyDurableFunction --durable-execution-name test
  3. Periksa riwayat eksekusi jika diperlukan:

    $ sam local execution history execution-id

Skenario pengujian umum

Menguji perilaku checkpointing

Untuk menguji apakah fungsi Anda dengan benar status pos pemeriksaan:

# Example Python durable function def handler(event, context): # This will create a checkpoint context.wait(10) # Wait 10 seconds # Function resumes here after wait return {"message": "Function resumed after wait"}

Saat Anda menjalankan fungsi ini secara lokal, periode tunggu ditangani secara otomatis.

Menguji skenario panggilan balik

Untuk fungsi yang menunggu callback eksternal:

  1. Mulai fungsi tahan lama Anda yang menunggu panggilan balik

  2. Di terminal lain, selesaikan panggilan balik:

    $ sam local callback succeed callback-id
  3. Amati fungsi melanjutkan eksekusi

Pemecahan masalah

Fungsi tahan lama tidak dijalankan dengan benar

Masalah: Fungsi tidak berperilaku sebagai fungsi yang tahan lama.

Solusi:

  • Verifikasi yang DurableConfig diatur dalam template SAM Anda

  • Pastikan kode fungsi Anda menggunakan metode SDK fungsi yang tahan lama (mis.,context.wait())

  • Periksa apakah Anda menggunakan runtime yang didukung (TypeScript, JavaScript, Python)

Tidak dapat mengambil riwayat eksekusi

Masalah: local execution history Perintah tidak mengembalikan hasil.

Solusi:

  • Verifikasi bahwa ID eksekusi sudah benar

  • Periksa apakah fungsi telah dipanggil setidaknya sekali

Perintah callback tidak berfungsi

Masalah: Perintah callback tidak menyelesaikan operasi yang tertunda.

Solusi:

  • Verifikasi ID callback sudah benar

  • Pastikan fungsi tersebut benar-benar menunggu panggilan balik

  • Verifikasi bahwa Anda menggunakan sintaks perintah callback yang benar

Kiat debugging

  • Gunakan riwayat eksekusi - Tinjau riwayat eksekusi untuk memahami alur fungsi tahan lama Anda

  • Uji secara bertahap - Mulailah dengan operasi tunggu sederhana sebelum menambahkan logika kompleks

  • Gunakan pencatatan verbose - Aktifkan pencatatan terperinci untuk melacak alur eksekusi

Pelajari selengkapnya

Untuk informasi selengkapnya tentang pengujian dan debugging, lihat: