Direkt zum Inhalt

Wie behebe ich Fehler, die ich erhalte, wenn ich Amazon MSK Connect verwende, um einen Connector zu erstellen?

Lesedauer: 6 Minute
0

Wenn ich Amazon Managed Streaming für Apache Kafka (Amazon MSK) Connect verwende, um einen Connector zu erstellen, erhalte ich eine Fehlermeldung.

Lösung

Fehler „Last operation failed“

Wenn MSK Connect den Connector nicht erstellen kann und der Connector in den Status Fehlgeschlagen wechselt, wird die folgende Fehlermeldung angezeigt:

„There is an issue with the connector Code: UnknownError.UnknownMessage: The last operation failed. Retry the operation.“

Überprüfe die Protokollereignisse für MSK Connect, um die Ursache für den Fehler zu finden.

Fehler „Required field is missing“

Wenn du am Ende einer Konfiguration ein Wagenrücklaufzeichen (/r) verwendest, erhältst du die folgende Fehlermeldung:

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

Gehe wie folgt vor, um dieses Problem zu beheben:

  • Gib die Konfigurationsinformationen manuell in das Dialogfeld zur Connector-Konfiguration ein. Kopiere die Konfigurationsinformationen nicht aus einer anderen Quelle und füge sie nicht ein.
  • Verwende bei Windows-Betriebssystemen einen Texteditor, um die Zeichen für Carriage Return and Line Feed (CRLF, Wagenrücklauf und Zeilenvorschub) und das Zeichen für End-Of-Line (EOL, Zeilenende) zu entfernen. Um den Wagenrücklauf zu entfernen, kopiere die Konfiguration und füge sie in einen Texteditor ein. Wähle im Texteditor Ansicht und dann Symbole anzeigen. Wähle dann Alle Zeichen anzeigen. Ersetze alle CRLF-Zeichen \r\n durch Zeichen für Line Feed (LF, Zeichenvorschub) \n.

Fehler „Invalid parameter“

Wenn du die serviceverknüpfte Rolle von MSK Connect verwendest, um einen Connector zu erstellen, wird die folgende Fehlermeldung angezeigt:

„Invalid parameter serviceExecutionRoleArn: A service linked role ARN cannot be provided as service execution role ARN.“

Du kannst die serviceverknüpfte Rolle AWSServiceRoleForKafkaConnect nicht als Serviceausführungsrolle verwenden. Stattdessen musst du eine separate Servicerolle erstellen. Gib dann die Rolle an, die der Connector verwenden soll.

Fehler „Failed to find any class that implements Connector“

Du erhältst die folgende Fehlermeldung:

„org.apache.kafka.connect.errors.ConnectException: Failed to find any class that implements Connector and which name matches...“

Gehe wie folgt vor, um dieses Problem zu beheben:

  • Entferne CRLF-Zeichen, die sich in der Connector-Konfiguration befinden.
  • Wenn das Connector-Plug-in mehrere Dateien benötigt, füge die Dateien in die gezippte Datei ein. Die JAR-Dateien in der gezippten Datei müssen auch die erwartete Dateistruktur für das Plug-in haben. Es hat sich bewährt, die Protokolle für MSK Connect zu aktivieren und die Protokolle zu überprüfen, um sicherzustellen, dass die Dateistruktur korrekt ist.

Fehler „TimeOutException“

Wenn der Connector den MSK-Cluster nicht erreichen kann, erhältst du die folgende Fehlermeldung:

„org.apache.kafka.common.errors.TimeoutException: Timed out waiting to send the call. Call: fetchMetadata“

Gehe wie folgt vor, um die vorherige Fehlermeldung zu beheben:

Fehler „SaslAuthenticationException“

Wenn der MSK-Cluster auf einem kafka.t3.small-Brokertyp mit AWS Identity and Access Management (IAM)-Zugriffssteuerung ausgeführt wird, überprüfe das Verbindungskontingent. Der Instance-Typ kafka.t3.small akzeptiert nur eine TCP-Verbindung pro Broker pro Sekunde.

Wenn du das Verbindungskontingent überschreitest, schlägt der Erstellungstest fehl und du erhältst die folgende Fehlermeldung:

„org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects“

Weitere Informationen zu MSK-Clustern und zur IAM-Zugriffssteuerung findest du unter Wie Amazon MSK mit IAM funktioniert.

