View a markdown version of this page

Praktik terbaik menggunakan Streams DynamoDB dengan Lambda - Amazon DynamoDB

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

Praktik terbaik menggunakan Streams DynamoDB dengan Lambda

AWS Lambda Fungsi berjalan di dalam wadah —lingkungan eksekusi yang terisolasi dari fungsi lain. Ketika Anda menjalankan fungsi untuk pertama kalinya AWS Lambda , membuat wadah baru dan mulai menjalankan kode fungsi.

Fungsi Lambda memiliki handler yang dijalankan sekali per permohonan. Handler berisi logika bisnis utama untuk fungsi. Misalnya, fungsi Lambda yang ditampilkan dalam Langkah 4: Buat dan uji fungsi Lambda memiliki handler yang dapat memproses catatan dalam DynamoDB stream.

Anda juga dapat memberikan kode inisialisasi yang berjalan satu kali saja—setelah container dibuat, tetapi sebelum AWS Lambda menjalankan handler untuk pertama kalinya. Fungsi Lambda yang ditampilkan Langkah 4: Buat dan uji fungsi Lambda memiliki kode inisialisasi yang mengimpor SDK untuk JavaScript in Node.js, dan membuat klien untuk Amazon SNS. Objek-objek ini hanya boleh didefinisikan sekali, di luar handler.

Setelah fungsi berjalan, AWS Lambda mungkin memilih untuk menggunakan kembali wadah untuk pemanggilan fungsi berikutnya. Dalam kasus ini, handler fungsi Anda mungkin dapat menggunakan kembali sumber daya yang Anda tetapkan dalam kode inisialisasi Anda. (Anda tidak dapat mengontrol berapa lama AWS Lambda akan mempertahankan kontainer, atau apakah kontainer akan digunakan kembali.)

Untuk pemicu DynamoDB menggunakan AWS Lambda, kami merekomendasikan hal berikut:

  • AWS klien layanan harus dibuat instansiasi dalam kode inisialisasi, bukan di handler. Hal ini memungkinkan AWS Lambda untuk menggunakan kembali koneksi yang ada, selama masa pakai wadah.

  • Secara umum, Anda tidak perlu mengelola koneksi secara eksplisit atau menerapkan pengumpulan koneksi karena AWS Lambda mengelola ini untuk Anda.

Konsumen Lambda untuk aliran DynamoDB menyediakan pengiriman setidaknya sekali: itu tidak menjamin pengiriman tepat sekali dan mungkin memproses catatan yang sama lebih dari sekali (misalnya, ketika pemanggilan fungsi dicoba ulang). Ini berbeda dari jaminan Streams DynamoDB bahwa setiap rekaman aliran muncul tepat sekali dalam aliran — jaminan itu menjelaskan catatan yang disimpan dalam aliran, bukan berapa kali konsumen memprosesnya. Untuk mencegah masalah tak terduga dari pemrosesan duplikat, pastikan kode fungsi Lambda Anda idempotent.

Untuk informasi selengkapnya, lihat Praktik terbaik untuk bekerja dengan AWS Lambda fungsi di Panduan AWS Lambda Pengembang.