Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Menggunakan Lambda dengan Amazon SQS
Dalam tutorial ini, Anda membuat fungsi Lambda yang mengkonsumsi pesan dari antrian Amazon Simple Queue Service (Amazon SQS). Fungsi Lambda berjalan setiap kali pesan baru ditambahkan ke antrian. Fungsi menulis pesan ke aliran Amazon CloudWatch Logs. Diagram berikut menunjukkan sumber daya AWS yang Anda gunakan untuk menyelesaikan tutorial.
Untuk menyelesaikan tutorial ini, Anda melakukan langkah-langkah berikut:
-
Buat fungsi Lambda yang menulis pesan ke CloudWatch Log.
-
Membuat antrean Amazon SQS.
-
Buat pemetaan sumber peristiwa Lambda. Pemetaan sumber peristiwa membaca antrian Amazon SQS dan memanggil fungsi Lambda Anda saat pesan baru ditambahkan.
-
Uji pengaturan dengan menambahkan pesan ke antrian Anda dan memantau hasilnya di CloudWatch Log.
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
Peran eksekusi adalah peran AWS Identity and Access Management (IAM) yang memberikan izin fungsi Lambda untuk mengakses Layanan AWS dan sumber daya. Untuk mengizinkan fungsi Anda membaca item dari Amazon SQS, lampirkan kebijakan AWSLambdaSQSQueueExecutionRole izin.
Untuk membuat peran eksekusi dan melampirkan kebijakan izin Amazon SQS
-
Buka halaman Peran
dari konsol IAM. -
Pilih Buat peran.
-
Untuk Ti pe entitas tepercaya, pilih AWS layanan.
-
Untuk kasus penggunaan, pilih Lambda.
-
Pilih Berikutnya.
-
Di kotak pencarian kebijakan izin, masukkan
AWSLambdaSQSQueueExecutionRole. -
Pilih AWSLambdaSQSQueueExecutionRole kebijakan, lalu pilih Ber ikutnya.
-
Di bawah Detail peran, untuk Nama peran, masukkan
lambda-sqs-role, lalu pilih Buat peran.
Setelah pembuatan peran, catat Nama Sumber Daya Amazon (ARN) dari peran eksekusi Anda. Anda akan membutuhkannya di langkah selanjutnya.
Buat fungsi
Buat fungsi Lambda yang memproses pesan Amazon SQS Anda. Kode fungsi mencatat isi pesan Amazon SQS ke CloudWatch Log.
Tutorial ini menggunakan runtime Node.js 24, tetapi kami juga telah memberikan contoh kode dalam bahasa runtime lainnya. Anda dapat memilih tab di kotak berikut untuk melihat kode untuk runtime yang Anda minati. JavaScript Kode yang akan Anda gunakan dalam langkah ini adalah pada contoh pertama yang ditampilkan di JavaScript tab.
Untuk membuat fungsi Node.js Lambda
-
Buat direktori untuk proyek, dan kemudian beralih ke direktori itu.
mkdir sqs-tutorial cd sqs-tutorial -
Salin JavaScript kode sampel ke file baru bernama
index.js. -
Buat paket penerapan menggunakan
zipperintah berikut.zip function.zip index.js -
Buat fungsi Lambda menggunakan perintah create-function
AWS CLI . Untuk parameter role, masukkan ARN peran eksekusi yang Anda buat sebelumnya.catatan
Fungsi Lambda dan antrian Amazon SQS harus sama. Wilayah AWS
aws lambda create-function --function-name ProcessSQSRecord \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs24.x \--role arn:aws:iam::111122223333:role/lambda-sqs-role
Uji fungsi
Panggil fungsi Lambda Anda secara manual menggunakan invoke AWS CLI perintah dan contoh peristiwa Amazon SQS.
Untuk memanggil fungsi Lambda dengan peristiwa sampel
-
Simpan JSON berikut sebagai file bernama
input.json. JSON ini mensimulasikan peristiwa yang mungkin dikirim Amazon SQS ke fungsi Lambda Anda, yang"body"berisi pesan aktual dari antrian. Dalam contoh ini, pesannya adalah"test".contoh Acara Amazon SQS
Ini adalah acara pengujian—Anda tidak perlu mengubah pesan atau nomor akun.
{ "Records": [ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "test", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "098f6bcd4621d373cade4e832627b4f6", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-1:111122223333:my-queue", "awsRegion": "us-east-1" } ] } -
Jalankan AWS CLI perintah
invoke berikut. Perintah ini mengembalikan CloudWatch log dalam respons. Untuk informasi selengkapnya tentang mendapatkan log kembali, lihat Akses log dengan AWS CLI. aws lambda invoke --function-name ProcessSQSRecord --payload file://input.json out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decodecli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan
aws 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. -
Temukan
INFOlog di respons. Di sinilah fungsi Lambda mencatat isi pesan. Anda akan melihat log yang terlihat seperti ini:2023-09-11T22:45:04.271Z 348529ce-2211-4222-9099-59d07d837b60 INFO Processed message test 2023-09-11T22:45:04.288Z 348529ce-2211-4222-9099-59d07d837b60 INFO done
Buat antrean Amazon SQS
Buat antrean Amazon SQS yang dapat digunakan oleh fungsi Lambda sebagai sumber kejadian. Fungsi Lambda dan antrian Amazon SQS harus sama. Wilayah AWS
Untuk membuat antrean
-
Buka konsol Amazon SQS
. -
Pilih Buat antrean.
-
Masukkan nama untuk antrian. Tinggalkan semua opsi lain pada pengaturan default.
-
Pilih Buat antrean.
Setelah membuat antrian, catat ARN-nya. Anda memerlukan ini di langkah berikutnya ketika Anda mengasosiasikan antrean dengan fungsi Lambda Anda.
Konfigurasikan sumber kejadian
Hubungkan antrian Amazon SQS ke fungsi Lambda Anda dengan membuat pemetaan sumber peristiwa. Pemetaan sumber peristiwa membaca antrian Amazon SQS dan memanggil fungsi Lambda Anda saat pesan baru ditambahkan.
Untuk membuat pemetaan antara antrian Amazon SQS dan fungsi Lambda Anda, gunakan perintah cre
aws lambda create-event-source-mapping --function-name ProcessSQSRecord --batch-size 10 \ --event-source-arn arn:aws:sqs:us-east-1:111122223333:my-queue
Untuk mendapatkan daftar pemetaan sumber acara Anda, gunakan perintah list
aws lambda list-event-source-mappings --function-name ProcessSQSRecord
Mengirim pesan pengujian
Untuk mengirim pesan Amazon SQS ke fungsi Lambda
-
Buka konsol Amazon SQS
. -
Pilih antrian yang Anda buat sebelumnya.
-
Pilih Kirim dan terima pesan.
-
Di bawah I si pesan, masukkan pesan pengujian, seperti “ini adalah pesan uji.”
-
Pilih Kirim pesan.
Lambda mensurvei antrian untuk pembaruan. Ketika ada pesan baru, Lambda memanggil fungsi Anda dengan data peristiwa baru ini dari antrian. Jika pengendali fungsi kembali tanpa pengecualian, Lambda menganggap pesan berhasil diproses dan mulai membaca pesan baru dalam antrian. Setelah berhasil memproses pesan, Lambda secara otomatis menghapusnya dari antrian. Jika handler melempar pengecualian, Lambda menganggap kumpulan pesan tidak berhasil diproses, dan Lambda memanggil fungsi dengan kumpulan pesan yang sama.
Periksa CloudWatch log
Untuk mengonfirmasi bahwa fungsi memproses pesan
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi Pro cessSQSRecord.
-
Pilih Monitor.
-
Pilih Lihat CloudWatch log.
-
Di CloudWatch konsol, pilih aliran log untuk fungsi tersebut.
-
Temukan
INFOlog. Di sinilah fungsi Lambda mencatat badan pesan. Anda akan melihat pesan yang Anda kirim dari antrian Amazon SQS. Contoh:2023-09-11T22:49:12.730Z b0c41e9c-0556-5a8b-af83-43e59efeec71 INFOProcessed message this is a test message.
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 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 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 antrean Amazon SQS
-
Masuk ke Konsol Manajemen AWS dan buka konsol Amazon SQS di https://console.aws.amazon.com/sqs/
. -
Pilih antrean yang Anda buat.
-
Pilih Hapus.
-
Masukkan
confirmdi bidang input teks. -
Pilih Hapus.