Tutorial: Menggunakan pemetaan sumber peristiwa MSK Amazon untuk menjalankan fungsi Lambda - AWS Lambda

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

Tutorial: Menggunakan pemetaan sumber peristiwa MSK Amazon untuk menjalankan fungsi Lambda

Dalam tutorial ini, Anda akan melakukan hal berikut:

  • Buat fungsi Lambda di AWS akun yang sama dengan cluster MSK Amazon yang ada.

  • Konfigurasikan jaringan dan otentikasi untuk Lambda untuk berkomunikasi dengan Amazon MSK.

  • Siapkan pemetaan sumber peristiwa MSK Lambda Amazon, yang menjalankan fungsi Lambda Anda saat peristiwa muncul di topik.

Setelah Anda selesai dengan langkah-langkah ini, ketika acara dikirim ke Amazon MSK, Anda akan dapat mengatur fungsi Lambda untuk memproses peristiwa tersebut secara otomatis dengan kode Lambda kustom Anda sendiri.

Apa yang dapat Anda lakukan dengan fitur ini?

Contoh solusi: Gunakan pemetaan sumber acara MSK untuk memberikan skor langsung kepada pelanggan Anda.

Pertimbangkan skenario berikut: Perusahaan Anda menghosting aplikasi web tempat pelanggan Anda dapat melihat informasi tentang acara langsung, seperti permainan olahraga. Pembaruan informasi dari game disediakan untuk tim Anda melalui topik Kafka di Amazon MSK. Anda ingin merancang solusi yang menggunakan pembaruan dari topik MSK untuk memberikan tampilan terbaru dari acara langsung kepada pelanggan di dalam aplikasi yang Anda kembangkan. Anda telah memutuskan pendekatan desain berikut: Aplikasi klien Anda akan berkomunikasi dengan backend tanpa server yang dihosting. AWS Klien akan terhubung melalui sesi websocket menggunakan Amazon API Gateway WebSocket API.

Dalam solusi ini, Anda memerlukan komponen yang membaca peristiwa MSK, melakukan beberapa logika khusus untuk mempersiapkan peristiwa tersebut untuk lapisan aplikasi dan kemudian meneruskan informasi tersebut ke API Gateway API. Anda dapat mengimplementasikan komponen ini dengan AWS Lambda, dengan menyediakan logika kustom Anda dalam fungsi Lambda, lalu memanggilnya dengan pemetaan sumber peristiwa MSK AWS Lambda Amazon.

Untuk informasi selengkapnya tentang penerapan solusi menggunakan Amazon API Gateway WebSocket API, lihat tutorial WebSocket API di dokumentasi API Gateway.

Prasyarat

AWS Akun dengan sumber daya yang telah dikonfigurasi berikut:

Untuk memenuhi prasyarat ini, kami sarankan mengikuti Memulai menggunakan Amazon MSK di dokumentasi MSK Amazon.

  • Cluster MSK Amazon. Lihat Membuat klaster MSK Amazon di Memulai menggunakan Amazon MSK.

  • Konfigurasi berikut:

    • Pastikan autentikasi berbasis peran IAM Diaktifkan di pengaturan keamanan klaster Anda. Ini meningkatkan keamanan Anda dengan membatasi fungsi Lambda Anda untuk hanya mengakses sumber daya MSK Amazon yang diperlukan. Ini diaktifkan secara default pada kluster MSK Amazon baru.

    • Pastikan akses Publik tidak aktif di pengaturan jaringan cluster Anda. Membatasi akses klaster MSK Amazon Anda ke internet meningkatkan keamanan Anda dengan membatasi berapa banyak perantara yang menangani data Anda. Ini diaktifkan secara default pada kluster MSK Amazon baru.

  • Topik Kafka di cluster MSK Amazon Anda untuk digunakan untuk solusi ini. Lihat Membuat topik di Memulai menggunakan Amazon MSK.

  • Host admin Kafka disiapkan untuk mengambil informasi dari cluster Kafka Anda dan mengirim acara Kafka ke topik Anda untuk pengujian, seperti instans Amazon EC2 dengan CLI admin Kafka dan perpustakaan Amazon MSK IAM diinstal. Lihat Membuat mesin klien di Memulai menggunakan Amazon MSK.

