跳至內容

如何對在使用 Amazon MSK Connect 建立連接器時所收到的錯誤進行疑難排解?

4 分的閱讀內容
0

當我使用 Amazon Managed Streaming for Apache Kafka (Amazon MSK) Connect 建立連接器時,收到錯誤訊息。

解決方法

「Last operation failed」錯誤

當 MSK Connect 無法建立連接器,且連接器進入失敗狀態時,您會收到以下錯誤訊息:

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

若要找出失敗的原因,請檢閱 MSK Connect 的日誌事件

「Required field is missing」錯誤

如果您在組態結尾使用了歸位 (/r) 字元,則會收到以下錯誤訊息:

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

若要解決此問題,請採取以下動作:

  • 請在連接器組態對話方塊中手動輸入組態資訊。請勿從其他來源複製並貼上組態資訊。
  • 對於 Windows 作業系統 (OS),請使用文字編輯器移除歸位與換行 (CRLF) 字元及行尾 (EOL) 字元。若要移除歸位字元,請將組態內容複製並貼到文字編輯器。在您的文字編輯器中,選擇 View (檢視),然後選擇 Show Symbol (顯示符號)。接著,選擇 Show All Characters (顯示所有字元)。將所有 CRLF 字元 \r\n 替換為換行 (LF) 字元 \n

「Invalid parameter」錯誤

當您使用 MSK Connect 服務連結角色建立連接器時,會收到以下錯誤訊息:

「Invalid parameter serviceExecutionRoleArn: A service linked role ARN cannot be provided as service execution role ARN.」

您無法使用 AWSServiceRoleForKafkaConnect 服務連結角色作為服務執行角色。您必須改為建立單獨的服務角色。然後,指定您希望連接器使用的角色。

「Failed to find any class that implements Connector」錯誤

您會收到以下錯誤訊息:

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

若要解決此問題,請採取以下動作:

  • 移除連接器組態中的 CRLF 字元。
  • 如果連接器外掛程式需要多個檔案,請將這些檔案包含在壓縮檔中。壓縮檔中的 JAR 檔案也必須符合外掛程式所需的預期檔案結構。最佳實務是為 MSK Connect 開啟日誌,並檢閱日誌以確認檔案結構是否正確。

「TimeOutException」錯誤

如果連接器無法連線至您的 MSK 叢集,您會收到以下錯誤訊息:

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

若要解決上述錯誤訊息,請採取以下動作:

「SaslAuthenticationException」錯誤

如果您的 MSK 叢集在具有 AWS Identity and Access Management (IAM) 存取控制的 kafka.t3.small broker 類型上執行,請檢閱您的連線配額kafka.t3.small 執行個體類型每秒只接受每個代理程式一個 TCP 連線。

當您超出連線配額時,建立測試會失敗,且您會收到以下錯誤訊息:

「org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects」

如需 MSK 叢集和 IAM 存取控制的詳細詳細資訊,請參閱 Amazon MSK 如何搭配 IAM 使用

若要解決「SaslAuthenticationException」錯誤,請採取以下其中一項動作:

  • 在您的 MSK Connect 工作組態中,將 reconnect.backoff.msreconnect.backoff.max.ms 的值更新為 1000 或更高的值。
  • 升級至較大的代理程式執行個體類型,例如 kafka.m5.large 或更高。如需詳細資訊,請參閱 Amazon MSK 代理程式類型標準代理程式的最佳實務

「Unable to connect to S3」錯誤

當連接器無法連線至 Amazon Simple Storage Service (Amazon S3) 時,您會收到以下錯誤訊息:

「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」

若要解決此問題,您必須從叢集的 Amazon Virtual Private Cloud (Amazon VPC) 建立一個到 Amazon S3 的端點。

請完成下列步驟:

  1. 開啟 Amazon VPC console (Amazon VPC 主控台)。
  2. 在導覽窗格中,選擇 Endpoints (端點)。
  3. 選擇 Create endpoint (建立端點)。
  4. Type (類型) 中,選取 AWS services (AWS 服務)。
  5. Services (服務) 下,選擇 Service Name (服務名稱) 篩選器,然後選取 com.amazonaws.region.s3
    **注意:**將 region 替換為您的 AWS 區域。
  6. 選擇 Type (類型) 篩選器,然後選擇 Gateway (閘道)。
  7. VPC,選取叢集的 VPC。
  8. Route tables (路由表) 下,選取與叢集子網路關聯的路由表。
  9. 選擇 Create endpoint (建立端點)。

Firehose 出現「Unable to execute HTTP request」錯誤

當連接器無法連線至 Amazon Data Firehose 時,您會收到以下錯誤訊息:

「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」

若要解決此問題,請依照前一節的步驟,從叢集的 VPC 建立一個到 Amazon Data Firehose 的 VPC 端點。使用服務名稱篩選器 com.amazonaws.region.kinesis-firehose

「Access denied」錯誤

當 MSK Connect 的 IAM 使用者沒有建立連接器所需的權限時,您會收到以下錯誤訊息:

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

使用 MSK Connect 建立連接器時,您必須指定要使用的 IAM 角色。您的服務執行角色必須具有以下信任政策,以便 MSK Connect 能夠擔任該角色:

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

如果您希望與連接器一起使用的 MSK 叢集使用 IAM 認證,則必須將以下權限政策新增至連接器的服務執行角色:

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

如需詳細資訊,請參閱授權政策資源

「Failed to find AWS IAM Credentials」錯誤

當您用來建立連接器的 IAM 角色沒有所需權限時,您會收到以下錯誤訊息:

「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))」

若要對上述錯誤訊息進行疑難排解,請檢閱連接器 IAM 角色的存取政策與信任關係。如需詳細資訊,請參閱了解服務執行角色

相關資訊

如何使用 Kafka-Kinesis-Connector 連線至我的 Amazon MSK 叢集?

了解 MSK Connect

Amazon MSK 叢集疑難排解

AWS 官方已更新 3 個月前