Memproses pesan Amazon MQ dengan Lambda - AWS Lambda

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

Memproses pesan Amazon MQ dengan Lambda

Konfigurasikan akses jaringan

Untuk memberi Lambda akses penuh ke broker Anda melalui pemetaan sumber acara Anda, broker Anda harus menggunakan titik akhir publik (alamat IP publik), atau Anda harus memberikan akses ke Amazon tempat VPC Anda membuat broker.

Secara default, saat Anda membuat broker Amazon MQ, PubliclyAccessible bendera disetel ke false. Agar broker Anda menerima alamat IP publik, Anda harus mengatur PubliclyAccessible bendera ke true.

Praktik terbaik untuk menggunakan Amazon MQ dengan Lambda adalah dengan menggunakan AWS PrivateLink VPCtitik akhir dan memberikan akses fungsi Lambda Anda ke broker Anda. VPC Terapkan titik akhir untuk Lambda, dan, hanya untuk ActiveMQ, titik akhir untuk (). AWS Security Token Service AWS STS Jika broker Anda menggunakan otentikasi, gunakan juga titik akhir untuk. AWS Secrets Manager Untuk mempelajari selengkapnya, lihat Siapkan titik VPC akhir Amazon.

Atau, konfigurasikan NAT gateway di setiap subnet publik di yang VPC berisi broker Amazon MQ Anda. Untuk informasi selengkapnya, lihat Aktifkan akses internet untuk fungsi VPC Lambda yang terhubung.

Saat Anda membuat pemetaan sumber acara untuk broker Amazon MQ, Lambda memeriksa apakah Antarmuka Jaringan Elastis ENIs () sudah ada untuk subnet dan grup keamanan broker Anda. VPC Jika Lambda menemukan yang adaENIs, ia mencoba untuk menggunakannya kembali. Jika tidak, Lambda membuat yang baru ENIs untuk terhubung ke sumber acara dan memanggil fungsi Anda.

catatan

Fungsi Lambda selalu berjalan di dalam yang VPCs dimiliki oleh layanan Lambda. Ini VPCs dikelola secara otomatis oleh layanan dan tidak terlihat oleh pelanggan. Anda juga dapat menghubungkan fungsi Anda ke AmazonVPC. Dalam kedua kasus tersebut, VPC konfigurasi fungsi Anda tidak memengaruhi pemetaan sumber peristiwa. Hanya konfigurasi sumber acara yang VPC menentukan bagaimana Lambda terhubung ke sumber acara Anda.

Mengonfigurasi aturan grup keamanan

Konfigurasikan grup keamanan untuk Amazon yang VPC berisi Amazon MQ Anda.

catatan

Secara default, Amazon MQ untuk ActiveMQ menggunakan port, dan 61617 Amazon MQ untuk port RabbitMQ. 5671

  • Aturan masuk - Izinkan semua lalu lintas di port broker untuk grup keamanan yang terkait dengan sumber acara Anda dari dalam grup keamanannya sendiri.

  • Aturan keluar - Izinkan semua lalu lintas di pelabuhan 443 untuk semua tujuan. Izinkan semua lalu lintas di port broker dari dalam grup keamanannya sendiri.

  • Aturan masuk VPC titik akhir Amazon — Untuk grup keamanan yang terkait dengan VPC titik akhir Amazon Anda, izinkan lalu lintas masuk di port 443 dari grup keamanan broker

Siapkan titik VPC akhir Amazon

Saat Anda menggunakan VPC endpoint Amazon, AWS merutekan API panggilan Anda untuk menjalankan fungsi menggunakan Elastic Network Interface () titik akhir. ENI Kepala layanan Lambda perlu memanggil lambda:InvokeFunction fungsi apa pun yang menggunakannya. ENIs Selain itu, untuk Amazon MQ untuk ActiveMQ, prinsipal layanan Lambda harus bekerja pada peran yang menggunakan. sts:AssumeRole ENIs

Secara default, VPC titik akhir Amazon memiliki IAM kebijakan terbuka yang memungkinkan akses luas ke sumber daya. Untuk menggunakan Amazon MQ dengan Lambda dalam produksi, Anda dapat membatasi kebijakan ini untuk hanya mengizinkan prinsipal tertentu untuk hanya mengakses peran dan fungsi tertentu.

Contoh kebijakan VPC endpoint berikut menunjukkan cara memberikan akses yang diperlukan untuk AWS STS dan titik akhir Lambda.

