Memecahkan masalah kesalahan pemetaan sumber acara Kafka - AWS Lambda

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

Memecahkan masalah kesalahan pemetaan sumber acara Kafka

Topik berikut memberikan saran pemecahan masalah untuk kesalahan dan masalah yang mungkin Anda temui saat menggunakan Amazon MSK atau Apache Kafka yang dikelola sendiri dengan Lambda.

Untuk bantuan lebih lanjut tentang pemecahan masalah, kunjungi Pusat AWS Pengetahuan.

Kesalahan otentikasi dan otorisasi

Jika salah satu izin yang diperlukan untuk mengkonsumsi data dari cluster Kafka tidak ada, Lambda menampilkan salah satu pesan kesalahan berikut dalam pemetaan sumber peristiwa di bawah. LastProcessingResult

Cluster gagal mengotorisasi Lambda

Untuk SASL/SCRAM atau mTL, kesalahan ini menunjukkan bahwa pengguna yang disediakan tidak memiliki semua izin daftar kontrol akses (ACL) Kafka yang diperlukan berikut:

  • DescribeConfigs Cluster

  • Jelaskan Grup

  • Baca Grup

  • Jelaskan Topik

  • Baca Topik

Saat Anda membuat Kafka ACLs dengan kafka-cluster izin yang diperlukan, tentukan topik dan kelompokkan sebagai sumber daya. Nama topik harus cocok dengan topik dalam pemetaan sumber acara. Nama grup harus cocok dengan UUID pemetaan sumber peristiwa.

Setelah Anda menambahkan izin yang diperlukan ke peran eksekusi, mungkin perlu beberapa menit agar perubahan diterapkan.

Berikut ini adalah contoh log tingkat sistem ESM setelah mengaktifkan Logging Config untuk masalah ini:

