View a markdown version of this page

Mengintegrasikan DynamoDB dengan Amazon EventBridge - Amazon DynamoDB

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

Mengintegrasikan DynamoDB dengan Amazon EventBridge

Amazon DynamoDB menawarkan DynamoDB Streams untuk pengambilan data perubahan, memungkinkan penangkapan perubahan tingkat item dalam tabel DynamoDB. DynamoDB Streams dapat memanggil fungsi Lambda untuk memproses perubahan tersebut, memungkinkan integrasi berbasis peristiwa dengan layanan dan aplikasi lain. DynamoDB Streams juga mendukung pemfilteran, yang memungkinkan pemrosesan peristiwa yang efisien dan ditargetkan.

DynamoDB Streams mendukung hingga dua konsumen simultan per shard dan mendukung pemfilteran melalui pemfilteran peristiwa Lambda sehingga hanya item yang cocok dengan kriteria tertentu yang diproses. Beberapa pelanggan mungkin memiliki persyaratan untuk mendukung lebih dari dua konsumen. Orang lain mungkin perlu memperkaya peristiwa perubahan sebelum diproses, atau menggunakan pemfilteran dan perutean yang lebih canggih.

Mengintegrasikan DynamoDB dengan EventBridge dapat mendukung persyaratan tersebut.

Amazon EventBridge adalah layanan tanpa server yang menggunakan peristiwa untuk menghubungkan komponen aplikasi bersama-sama, sehingga memudahkan Anda membangun aplikasi berbasis peristiwa yang dapat diskalakan. EventBridge menawarkan integrasi asli dengan Amazon DynamoDB melalui Pipes, EventBridge memungkinkan aliran data yang mulus dari DynamoDB ke bus. EventBridge Bus itu kemudian dapat difan-out ke beberapa aplikasi dan layanan melalui serangkaian aturan dan target.

Cara kerjanya

Integrasi antara DynamoDB dan EventBridge pipa menggunakan DynamoDB Streams untuk menangkap urutan perubahan tingkat item yang diatur waktu dalam tabel DynamoDB. Setiap catatan yang ditangkap dengan cara ini berisi data yang dimodifikasi dalam tabel.

Gambar menunjukkan bagaimana DynamoDB Streams berintegrasi dengan bus Amazon EventBridge .

EventBridge Pipa mengkonsumsi peristiwa dari DynamoDB Streams dan merutekan mereka ke target seperti EventBridge bus (bus acara adalah router yang menerima peristiwa dan mengirimkannya ke tujuan, juga disebut target). Pengiriman didasarkan pada aturan mana yang cocok dengan isi acara. Secara opsional, pipa juga menyertakan kemampuan untuk menyaring peristiwa tertentu dan melakukan pengayaan pada data peristiwa sebelum mengirimnya ke target.

Meskipun EventBridge mendukung beberapa jenis target, pilihan umum saat menerapkan desain fan-out adalah menggunakan fungsi Lambda sebagai target. Contoh berikut menunjukkan integrasi dengan target fungsi Lambda.

Membuat integrasi melalui konsol