Führe eine der folgenden Aktionen aus, um den Fehler „SaslAuthenticationException“ zu beheben:

  • Aktualisiere in der MSK-Connect-Worker-Konfiguration die Werte für reconnect.backoff.ms and reconnect.backoff.max.ms auf 1000 oder höher.
  • Führe ein Upgrade auf einen größeren Broker-Instance-Typ durch, z. B. kafka.m5.large oder höher. Weitere Informationen findest du unter Amazon-MSK-Broker-Typen und Bewährte Methoden für Standard-Broker.

Fehler „Unable to connect to S3“

Wenn der Connector keine Verbindung zu Amazon Simple Storage Service (Amazon S3) herstellen kann, erhältst du die folgende Fehlermeldung:

„org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to s3.us-east-1.amazonaws.com:443 failed: connect timed out“

Um dieses Problem zu lösen, musst du einen Amazon Virtual Private Cloud (Amazon VPC)-Endpunkt von der VPC des Clusters zu Amazon S3 erstellen. 

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-VPC-Konsole.
  2. Wähle im Navigationsbereich Endpunkte aus.
  3. Wähle Endpunkt erstellen aus.
  4. Wähle für Typ die Option AWS-Services aus.
  5. Wähle unter Services den Filter Service-Name und dann com.amazonaws.region.s3 aus.
    Hinweis: Ersetze region durch deine AWS-Region.
  6. Wähle den Filter Typ und anschließend Gateway aus.
  7. Wähle für VPC die VPC des Clusters aus.
  8. Wähle unter Routing-Tabellen die Routing-Tabelle aus, die den Subnetzen des Clusters zugeordnet ist.
  9. Wähle Endpunkt erstellen aus.

Fehler „Unable to execute HTTP request“ für Firehose

Wenn der Connector keine Verbindung zu Amazon Data Firehose herstellen kann, erhältst du die folgende Fehlermeldung:

„org.apache.kafka.connect.errors.ConnectException: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to firehose.us-east-2.amazonaws.com:443 failed: connect timed out“

Um dieses Problem zu beheben, befolge die Schritte im vorherigen Abschnitt, um einen VPC-Endpunkt von der VPC des Clusters zu Amazon Data Firehose zu erstellen. Verwende den Service-Name-Filter com.amazonaws.region.kinesis-firehose.

Fehler „Access denied“

Wenn der IAM-Benutzer für MSK Connect nicht über die erforderlichen Berechtigungen zum Erstellen eines Connectors verfügt, erhältst du die folgende Fehlermeldung:

„Connection to node - 1 (b1.<cluster>.<region>.amazonaws.com) failed authentication due to : Access Denied“

Wenn du einen Connector mit MSK Connect erstellst, musst du eine IAM-Rolle angeben, die du mit diesem verwenden möchtest. Deine Service-Ausführungsrolle muss über die folgende Vertrauensrichtlinie verfügen, damit MSK Connect die 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 du mit dem Connector verwenden möchtest, die IAM-Authentifizierung verwendet, musst du der Service-Ausfü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-*"
            ]
        }
    ]
}

Weitere Informationen findest du unter Ressourcen von Autorisierungsrichtlinien.

Fehler „Failed to find AWS IAM Credentials“

Wenn die IAM-Rolle, die du zum Erstellen des Connectors verwendet hast, nicht über die erforderlichen Berechtigungen verfügt, erhältst du die folgende Fehlermeldung:

„ERROR Connection to node -3 (b-1.<cluster>.<region>.amazonaws.com/INTERNAL_IP ) failed authentication due to: An error: (java.security .PrivilegedActionException: javax.security .sasl.SaslException: Failed to find AWS IAM Credentials [Caused by aws_msk_iam_auth_shadow.com.amazonaws.SdkClientException: Unable to load AWS credentials from any ...........Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY))“

Um die vorherige Fehlermeldung zu beheben, überprüfe die Zugriffsrichtlinien und die Vertrauensstellung der IAM-Rolle für den Connector. Weitere Informationen findest du unter Grundlegendes zur Service-Ausführungsrolle.

Ähnliche Informationen

Wie verwende ich den Kafka-Kinesis-Connector, um eine Verbindung zu meinem Amazon-MSK-Cluster herzustellen?

Grundlegendes zu MSK Connect

Problembehandlung bei Amazon-MSK-Clustern

AWS OFFICIALAktualisiert vor 2 Monaten