{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567890123, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE11111-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111/0", "logLevel": "WARN", "error": { "errorMessage": "Not authorized to access topics: [my-topic]", "errorCode": "org.apache.kafka.common.errors.TopicAuthorizationException" } }

Otentikasi SASL gagal

Untuk SASL/SCRAM atau SASL/PLAIN, kesalahan ini menunjukkan bahwa kredensyal masuk yang diberikan tidak valid.

Untuk kontrol akses IAM, peran eksekusi tidak memiliki kafka-cluster:Connect izin untuk cluster. Tambahkan izin ini ke peran dan tentukan Amazon Resource Name (ARN) cluster sebagai sumber daya.

Anda mungkin melihat kesalahan ini terjadi sebentar-sebentar. Cluster menolak koneksi setelah jumlah koneksi TCP melebihi kuota layanan. Lambda mundur dan mencoba lagi sampai koneksi berhasil. Setelah Lambda terhubung ke cluster dan polling untuk catatan, hasil pemrosesan terakhir berubah menjadi. OK

Berikut ini adalah contoh log tingkat sistem ESM setelah mengaktifkan Logging Config untuk masalah ini saat menggunakan otentikasi IAM:

{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567890456, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE22222-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222/0", "logLevel": "WARN", "error": { "errorMessage": "[a1b2c3d4-5678-90ab-cdef-EXAMPLE22222]: Access denied", "errorCode": "org.apache.kafka.common.errors.SaslAuthenticationException" } }

Server gagal mengautentikasi Lambda

Kesalahan ini menunjukkan bahwa broker Kafka gagal mengautentikasi Lambda. Ini dapat terjadi karena salah satu alasan berikut:

  • Anda tidak memberikan sertifikat klien untuk otentikasi mTLS.

  • Anda memberikan sertifikat klien, tetapi broker Kafka tidak dikonfigurasi untuk menggunakan otentikasi mTLS.

  • Sertifikat klien tidak dipercaya oleh broker Kafka.

Lambda gagal mengautentikasi server

Kesalahan ini menunjukkan bahwa Lambda gagal mengautentikasi broker Kafka. Ini dapat terjadi karena salah satu alasan berikut:

  • Untuk Apache Kafka yang dikelola sendiri: Broker Kafka menggunakan sertifikat yang ditandatangani sendiri atau CA pribadi, tetapi tidak memberikan sertifikat CA root server.

  • Untuk Apache Kafka yang dikelola sendiri: Sertifikat CA root server tidak cocok dengan root CA yang menandatangani sertifikat broker.

  • Validasi nama host gagal karena sertifikat broker tidak berisi nama DNS broker atau alamat IP sebagai nama alternatif subjek.

Sertifikat atau kunci pribadi yang diberikan tidak valid

Kesalahan ini menunjukkan bahwa konsumen Kafka tidak dapat menggunakan sertifikat atau kunci pribadi yang disediakan. Pastikan bahwa sertifikat dan kunci menggunakan format PEM, dan bahwa enkripsi kunci pribadi menggunakan PBES1 algoritma.

Berikut ini adalah contoh log tingkat sistem ESM setelah mengaktifkan Logging Config untuk masalah ini:

{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567891234, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE44444", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE44444-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE44444/0", "logLevel": "WARN", "error": { "errorMessage": "Invalid PEM keystore configs", "errorCode": "org.apache.kafka.common.errors.InvalidConfigurationException" } }

Kesalahan jaringan dan konektivitas

Masalah konfigurasi jaringan dapat mencegah Lambda terhubung ke cluster Kafka Anda. Topik berikut menjelaskan kesalahan umum terkait jaringan.

Batas waktu koneksi karena konfigurasi grup keamanan

Jika grup keamanan yang terkait dengan cluster Kafka Anda tidak mengizinkan lalu lintas masuk dari dirinya sendiri, Lambda tidak dapat terhubung ke klaster. Pastikan aturan masuk grup keamanan memungkinkan lalu lintas dari grup keamanan itu sendiri di port broker Kafka.

Berikut ini adalah contoh log tingkat sistem ESM setelah mengaktifkan Logging Config untuk masalah ini:

{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567892345, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE55555", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE55555-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE55555/0", "logLevel": "WARN", "error": { "errorMessage": "Timeout expired while fetching topic metadata", "errorCode": "org.apache.kafka.common.errors.TimeoutException" } }

Anda juga dapat memeriksa log INFO konsumen Kafka untuk memverifikasi koneksi dan konfigurasi jaringan. brokerEndpointsBidang menunjukkan alamat broker Kafka, securityProtocol dan saslMechanism (jika ada) menunjukkan metode otentikasi, dan networkConfig bidang menunjukkan alamat IP, blok CIDR subnet, dan grup keamanan yang digunakan oleh pemetaan sumber peristiwa. Verifikasi bahwa grup keamanan yang terdaftar mengizinkan lalu lintas masuk yang diperlukan:

{ "eventType": "POLLER_STATUS_EVENT", "timestamp": 1734567892456, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/0", "logLevel": "INFO", "kafkaEventSourceConnection": { "brokerEndpoints": "boot-abcd1234.c2.kafka-serverless.us-east-1.amazonaws.com:9098", "consumerId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE-0", "topics": [ "my-topic" ], "consumerGroupId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "securityProtocol": "SASL_SSL", "saslMechanism": "AWS_MSK_IAM", "totalPartitionCount": 2, "assignedPartitionCount": 2, "partitionsAssignmentGeneration": 1, "assignedPartitions": [ "my-topic-0", "my-topic-1" ], "networkConfig": { "ipAddresses": [ "10.0.0.37" ], "subnetCidrBlock": "10.0.0.32/28", "securityGroups": [ "sg-0123456789abcdef0" ] } } }

Titik akhir broker Kafka tidak dapat diselesaikan

Kesalahan ini menunjukkan bahwa cluster Kafka tidak ada atau telah dihapus. Verifikasi bahwa klaster yang ditentukan dalam pemetaan sumber peristiwa ada dan dalam keadaan aktif.

Berikut ini adalah contoh log tingkat sistem ESM setelah mengaktifkan Logging Config untuk masalah ini:

{ "eventType": "ESM_PROCESSING_EVENT", "timestamp": 1734567893456, "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLE66666", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/my-kafka-cluster/12345678-abcd-1234-efgh-EXAMPLE66666-1", "eventProcessorId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE66666/0", "logLevel": "WARN", "error": { "errorMessage": "No resolvable bootstrap urls given in bootstrap.servers", "errorCode": "org.apache.kafka.common.config.ConfigException" } }

Kesalahan pemetaan sumber peristiwa

Katika Anda menambahkan klaster Apache Kafka Anda sebagai sumber peristiwa untuk fungsi Lambda Anda, jika fungsi Anda mengalami kesalahan, konsumen Kafka Anda berhenti memproses rekaman. Konsumen partisi topik adalah mereka yang berlangganan, membaca, dan memproses catatan Anda. Konsumen Kafka Anda lainnya dapat melanjutkan pemrosesan catatan, asalkan tidak mengalami kesalahan yang sama.

Untuk menentukan penyebab penghentian konsumen, periksa bidang StateTransitionReason dalam respons dari EventSourceMapping. Daftar berikut menjelaskan kesalahan sumber peristiwa yang dapat Anda terima:

ESM_CONFIG_NOT_VALID

Konfigurasi pemetaan sumber peristiwa tidak valid.

EVENT_SOURCE_AUTHN_ERROR

Lambda tidak dapat mengautentikasi sumber acara.

EVENT_SOURCE_AUTHZ_ERROR

Lambda tidak memiliki izin yang diperlukan untuk mengakses sumber acara.

FUNCTION_CONFIG_NOT_VALID

Konfigurasi fungsi tidak valid.

catatan

Jika catatan peristiwa Lambda Anda melebihi batas ukuran yang diizinkan sebesar 6 MB, catatan dapat tidak diproses.