跳至内容

如何对我在使用 Amazon MSK Connect 创建连接器时收到的错误进行故障排除?

3 分钟阅读
0

当我使用 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”

要解决上述错误消息,请执行以下操作:

“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.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”

要解决此问题,您必须创建从集群的 VPC 到 Amazon S3 的 Amazon Virtual Private Cloud (Amazon VPC) 端点。

完成以下步骤:

  1. 打开 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 端点。使用 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 角色的访问策略和信任关系。有关详细信息,请参阅了解服务执行角色

相关信息

如何使用 Kafka-Kinesis-Connector 连接我的 Amazon MSK 集群?

了解 MSK Connect

对您的 Amazon MSK 集群进行故障排除

AWS 官方已更新 7 个月前