

# セルフマネージド Kafka イベントソースマッピングエラーのトラブルシューティング
<a name="with-kafka-troubleshoot"></a>

次のトピックでは、Lambda で Amazon MSK またはセルフマネージド Apache Kafka を使用するときに発生する可能性のあるエラーや問題のトラブルシューティングのアドバイスを提供します。

トラブルシューティングの詳細については、「 [AWS ナレッジセンター](https://repost.aws/knowledge-center#AWS_Lambda)」を参照してください。

## 認証と認可のエラー
<a name="kafka-permissions-errors"></a>

Kafka クラスターからのデータを消費するために必要な許可のいずれかが欠落している場合、Lambda は **[LastProcessingResult]** のイベントソースマッピングに以下のエラーメッセージのいずれかを表示します。

**Topics**
+ [クラスターが Lambda の認可に失敗した](#kafka-authorize-errors)
+ [SASL 認証に失敗した](#kafka-sasl-errors)
+ [Server failed to authenticate Lambda (サーバーが Lambda の認証に失敗しました)](#kafka-mtls-errors-server)
+ [Lambda failed to authenticate server (Lambda がサーバーの認証に失敗しました)](#kafka-mtls-errors-lambda)
+ [Provided certificate or private key is invalid (提供された証明書またはプライベートキーが無効です)](#kafka-key-errors)

### クラスターが Lambda の認可に失敗した
<a name="kafka-authorize-errors"></a>

SALS/SCRAM または mTLS の場合、このエラーは、指定されたユーザーが以下の必要とされる Kafka アクセスコントロールリスト (ACL) 許可のすべてを持っていないことを示します。
+ DescribeConfigs クラスター
+ グループを記述する
+ グループを読み取る
+ トピックを記述する
+ トピックを読み取る

必要な `kafka-cluster` 許可を使用して Kafka ACL を作成するときは、リソースとしてトピックとグループを指定します。トピック名は、イベントソースマッピングのトピックと一致する必要があります。グループ名は、イベントソースマッピングの UUID と一致する必要があります。

必要な許可を実行ロールに追加した後は、変更が有効になるまで数分間かかる場合があります。

この問題で[ログ記録設定](esm-logging.md)を有効にした後の ESM システムレベルのログの例を次に示します。

```
{
    "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"
    }
}
```

### SASL 認証に失敗した
<a name="kafka-sasl-errors"></a>

SASL/SCRAM または SASL/PLAIN の場合、このエラーは指定されたサインイン認証情報が無効であることを示します。

IAM アクセスコントロールの場合、実行ロールにクラスターに対する `kafka-cluster:Connect` 許可がありません。この許可をロールに追加して、クラスターの Amazon リソースネーム (ARN) をリソースとして指定します。

このエラーは断続的に発生する場合があります。クラスターは、TCP 接続の数がサービスクォータを超過すると、接続を拒否します。Lambda は接続に成功するまでバックオフし、再試行します。Lambda がクラスターに接続してレコードをポーリングすると、最後の処理結果が `OK` に変わります。

IAM 認証を使用するときにこの問題の[ログ記録設定](esm-logging.md)を有効にした後の ESM システムレベルのログの例を次に示します。

```
{
    "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 failed to authenticate Lambda (サーバーが Lambda の認証に失敗しました)
<a name="kafka-mtls-errors-server"></a>

このエラーは、Kafka ブローカーが Lambda の認証に失敗したことを示します。このエラーは、以下が原因で発生する可能性があります。
+ mTLS 認証用のクライアント証明書を提供していない。
+ クライアント証明書を提供したが、Kafka ブローカーが mTLS 認証を使用するように設定されていない。
+ クライアント証明書が Kafka ブローカーに信頼されていない。

### Lambda failed to authenticate server (Lambda がサーバーの認証に失敗しました)
<a name="kafka-mtls-errors-lambda"></a>

このエラーは、Lambda が Kafka ブローカーの認証に失敗したことを示します。このエラーは、以下が原因で発生する可能性があります。
+ セルフマネージド Apache Kafka の場合: Kafka ブローカーは自己署名証明書またはプライベート CA を使用するが、サーバールート CA 証明書を提供しなかった。
+ セルフマネージド Apache Kafka の場合: サーバールート CA 証明書が、ブローカーの証明書に署名したルート CA と一致しない。
+ ブローカーの証明書にサブジェクトの別名としてブローカーの DNS 名または IP アドレスが含まれていないため、ホスト名の検証が失敗した。

### Provided certificate or private key is invalid (提供された証明書またはプライベートキーが無効です)
<a name="kafka-key-errors"></a>

このエラーは、Kafka コンシューマーが提供された証明書またはプライベートキーを使用できなかったことを示します。証明書とキーが PEM 形式を使用しており、プライベートキーの暗号化が PBES1 アルゴリズムを使用していることを確認してください。

この問題で[ログ記録設定](esm-logging.md)を有効にした後の ESM システムレベルのログの例を次に示します。

```
{
    "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"
    }
}
```

## ネットワークと接続のエラー
<a name="kafka-network-errors"></a>

ネットワーク設定の問題により、Lambda が Kafka クラスターに接続できなくなる可能性があります。以下のトピックでは、一般的なネットワーク関連のエラーについて説明します。

**Topics**
+ [セキュリティグループ設定による接続タイムアウト](#kafka-security-group-errors)
+ [Kafka ブローカーエンドポイントを解決できません](#kafka-cluster-deleted-errors)

### セキュリティグループ設定による接続タイムアウト
<a name="kafka-security-group-errors"></a>

Kafka クラスターに関連付けられたセキュリティグループがそれ自体からのインバウンドトラフィックを許可しない場合、Lambda はクラスターに接続できません。セキュリティグループのインバウンドルールで、Kafka ブローカーポートのセキュリティグループ自体からのトラフィックが許可されていることを確認します。

この問題で[ログ記録設定](esm-logging.md)を有効にした後の ESM システムレベルのログの例を次に示します。

```
{
    "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"
    }
}
```

Kafka コンシューマーの INFO ログを確認して、接続とネットワーク設定を確認することもできます。`brokerEndpoints` フィールドには Kafka ブローカーアドレスが表示され、`securityProtocol` と `saslMechanism` (該当する場合) には認証方法が表示され、`networkConfig` フィールドにはイベントソースマッピングで使用される IP アドレス、サブネット CIDR ブロック、セキュリティグループが表示されます。リストされているセキュリティグループで、必要なインバウンドトラフィックが許可されていることを確認します。

```
{
    "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"
            ]
        }
    }
}
```

### Kafka ブローカーエンドポイントを解決できません
<a name="kafka-cluster-deleted-errors"></a>

このエラーは、Kafka クラスターが存在しないか、削除されたことを示します。イベントソースマッピングで指定されたクラスターが存在し、アクティブ状態であることを確認します。

この問題で[ログ記録設定](esm-logging.md)を有効にした後の ESM システムレベルのログの例を次に示します。

```
{
    "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"
    }
}
```

## イベントソースマッピングエラー
<a name="services-event-errors"></a>

Apache Kafka クラスターを Lambda 関数の[イベントソース](invocation-eventsourcemapping.md)として追加すると、関数でエラーが発生した場合、Kafka コンシューマーはレコードの処理を停止します。トピックパーティションのコンシューマーは、レコードのサブスクライブ、読み取り、処理を行います。その他の Kafka コンシューマーは、同じエラーが発生しない限り、レコードの処理を続行できます。

停止したコンシューマの原因を特定するには、`StateTransitionReason` のレスポンスの `EventSourceMapping` フィールドを確認します。以下は、受け取る可能性があるイベントソースエラーを説明するリストです。

**`ESM_CONFIG_NOT_VALID`**  
イベントソースマッピングの設定が無効です。

**`EVENT_SOURCE_AUTHN_ERROR`**  
Lambda がイベントソースを認証できませんでした。

**`EVENT_SOURCE_AUTHZ_ERROR`**  
Lambda にイベントソースへのアクセスに必要な許可がありません。

**`FUNCTION_CONFIG_NOT_VALID`**  
関数の設定が無効です。

**注記**  
Lambda のイベントレコードが許容サイズ制限である 6 MB を超えると、未処理になります。