Setelah Anda menyiapkan sumber daya ini, kumpulkan informasi berikut dari AWS akun Anda untuk mengonfirmasi bahwa Anda siap untuk melanjutkan.

  • Nama cluster MSK Amazon Anda. Anda dapat menemukan informasi ini di konsol MSK Amazon.

  • Cluster UUID, bagian dari ARN untuk cluster MSK Amazon Anda, yang dapat Anda temukan di konsol MSK Amazon. Ikuti prosedur di Daftar klaster di dokumentasi MSK Amazon untuk menemukan informasi ini.

  • Grup keamanan yang terkait dengan kluster MSK Amazon Anda. Anda dapat menemukan informasi ini di konsol MSK Amazon. Dalam langkah-langkah berikut, lihat ini sebagai milik Anda clusterSecurityGroups.

  • Id dari VPC Amazon yang berisi kluster MSK Amazon Anda. Anda dapat menemukan informasi ini dengan mengidentifikasi subnet yang terkait dengan cluster MSK Amazon Anda di konsol MSK Amazon, lalu mengidentifikasi VPC Amazon yang terkait dengan subnet di Konsol VPC Amazon.

  • Nama topik Kafka yang digunakan dalam solusi Anda. Anda dapat menemukan informasi ini dengan menghubungi cluster MSK Amazon Anda dengan Kafka topics CLI dari host admin Kafka Anda. Untuk informasi selengkapnya tentang topik CLI, lihat Menambahkan dan menghapus topik dalam dokumentasi Kafka.

  • Nama grup konsumen untuk topik Kafka Anda, cocok untuk digunakan oleh fungsi Lambda Anda. Grup ini dapat dibuat secara otomatis oleh Lambda, jadi Anda tidak perlu membuatnya dengan Kafka CLI. Jika Anda perlu mengelola grup konsumen Anda, untuk mempelajari lebih lanjut tentang CLI kelompok konsumen, lihat Mengelola Grup Konsumen di dokumentasi Kafka.

Izin berikut di AWS akun Anda:

  • Izin untuk membuat dan mengelola fungsi Lambda.

  • Izin untuk membuat kebijakan IAM dan mengaitkannya dengan fungsi Lambda Anda.

  • Izin untuk membuat titik akhir VPC Amazon dan mengubah konfigurasi jaringan di VPC Amazon yang menghosting kluster MSK Amazon Anda.

Konfigurasikan konektivitas jaringan untuk Lambda untuk berkomunikasi dengan Amazon MSK

Gunakan AWS PrivateLink untuk menghubungkan Lambda dan Amazon MSK. Anda dapat melakukannya dengan membuat antarmuka titik akhir VPC Amazon di konsol VPC Amazon. Untuk informasi selengkapnya tentang konfigurasi jaringan, lihatKonfigurasi jaringan.

Ketika pemetaan sumber peristiwa MSK Amazon berjalan atas nama fungsi Lambda, ia mengasumsikan peran eksekusi fungsi Lambda. Peran IAM ini mengizinkan pemetaan untuk mengakses sumber daya yang diamankan oleh IAM, seperti kluster MSK Amazon Anda. Meskipun komponen berbagi peran eksekusi, pemetaan MSK Amazon dan fungsi Lambda Anda memiliki persyaratan konektivitas terpisah untuk tugasnya masing-masing, seperti yang ditunjukkan pada diagram berikut.

Cluster MSK Amazon di VPC Amazon pelanggan terhubung ke kode layanan Lambda yang melakukan polling cluster dan kemudian berkomunikasi dengan menggunakan. AWS Lambda AWS STS