contoh Kebijakan titik akhir - AWS STS titik akhir (hanya ActiveMQ)
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "arn:aws::iam::123456789012:role/my-role" } ] }
contoh Kebijakan titik akhir — Titik akhir Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "arn:aws::lambda:us-west-2:123456789012:function:my-function" } ] }

Jika broker Amazon MQ Anda menggunakan otentikasi, Anda juga dapat membatasi kebijakan titik akhir untuk titik akhir Secrets Manager. Untuk memanggil Secrets ManagerAPI, Lambda menggunakan peran fungsi Anda, bukan kepala layanan Lambda. Contoh berikut menunjukkan kebijakan titik akhir Secrets Manager.

contoh VPCkebijakan endpoint — titik akhir Secrets Manager
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws::iam::123456789012:role/my-role" ] }, "Resource": "arn:aws::secretsmanager:us-west-2:123456789012:secret:my-secret" } ] }
Awas

Membatasi kebijakan titik akhir Anda untuk hanya mengizinkan API panggilan yang berasal dari organisasi Anda mencegah pemetaan sumber peristiwa berfungsi dengan baik.

Buat pemetaan sumber acara

Buat pemetaan sumber kejadian untuk memberi tahu Lambda agar mengirim rekaman dari broker Amazon MQ ke fungsi Lambda. Anda dapat membuat beberapa pemetaan sumber kejadian untuk memproses data yang sama dengan beberapa fungsi, atau untuk memproses item dari beberapa sumber dengan satu fungsi.

Untuk mengonfigurasi fungsi agar dibaca dari Amazon MQ, tambahkan izin yang diperlukan dan buat pemicu MQ di konsol Lambda.

Untuk membaca catatan dari broker Amazon MQ, fungsi Lambda Anda memerlukan izin berikut. Anda memberi Lambda izin untuk berinteraksi dengan broker Amazon MQ Anda dan sumber yang mendasarinya dengan menambahkan pernyataan izin ke peran eksekusi fungsi Anda:

catatan

Saat menggunakan kunci terkelola pelanggan yang terenkripsi, tambahkan juga izin kms:Decrypt.

Untuk menambahkan izin dan membuat pemicu
  1. Buka Halaman fungsi di konsol Lambda.

  2. Pilih nama sebuah fungsi.

  3. Pilih tab Konfigurasi, lalu pilih Izin.

  4. Di bawah Nama peran, pilih tautan ke peran eksekusi Anda. Tautan ini membuka peran di IAM konsol.

    Tautan ke peran eksekusi
  5. Pilih Tambahkan izin, lalu pilih Buat kebijakan sebaris.

    Buat kebijakan sebaris di konsol IAM
  6. Di editor Kebijakan, pilih JSON. Masukkan kebijakan berikut. Fungsi Anda memerlukan izin ini untuk membaca dari broker Amazon MQ.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mq:DescribeBroker", "secretsmanager:GetSecretValue", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
    catatan

    Saat menggunakan kunci terkelola pelanggan terenkripsi, Anda juga harus menambahkan izin. kms:Decrypt

  7. Pilih Berikutnya. Masukkan nama kebijakan, lalu pilih Buat kebijakan.

  8. Kembali ke fungsi Anda di konsol Lambda. Di bagian Gambaran umum fungsi, pilih Tambah pemicu.

    Bagian ikhtisar fungsi dari konsol Lambda
  9. Pilih jenis pemicu MQ.

  10. Konfigurasikan opsi yang diperlukan, lalu pilih Tambah.

Lambda mendukung opsi berikut untuk sumber kejadian Amazon MQ:

  • MQ broker – Pilih broker Amazon MQ.

  • Ukuran batch – Atur jumlah maksimum pesan yang akan diambil dalam satu batch.

  • Nama antrean – Masukkan antrean Amazon MQ yang akan digunakan.

  • Konfigurasi akses sumber — Masukkan informasi host virtual dan rahasia Secrets Manager yang menyimpan kredensi broker Anda.

  • Aktifkan pemicu – Nonaktifkan pemicu untuk menghentikan pemrosesan rekaman.

Untuk mengaktifkan atau menonaktifkan pemicu (atau menghapusnya) pilih pemicu MQ di desainer. Untuk mengkonfigurasi ulang pemicu, gunakan operasi pemetaan API sumber peristiwa.