Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Menggunakan AWS Lambda dengan aliran Amazon DynamoDB
Dalam tutorial ini, Anda membuat Lambda Event Function untuk mengkonsumsi peristiwa dari aliran Amazon DynamoDB.
Prasyarat
Jika Anda belum menginstal AWS Command Line Interface, ikuti langkah-langkah di Menginstal atau memperbarui versi terbaru AWS CLI untuk menginstalnya.
Tutorial ini membutuhkan terminal baris perintah atau shell untuk menjalankan perintah. Di Linux dan macOS, gunakan shell dan manajer paket pilihan Anda.
catatan
Di Windows, beberapa perintah Bash CLI yang biasa Anda gunakan dengan Lambda (zipseperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan Windows-integrated versi Ubuntu dan Bash, instal Subsistem Windows untuk
Buat peran eksekusi
Buat peran eksekusi yang memberikan izin fungsi Anda untuk mengakses AWS sumber daya.
Untuk membuat peran eksekusi
-
Buka halaman peran
di konsol IAM. -
Pilih Buat peran.
-
Buat peran dengan properti berikut.
-
Entitas tepercaya – Lambda.
-
Izin – AWSLambdaDynamoDBExecutionRole.
-
Nama peran –
lambda-dynamodb-role.
-
Ini AWSLambdaDynamoDBExecutionRolememiliki izin bahwa fungsi perlu membaca item dari DynamoDB dan menulis log ke Log. CloudWatch
Buat Fungsi Acara
Buat Fungsi Peristiwa Lambda yang memproses peristiwa DynamoDB Anda. Kode fungsi menulis beberapa data peristiwa yang masuk ke CloudWatch Log.
Untuk membuat Fungsi Acara
-
Salin kode sampel ke file dengan nama
example.js. -
Buat paket deployment.
zip function.zip example.js -
Buat Fungsi Acara Lambda dengan perintah.
create-functionaws lambda create-function --function-name ProcessDynamoDBRecords \ --zip-file fileb://function.zip --handler example.handler --runtime nodejs24.x \ --role arn:aws:iam::111122223333:role/lambda-dynamodb-role
Uji Fungsi Peristiwa Lambda
Pada langkah ini, Anda memanggil Lambda Event Function Anda secara manual menggunakan perintah invoke AWS Lambda CLI dan contoh peristiwa DynamoDB berikut. Salin berikut ini ke dalam file bernamainput.txt.
contoh input.txt
{ "Records":[ { "eventID":"1", "eventName":"INSERT", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "NewImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "SequenceNumber":"111", "SizeBytes":26, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" }, { "eventID":"2", "eventName":"MODIFY", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "NewImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "OldImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "SequenceNumber":"222", "SizeBytes":59, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" }, { "eventID":"3", "eventName":"REMOVE", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "OldImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "SequenceNumber":"333", "SizeBytes":38, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" } ] }
Jalankan perintah invoke berikut.
aws lambda invoke --function-name ProcessDynamoDBRecords \ --cli-binary-format raw-in-base64-out \ --payload file://input.txt outputfile.txt
cli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankanaws configure set cli-binary-format raw-in-base64-out. Untuk informasi selengkapnya, lihat opsi baris perintah global yang AWS CLI didukung di Panduan AWS Command Line Interface Pengguna untuk Versi 2.
Fungsi mengembalikan message string dalam badan respons.
Verifikasikan output dalam outputfile.txt file.
Buat tabel DynamoDB dengan aliran yang diaktifkan
Buat tabel Amazon DynamoDB dengan aliran yang diaktifkan.
Untuk membuat tabel DynamoDB
-
Buka Konsol DynamoDB
. -
Pilih Buat tabel.
-
Buat tabel dengan pengaturan berikut.
-
Nama tabel –
lambda-dynamodb-stream -
Kunci utama –
id(string)
-
-
Pilih Buat.
Untuk mengaktifkan stream
-
Buka Konsol DynamoDB
. -
Pilih Tables.
-
Pilih tabel lambda-dynamodb-stream.
-
Di bawah Ekspor dan aliran, pilih detail aliran DynamoDB.
-
Pilih Nyalakan.
-
Untuk tipe Tampilan, pilih Atribut kunci saja.
-
Pilih Aktifkan aliran.
Tulis ARN stream. Anda memerlukan ini di langkah berikutnya ketika Anda mengaitkan aliran dengan Fungsi Acara Lambda Anda. Untuk informasi selengkapnya tentang mengaktifkan aliran, lihat Menangkap aktivitas tabel dengan DynamoDB Streams.
Tambahkan sumber acara di AWS Lambda
Buat pemetaan sumber peristiwa di AWS Lambda. Pemetaan sumber peristiwa ini mengaitkan aliran DynamoDB dengan Fungsi Peristiwa Lambda Anda. Setelah Anda membuat pemetaan sumber acara ini, AWS Lambda mulai polling aliran.
Jalankan perintah AWS CLI create-event-source-mapping berikut. Setelah perintah dijalankan, catat UUID. Anda akan memerlukan UUID ini untuk merujuk ke pemetaan sumber kejadian dalam perintah apa pun, misalnya, saat menghapus pemetaan sumber kejadian.
aws lambda create-event-source-mapping --function-name ProcessDynamoDBRecords \ --batch-size 100 --starting-position LATEST --event-sourceDynamoDB-stream-arn
Ini menciptakan pemetaan antara aliran DynamoDB yang ditentukan dan Fungsi Peristiwa Lambda. Anda dapat mengaitkan aliran DynamoDB dengan beberapa Fungsi Peristiwa Lambda, dan mengaitkan Fungsi Peristiwa Lambda yang sama dengan beberapa aliran. Namun, Fungsi Acara Lambda membagikan throughput baca untuk streaming yang mereka bagikan.
Anda bisa mendapatkan daftar pemetaan sumber kejadian dengan menjalankan perintah berikut.
aws lambda list-event-source-mappings
Daftar tersebut mengembalikan semua pemetaan sumber kejadian yang Anda buat, dan antara lain menampilkan LastProcessingResult untuk setiap pemetaan. Bidang ini digunakan untuk memberikan pesan informatif jika terjadi masalah. Nilai seperti No records processed (menunjukkan bahwa AWS Lambda belum memulai polling atau bahwa tidak ada catatan dalam aliran) dan OK (menunjukkan AWS Lambda berhasil membaca catatan dari aliran dan memanggil Fungsi Peristiwa Lambda Anda) menunjukkan bahwa tidak ada masalah. Jika ada masalah, Anda akan menerima pesan kesalahan.
Jika Anda memiliki banyak pemetaan sumber kejadian, gunakan parameter nama fungsi untuk mempersempit hasil.
aws lambda list-event-source-mappings --function-name ProcessDynamoDBRecords
Uji penyiapan
Uji pengalaman end-to-end. Saat Anda melakukan pembaruan tabel, DynamoDB menuliskan catatan peristiwa ke aliran. Saat melakukan AWS Lambda polling streaming, ia mendeteksi catatan baru dalam aliran dan memanggil Fungsi Peristiwa Lambda Anda atas nama Anda dengan meneruskan peristiwa ke fungsi.
-
Di konsol DynamoDB, tambahkan, perbarui, dan hapus item di tabel. DynamoDB menuliskan catatan tindakan ini ke aliran.
-
AWS Lambda polling aliran dan ketika mendeteksi pembaruan ke aliran, ia memanggil Fungsi Peristiwa Lambda Anda dengan meneruskan data peristiwa yang ditemukannya di aliran.
-
Fungsi Anda berjalan dan membuat log di Amazon CloudWatch. Anda dapat memverifikasi log yang dilaporkan di CloudWatch konsol Amazon.
Langkah selanjutnya
Tutorial ini menunjukkan dasar-dasar pemrosesan peristiwa aliran DynamoDB dengan Lambda. Untuk beban kerja produksi, pertimbangkan untuk menerapkan logika respons batch sebagian untuk menangani kegagalan rekaman individu dengan lebih efisien. Utilitas prosesor batch dari Powertools for AWS Lambda tersedia dalam Python TypeScript,, .NET, dan Java dan memberikan solusi yang kuat untuk ini, secara otomatis menangani kompleksitas respons batch paral dan mengurangi jumlah percobaan ulang untuk catatan yang berhasil diproses.
Bersihkan sumber daya Anda
Sekarang Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini, kecuali Anda ingin mempertahankannya. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS.
Untuk menghapus Fungsi Acara Lambda
-
Buka halaman Fungsi Acara
konsol Lambda. -
Pilih Fungsi Acara yang Anda buat.
-
Pilih Tindakan, Hapus.
-
Ketik
confirmkolom input teks dan pilih Hapus.
Untuk menghapus peran eksekusi
-
Buka halaman Peran
dari konsol IAM. -
Pilih peran eksekusi yang Anda buat.
-
Pilih Hapus.
-
Masukkan nama peran di bidang input teks dan pilih Hapus.
Untuk menghapus tabel DynamoDB
-
Buka halaman Tabel
di konsol DynamoDB. -
Pilih tabel yang Anda buat.
-
Pilih Hapus.
-
Masukkan
deletedi kotak teks. -
Pilih Hapus tabel.