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 fungsi Lambda untuk menggunakan kejadian dari aliran Amazon DynamoDB.
Prasyarat
Jika Anda belum menginstal AWS Command Line Interface, ikuti langkah-langkah di Meng instal 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 (sepertizip) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan Windows-integrated versi Ubuntu dan Bash, instal Subsistem Windows untuk Linux.
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.
-
Memiliki AWSLambdaDynamoDBExecutionRole izin yang dibutuhkan fungsi untuk membaca item dari DynamoDB dan menulis log ke CloudWatch Log.
Buat fungsi
Buat fungsi Lambda yang memproses peristiwa DynamoDB Anda. Kode fungsi menulis beberapa data peristiwa masuk ke CloudWatch Log.
Untuk membuat fungsi
-
Salin kode sampel ke file dengan nama
example.js. -
Buat paket deployment.
zip function.zip example.js -
Buat fungsi Lambda dengan perintah
create-function.aws 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 Lambda
Pada langkah ini, Anda memanggil fungsi Lambda 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 Aktifkan.
-
Untuk Jenis tampilan, pilih Atribut kunci saja.
-
Pilih Aktifkan streaming.
Tulis ARN stream. Anda memerlukan ini di langkah berikutnya ketika Anda mengaitkan aliran dengan fungsi Lambda Anda. Untuk informasi selengkapnya tentang mengaktifkan aliran, lihat Menangkap aktivitas tabel dengan DynamoDB Streams.
Menambahkan sumber acara di AWS Lambda
Buat pemetaan sumber peristiwa di AWS Lambda. Pemetaan sumber peristiwa ini mengaitkan aliran DynamoDB dengan fungsi Lambda Anda. Setelah Anda membuat pemetaan sumber peristiwa ini, mul AWS Lambda ailah melakukan 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 membuat pemetaan di antara aliran DynamoDB yang ditentukan dan fungsi Lambda. Anda dapat mengaitkan aliran DynamoDB dengan beberapa fungsi Lambda, dan mengaitkan fungsi Lambda yang sama dengan beberapa aliran. Namun, fungsi Lambda berbagi throughput baca untuk aliran 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 tidak ada catatan dalam aliran) dan OK (menunjukkan AWS Lambda berhasil membaca catatan dari aliran dan memanggil fungsi 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 AWS Lambda melakukan polling terhadap aliran, ini mendeteksi catatan baru dalam aliran dan memanggil fungsi Lambda Anda atas nama Anda dengan mengirimkan peristiwa ke fungsi tersebut.
-
Di konsol DynamoDB, tambahkan, perbarui, dan hapus item di tabel. DynamoDB menuliskan catatan tindakan ini ke aliran.
-
AWS Lambda mensurvei aliran dan ketika mendeteksi pembaruan pada aliran, ia memanggil fungsi Lambda Anda dengan meneruskan data acara 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 parsional untuk menangani kegagalan catatan individual dengan lebih efisien. Utilitas prosesor batch dari Powertools for AWS Lambda tersedia di Python,, .NET TypeScript, dan Java dan memberikan solusi yang kuat untuk ini, secara otomatis menangani kompleksitas respons batch parsional 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 biaya yang tidak perlu kepada Anda Akun AWS.
Untuk menghapus fungsi Lambda
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi yang Anda buat.
-
Pilih Tindakan, Hapus.
-
Ketik
confirmdi bidang input teks dan pilih H apus.
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 H apus.
Untuk menghapus tabel DynamoDB
-
Buka halaman Tabel
di konsol DynamoDB. -
Pilih tabel yang Anda buat.
-
Pilih Hapus.
-
Masukkan
deletedi kotak teks. -
Pilih Hapus tabel.