Wie behebe ich Fehler, wenn ich versuche, einen Connector mit Amazon MSK Connect zu erstellen?

Lesedauer: 8 Minute
0

Ich erhalte eine Fehlermeldung, wenn ich versuche, einen Connector mit Amazon Managed Streaming für Apache Kafka (Amazon MSK) Connect zu erstellen.

Kurzbeschreibung

Wenn Sie mit MSK Connect einen Connector erstellen, wird möglicherweise eine der folgenden Fehlermeldungen angezeigt:

  • Es liegt ein Problem mit dem Connector-Code vor: UnknownError.UnknownMessage: Der letzte Vorgang ist fehlgeschlagen. Wiederholen Sie den Vorgang.
  • Ungültiger Parameter connectorConfiguration: Das folgende Pflichtfeld fehlt oder hat einen ungültigen Wert: tasks.max
  • Ungültiger Parameter serviceExecutionRoleArn: Ein dienstverknüpfter Rollen-ARN kann nicht als Dienstausführungsrollen-ARN bereitgestellt werden
  • org.apache.kafka.connect.errors.ConnectException: Es konnte keine Klasse gefunden werden, die den Connector implementiert und deren Name übereinstimmt ...
  • org.apache.kafka.common.errors.TimeoutException: Beim Warten auf das Senden des Aufrufs ist ein Timeout aufgetreten. Aufruf: fetchMetadata
  • org.apache.kafka.common.errors.SaslAuthenticationException: Zu viele Verbindungen
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Die HTTP-Anfrage kann nicht ausgeführt werden: Verbindung zu s3.eu-central-1.amazonaws.com:443 [s3.eu-central-1.amazonaws.com/52.219.47.235 ] fehlgeschlagen: Zeitüberschreitung bei der Verbindung
  • org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Die HTTP-Anfrage kann nicht ausgeführt werden: Verbindung zu firehose.us-east-2.amazonaws.com:443 [firehose.us-east-2.amazonaws.com/52.95.23.168 ] fehlgeschlagen: Zeitüberschreitung bei der Verbindung
  • Die Verbindung zu Knoten – 1 (Broker-Endpunkt) konnte aus folgenden Gründen nicht authentifiziert werden: Zugriff verweigert
  • FEHLER Verbindung zum Knoten -3 (b-1.<cluster>.<region>.amazonaws.com/internal\ _IP) konnte aus folgenden Gründen nicht authentifiziert werden: Ein Fehler: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: AWS IAM-Anmeldeinformation konnten nicht gefunden werden [Verursacht von aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: AWS-Anmeldeinformation konnten aus keiner ...........AWS-Anmeldeinformation konnten aus keiner Umgebungsvariablen geladen werden (AWS_ACCESS_KEY_ID (oder AWS_ACCESS_KEY) und AWS_SECRET_KEY (oder AWS_SECRET_ACCESS_KEY))

Lösung

Es liegt ein Problem mit dem Connector-Code vor: UnknownError.UnknownMessage: Der letzte Vorgang ist fehlgeschlagen. Wiederholen Sie den Vorgang.

Dieser Fehler wird angezeigt, wenn MSK Connect den Connector nicht erstellen kann und der Connector in den Status Fehlgeschlagen versetzt wird.

Um die Hauptursache für den Fehler zu finden, überprüfen Sie die Protokollereignisse für MSK Connect. MSK Connect schreibt Protokollereignisse, die Sie zum Debuggen Ihres Connectors verwenden können. Wenn Sie einen Connector erstellen, können Sie keine Protokollziele oder eines der folgenden Protokollziele angeben:

  • Amazon CloudWatch Logs
  • Amazon Simple Storage Service (Amazon S3)
  • Amazon Kinesis Data Firehose

Ungültiger Parameter connectorConfiguration: Das folgende Pflichtfeld fehlt oder hat einen ungültigen Wert: tasks.max

Wenn Sie am Ende einer Konfiguration das Zeichen Carriage Return (/r) verwenden, wird die folgende Fehlermeldung angezeigt:

Invalid parameter connectorConfiguration: The following required field is missing or has invalid value: tasks.max

Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

  • Geben Sie die Konfigurationsinformationen manuell in das Dialogfeld zur Connector-Konfiguration ein, anstatt sie aus einer anderen Quelle, z. B. der Dokumentation, zu kopieren und einzufügen.
  • Wenn Sie ein Windows-Betriebssystem verwenden, verwenden Sie einen Texteditor (wie Notepad++). Sie können den Texteditor verwenden, um die Carriage Return (CRLF)- und alle Zeilenendzeichen (EOL) zu überprüfen und zu entfernen. Um den Carriage Return zu entfernen, kopieren Sie die Konfiguration und fügen Sie sie in einen Texteditor ein. Wählen Sie in Ihrem Texteditor Ansicht und Symbol anzeigen aus. Wählen Sie dann Alle Zeichen anzeigen aus, um alle CRLF- oder EOL-Zeichen zu überprüfen, die möglicherweise in einer Konfiguration vorhanden sind. Ersetzen Sie alle CRLF-Zeichen(„\r\n“) durch LF-Zeichen („\n“).

Ungültiger Parameter serviceExecutionRoleArn: Ein dienstverknüpfter Rollen-ARN kann nicht als Dienstausführungsrollen-ARN bereitgestellt werden.

Dieser Fehler wird angezeigt, wenn Sie eine dienstverknüpfte Rolle verwenden, um einen Connector zu erstellen. MSK Connect unterstützt die Verwendung der dienstverknüpften Rolle als Dienstausführungsrolle nicht. Sie müssen eine separate Dienstausführungsrolle erstellen. Anweisungen zum Erstellen einer benutzerdefinierten AWS Identity and Access Management (IAM)-Rolle finden Sie unter Erstellen einer Rolle zur Delegierung von Berechtigungen an einen AWS-Service. Geben Sie die Rolle an, mit der der Connector arbeiten soll. Diese Rolle muss sich von der dienstverknüpften Rolle AWSServiceRoleForKafkaConnect unterscheiden, die der Dienst intern verwendet, um die Connector-Ressourcen zu erstellen.

org.apache.kafka.connect.errors.ConnectException: Es konnte keine Klasse gefunden werden, die den Connector implementiert und deren Name übereinstimmt ...

Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

  • Entfernen Sie alle Carriage-Return-Zeichen (/r), die möglicherweise in der Connector-Konfiguration vorhanden sind.
  • Wenn mehrere Dateien für das Connector-Plugin erforderlich sind, fügen Sie diese Dateien in Ihre komprimierte Datei ein. Die komprimierte Datei wird bei der Erstellung des Connector-Plugins verwendet. Die JAR-Dateien in der ZIP-Datei müssen ebenfalls die erwartete Dateistruktur haben, die für dieses Plugin dokumentiert ist. Es hat sich bewährt, Protokolle für MSK Connect zu aktivieren und die Protokolle zu überprüfen, um sicherzustellen, dass die Dateistruktur korrekt eingestellt ist.

org.apache.kafka.common.errors.TimeoutException: Beim Warten auf das Senden des Aufrufs ist ein Timeout aufgetreten. Aufruf: fetchMetadata

Wenn der Connector Ihren MSK-Cluster nicht erreichen kann, erhalten Sie einen TimeOutException-Fehler. Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

org.apache.kafka.common.errors.SaslAuthenticationException: Zu viele Verbindungen

Wenn Ihr MSK-Cluster auf einem Brokertyp kafka.t3.small mit IAM-Zugriffskontrolle ausgeführt wird, beachten Sie das Verbindungslimit. Der Instance-Typ kafka.t3.small akzeptiert nur eine TCP-Verbindung pro Broker pro Sekunde. Wenn dieses Verbindungslimit überschritten wird, schlägt Ihr Erstellungstest fehl. Infolgedessen erhalten Sie einen SaslAuthenticationException-Fehler, der auf einen Fehler mit ungültigen Anmeldeinformationen hinweist. Weitere Informationen zu MSK-Clustern und IAM-Zugriffskontrolle finden Sie unter Wie Amazon MSK mit IAM funktioniert.

Führen Sie eine der folgenden Aktionen aus, um den SaslAuthenticationException-Fehler zu beheben:

  • Aktualisieren Sie in Ihrer MSK Connect-Worker-Konfiguration die Werte für reconnect.backoff.ms und reconnect.backoff.max.ms auf „1000“ oder höher.
  • Führen Sie ein Upgrade auf einen größeren Broker-Instance-Typ durch (z. B. kafka.m5.large oder höher). Weitere Informationen zu den Amazon MSK-Brokertypen und zur Auswahl des richtigen Brokertyps finden Sie unter Brokertypen und Optimale Größe Ihres Clusters.

org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Die HTTP-Anfrage kann nicht ausgeführt werden: Verbindung zu s3.us-east-1.amazonaws.com:443 fehlgeschlagen: Zeitüberschreitung bei der Verbindung

Dieser Fehler wird angezeigt, wenn der Connector keine Verbindung zu Amazon S3 herstellen kann. Um diesen Fehler zu beheben, stellen Sie sicher, dass Sie den Amazon Virtual Private Cloud (Amazon VPC)-Endpunkt von der VPC des Clusters zu Amazon S3 erstellt haben. Gehen Sie wie folgt vor, um einen Amazon VPC-Endpunkt von der VPC des Clusters zu Amazon S3 zu erstellen:

  1. Öffnen Sie die Amazon VPC-Konsole.
  2. Wählen Sie im Navigationsbereich Endpunkte aus.
  3. Wählen Sie Endpunkt erstellen aus.
  4. Wählen Sie als Servicekategorie AWS-Services aus.
  5. Wählen Sie unter Services den Filter Servicename und dann com.amazonaws.<region>.s3 aus. Ersetzen Sie <region> durch Ihre AWS-Region.
    Wählen Sie den Filter Typ und anschließend Gateway aus.
  6. Wählen Sie für VPC die VPC des Clusters aus.
  7. Wählen Sie unter Routing-Tabellen die Routing-Tabelle aus, die den Subnetzen des Clusters zugeordnet ist.
  8. Wählen Sie Endpunkt erstellen aus.

org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Die HTTP-Anfrage kann nicht ausgeführt werden: Verbindung zu firehose.us-east-2.amazonaws.com:443 fehlgeschlagen: Zeitüberschreitung bei der Verbindung

Dieser Fehler wird angezeigt, wenn der Connector keine Verbindung zu Amazon Kinesis Data Firehose herstellen kann. Um diesen Fehler zu beheben, stellen Sie sicher, dass Sie den Amazon VPC-Endpunkt von der VPC des Clusters in Kinesis Data Firehose erstellt haben.

Gehen Sie wie im vorherigen Abschnitt beschrieben vor, um einen Amazon VPC-Endpunkt von der VPC des Clusters zu Kinesis Data Firehose zu erstellen. Verwenden Sie den Servicenamen-Filter com.amazonaws.<region>.kinesis-firehose.

Verbindung zum Knoten - 1 (b1.<cluster>.<region>.amazonaws.com) konnte aus folgenden Gründen nicht authentifiziert werden: Zugriff verweigert

Dieser Fehler wird angezeigt, wenn der IAM-Benutzer für MSK Connect nicht über die erforderlichen Berechtigungen verfügt, um einen Connector zu erstellen.

Wenn Sie einen Connector mit MSK Connect erstellen, müssen Sie eine IAM-Rolle angeben, die Sie mit diesem verwenden möchten. Ihre Dienstausführungsrolle muss über die folgende Vertrauensrichtlinie verfügen, damit MSK Connect diese Rolle übernehmen kann:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Principal": {
            "Service": "kafkaconnect.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "Account-ID"
            },
            "ArnLike": {
                "aws:SourceArn": "MSK-Connector-ARN"
            }
        }
    }]
}

