

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

# Menggunakan Lambda dengan Amazon MSK
<a name="with-msk"></a>

[Amazon Managed Streaming for Apache Kafka (Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) MSK) adalah layanan yang dikelola sepenuhnya yang dapat Anda gunakan untuk membangun dan menjalankan aplikasi yang menggunakan Apache Kafka untuk memproses data streaming. Amazon MSK menyederhanakan pengaturan, penskalaan, dan pengelolaan cluster Kafka. Amazon MSK juga memudahkan untuk mengkonfigurasi aplikasi Anda untuk beberapa Availability Zone dan untuk keamanan dengan AWS Identity and Access Management (IAM).

Bab ini menjelaskan cara menggunakan kluster MSK Amazon sebagai sumber peristiwa untuk fungsi Lambda Anda. Proses umum untuk mengintegrasikan Amazon MSK dengan Lambda melibatkan langkah-langkah berikut:

1. **[Pengaturan kluster dan jaringan](with-msk-cluster-network.md)** — Pertama, siapkan [kluster MSK Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) Anda. Ini termasuk konfigurasi jaringan yang benar untuk memungkinkan Lambda mengakses cluster Anda.

1. **[Pengaturan pemetaan sumber peristiwa](with-msk-configure.md)** — Kemudian, buat sumber daya [pemetaan sumber peristiwa](invocation-eventsourcemapping.md) yang dibutuhkan Lambda untuk menghubungkan kluster MSK Amazon Anda dengan aman ke fungsi Anda.

1. **[Pengaturan fungsi dan izin](with-msk-permissions.md)** — Terakhir, pastikan bahwa fungsi Anda diatur dengan benar, dan memiliki izin yang diperlukan dalam peran [pelaksanaannya](lambda-intro-execution-role.md).

**catatan**  
Anda sekarang dapat membuat dan mengelola pemetaan sumber acara MSK Amazon Anda langsung dari konsol Lambda atau Amazon MSK. Kedua konsol menawarkan opsi untuk secara otomatis menangani pengaturan izin peran eksekusi Lambda yang diperlukan untuk proses konfigurasi yang lebih efisien.

Untuk contoh tentang cara menyiapkan integrasi Lambda dengan kluster MSK Amazon, lihat, [Tutorial: Menggunakan pemetaan sumber peristiwa MSK Amazon untuk menjalankan fungsi Lambda](services-msk-tutorial.md) Menggunakan [Amazon MSK sebagai sumber acara](https://aws.amazon.com/blogs/compute/using-amazon-msk-as-an-event-source-for-aws-lambda/) di AWS Blog Komputasi, dan Integrasi [Lambda MSK Amazon AWS Lambda di Labs MSK](https://amazonmsk-labs.workshop.aws/en/msklambda.html) Amazon.

**Topics**
+ [Contoh peristiwa](#msk-sample-event)
+ [Mengonfigurasi kluster MSK Amazon dan jaringan VPC Amazon untuk Lambda](with-msk-cluster-network.md)
+ [Mengonfigurasi izin Lambda untuk pemetaan sumber acara MSK Amazon](with-msk-permissions.md)
+ [Mengonfigurasi sumber acara MSK Amazon untuk Lambda](with-msk-configure.md)
+ [Tutorial: Menggunakan pemetaan sumber peristiwa MSK Amazon untuk menjalankan fungsi Lambda](services-msk-tutorial.md)

## Contoh peristiwa
<a name="msk-sample-event"></a>

Lambda mengirimkan batch pesan dalam parameter peristiwa ketika memanggil fungsi Anda. Muatan peristiwa berisi array pesan. Setiap item array berisi detail dari topik Amazon MSK dan pengidentifikasi partisi, bersama-sama dengan stempel waktu dan pesan berkode base64.

```
{
   "eventSource":"aws:kafka",
   "eventSourceArn":"arn:aws:kafka:us-east-1:123456789012:cluster/vpc-2priv-2pub/751d2973-a626-431c-9d4e-d7975eb44dd7-2",
   "bootstrapServers":"b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092",
   "records":{
      "mytopic-0":[
         {
            "topic":"mytopic",
            "partition":0,
            "offset":15,
            "timestamp":1545084650987,
            "timestampType":"CREATE_TIME",
            "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==",
            "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==",
            "headers":[
               {
                  "headerKey":[
                     104,
                     101,
                     97,
                     100,
                     101,
                     114,
                     86,
                     97,
                     108,
                     117,
                     101
                  ]
               }
            ]
         }
      ]
   }
}
```

# Mengonfigurasi kluster MSK Amazon dan jaringan VPC Amazon untuk Lambda
<a name="with-msk-cluster-network"></a>

Untuk menghubungkan AWS Lambda fungsi Anda ke kluster MSK Amazon, Anda perlu mengonfigurasi klaster dengan benar dan [Amazon Virtual Private Cloud (VPC) tempat ia](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) berada. Halaman ini menjelaskan cara mengkonfigurasi cluster dan VPC Anda. Jika cluster dan VPC Anda sudah dikonfigurasi dengan benar, lihat [Mengonfigurasi sumber acara MSK Amazon untuk Lambda](with-msk-configure.md) untuk mengonfigurasi pemetaan sumber peristiwa.

**Topics**
+ [Ikhtisar persyaratan konfigurasi jaringan untuk integrasi Lambda dan MSK](#msk-network-requirements)
+ [Mengkonfigurasi gateway NAT untuk sumber acara MSK](#msk-nat-gateway)
+ [Mengkonfigurasi AWS PrivateLink titik akhir untuk sumber acara MSK](#msk-vpc-privatelink)

## Ikhtisar persyaratan konfigurasi jaringan untuk integrasi Lambda dan MSK
<a name="msk-network-requirements"></a>

Konfigurasi jaringan yang diperlukan untuk integrasi Lambda dan MSK bergantung pada arsitektur jaringan aplikasi Anda. Ada tiga sumber daya utama yang terlibat dalam integrasi ini: cluster MSK Amazon, fungsi Lambda, dan pemetaan sumber peristiwa Lambda. Masing-masing sumber daya ini berada di VPC yang berbeda:
+ Cluster MSK Amazon Anda biasanya berada di subnet pribadi VPC yang Anda kelola.
+ Fungsi Lambda Anda berada di VPC terkelola yang dimiliki oleh AWS Lambda.
+ Pemetaan sumber peristiwa Lambda Anda berada di AWS VPC terkelola lain yang dimiliki oleh Lambda, terpisah dari VPC yang berisi fungsi Anda.

[Pemetaan sumber peristiwa](invocation-eventsourcemapping.md) adalah sumber daya perantara antara kluster MSK dan fungsi Lambda. Pemetaan sumber acara memiliki dua pekerjaan utama. Pertama, ia polling cluster MSK Anda untuk pesan baru. Kemudian, ia memanggil fungsi Lambda Anda dengan pesan-pesan itu. Karena ketiga sumber daya ini berbeda VPCs, operasi polling dan pemanggilan memerlukan panggilan jaringan lintas-VPC.

Persyaratan konfigurasi jaringan untuk pemetaan sumber peristiwa Anda bergantung pada apakah menggunakan mode yang [disediakan atau mode](invocation-eventsourcemapping.md#invocation-eventsourcemapping-provisioned-mode) sesuai permintaan, seperti yang ditunjukkan pada diagram berikut:

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/MSK-esm-network-overview.png)


Cara pemetaan sumber peristiwa Lambda melakukan polling pada cluster MSK Anda untuk pesan baru adalah sama di kedua mode. Untuk membuat koneksi antara pemetaan sumber peristiwa dan kluster MSK Anda, Lambda membuat [ENI hyperplane](configuration-vpc.md#configuration-vpc-enis) (atau menggunakan kembali yang sudah ada, jika tersedia) di subnet pribadi Anda untuk membuat koneksi yang aman. Seperti yang diilustrasikan dalam diagram, ENI hyperplane ini menggunakan konfigurasi subnet dan grup keamanan klaster MSK Anda, bukan fungsi Lambda Anda.

Setelah polling pesan dari cluster, cara Lambda memanggil fungsi Anda berbeda di setiap mode:
+ Dalam mode yang disediakan, Lambda secara otomatis menangani koneksi antara VPC pemetaan sumber peristiwa dan fungsi VPC. Jadi, Anda tidak memerlukan komponen jaringan tambahan untuk berhasil menjalankan fungsi Anda.
+ Dalam mode sesuai permintaan, pemetaan sumber peristiwa Lambda Anda memanggil fungsi Anda melalui jalur melalui VPC yang dikelola pelanggan. [Karena itu, Anda perlu mengonfigurasi [gateway NAT di](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) subnet publik VPC Anda, atau [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)titik akhir di subnet pribadi VPC yang menyediakan akses ke Lambda, (STS), dan secara opsional,.AWS Security Token Service[AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) Mengkonfigurasi salah satu dari opsi ini dengan benar memungkinkan koneksi antara VPC Anda dan VPC runtime yang dikelola Lambda, yang diperlukan untuk menjalankan fungsi Anda.

Gateway NAT memungkinkan sumber daya di subnet pribadi Anda untuk mengakses internet publik. Menggunakan konfigurasi ini berarti lalu lintas Anda melintasi internet sebelum menjalankan fungsi Lambda. AWS PrivateLink endpoint memungkinkan subnet pribadi terhubung dengan aman ke AWS layanan atau sumber VPC pribadi lainnya tanpa melintasi internet publik. Lihat [Mengkonfigurasi gateway NAT untuk sumber acara MSK](#msk-nat-gateway) atau [Mengkonfigurasi AWS PrivateLink titik akhir untuk sumber acara MSK](#msk-vpc-privatelink) untuk detail tentang cara mengonfigurasi sumber daya ini.

Sejauh ini, kami berasumsi bahwa klaster MSK Anda berada di subnet pribadi dalam VPC Anda, yang merupakan kasus yang lebih umum. Namun, bahkan jika klaster MSK Anda berada di subnet publik dalam VPC Anda, Anda harus mengonfigurasi AWS PrivateLink titik akhir untuk mengaktifkan koneksi yang aman. Tabel berikut merangkum persyaratan konfigurasi jaringan berdasarkan cara Anda mengonfigurasi kluster MSK dan pemetaan sumber peristiwa Lambda:


| Lokasi klaster MSK (dalam VPC yang dikelola pelanggan) | Mode penskalaan pemetaan sumber acara Lambda | Konfigurasi jaringan yang diperlukan | 
| --- | --- | --- | 
|  Subnet privat  |  Mode sesuai permintaan  |  Gateway NAT (di subnet publik VPC Anda), atau AWS PrivateLink titik akhir (di subnet pribadi VPC Anda) untuk mengaktifkan akses ke Lambda,, dan secara opsional, Secrets Manager. AWS STS  | 
|  Subnet publik  |  Mode sesuai permintaan  |  AWS PrivateLink endpoint (di subnet publik VPC Anda) untuk mengaktifkan akses ke Lambda,, dan secara opsional AWS STS, Secrets Manager.  | 
|  Subnet privat  |  Mode yang disediakan  |  Tidak ada  | 
|  Subnet publik  |  Mode yang disediakan  |  Tidak ada  | 

Selain itu, grup keamanan yang terkait dengan kluster MSK Anda harus mengizinkan lalu lintas melalui port yang benar. Pastikan Anda memiliki aturan grup keamanan berikut yang dikonfigurasi:
+ **Aturan masuk** - Izinkan semua lalu lintas di port broker default. Port yang digunakan MSK tergantung pada jenis otentikasi pada cluster: `9098` untuk otentikasi IAM, untuk SASL/SCRAM, dan `9096` untuk TLS. `9094` Atau, Anda dapat menggunakan aturan grup keamanan referensi mandiri untuk mengizinkan akses dari instans dalam grup keamanan yang sama.
+ **Aturan keluar** — Izinkan semua lalu lintas di port `443` untuk tujuan eksternal jika fungsi Anda perlu berkomunikasi dengan AWS layanan lain. Atau, Anda dapat menggunakan aturan grup keamanan referensi diri untuk membatasi akses ke broker jika Anda tidak perlu berkomunikasi dengan layanan lain AWS .
+ **Aturan masuk titik akhir Amazon VPC** — Jika Anda menggunakan titik akhir VPC Amazon, grup keamanan yang terkait dengan titik akhir harus mengizinkan lalu lintas masuk pada port dari grup keamanan klaster. `443`

## Mengkonfigurasi gateway NAT untuk sumber acara MSK
<a name="msk-nat-gateway"></a>

Anda dapat mengonfigurasi gateway NAT untuk memungkinkan pemetaan sumber acara Anda ke pesan polling dari cluster Anda, dan menjalankan fungsi melalui jalur melalui VPC Anda. Ini diperlukan hanya jika pemetaan sumber acara Anda menggunakan mode sesuai permintaan, dan klaster Anda berada dalam subnet pribadi VPC Anda. Jika klaster Anda berada di subnet publik VPC Anda, atau pemetaan sumber acara Anda menggunakan mode yang disediakan, Anda tidak perlu mengonfigurasi gateway NAT.

[Gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) memungkinkan sumber daya dalam subnet pribadi untuk mengakses internet publik. Jika Anda memerlukan konektivitas pribadi ke Lambda, lihat [Mengkonfigurasi AWS PrivateLink titik akhir untuk sumber acara MSK](#msk-vpc-privatelink) saja.

Setelah Anda mengkonfigurasi gateway NAT Anda, Anda harus mengkonfigurasi tabel rute yang sesuai. Ini memungkinkan lalu lintas dari subnet pribadi Anda untuk rute ke internet publik melalui gateway NAT.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/MSK-NAT-Gateway.png)


Langkah-langkah berikut memandu Anda melalui konfigurasi gateway NAT menggunakan konsol. Ulangi langkah-langkah ini seperlunya untuk setiap Availability Zone (AZ).

**Untuk mengonfigurasi gateway NAT dan perutean yang tepat (konsol)**

1. Ikuti langkah-langkah di [Buat gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html), perhatikan hal berikut:
   + Gateway NAT harus selalu berada di subnet publik. [Buat gateway NAT dengan konektivitas publik.](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)
   + Jika kluster MSK Anda direplikasi di beberapa AZs, buat satu gateway NAT per AZ. Misalnya, di setiap AZ, VPC Anda harus memiliki satu subnet pribadi yang berisi cluster Anda, dan satu subnet publik yang berisi gateway NAT Anda. Untuk pengaturan dengan tiga AZs, Anda akan memiliki tiga subnet pribadi, tiga subnet publik, dan tiga gateway NAT.

1. Setelah Anda membuat gateway NAT, buka konsol [VPC Amazon](https://console.aws.amazon.com/vpc/) dan **pilih tabel Route** di menu sebelah kiri.

1. Pilih **Buat tabel rute**.

1. Kaitkan tabel rute ini dengan VPC yang berisi kluster MSK Anda. Secara opsional, masukkan nama untuk tabel rute Anda.

1. Pilih **Buat tabel rute**.

1. Pilih tabel rute yang baru saja Anda buat.

1. Di bawah tab **Asosiasi subnet**, pilih **Edit asosiasi subnet**.
   + Kaitkan tabel rute ini dengan subnet pribadi yang berisi kluster MSK Anda.

1. Pilih **Edit rute**.

1. Pilih **Tambahkan rute**:

   1. Untuk **Tujuan**, pilih `0.0.0.0/0`.

   1. Untuk **Target**, pilih **gateway NAT**.

   1. Di kotak pencarian, pilih gateway NAT yang Anda buat di langkah 1. Ini harus menjadi gateway NAT di AZ yang sama dengan subnet pribadi yang berisi cluster MSK Anda (subnet pribadi yang Anda kaitkan dengan tabel rute ini pada langkah 6).

1. Pilih **Simpan perubahan**.

## Mengkonfigurasi AWS PrivateLink titik akhir untuk sumber acara MSK
<a name="msk-vpc-privatelink"></a>

Anda dapat mengonfigurasi AWS PrivateLink titik akhir untuk melakukan polling pesan dari klaster, dan menjalankan fungsi melalui jalur melalui VPC Anda. Titik akhir ini akan memungkinkan klaster MSK Anda mengakses hal-hal berikut:
+ Layanan Lambda
+ [AWS Security Token Service (STS)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html)
+ Secara opsional, [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)layanan. Ini diperlukan jika rahasia yang diperlukan untuk otentikasi cluster disimpan di Secrets Manager.

Mengkonfigurasi PrivateLink titik akhir hanya diperlukan jika pemetaan sumber acara Anda menggunakan mode sesuai permintaan. Jika pemetaan sumber acara Anda menggunakan mode yang disediakan, Lambda membuat koneksi yang diperlukan untuk Anda.

PrivateLink titik akhir memungkinkan akses pribadi yang aman ke AWS layanan berakhir AWS PrivateLink. Atau, untuk mengkonfigurasi gateway NAT untuk memberikan akses kluster MSK Anda ke internet publik, lihat. [Mengkonfigurasi gateway NAT untuk sumber acara MSK](#msk-nat-gateway)

Setelah Anda mengonfigurasi titik akhir VPC Anda, kluster MSK Anda harus memiliki akses langsung dan pribadi ke Lambda, STS, dan secara opsional, Secrets Manager.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/MSK-PrivateLink-Endpoints.png)


Langkah-langkah berikut memandu Anda dalam mengonfigurasi PrivateLink titik akhir menggunakan konsol. Ulangi langkah-langkah ini seperlunya untuk setiap titik akhir (Lambda, STS, Secrets Manager).

**Untuk mengkonfigurasi PrivateLink titik akhir VPC (konsol)**

1. Buka [konsol Amazon VPC](https://console.aws.amazon.com/vpc/) dan pilih **Endpoints** di menu sebelah kiri.

1. Pilih **Buat titik akhir**.

1. Secara opsional, masukkan nama untuk titik akhir Anda.

1. Untuk **Jenis**, pilih **AWS layanan**.

1. Di bawah **Layanan**, mulailah mengetik nama layanan. Misalnya, untuk membuat titik akhir untuk terhubung ke Lambda, `lambda` ketik kotak pencarian.

1. Dalam hasilnya, Anda akan melihat titik akhir layanan di wilayah saat ini. Misalnya, di wilayah AS Timur (Virginia N.), Anda harus melihat`com.amazonaws.us-east-2.lambda`. Pilih layanan ini.

1. Di bawah **Pengaturan jaringan**, pilih VPC yang berisi kluster MSK Anda.

1. Di bawah **Subnet**, pilih klaster MSK Anda. AZs 
   + Untuk setiap AZ, di bawah **Subnet ID**, pilih subnet pribadi yang berisi kluster MSK Anda.

1. Di bawah **Grup keamanan**, pilih grup keamanan yang terkait dengan kluster MSK Anda.

1. Pilih **Buat titik akhir**.

Secara default, titik akhir Amazon VPC memiliki kebijakan IAM terbuka yang memungkinkan akses luas ke sumber daya. Praktik terbaik adalah membatasi kebijakan ini untuk melakukan tindakan yang diperlukan menggunakan titik akhir tersebut. Misalnya, untuk titik akhir Secrets Manager, Anda dapat mengubah kebijakannya sehingga hanya mengizinkan peran eksekusi fungsi Anda untuk mengakses rahasia.

**Example Kebijakan titik akhir VPC — 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"
        }
    ]
}
```

Untuk titik akhir AWS STS dan Lambda, Anda dapat membatasi prinsipal panggilan ke kepala layanan Lambda. Namun, pastikan Anda menggunakannya `"Resource": "*"` dalam kebijakan ini.

**Example Kebijakan titik akhir VPC - titik akhir AWS STS**  

```
{
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "lambda.amazonaws.com"
                ]
            },
            "Resource": "*"
        }
    ]
}
```

**Example Kebijakan titik akhir VPC - Titik akhir Lambda**  

```
{
    "Statement": [
        {
            "Action": "lambda:InvokeFunction",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "lambda.amazonaws.com"
                ]
            },
            "Resource": "*"
        }
    ]
}
```

# Mengonfigurasi izin Lambda untuk pemetaan sumber acara MSK Amazon
<a name="with-msk-permissions"></a>

Untuk mengakses kluster MSK Amazon, fungsi dan pemetaan sumber peristiwa Anda memerlukan izin untuk melakukan berbagai tindakan Amazon MSK API. Tambahkan izin ini ke [peran eksekusi](lambda-intro-execution-role.md) fungsi. Jika pengguna Anda memerlukan akses, tambahkan izin yang diperlukan ke kebijakan identitas untuk pengguna atau peran.

Kebijakan yang dikelola [AWSLambdaMSKExecutionPeran](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaMSKExecutionRole.html) berisi izin minimum yang diperlukan untuk pemetaan sumber peristiwa MSK Lambda Amazon. Untuk menyederhanakan proses izin, Anda dapat:
+ Lampirkan kebijakan yang dikelola [AWSLambdaMSKExecutionPeran](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaMSKExecutionRole.html) ke peran eksekusi Anda.
+ Biarkan konsol Lambda menghasilkan izin untuk Anda. Saat Anda [membuat pemetaan sumber peristiwa MSK Amazon di konsol](msk-esm-create.md#msk-console), Lambda mengevaluasi peran eksekusi Anda dan memberi tahu Anda jika ada izin yang hilang. Pilih **Hasilkan izin** untuk memperbarui peran eksekusi Anda secara otomatis. Ini tidak berfungsi jika Anda membuat atau memodifikasi kebijakan peran eksekusi secara manual, atau jika kebijakan dilampirkan ke beberapa peran. Perhatikan bahwa izin tambahan mungkin masih diperlukan dalam peran eksekusi Anda saat menggunakan fitur lanjutan seperti [On-Failure Destination](kafka-on-failure.md) atau [AWS Glue Schema](services-consume-kafka-events.md) Registry.

**Topics**
+ [Izin yang diperlukan](#msk-required-permissions)
+ [Izin opsional](#msk-optional-permissions)

## Izin yang diperlukan
<a name="msk-required-permissions"></a>

Peran eksekusi fungsi Lambda Anda harus memiliki izin yang diperlukan berikut untuk pemetaan sumber peristiwa MSK Amazon. Izin ini disertakan dalam kebijakan yang dikelola [AWSLambdaMSKExecutionPeran](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaMSKExecutionRole.html).

### CloudWatch Izin log
<a name="msk-basic-permissions"></a>

Izin berikut memungkinkan Lambda untuk membuat dan menyimpan log di Amazon CloudWatch Logs.
+ [log: CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)
+ [log: CreateLogStream](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogStream.html)
+ [log: PutLogEvents](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html)

### Izin klaster MSK
<a name="msk-cluster-permissions"></a>

Izin berikut memungkinkan Lambda mengakses klaster MSK Amazon Anda atas nama Anda:
+ [kafka: DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html)
+ [kafka: DescribeCluster V2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html)
+ [kafka: GetBootstrapBrokers](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-bootstrap-brokers.html)

Kami merekomendasikan menggunakan [kafka: DescribeCluster V2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html) alih-alih [kafka](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html):. DescribeCluster Izin v2 berfungsi dengan kluster MSK Amazon yang disediakan dan tanpa server. Anda hanya memerlukan salah satu izin ini dalam kebijakan Anda.

### Izin VPC
<a name="msk-vpc-permissions"></a>

Izin berikut memungkinkan Lambda membuat dan mengelola antarmuka jaringan saat menghubungkan ke kluster MSK Amazon Anda:
+ [EC2: CreateNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html)
+ [EC2: DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)
+ [EC2: DescribeVpcs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html)
+ [EC2: DeleteNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteNetworkInterface.html)
+ [EC2: DescribeSubnets](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html)
+ [EC2: DescribeSecurityGroups](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSecurityGroups.html)

## Izin opsional
<a name="msk-optional-permissions"></a>

 Fungsi Lambda Anda mungkin juga memerlukan izin untuk: 
+ Akses kluster MSK Amazon lintas akun. Untuk pemetaan sumber peristiwa lintas akun, Anda memerlukan [kafka: DescribeVpcConnection](https://docs.aws.amazon.com/msk/1.0/apireference/vpc-connection-arn.html) dalam peran eksekusi. [Prinsipal IAM yang membuat pemetaan sumber peristiwa lintas akun membutuhkan kafka:. ListVpcConnections](https://docs.aws.amazon.com/msk/1.0/apireference/vpc-connections.html)
+ Akses rahasia SCRAM Anda, jika Anda menggunakan otentikasi [SASL/SCRAM](msk-cluster-auth.md#msk-sasl-scram). Ini memungkinkan fungsi Anda menggunakan nama pengguna dan kata sandi untuk terhubung ke Kafka.
+ Jelaskan rahasia Secrets Manager Anda, jika Anda menggunakan SASL/SCRAM atau [otentikasi mTLS](msk-cluster-auth.md#msk-mtls). Ini memungkinkan fungsi Anda untuk mengambil kredensyal atau sertifikat yang diperlukan untuk koneksi aman.
+ Akses kunci terkelola AWS KMS pelanggan Anda, jika AWS Secrets Manager rahasia Anda dienkripsi dengan kunci yang dikelola AWS KMS pelanggan.
+ Akses rahasia registri skema Anda, jika Anda menggunakan registri skema dengan otentikasi:
  + Untuk Registri AWS Glue Skema: Kebutuhan `glue:GetRegistry` dan `glue:GetSchemaVersion` izin fungsi Anda. Ini memungkinkan fungsi Anda untuk mencari dan menggunakan aturan format pesan yang disimpan AWS Glue.
  + Untuk [Registri Skema Konfluen](https://docs.confluent.io/platform/current/schema-registry/security/index.html) dengan `BASIC_AUTH` atau`CLIENT_CERTIFICATE_TLS_AUTH`: Fungsi Anda memerlukan `secretsmanager:GetSecretValue` izin untuk rahasia yang berisi kredensi otentikasi. Ini memungkinkan fungsi Anda mengambil username/password atau sertifikat yang diperlukan untuk mengakses Registri Skema Konfluen.
  + Untuk sertifikat CA pribadi: Fungsi Anda membutuhkan secretsmanager: GetSecretValue izin untuk rahasia yang berisi sertifikat. Hal ini memungkinkan fungsi Anda untuk memverifikasi identitas pendaftar skema yang menggunakan sertifikat kustom.
+ Akses grup konsumen klaster Kafka dan pesan polling dari topik, jika Anda menggunakan autentikasi IAM untuk pemetaan sumber peristiwa.

 Ini sesuai dengan izin yang diperlukan berikut: 
+ [kafka: ListScramSecrets](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html) - Memungkinkan daftar rahasia SCRAM untuk otentikasi Kafka
+ [secretsmanager: GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) - Memungkinkan pengambilan rahasia dari Secrets Manager
+ [KMS: Decrypt - Memungkinkan dekripsi data terenkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) menggunakan AWS KMS
+ [lem: GetRegistry](https://docs.aws.amazon.com/glue/latest/webapi/API_GetRegistry.html) - Memungkinkan akses ke AWS Glue Schema Registry
+ [lem: GetSchemaVersion](https://docs.aws.amazon.com/glue/latest/webapi/API_GetSchemaVersion.html) - Memungkinkan pengambilan versi skema tertentu dari Schema Registry AWS Glue 
+ [Kafka-cluster:Connect - Memberikan izin untuk menghubungkan](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) dan mengautentikasi ke cluster
+ [kafka-cluster: AlterGroup](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - Memberikan izin untuk bergabung dengan grup di cluster, setara dengan READ GROUP ACL Apache Kafka
+ [kafka-cluster: DescribeGroup](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - Memberikan izin untuk mendeskripsikan grup di cluster, setara dengan APache Kafka's DESCRIPTION GROUP ACL
+ [kafka-cluster: DescribeTopic](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - Memberikan izin untuk mendeskripsikan topik di cluster, setara dengan APache Kafka's DESCRIPTE TOPIC ACL
+ [kafka-cluster: ReadData](https://docs.aws.amazon.com/service-authorization/latest/reference/list_apachekafkaapisforamazonmskclusters.html) - Memberikan izin untuk membaca data dari topik di cluster, setara dengan ACL TOPIK BACA Apache Kafka

 Selain itu, jika Anda ingin mengirim catatan pemanggilan yang gagal ke tujuan yang gagal, Anda memerlukan izin berikut tergantung pada jenis tujuan: 
+ Untuk tujuan Amazon SQS: [sqs: SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) - Memungkinkan pengiriman pesan ke antrian Amazon SQS
+ Untuk tujuan Amazon SNS: [SNS: Publikasikan - Izinkan](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) penerbitan pesan ke topik Amazon SNS
+ Untuk tujuan bucket Amazon S3: s3: PutObject dan [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) - Mengaktifkan penulisan dan daftar objek dalam bucket Amazon S3

Untuk mengatasi masalah kesalahan autentikasi dan otorisasi, lihat. [Memecahkan masalah kesalahan pemetaan sumber acara Kafka](with-kafka-troubleshoot.md)

# Mengonfigurasi sumber acara MSK Amazon untuk Lambda
<a name="with-msk-configure"></a>

Untuk menggunakan kluster MSK Amazon sebagai sumber peristiwa untuk fungsi Lambda, Anda membuat pemetaan [sumber peristiwa yang menghubungkan dua sumber](invocation-eventsourcemapping.md) daya. Halaman ini menjelaskan cara membuat pemetaan sumber peristiwa untuk Amazon MSK.

Halaman ini mengasumsikan bahwa Anda telah mengonfigurasi klaster MSK dan [Amazon Virtual Private Cloud (](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)VPC) dengan benar. Jika Anda perlu mengatur cluster atau VPC Anda, lihat. [Mengonfigurasi kluster MSK Amazon dan jaringan VPC Amazon untuk Lambda](with-msk-cluster-network.md) Untuk mengonfigurasi perilaku coba lagi untuk penanganan kesalahan, lihat[Mengonfigurasi kontrol penanganan kesalahan untuk sumber acara Kafka](kafka-retry-configurations.md).

**Topics**
+ [Menggunakan kluster MSK Amazon sebagai sumber acara](#msk-esm-overview)
+ [Mengonfigurasi metode otentikasi cluster MSK Amazon di Lambda](msk-cluster-auth.md)
+ [Membuat pemetaan sumber acara Lambda untuk sumber acara MSK Amazon](msk-esm-create.md)
+ [Membuat pemetaan sumber acara lintas akun di Lambda](msk-cross-account.md)
+ [Semua parameter konfigurasi sumber acara MSK Amazon di Lambda](msk-esm-parameters.md)

## Menggunakan kluster MSK Amazon sebagai sumber acara
<a name="msk-esm-overview"></a>

[Saat Anda menambahkan kluster Apache Kafka atau Amazon MSK sebagai pemicu fungsi Lambda Anda, cluster digunakan sebagai sumber peristiwa.](invocation-eventsourcemapping.md)

Lambda membaca data peristiwa dari topik Kafka yang Anda tentukan seperti `Topics` dalam [CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html)permintaan, berdasarkan [posisi awal](kafka-starting-positions.md) yang Anda tentukan. Setelah pemrosesan berhasil, topik Kafka Anda dijalankan untuk klaster Kafka Anda.

Lambda membaca pesan secara berurutan untuk setiap partisi topik Kafka. Payload Lambda tunggal dapat berisi pesan dari beberapa partisi. Bila lebih banyak rekaman tersedia, Lambda terus memproses catatan dalam batch, berdasarkan BatchSize nilai yang Anda tentukan dalam [CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html)permintaan, hingga fungsi Anda mengikuti topik.

Setelah Lambda memproses setiap batch, Lambda melakukan offset pesan dalam batch tersebut. Jika fungsi Anda mengembalikan kesalahan untuk salah satu pesan dalam batch, Lambda mencoba ulang seluruh batch pesan sampai berhasil diproses atau pesan berakhir. Anda dapat mengirim catatan yang gagal dalam semua upaya percobaan ulang ke tujuan yang gagal untuk diproses nanti.

**catatan**  
Sementara fungsi Lambda biasanya memiliki batas waktu tunggu maksimum 15 menit, pemetaan sumber acara untuk Amazon MSK, Apache Kafka yang dikelola sendiri, Amazon DocumentDB, dan Amazon MQ untuk ActiveMQ dan RabbitMQ hanya mendukung fungsi dengan batas waktu tunggu maksimum 14 menit.

# Mengonfigurasi metode otentikasi cluster MSK Amazon di Lambda
<a name="msk-cluster-auth"></a>

Lambda memerlukan izin untuk mengakses kluster MSK Amazon Anda, mengambil catatan, dan melakukan tugas lainnya. Amazon MSK mendukung beberapa cara untuk mengautentikasi dengan kluster MSK Anda.

**Topics**
+ [Akses tidak diautentikasi](#msk-unauthenticated)
+ [Otentikasi SASL/SCRAM](#msk-sasl-scram)
+ [Otentikasi TLS timbal balik](#msk-mtls)
+ [Autentikasi IAM](#msk-iam-auth)
+ [Bagaimana Lambda memilih broker bootstrap](#msk-bootstrap-brokers)

## Akses tidak diautentikasi
<a name="msk-unauthenticated"></a>

Jika tidak ada klien yang mengakses cluster melalui internet, Anda dapat menggunakan akses yang tidak diautentikasi.

## Otentikasi SASL/SCRAM
<a name="msk-sasl-scram"></a>

Lambda mendukung otentikasi [Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM)](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password-tutorial.html), dengan fungsi hash SHA-512 dan enkripsi Transport Layer Security (TLS). Agar Lambda dapat terhubung ke cluster, simpan kredensyal otentikasi (nama pengguna dan kata sandi) dalam rahasia Secrets Manager, dan rujuk rahasia ini saat mengonfigurasi pemetaan sumber peristiwa Anda.

Untuk informasi selengkapnya tentang menggunakan Secrets Manager, lihat [Autentikasi kredensyal masuk dengan Secrets Manager di Panduan Pengembang](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html) *Amazon Managed Streaming for Apache Kafka*.

**catatan**  
Amazon MSK tidak mendukung SASL/PLAIN otentikasi.

## Otentikasi TLS timbal balik
<a name="msk-mtls"></a>

Mutual TLS (mTLS) menyediakan otentikasi dua arah antara klien dan server. Klien mengirimkan sertifikat ke server untuk server untuk memverifikasi klien. Server juga mengirimkan sertifikat ke klien untuk klien untuk memverifikasi server.

Untuk integrasi MSK Amazon dengan Lambda, kluster MSK Anda bertindak sebagai server, dan Lambda bertindak sebagai klien.
+ Agar Lambda memverifikasi klaster MSK Anda, Anda mengonfigurasi sertifikat klien sebagai rahasia di Secrets Manager, dan mereferensikan sertifikat ini dalam konfigurasi pemetaan sumber peristiwa Anda. Sertifikat klien harus ditandatangani oleh otoritas sertifikat (CA) di toko kepercayaan server.
+ Cluster MSK juga mengirimkan sertifikat server ke Lambda. Sertifikat server harus ditandatangani oleh otoritas sertifikat (CA) di toko AWS kepercayaan.

Amazon MSK tidak mendukung sertifikat server yang ditandatangani sendiri. Semua broker di Amazon MSK menggunakan [sertifikat publik](https://docs.aws.amazon.com/msk/latest/developerguide/msk-encryption.html) yang ditandatangani oleh [Amazon Trust Services CAs](https://www.amazontrust.com/repository/), yang dipercaya Lambda secara default.

### Mengkonfigurasi rahasia mTLS
<a name="mtls-auth-secret"></a>

Rahasia CLIENT\$1CERTIFICATE\$1TLS\$1AUTH memerlukan bidang sertifikat dan bidang kunci pribadi. Untuk kunci pribadi terenkripsi, rahasianya memerlukan kata sandi kunci pribadi. Baik sertifikat dan kunci pribadi harus dalam format PEM.

**catatan**  
Lambda mendukung [PBES1](https://datatracker.ietf.org/doc/html/rfc2898/#section-6.1)(tetapi tidak PBES2) algoritma enkripsi kunci pribadi.

Bidang sertifikat harus berisi daftar sertifikat, dimulai dengan sertifikat klien, diikuti oleh sertifikat perantara, dan diakhiri dengan sertifikat root. Setiap sertifikat harus dimulai pada baris baru dengan struktur berikut:

```
-----BEGIN CERTIFICATE-----  
        <certificate contents>
-----END CERTIFICATE-----
```

Secrets Manager mendukung rahasia hingga 65.536 byte, yang merupakan ruang yang cukup untuk rantai sertifikat yang panjang.

Kunci pribadi harus dalam format [PKCS \$18](https://datatracker.ietf.org/doc/html/rfc5208), dengan struktur berikut:

```
-----BEGIN PRIVATE KEY-----  
         <private key contents>
-----END PRIVATE KEY-----
```

Untuk kunci pribadi terenkripsi, gunakan struktur berikut:

```
-----BEGIN ENCRYPTED PRIVATE KEY-----  
          <private key contents>
-----END ENCRYPTED PRIVATE KEY-----
```

Contoh berikut menunjukkan isi rahasia untuk otentikasi mTLS menggunakan kunci pribadi terenkripsi. Untuk kunci pribadi terenkripsi, Anda menyertakan kata sandi kunci pribadi dalam rahasia.

```
{
 "privateKeyPassword": "testpassword",
 "certificate": "-----BEGIN CERTIFICATE-----
MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw
...
j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk
cmUuiAii9R0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb
...
rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no
c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg==
-----END CERTIFICATE-----",
 "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp
...
QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ
zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA==
-----END ENCRYPTED PRIVATE KEY-----"
}
```

Untuk informasi selengkapnya tentang mTL untuk Amazon MSK, dan petunjuk tentang cara membuat sertifikat klien, lihat [Autentikasi klien Mutual TLS untuk Amazon MSK di Panduan Pengembang Amazon Managed Streaming for](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) *Apache Kafka*.

## Autentikasi IAM
<a name="msk-iam-auth"></a>

Anda dapat menggunakan AWS Identity and Access Management (IAM) untuk mengautentikasi identitas klien yang terhubung ke cluster MSK. Dengan autentikasi IAM, Lambda mengandalkan izin dalam [peran eksekusi](lambda-intro-execution-role.md) fungsi Anda untuk terhubung ke klaster, mengambil catatan, dan melakukan tindakan lain yang diperlukan. Untuk contoh kebijakan yang berisi izin yang diperlukan, lihat [Membuat kebijakan otorisasi untuk peran IAM di Panduan Pengembang](https://docs.aws.amazon.com/msk/latest/developerguide/create-iam-access-control-policies.html) *Amazon Managed Streaming for* Apache Kafka.

Jika auth IAM aktif di kluster MSK Anda, dan Anda tidak memberikan rahasia, Lambda secara otomatis default menggunakan autentikasi IAM.

Untuk informasi selengkapnya tentang autentikasi IAM di Amazon MSK, lihat kontrol akses [IAM](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html).

## Bagaimana Lambda memilih broker bootstrap
<a name="msk-bootstrap-brokers"></a>

Lambda memilih [broker bootstrap](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) berdasarkan metode otentikasi yang tersedia di cluster Anda, dan apakah Anda memberikan rahasia untuk otentikasi. Jika Anda memberikan rahasia untuk mTLS atau SASL/SCRAM, Lambda secara otomatis memilih metode autentikasi itu. Jika Anda tidak memberikan rahasia, Lambda memilih metode autentikasi terkuat yang aktif di cluster Anda. Berikut ini adalah urutan prioritas di mana Lambda memilih broker, dari autentikasi terkuat hingga terlemah:
+ mTL (rahasia disediakan untuk mTL)
+ SASL/SCRAM (secret provided for SASL/SCRAM)
+ SASL IAM (tidak ada rahasia yang disediakan, dan autentikasi IAM aktif)
+ TLS yang tidak diautentikasi (tidak ada rahasia yang disediakan, dan autentikasi IAM tidak aktif)
+ Plaintext (tidak ada rahasia yang disediakan, dan autentikasi IAM dan TLS yang tidak diautentikasi tidak aktif)

**catatan**  
Jika Lambda tidak dapat terhubung ke jenis broker yang paling aman, Lambda tidak mencoba untuk terhubung ke jenis broker yang berbeda (lebih lemah). Jika Anda ingin Lambda memilih jenis broker yang lebih lemah, nonaktifkan semua metode autentikasi yang lebih kuat di cluster Anda.

# Membuat pemetaan sumber acara Lambda untuk sumber acara MSK Amazon
<a name="msk-esm-create"></a>

[Untuk membuat pemetaan sumber peristiwa, Anda dapat menggunakan konsol Lambda, [AWS Command Line Interface (CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)), atau SDK.AWS](https://aws.amazon.com/getting-started/tools-sdks/)

**catatan**  
Saat Anda membuat pemetaan sumber peristiwa, Lambda membuat ENI [hyperplane](configuration-vpc.md#configuration-vpc-enis) di subnet pribadi yang berisi kluster MSK Anda, memungkinkan Lambda membuat koneksi aman. ENI hyperplane ini memungkinkan penggunaan subnet dan konfigurasi grup keamanan klaster MSK Anda, bukan fungsi Lambda Anda.

Langkah-langkah konsol berikut menambahkan kluster MSK Amazon sebagai pemicu fungsi Lambda Anda. Di bawah tenda, ini menciptakan sumber daya pemetaan sumber peristiwa.

**Untuk menambahkan pemicu MSK Amazon ke fungsi Lambda Anda (konsol)**

1. Buka [halaman Fungsi konsol](https://console.aws.amazon.com/lambda/home#/functions) Lambda.

1. Pilih nama fungsi Lambda yang ingin Anda tambahkan pemicu MSK Amazon.

1. Di bagian **Gambaran umum fungsi**, pilih **Tambah pemicu**.

1. Di bawah **konfigurasi Trigger**, pilih **MSK**.

1. Untuk menentukan detail cluster Kafka Anda, lakukan hal berikut:

   1. Untuk **Klaster MSK**, pilih klaster Anda.

   1. Untuk **nama Topik**, masukkan nama topik Kafka untuk mengkonsumsi pesan dari.

   1. Untuk **ID grup Konsumen**, masukkan ID grup konsumen Kafka untuk bergabung, jika berlaku. Untuk informasi selengkapnya, lihat [ID grup konsumen yang dapat disesuaikan di Lambda](kafka-consumer-group-id.md).

1. Untuk **otentikasi Cluster**, buat konfigurasi yang diperlukan. Untuk informasi selengkapnya tentang otentikasi klaster, lihat[Mengonfigurasi metode otentikasi cluster MSK Amazon di Lambda](msk-cluster-auth.md).
   + Aktifkan **Gunakan otentikasi** jika Anda ingin Lambda melakukan otentikasi dengan klaster MSK Anda saat membuat koneksi. Otentikasi direkomendasikan.
   + Jika Anda menggunakan otentikasi, untuk metode **otentikasi, pilih metode** otentikasi yang akan digunakan.
   + Jika Anda menggunakan autentikasi, untuk kunci **Secrets Manager, pilih kunci** Secrets Manager yang berisi kredensyal otentikasi yang diperlukan untuk mengakses klaster Anda.

1. Di bawah **konfigurasi Event poller**, buat konfigurasi yang diperlukan.
   + Pilih **Aktifkan pemicu** untuk mengaktifkan pemicu segera setelah pembuatan.
   + Pilih apakah Anda ingin **Mengonfigurasi mode yang disediakan** untuk pemetaan sumber acara Anda. Untuk informasi selengkapnya, lihat [Mode penskalaan poller acara Apache Kafka di Lambda](kafka-scaling-modes.md).
     + Jika Anda mengonfigurasi mode yang disediakan, masukkan nilai untuk poller **peristiwa Minimum, nilai untuk poller** **peristiwa maksimum**, dan nilai opsional PollerGroupName untuk menentukan pengelompokan beberapa ESMs dalam VPC sumber peristiwa yang sama.
   + Untuk **posisi awal**, pilih bagaimana Anda ingin Lambda mulai membaca dari streaming Anda. Untuk informasi selengkapnya, lihat [Posisi awal pemungutan suara dan streaming Apache Kafka di Lambda](kafka-starting-positions.md).

1. Di bawah **Batching**, buat konfigurasi yang diperlukan. Untuk informasi lebih lanjut tentang batching, lihat[Perilaku batching](invocation-eventsourcemapping.md#invocation-eventsourcemapping-batching).

   1. Untuk **Ukuran batch**, masukkan jumlah maksimum pesan yang akan diterima dalam satu batch.

   1. Untuk **jendela Batch**, masukkan jumlah detik maksimum yang dihabiskan Lambda untuk mengumpulkan catatan sebelum menjalankan fungsi.

1. Di bawah **Pemfilteran**, buat konfigurasi yang diperlukan. Untuk informasi selengkapnya tentang pemfilteran, lihat [Memfilter acara dari Amazon MSK dan sumber acara Apache Kafka yang dikelola sendiri](kafka-filtering.md).
   + Untuk **kriteria Filter**, tambahkan definisi kriteria filter untuk menentukan apakah akan memproses suatu peristiwa atau tidak.

1. Di bawah **Penanganan kegagalan**, buat konfigurasi yang diperlukan. Untuk informasi selengkapnya tentang penanganan kegagalan, lihat[Menangkap batch yang dibuang untuk Amazon MSK dan sumber acara Apache Kafka yang dikelola sendiri](kafka-on-failure.md).
   + Untuk **tujuan On-failure**, tentukan ARN tujuan kegagalan Anda.

1. Untuk **Tag**, masukkan tag untuk dikaitkan dengan pemetaan sumber peristiwa ini.

1. Untuk membuat pemicu, pilih **Tambahkan**.

Anda juga dapat membuat pemetaan sumber acara menggunakan AWS CLI dengan [ create-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-event-source-mapping.html)perintah. Contoh berikut membuat pemetaan sumber peristiwa untuk memetakan `my-msk-function` fungsi Lambda ke `AWSKafkaTopic` topik, mulai dari `LATEST` pesan. Perintah ini juga menggunakan [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html)objek untuk menginstruksikan Lambda untuk [menggunakan](msk-cluster-auth.md#msk-sasl-scram) otentikasi SASL/SCRAM saat menghubungkan ke cluster.

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function
  --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'
```

Jika cluster menggunakan [otentikasi mTLS](msk-cluster-auth.md#msk-mtls), sertakan [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html)objek yang menentukan `CLIENT_CERTIFICATE_TLS_AUTH` dan ARN kunci Secrets Manager. Ini ditunjukkan dalam perintah berikut:

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function
  --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'
```

Saat cluster menggunakan [otentikasi IAM](msk-cluster-auth.md#msk-iam-auth), Anda tidak memerlukan [ SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html)objek. Ini ditunjukkan dalam perintah berikut:

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function
```

# Membuat pemetaan sumber acara lintas akun di Lambda
<a name="msk-cross-account"></a>

Anda dapat menggunakan [konektivitas pribadi multi-VPC](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html) untuk menghubungkan fungsi Lambda ke kluster MSK yang disediakan secara berbeda. Akun AWS Konektivitas multi-VPC menggunakan AWS PrivateLink, yang menjaga semua lalu lintas dalam jaringan. AWS 

**catatan**  
Anda tidak dapat membuat pemetaan sumber peristiwa lintas akun untuk kluster MSK tanpa server.

Untuk membuat pemetaan sumber peristiwa lintas akun, Anda harus terlebih dahulu [mengonfigurasi konektivitas multi-VPC untuk](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html#mvpc-cluster-owner-action-turn-on) kluster MSK. Saat Anda membuat pemetaan sumber peristiwa, gunakan ARN koneksi VPC terkelola alih-alih ARN cluster, seperti yang ditunjukkan pada contoh berikut. [CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html)Operasi juga berbeda tergantung pada jenis otentikasi yang digunakan cluster MSK.

**Example — Buat pemetaan sumber peristiwa lintas akun untuk cluster yang menggunakan otentikasi IAM**  
Saat cluster menggunakan [autentikasi berbasis peran IAM](msk-cluster-auth.md#msk-iam-auth), Anda tidak memerlukan objek. [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html) Contoh:  

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function
```

**Example — Buat pemetaan sumber peristiwa lintas akun untuk cluster yang menggunakan otentikasi SASL/SCRAM**  
Jika cluster menggunakan [otentikasi SASL/SCRAM](msk-cluster-auth.md#msk-sasl-scram), Anda harus menyertakan [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html)objek yang menentukan dan `SASL_SCRAM_512_AUTH` Rahasia Secrets Manager ARN.  
Ada dua cara untuk menggunakan rahasia untuk pemetaan sumber peristiwa Amazon MSK lintas akun dengan otentikasi: SASL/SCRAM   
+ Buat rahasia di akun fungsi Lambda dan sinkronkan dengan rahasia cluster. [Buat rotasi](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) untuk menjaga kedua rahasia tetap sinkron. Opsi ini memungkinkan Anda untuk mengontrol rahasia dari akun fungsi.
+ Gunakan rahasia yang terkait dengan kluster MSK. Rahasia ini harus memungkinkan akses lintas akun ke akun fungsi Lambda. Untuk informasi [selengkapnya, lihat Izin untuk AWS Secrets Manager rahasia bagi pengguna di akun lain](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples_cross.html).

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function \
  --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
```

**Example — Buat pemetaan sumber peristiwa lintas akun untuk cluster yang menggunakan otentikasi mTLS**  
Jika cluster menggunakan [otentikasi mTLS](msk-cluster-auth.md#msk-mtls), Anda harus menyertakan [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html)objek yang menentukan `CLIENT_CERTIFICATE_TLS_AUTH` dan ARN rahasia Secrets Manager. Rahasianya dapat disimpan di akun cluster atau akun fungsi Lambda.  

```
aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function \
  --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
```

# Semua parameter konfigurasi sumber acara MSK Amazon di Lambda
<a name="msk-esm-parameters"></a>

Semua jenis sumber peristiwa Lambda berbagi operasi yang sama [CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html)dan [UpdateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateEventSourceMapping.html)API. Namun, hanya beberapa parameter yang berlaku untuk Amazon MSK, seperti yang ditunjukkan pada tabel berikut.


| Parameter | Diperlukan | Default | Catatan | 
| --- | --- | --- | --- | 
|  AmazonManagedKafkaEventSourceConfig  |  T  |  Berisi ConsumerGroupId bidang, yang default ke nilai unik.  |  Hanya dapat mengatur di Create  | 
|  BatchSize  |  T  |  100  |  Maksimum: 10.000.  | 
|  DestinationConfig  |  T  |  N/A  |  [Menangkap batch yang dibuang untuk Amazon MSK dan sumber acara Apache Kafka yang dikelola sendiri](kafka-on-failure.md)  | 
|  Diaktifkan  |  T  |  True  |    | 
|  BisectBatchOnFunctionError  |  T  |  False  |  [Mengonfigurasi kontrol penanganan kesalahan untuk sumber acara Kafka](kafka-retry-configurations.md)  | 
|  FunctionResponseTypes  |  T  |  N/A  |  [Mengonfigurasi kontrol penanganan kesalahan untuk sumber acara Kafka](kafka-retry-configurations.md)  | 
|  MaximumRecordAgeInSeconds  |  T  |  -1 (tak terbatas)  |  [Mengonfigurasi kontrol penanganan kesalahan untuk sumber acara Kafka](kafka-retry-configurations.md)  | 
|  MaximumRetryAttempts  |  T  |  -1 (tak terbatas)  |  [Mengonfigurasi kontrol penanganan kesalahan untuk sumber acara Kafka](kafka-retry-configurations.md)  | 
|  EventSourceArn  |  Y  | N/A |  Hanya dapat mengatur di Create  | 
|  FilterCriteria  |  T  |  N/A  |  [Kontrol peristiwa mana yang dikirim Lambda ke fungsi Anda](invocation-eventfiltering.md)  | 
|  FunctionName  |  Y  |  N/A  |    | 
|  KMSKeyArn  |  T  |  N/A  |  [Enkripsi kriteria filter](invocation-eventfiltering.md#filter-criteria-encryption)  | 
|  MaximumBatchingWindowInSeconds  |  T  |  500 ms  |  [Perilaku batching](invocation-eventsourcemapping.md#invocation-eventsourcemapping-batching)  | 
|  ProvisionedPollersConfig  |  T  |  `MinimumPollers`: nilai default 1 jika tidak ditentukan `MaximumPollers`: nilai default 200 jika tidak ditentukan `PollerGroupName`: N/A  |  [Mode yang disediakan](kafka-scaling-modes.md#kafka-provisioned-mode)  | 
|  SourceAccessConfigurations  |  T  |  Tidak ada kredensial  |  Kredensyal otentikasi SASL/SCRAM atau CLIENT\$1CERTIFICATE\$1TLS\$1AUTH (MutualTLS) untuk sumber acara Anda  | 
|  StartingPosition  |  Y  | N/A |  AT\$1TIMESTAMP, TRIM\$1HORIZON, atau TERBARU Hanya dapat mengatur di Create  | 
|  StartingPositionTimestamp  |  T  |  N/A  |  Diperlukan jika StartingPosition disetel ke AT\$1TIMESTAMP  | 
|  Tag  |  T  |  N/A  |  [Menggunakan tag pada pemetaan sumber acara](tags-esm.md)  | 
|  Topik  |  Y  | N/A |  Nama topik Kafka Hanya dapat mengatur di Create  | 

**catatan**  
Saat Anda menentukan`PollerGroupName`, beberapa ESMs dalam VPC Amazon yang sama dapat berbagi kapasitas Event Poller Unit (EPU). Anda dapat menggunakan opsi ini untuk mengoptimalkan biaya mode Provisioned untuk Anda. ESMs Persyaratan untuk pengelompokan ESM:  
ESMs harus berada dalam VPC Amazon yang sama
Maksimal 100 ESMs per kelompok poller
Agregat poller maksimum ESMs di semua kelompok tidak boleh melebihi 2000
Anda dapat memperbarui `PollerGroupName` untuk memindahkan ESM ke grup lain, atau menghapus ESM dari grup dengan menyetel `PollerGroupName` ke string kosong (“”).

# Tutorial: Menggunakan pemetaan sumber peristiwa MSK Amazon untuk menjalankan fungsi Lambda
<a name="services-msk-tutorial"></a>

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](https://docs.aws.amazon.com/apigateway/latest/developerguide/websocket-api-chat-app.html) di dokumentasi API Gateway.

## Prasyarat
<a name="w2aad101c23c15c35c19"></a>

 AWS Akun dengan sumber daya yang telah dikonfigurasi berikut:

**Untuk memenuhi prasyarat ini, kami sarankan mengikuti [Memulai menggunakan Amazon MSK di dokumentasi MSK Amazon](https://docs.aws.amazon.com//msk/latest/developerguide/getting-started.html).**
+ Cluster MSK Amazon. Lihat [Membuat klaster MSK Amazon](https://docs.aws.amazon.com//msk/latest/developerguide/create-cluster.html) 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](https://docs.aws.amazon.com//msk/latest/developerguide/create-topic.html) 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](https://docs.aws.amazon.com//msk/latest/developerguide/create-client-machine.html) 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](https://docs.aws.amazon.com/msk/latest/developerguide/msk-list-clusters.html) 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](https://kafka.apache.org/documentation/#basic_ops_add_topic) 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](https://kafka.apache.org/documentation/#basic_ops_consumer_group) 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.

### Instal AWS Command Line Interface
<a name="install_aws_cli"></a>

Jika Anda belum menginstal AWS Command Line Interface, ikuti langkah-langkah di [Menginstal atau memperbarui versi terbaru AWS CLI untuk menginstalnya](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

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 (`zip`seperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan versi terintegrasi Windows dari Ubuntu dan Bash, [instal Windows Subsystem untuk](https://docs.microsoft.com/en-us/windows/wsl/install-win10) Linux. 

## Konfigurasikan konektivitas jaringan untuk Lambda untuk berkomunikasi dengan Amazon MSK
<a name="w2aad101c23c15c35c21"></a>

 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, lihat[Mengonfigurasi kluster MSK Amazon dan jaringan VPC Amazon untuk Lambda](with-msk-cluster-network.md). 

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.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/msk_tut_network.png)


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 cluster MSK Amazon untuk memungkinkan pemetaan sumber peristiwa berkomunikasi dengan cluster MSK Amazon.

 Anda dapat mengonfigurasi langkah-langkah berikut menggunakan file Konsol Manajemen AWS.

**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](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group) di dokumentasi Amazon EC2 untuk membuat grup keamanan. Kemudian, ikuti prosedur di [Tambahkan aturan ke grup keamanan](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule) 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*.

1.  Buat titik akhir yang menghubungkan layanan Lambda ke VPC Amazon yang berisi kluster MSK Amazon Anda. Ikuti prosedur di [Buat titik akhir antarmuka](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html).

   **Buat titik akhir antarmuka dengan informasi berikut:**
   + Untuk **nama Layanan**, pilih`com.amazonaws.regionName.lambda`, di mana *regionName* 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.

1.  Buat titik akhir yang menghubungkan AWS STS layanan ke VPC Amazon yang berisi kluster MSK Amazon Anda. Ikuti prosedur di [Buat titik akhir antarmuka](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html).

   **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.

1. 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](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule) 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
<a name="w2aad101c23c15c35c23"></a>

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:

------
#### [ JSON ]

****  

   ```
   {
       "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:us-east-1:111122223333:cluster/mskClusterName/cluster-uuid",
                   "arn:aws:kafka:us-east-1:111122223333:topic/mskClusterName/cluster-uuid/mskTopicName",
                   "arn:aws:kafka:us-east-1:111122223333:group/mskClusterName/cluster-uuid/mskGroupName"
               ]
           }
       ]
   }
   ```

------

   Untuk informasi lebih lanjut, konsultasikan[Mengonfigurasi izin Lambda untuk pemetaan sumber acara MSK Amazon](with-msk-permissions.md). Saat menulis kebijakan Anda:
   + Ganti *us-east-1* dan *111122223333* dengan Wilayah AWS dan Akun AWS dari 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.

1. 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](https://docs.aws.amazon.com//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 Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi sebelah kiri, pilih **Kebijakan**. 

1. Pilih **Buat kebijakan**.

1. Di bagian **Editor kebijakan**, pilih opsi **JSON**.

1. Tempel*clusterAuthPolicy*.

1. Setelah selesai menambahkan izin ke kebijakan, pilih **Berikutnya**.

1. 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.

1. Pilih **Buat kebijakan** untuk menyimpan kebijakan baru Anda.

Untuk informasi selengkapnya, lihat [Membuat kebijakan IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html) 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](https://console.aws.amazon.com/iam/home#/roles) di konsol IAM.

1. Pilih **Buat peran**.

1. Di bawah **Jenis entitas tepercaya**, pilih **AWS layanan**.

1. Di bawah **Kasus penggunaan**, pilih **Lambda**.

1. Pilih **Berikutnya**.

1. Pilih kebijakan berikut:
   + *clusterAuthPolicy*
   + `AWSLambdaMSKExecutionRole`

1. Pilih **Berikutnya**.

1. Untuk **nama Peran**, *lambdaAuthRole* masukkan lalu pilih **Buat peran**.

Untuk informasi selengkapnya, lihat [Mendefinisikan izin fungsi Lambda dengan peran pelaksanaan](lambda-intro-execution-role.md).

## Buat fungsi Lambda untuk membaca dari topik MSK Amazon Anda
<a name="w2aad101c23c15c35c25"></a>

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. 

1. Pilih **Penulis dari awal**.

1. Untuk **nama Fungsi**, berikan nama yang sesuai pilihan Anda.

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

1. Pilih **Ubah peran eksekusi default**.

1. Pilih **Gunakan peran yang ada**.

1. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) dalam dokumentasi IAM.

## Buat pemetaan sumber acara ke fungsi Lambda Anda
<a name="w2aad101c23c15c35c27"></a>

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.

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

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

1. Jangan mengatur **otentikasi.**

1. Untuk **klaster MSK**, pilih nama klaster Anda.

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

1. Untuk **nama Topik**, berikan nama topik Kafka Anda.

1. Untuk **ID grup Konsumen**, berikan id grup konsumen Kafka Anda.

## Perbarui fungsi Lambda Anda untuk membaca data streaming Anda
<a name="w2aad101c23c15c35c29"></a>

 Lambda memberikan informasi tentang peristiwa Kafka melalui parameter metode acara. Untuk contoh struktur acara MSK Amazon, lihat[Contoh peristiwa](with-msk.md#msk-sample-event). 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: 

------
#### [ .NET ]

**SDK untuk .NET**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan Lambda menggunakan.NET.  

```
using System.Text;
using Amazon.Lambda.Core;
using Amazon.Lambda.KafkaEvents;


// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

namespace MSKLambda;

public class Function
{
    
    
    /// <param name="input">The event for the Lambda function handler to process.</param>
    /// <param name="context">The ILambdaContext that provides methods for logging and describing the Lambda environment.</param>
    /// <returns></returns>
    public void FunctionHandler(KafkaEvent evnt, ILambdaContext context)
    {

        foreach (var record in evnt.Records)
        {
            Console.WriteLine("Key:" + record.Key); 
            foreach (var eventRecord in record.Value)
            {
                var valueBytes = eventRecord.Value.ToArray();    
                var valueText = Encoding.UTF8.GetString(valueBytes);
                
                Console.WriteLine("Message:" + valueText);
            }
        }
    }
    

}
```

------
#### [ Go ]

**SDK untuk Go V2**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan Lambda menggunakan Go.  

```
package main

import (
	"encoding/base64"
	"fmt"

	"github.com/aws/aws-lambda-go/events"
	"github.com/aws/aws-lambda-go/lambda"
)

func handler(event events.KafkaEvent) {
	for key, records := range event.Records {
		fmt.Println("Key:", key)

		for _, record := range records {
			fmt.Println("Record:", record)

			decodedValue, _ := base64.StdEncoding.DecodeString(record.Value)
			message := string(decodedValue)
			fmt.Println("Message:", message)
		}
	}
}

func main() {
	lambda.Start(handler)
}
```

------
#### [ Java ]

**SDK untuk Java 2.x**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan Lambda menggunakan Java.  

```
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.KafkaEvent;
import com.amazonaws.services.lambda.runtime.events.KafkaEvent.KafkaEventRecord;

import java.util.Base64;
import java.util.Map;

public class Example implements RequestHandler<KafkaEvent, Void> {

    @Override
    public Void handleRequest(KafkaEvent event, Context context) {
        for (Map.Entry<String, java.util.List<KafkaEventRecord>> entry : event.getRecords().entrySet()) {
            String key = entry.getKey();
            System.out.println("Key: " + key);

            for (KafkaEventRecord record : entry.getValue()) {
                System.out.println("Record: " + record);

                byte[] value = Base64.getDecoder().decode(record.getValue());
                String message = new String(value);
                System.out.println("Message: " + message);
            }
        }

        return null;
    }
}
```

------
#### [ JavaScript ]

**SDK untuk JavaScript (v3)**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan menggunakan JavaScript Lambda.  

```
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)
      }) 
    }
}
```
Mengkonsumsi acara MSK Amazon dengan menggunakan TypeScript Lambda.  

```
import { MSKEvent, Context } from "aws-lambda";
import { Buffer } from "buffer";
import { Logger } from "@aws-lambda-powertools/logger";

const logger = new Logger({
  logLevel: "INFO",
  serviceName: "msk-handler-sample",
});

export const handler = async (
  event: MSKEvent,
  context: Context
): Promise<void> => {
  for (const [topic, topicRecords] of Object.entries(event.records)) {
    logger.info(`Processing key: ${topic}`);

    // Process each record in the partition
    for (const record of topicRecords) {
      try {
        // Decode the message value from base64
        const decodedMessage = Buffer.from(record.value, 'base64').toString();

        logger.info({
          message: decodedMessage
        });
      }
      catch (error) {
        logger.error('Error processing event', { error });
        throw error;
      }
    };
  }
}
```

------
#### [ PHP ]

**SDK untuk PHP**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan Lambda menggunakan PHP.  

```
<?php
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

// using bref/bref and bref/logger for simplicity

use Bref\Context\Context;
use Bref\Event\Kafka\KafkaEvent;
use Bref\Event\Handler as StdHandler;
use Bref\Logger\StderrLogger;

require __DIR__ . '/vendor/autoload.php';

class Handler implements StdHandler
{
    private StderrLogger $logger;
    public function __construct(StderrLogger $logger)
    {
        $this->logger = $logger;
    }

    /**
     * @throws JsonException
     * @throws \Bref\Event\InvalidLambdaEvent
     */
    public function handle(mixed $event, Context $context): void
    {
        $kafkaEvent = new KafkaEvent($event);
        $this->logger->info("Processing records");
        $records = $kafkaEvent->getRecords();

        foreach ($records as $record) {
            try {
                $key = $record->getKey();
                $this->logger->info("Key: $key");

                $values = $record->getValue();
                $this->logger->info(json_encode($values));

                foreach ($values as $value) {
                    $this->logger->info("Value: $value");
                }
                
            } catch (Exception $e) {
                $this->logger->error($e->getMessage());
            }
        }
        $totalRecords = count($records);
        $this->logger->info("Successfully processed $totalRecords records");
    }
}

$logger = new StderrLogger();
return new Handler($logger);
```

------
#### [ Python ]

**SDK untuk Python (Boto3)**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan Lambda menggunakan Python.  

```
import base64

def lambda_handler(event, context):
    # Iterate through keys
    for key in event['records']:
        print('Key:', key)
        # Iterate through records
        for record in event['records'][key]:
            print('Record:', record)
            # Decode base64
            msg = base64.b64decode(record['value']).decode('utf-8')
            print('Message:', msg)
```

------
#### [ Ruby ]

**SDK untuk Ruby**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan Lambda menggunakan Ruby.  

```
require 'base64'

def lambda_handler(event:, context:)
  # Iterate through keys
  event['records'].each do |key, records|
    puts "Key: #{key}"

    # Iterate through records
    records.each do |record|
      puts "Record: #{record}"

      # Decode base64
      msg = Base64.decode64(record['value'])
      puts "Message: #{msg}"
    end
  end
end
```

------
#### [ Rust ]

**SDK for Rust**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di repositori [contoh Nirserver](https://github.com/aws-samples/serverless-snippets/tree/main/integration-msk-to-lambda). 
Mengkonsumsi acara MSK Amazon dengan Lambda menggunakan Rust.  

```
use aws_lambda_events::event::kafka::KafkaEvent;
use lambda_runtime::{run, service_fn, tracing, Error, LambdaEvent};
use base64::prelude::*;
use serde_json::{Value};
use tracing::{info};

/// Pre-Requisites:
/// 1. Install Cargo Lambda - see https://www.cargo-lambda.info/guide/getting-started.html
/// 2. Add packages tracing, tracing-subscriber, serde_json, base64
///
/// This is the main body for the function.
/// Write your code inside it.
/// There are some code example in the following URLs:
/// - https://github.com/awslabs/aws-lambda-rust-runtime/tree/main/examples
/// - https://github.com/aws-samples/serverless-rust-demo/

async fn function_handler(event: LambdaEvent<KafkaEvent>) -> Result<Value, Error> {

    let payload = event.payload.records;

    for (_name, records) in payload.iter() {

        for record in records {

         let record_text = record.value.as_ref().ok_or("Value is None")?;
         info!("Record: {}", &record_text);

         // perform Base64 decoding
         let record_bytes = BASE64_STANDARD.decode(record_text)?;
         let message = std::str::from_utf8(&record_bytes)?;
         
         info!("Message: {}", message);
        }

    }

    Ok(().into())
}

#[tokio::main]
async fn main() -> Result<(), Error> {

    // required to enable CloudWatch error logging by the runtime
    tracing::init_default_subscriber();
    info!("Setup CW subscriber!");

    run(service_fn(function_handler)).await
}
```

------

Anda dapat memberikan kode fungsi ke Lambda Anda menggunakan konsol.

**Untuk memperbarui kode fungsi menggunakan editor kode konsol**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) konsol Lambda dan pilih fungsi Anda.

1. Pilih tab **Kode**.

1. Di panel **Sumber kode**, pilih file kode sumber Anda dan edit di editor kode terintegrasi.

1. Di bagian **DEPLOY**, pilih **Deploy** untuk memperbarui kode fungsi Anda:  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

## Uji fungsi Lambda Anda untuk memverifikasi bahwa itu terhubung ke topik MSK Amazon Anda
<a name="w2aad101c23c15c35c31"></a>

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 CLI`kafka-console-producer`. Untuk informasi lebih lanjut, lihat [Menulis beberapa peristiwa ke dalam topik](https://kafka.apache.org/documentation/#quickstart_send) 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.

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

1. Pilih tab **Konfigurasi**.

1. Dari sidebar, pilih **Alat pemantauan dan operasi**.

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

1. 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.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/msk_tut_log.png)