Ikuti langkah-langkah di bawah ini untuk membuat integrasi melalui Konsol Manajemen AWS.

  1. Aktifkan Streams DynamoDB pada tabel sumber dengan mengikuti langkah-langkah di Mengaktifkan aliran bagian panduan pengembang DynamoDB. Jika DynamoDB Streams sudah diaktifkan pada tabel sumber, verifikasi bahwa saat ini ada kurang dari dua konsumen. Konsumen bisa berupa fungsi Lambda, DynamoDB Global Tables, integrasi Amazon DynamoDB Zero-ETL dengan Amazon OpenSearch Service, atau aplikasi yang membaca langsung dari aliran seperti melalui adaptor DynamoDB Streams Kinesis.

  2. Buat bus EventBridge acara dengan mengikuti langkah-langkah di bagian Membuat bus EventBridge acara Amazon pada panduan EventBridge pengguna.

    1. Saat membuat bus acara, aktifkan penemuan Skema.

  3. Buat EventBridge pipa dengan mengikuti langkah-langkah di bagian Membuat EventBridge pipa Amazon pada panduan EventBridge pengguna.

    1. Saat mengonfigurasi sumber, di bidang Sumber pilih DynamoDB dan di bidang DynamoDB Streams pilih nama aliran tabel sumber.

    2. Saat mengonfigurasi target, di bidang layanan Target pilih bus EventBridge acara dan di bus acara sebagai bidang target pilih bus acara yang dibuat pada langkah 2.

  4. Tulis item contoh ke tabel DynamoDB sumber untuk memicu peristiwa. Ini akan memungkinkan EventBridge untuk menyimpulkan skema dari item contoh. Skema ini dapat digunakan untuk membuat aturan untuk perutean peristiwa. Misalnya, jika Anda menerapkan pola desain yang melibatkan atribut kelebihan beban, Anda mungkin ingin memicu aturan yang berbeda tergantung pada nilai kunci pengurutan Anda. Rincian tentang cara menulis item ke DynamoDB dapat ditemukan di bagian Bek erja dengan item dan atribut dari panduan pengembang DynamoDB.

  5. Buat contoh fungsi Python Lambda untuk digunakan sebagai target dengan mengikuti langkah-langkah di Membangun fungsi Lambda dengan Python bagian dari panduan pengembang Lambda. Saat membuat fungsi Anda, Anda dapat menggunakan kode contoh di bawah ini untuk menunjukkan integrasi. Ketika dipanggil, itu akan mencetak NewImage dan OldImage diterima dengan peristiwa yang dapat dilihat di CloudWatch Log.

    import json def lambda_handler(event, context): dynamodb = event.get('detail', {}).get('dynamodb', {}) new_image = dynamodb.get('NewImage') old_image = dynamodb.get('OldImage') if new_image: print("NewImage:", json.dumps(new_image, indent=2)) if old_image: print("OldImage:", json.dumps(old_image, indent=2)) return {'statusCode': 200, 'body': json.dumps(event)}
  6. Buat EventBridge aturan yang akan merutekan peristiwa ke fungsi Lambda baru Anda dengan mengikuti langkah-langkah di bagian Buat aturan yang bereaksi terhadap peristiwa panduan EventBridge pengguna.

    1. Saat menentukan detail aturan, pilih nama bus acara yang Anda buat di langkah 2 sebagai bus acara.

    2. Saat membangun pola acara, ikuti panduan untuk skema yang ada. Di sini, Anda dapat memilih registr i skema yang ditemukan dan skema yang ditemukan untuk acara Anda. Ini memungkinkan Anda mengonfigurasi pola peristiwa khusus untuk kasus penggunaan Anda yang hanya merutekan pesan yang cocok dengan atribut tertentu. Misalnya, jika Anda ingin mencocokkan hanya pada item DynamoDB tempat SK dimulai“user#”, Anda akan menggunakan konfigurasi seperti ini.

      Gambar yang menunjukkan EventBridge aturan di mana hanya item DynamoDB yang memiliki kunci pengurutan yang dimulai dengan “user#” ditampilkan.
    3. Pilih Hasilkan pola acara di JSON setelah Anda selesai merancang pola terhadap skema Anda. Jika Anda ingin mencocokkan semua peristiwa yang muncul di Streams DynamoDB, gunakan JSON berikut untuk pola peristiwa.

      { "source": ["aws.dynamodb"] }
    4. Saat memilih target, ikuti panduan untuk AWS layanan. Di bidang Pilih target, pilih “Fungsi Lambda”. Di bidang Function, pilih fungsi Lambda yang Anda buat pada langkah 5.

  7. Anda sekarang dapat menghentikan penemuan skema di bus acara Anda dengan mengikuti langkah-langkah di bagian Memulai atau menghentikan penemuan skema di bus acara pada panduan EventBridge pengguna.

  8. Tulis item contoh kedua ke tabel DynamoDB sumber untuk memicu peristiwa. Memvalidasi bahwa acara berhasil diproses pada setiap langkah.

    1. Lihat CloudWatch metrik PutEventsApproximateSuccessCount untuk bus acara Anda dengan mengikuti EventBridge bagian Memantau Amazon pada panduan EventBridge pengguna.

    2. Lihat log fungsi untuk fungsi Lambda Anda dengan mengikuti bagian Pem antauan dan pemecahan masalah fungsi Lambda dari panduan pengembang Lambda. Jika fungsi Lambda Anda menggunakan kode contoh yang disediakan, Anda akan melihat NewImage dan OldImage dari DynamoDB Streams dicetak di grup CloudWatch log log.

    3. Lihat metrik Jumlah kesalahan dan tingkat keberhasilan (%) untuk fungsi Lambda Anda dengan mengikuti bagian Pem antauan dan pemecahan masalah fungsi Lambda pada panduan pengembang Lambda.

Langkah selanjutnya

Contoh ini menyediakan integrasi dasar dengan fungsi Lambda tunggal sebagai target. Untuk pemahaman yang lebih baik tentang konfigurasi yang lebih kompleks, seperti membuat beberapa aturan, membuat beberapa target, mengintegrasikan dengan layanan lain, dan memperkaya acara, lihat panduan EventBridge pengguna lengkap: Mem ulai dengan EventBridge.

catatan

Waspadai ku EventBridge ota apa pun yang mungkin relevan dengan aplikasi Anda. Sementara kapasitas Streams DynamoDB diskalakan dengan tabel Anda, ku EventBridge ota terpisah. Kuota umum yang harus diperhatikan dalam aplikasi besar adalah batas throttle Invocations dalam transaksi per detik dan batas PutEvents throttle dalam transaksi per detik. Kuota ini menentukan jumlah pemanggilan yang dapat dikirim ke target dan jumlah peristiwa yang dapat dimasukkan ke dalam bus per detik.