Wenn der MSK-Cluster, den Sie mit Ihrem Connector verwenden möchten, die IAM-Authentifizierung verwendet, müssen Sie der Dienstausführungsrolle des Connectors die folgende Berechtigungsrichtlinie hinzufügen:

{
    "Version": "2012-10-17",
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "cluster-arn"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:ReadData",
                "kafka-cluster:DescribeTopic"
            ],
            "Resource": [
                "ARN of the topic that you want a sink connector to read from"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:WriteData",
                "kafka-cluster:DescribeTopic"
            ],
            "Resource": [
                "ARN of the topic that you want a source connector to write to"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:CreateTopic",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData",
                "kafka-cluster:DescribeTopic"
            ],
            "Resource": [
                "arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/__amazon_msk_connect_*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/__amazon_msk_connect_*",
                "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/connect-*"
            ]
        }
    ]
}

Informationen zum Ermitteln der UUID Ihres Clusters sowie zum Aufbau von Themen-ARNs finden Sie unter Ressourcen.

FEHLER Verbindung zum Knoten -3 (b-1.<cluster>.<region>.amazonaws.com/INTERNAL_IP ) konnte aus folgenden Gründen nicht authentifiziert werden: Ein Fehler: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: AWS IAM-Anmeldeinformation konnten nicht gefunden werden [Verursacht von aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: AWS-Anmeldeinformation konnten aus keiner ...........AWS-Anmeldeinformation konnten aus keiner Umgebungsvariablen geladen werden (AWS_ACCESS_KEY_ID (oder AWS_ACCESS_KEY) und AWS_SECRET_KEY (oder AWS_SECRET_ACCESS_KEY))

Dieser Fehler wird angezeigt, wenn die IAM-Rolle, die Sie zum Erstellen des Connectors verwendet haben, nicht über die erforderlichen Berechtigungen verfügt.

Überprüfen Sie die Zugriffsrichtlinien und das Vertrauensverhältnis der IAM-Rolle für den Connector, die Sie für den Zugriff auf Amazon MSK verwenden. Weitere Informationen finden Sie unter Dienstausführungsrolle.

Verwandte Informationen

Wie stelle ich mithilfe des Kafka-Kinesis-Connectors eine Verbindung zu meinem Amazon MSK-Cluster her?

MSK Connect

Problembehandlung bei Ihrem Amazon MSK-Cluster

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr