Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何对我在使用 Amazon MSK Connect 创建连接器时收到的错误进行故障排除?
当我使用 Amazon Managed Streaming for Apache Kafka (Amazon MSK) Connect 创建连接器时,出现错误。
解决方法
“Last operation failed”错误
当 MSK Connect 无法创建连接器且连接器变为 Failed(失败)状态时,您会收到以下错误消息:
“There is an issue with the connector Code: UnknownError.UnknownMessage: The last operation failed.Retry the operation.”
要找到失败的原因,请查看 MSK Connect 的日志事件。
“Required field is missing”错误
如果您在配置末尾使用了回车 (/r) 符,则会收到以下错误消息:
“Invalid 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 代理类型上运行,请查看您的连接配额。kafka.t3.small 实例类型仅接受每个代理每秒进行一次 TCP 连接。
当您超出连接配额时,您的创建测试将失败并会收到以下错误消息:
“org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects”
有关 MSK 集群和 IAM 访问控制的详细信息,请参阅 Amazon MSK 如何与 IAM 配合使用。
要解决“SaslAuthenticationException”错误,请执行以下操作之一:
- 在您的 MSK Connect Worker 配置中,将 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”
要解决此问题,您必须创建从集群的 VPC 到 Amazon S3 的 Amazon Virtual Private Cloud (Amazon VPC) 端点。
完成以下步骤:
- 打开 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 端点。使用 Service name(服务名称)筛选器 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)的连接验证失败,原因是: 错误:(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 角色的访问策略和信任关系。有关详细信息,请参阅了解服务执行角色。
相关信息
- 语言
- 中文 (简体)