Pemetaan sumber acara Anda milik grup keamanan klaster MSK Amazon Anda. Pada langkah jaringan ini, buat titik akhir VPC Amazon dari VPC cluster MSK Amazon Anda untuk menghubungkan pemetaan sumber peristiwa ke layanan Lambda dan STS. Amankan titik akhir ini untuk menerima lalu lintas dari grup keamanan klaster MSK Amazon Anda. Kemudian, sesuaikan grup keamanan klaster MSK Amazon untuk memungkinkan pemetaan sumber peristiwa berkomunikasi dengan cluster MSK Amazon.

Anda dapat mengonfigurasi langkah-langkah berikut menggunakan file AWS Management Console.

Untuk mengonfigurasi antarmuka titik akhir Amazon VPC untuk menghubungkan Lambda dan Amazon MSK
  1. Buat grup keamanan untuk antarmuka Anda titik akhir Amazon VPC, endpointSecurityGroup, yang memungkinkan lalu lintas TCP masuk pada 443 dari. clusterSecurityGroups Ikuti prosedur di Buat grup keamanan di dokumentasi Amazon EC2 untuk membuat grup keamanan. Kemudian, ikuti prosedur di Tambahkan aturan ke grup keamanan di dokumentasi Amazon EC2 untuk menambahkan aturan yang sesuai.

    Buat grup keamanan dengan informasi berikut:

    Saat menambahkan aturan masuk Anda, buat aturan untuk setiap grup keamanan di clusterSecurityGroups. Untuk setiap aturan:

    • Untuk Type, pilih HTTPS.

    • Untuk Sumber, pilih salah satu dari clusterSecurityGroups.

  2. Buat titik akhir yang menghubungkan layanan Lambda ke VPC Amazon yang berisi kluster MSK Amazon Anda. Ikuti prosedur di Buat titik akhir antarmuka.

    Buat titik akhir antarmuka dengan informasi berikut:

    • Untuk nama Layanan, pilihcom.amazonaws.regionName.lambda, di mana RegionName meng-host fungsi Lambda Anda.

    • Untuk VPC, pilih VPC Amazon yang berisi kluster MSK Amazon Anda.

    • Untuk grup Keamanan, pilih endpointSecurityGroup, yang Anda buat sebelumnya.

    • Untuk Subnet, pilih subnet yang meng-host cluster MSK Amazon Anda.

    • Untuk Kebijakan, berikan dokumen kebijakan berikut, yang mengamankan titik akhir untuk digunakan oleh kepala layanan Lambda untuk tindakan tersebut. lambda:InvokeFunction

      { "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
    • Pastikan Aktifkan nama DNS tetap disetel.

  3. Buat titik akhir yang menghubungkan AWS STS layanan ke VPC Amazon yang berisi kluster MSK Amazon Anda. Ikuti prosedur di Buat titik akhir antarmuka.

    Buat titik akhir antarmuka dengan informasi berikut:

    • Untuk nama Layanan, pilih AWS STS.

    • Untuk VPC, pilih VPC Amazon yang berisi kluster MSK Amazon Anda.

    • Untuk grup Keamanan, pilih endpointSecurityGroup.

    • Untuk Subnet, pilih subnet yang meng-host cluster MSK Amazon Anda.

    • Untuk Kebijakan, berikan dokumen kebijakan berikut, yang mengamankan titik akhir untuk digunakan oleh kepala layanan Lambda untuk tindakan tersebut. sts:AssumeRole

      { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
    • Pastikan Aktifkan nama DNS tetap disetel.

  4. Untuk setiap grup keamanan yang terkait dengan kluster MSK Amazon Anda, yaitu clusterSecurityGroups, izinkan hal berikut:

    • Izinkan semua lalu lintas TCP masuk dan keluar pada 9098 ke semua clusterSecurityGroups, termasuk di dalam dirinya sendiri.

    • Izinkan semua lalu lintas TCP keluar pada 443.

    Beberapa lalu lintas ini diizinkan oleh aturan grup keamanan default, jadi jika klaster Anda dilampirkan ke satu grup keamanan, dan grup tersebut memiliki aturan default, aturan tambahan tidak diperlukan. Untuk menyesuaikan aturan grup keamanan, ikuti prosedur di Tambahkan aturan ke grup keamanan di dokumentasi Amazon EC2.

    Tambahkan aturan ke grup keamanan Anda dengan informasi berikut:

    • Untuk setiap aturan masuk atau aturan keluar untuk port 9098, sediakan

      • Untuk Jenis, pilih TCP Kustom.

      • Untuk jangkauan Port, sediakan 9098.

      • Untuk Sumber, berikan salah satu dari clusterSecurityGroups.

    • Untuk setiap aturan masuk untuk port 443, untuk Type, pilih HTTPS.

Buat peran IAM untuk dibaca Lambda dari topik MSK Amazon Anda

Identifikasi persyaratan autentikasi untuk dibaca Lambda dari topik MSK Amazon Anda, lalu tentukan dalam kebijakan. Buat peran, lambdaAuthRole, yang mengizinkan Lambda untuk menggunakan izin tersebut. Otorisasi tindakan di klaster MSK Amazon Anda menggunakan tindakan kafka-cluster IAM. Kemudian, beri wewenang kepada Lambda untuk melakukan tindakan Amazon kafka MSK dan Amazon EC2 yang diperlukan untuk menemukan dan terhubung ke kluster MSK Amazon Anda, serta CloudWatch tindakan agar Lambda dapat mencatat apa yang telah dilakukannya.

Untuk menjelaskan persyaratan autentikasi agar Lambda dapat dibaca dari Amazon MSK
  1. Tulis dokumen kebijakan IAM (dokumen JSON), clusterAuthPolicy, yang memungkinkan Lambda membaca dari topik Kafka Anda di kluster MSK Amazon Anda menggunakan grup konsumen Kafka Anda. Lambda membutuhkan kelompok konsumen Kafka untuk diatur saat membaca.

    Ubah template berikut agar selaras dengan prasyarat Anda:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:DescribeGroup", "kafka-cluster:AlterGroup", "kafka-cluster:DescribeTopic", "kafka-cluster:ReadData", "kafka-cluster:DescribeClusterDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:region:account-id:cluster/mskClusterName/cluster-uuid", "arn:aws:kafka:region:account-id:topic/mskClusterName/cluster-uuid/mskTopicName", "arn:aws:kafka:region:account-id:group/mskClusterName/cluster-uuid/mskGroupName" ] } ] }

    Untuk informasi lebih lanjut, konsultasikanAutentikasi berbasis peran IAM. Saat menulis kebijakan Anda:

    • Untuk wilayah dan id akun, berikan yang meng-host kluster MSK Amazon Anda.

    • Untuk mskClusterName, berikan nama cluster MSK Amazon Anda.

    • Untuk cluster-uuid, berikan UUID di ARN untuk cluster MSK Amazon Anda.

    • Untuk mskTopicName, berikan nama topik Kafka Anda.

    • Untuk mskGroupName, berikan nama grup konsumen Kafka Anda.

  2. Identifikasi MSK Amazon, Amazon EC2, CloudWatch dan izin yang diperlukan Lambda untuk menemukan dan menghubungkan kluster MSK Amazon Anda, dan mencatat peristiwa tersebut.

    Kebijakan AWSLambdaMSKExecutionRole terkelola secara permisif mendefinisikan izin yang diperlukan. Gunakan dalam langkah-langkah berikut.

    Dalam lingkungan produksi, nilai AWSLambdaMSKExecutionRole untuk membatasi kebijakan peran eksekusi Anda berdasarkan prinsip hak istimewa terkecil, lalu tulis kebijakan untuk peran Anda yang menggantikan kebijakan terkelola ini.

Untuk detail tentang bahasa kebijakan IAM, lihat dokumentasi IAM.

Sekarang setelah Anda menulis dokumen kebijakan Anda, buat kebijakan IAM sehingga Anda dapat melampirkannya ke peran Anda. Anda dapat melakukan ini menggunakan konsol dengan prosedur berikut.

Untuk membuat kebijakan IAM dari dokumen kebijakan Anda
  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi sebelah kiri, pilih Kebijakan.

  3. Pilih Buat kebijakan.

  4. Di bagian Editor kebijakan, pilih opsi JSON.

  5. Tempel clusterAuthPolicy.

  6. Setelah selesai menambahkan izin ke kebijakan, pilih Berikutnya.

  7. Pada halaman Tinjau dan buat, ketik Nama Kebijakan dan Deskripsi (opsional) untuk kebijakan yang Anda buat. Tinjau Izin yang ditentukan dalam kebijakan ini untuk melihat izin yang diberikan oleh kebijakan Anda.

  8. Pilih Buat kebijakan untuk menyimpan kebijakan baru Anda.

Untuk informasi selengkapnya, lihat Membuat kebijakan IAM di dokumentasi IAM.

Sekarang setelah Anda memiliki kebijakan IAM yang sesuai, buat peran dan lampirkan padanya. Anda dapat melakukan ini menggunakan konsol dengan prosedur berikut.

Untuk membuat peran eksekusi di konsol IAM
  1. Buka Halaman peran di konsol IAM.

  2. Pilih Buat peran.

  3. Di bawah Jenis entitas tepercaya, pilih AWS layanan.

  4. Di bawah Kasus penggunaan, pilih Lambda.

  5. Pilih Selanjutnya.

  6. Pilih kebijakan berikut:

    • clusterAuthPolicy

    • AWSLambdaMSKExecutionRole

  7. Pilih Selanjutnya.

  8. Untuk nama Peran, lambdaAuthRolemasukkan lalu pilih Buat peran.

Untuk informasi selengkapnya, lihat Mendefinisikan izin fungsi Lambda dengan peran eksekusi.

Buat fungsi Lambda untuk membaca dari topik MSK Amazon Anda

Buat fungsi Lambda yang dikonfigurasi untuk menggunakan peran IAM Anda. Anda dapat membuat fungsi Lambda menggunakan konsol.

Untuk membuat fungsi Lambda menggunakan konfigurasi autentikasi Anda
  1. Buka konsol Lambda dan pilih Buat fungsi dari header.

  2. Pilih Penulis dari awal.

  3. Untuk nama Fungsi, berikan nama yang sesuai pilihan Anda.

  4. Untuk Runtime, pilih versi terbaru yang didukung Node.js untuk menggunakan kode yang disediakan dalam tutorial ini.

  5. Pilih Ubah peran eksekusi default.

  6. Pilih Gunakan peran yang ada.

  7. Untuk peran yang ada, pilih lambdaAuthRole.

Dalam lingkungan produksi, Anda biasanya perlu menambahkan kebijakan lebih lanjut ke peran eksekusi untuk fungsi Lambda Anda untuk memproses peristiwa MSK Amazon Anda secara bermakna. Untuk informasi selengkapnya tentang menambahkan kebijakan ke peran Anda, lihat Menambahkan atau menghapus izin identitas dalam dokumentasi IAM.

Buat pemetaan sumber acara ke fungsi Lambda Anda

Pemetaan sumber peristiwa MSK Amazon Anda memberi layanan Lambda informasi yang diperlukan untuk memanggil Lambda Anda saat peristiwa MSK Amazon yang sesuai terjadi. Anda dapat membuat pemetaan MSK Amazon menggunakan konsol. Buat pemicu Lambda, lalu pemetaan sumber peristiwa diatur secara otomatis.

Untuk membuat pemicu Lambda (dan pemetaan sumber peristiwa)
  1. Arahkan ke halaman ikhtisar fungsi Lambda Anda.

  2. Di bagian ikhtisar fungsi, pilih Tambahkan pemicu di kiri bawah.

  3. Di menu tarik-turun Pilih sumber, pilih Amazon MSK.

  4. Jangan mengatur otentikasi.

  5. Untuk klaster MSK, pilih nama klaster Anda.

  6. Untuk ukuran Batch, masukkan 1. Langkah ini membuat fitur ini lebih mudah untuk diuji, dan bukan merupakan nilai ideal dalam produksi.

  7. Untuk nama Topik, berikan nama topik Kafka Anda.

  8. Untuk ID grup Konsumen, berikan id grup konsumen Kafka Anda.

Perbarui fungsi Lambda Anda untuk membaca data streaming Anda

Lambda memberikan informasi tentang peristiwa Kafka melalui parameter metode acara. Untuk contoh struktur acara MSK Amazon, lihat Contoh peristiwa. Setelah Anda memahami cara menafsirkan peristiwa MSK Amazon yang diteruskan Lambda, Anda dapat mengubah kode fungsi Lambda Anda untuk menggunakan informasi yang mereka berikan.

Berikan kode berikut ke fungsi Lambda Anda untuk mencatat konten acara MSK Lambda Amazon untuk tujuan pengujian:

Node.js
exports.handler = async (event) => { // Iterate through keys for (let key in event.records) { console.log('Key: ', key) // Iterate through records event.records[key].map((record) => { console.log('Record: ', record) // Decode base64 const msg = Buffer.from(record.value, 'base64').toString() console.log('Message:', msg) }) } }

Anda dapat memberikan kode fungsi ke Lambda Anda menggunakan konsol.

Untuk memperbarui kode fungsi Lambda
  1. Arahkan ke halaman ikhtisar fungsi Lambda Anda.

  2. Pilih tab Kode.

  3. Masukkan kode yang disediakan ke dalam IDE sumber Kode.

  4. Di bilah navigasi sumber kode, pilih Deploy.

Uji fungsi Lambda Anda untuk memverifikasi bahwa itu terhubung ke topik MSK Amazon Anda

Anda sekarang dapat memverifikasi apakah Lambda Anda sedang dipanggil oleh sumber peristiwa dengan memeriksa CloudWatch log peristiwa atau tidak.

Untuk memverifikasi apakah fungsi Lambda Anda sedang dipanggil
  1. Gunakan host admin Kafka Anda untuk menghasilkan acara Kafka menggunakan CLIkafka-console-producer. Untuk informasi lebih lanjut, lihat Menulis beberapa peristiwa ke dalam topik dalam dokumentasi Kafka. Kirim peristiwa yang cukup untuk mengisi batch yang ditentukan oleh ukuran batch untuk pemetaan sumber peristiwa yang ditentukan pada langkah sebelumnya, atau Lambda akan menunggu informasi lebih lanjut untuk dipanggil.

  2. Jika fungsi Anda berjalan, Lambda menulis apa yang terjadi. CloudWatch Di konsol, navigasikan ke halaman detail fungsi Lambda Anda.

  3. Pilih tab Konfigurasi.

  4. Dari sidebar, pilih Alat pemantauan dan operasi.

  5. Identifikasi grup CloudWatch log di bawah konfigurasi Logging. Grup log harus dimulai dengan/aws/lambda. Pilih tautan ke grup log.

  6. Di CloudWatch konsol, periksa peristiwa Log untuk peristiwa log yang dikirim Lambda ke aliran log. Identifikasi apakah ada peristiwa log yang berisi pesan dari acara Kafka Anda, seperti pada gambar berikut. Jika ada, Anda telah berhasil menghubungkan fungsi Lambda ke Amazon MSK dengan pemetaan sumber peristiwa Lambda.

    Peristiwa log masuk CloudWatch dengan pesan yang sesuai dengan informasi peristiwa yang diekstraksi oleh kode yang disediakan.