如何對在使用 Amazon MSK Connect 建立連接器時所收到的錯誤進行疑難排解?
當我使用 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」
若要解決上述錯誤訊息,請採取以下動作:
- 檢查您在屬性中指定的啟動伺服器 (包括連接埠號碼) 是否有效且正確。
- 確保叢集的安全群組允許來自與 MSK Connect 關聯之用戶端安全群組的傳入流量。如果您使用的是 MSK 叢集,請新增允許來自叢集的傳入流量規則。如需詳細資訊,請參閱安全群組規則。
「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.ms 與 reconnect.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 的端點。
請完成下列步驟:
- 開啟 Amazon VPC console (Amazon VPC 主控台)。
- 在導覽窗格中,選擇 Endpoints (端點)。
- 選擇 Create endpoint (建立端點)。
- 在 Type (類型) 中,選取 AWS services (AWS 服務)。
- 在 Services (服務) 下,選擇 Service Name (服務名稱) 篩選器,然後選取 com.amazonaws.region.s3。
**注意:**將 region 替換為您的 AWS 區域。 - 選擇 Type (類型) 篩選器,然後選擇 Gateway (閘道)。
- 在 VPC,選取叢集的 VPC。
- 在 Route tables (路由表) 下,選取與叢集子網路關聯的路由表。
- 選擇 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 角色的存取政策與信任關係。如需詳細資訊,請參閱了解服務執行角色。
相關資訊
- 語言
- 中文 (繁體)

相關內容
已提問 3 年前
已提問 2 年前