Kafka S3 Sink连接器无法读取MSK主题问题求助
问题排查与解决方案
核心现象梳理
- MSK集群启用IAM认证,CLI可正常生产/消费
MSKTutorialTopic - S3 Sink连接器状态显示
RUNNING,但日志提示已订阅topic但分配分区为空,且持续出现节点断开日志 - 组件版本:Kafka 3.6.0,Confluent S3 Sink Connector 10.6.0
排查步骤
1. 检查Kafka Connect的消费者IAM权限配置
虽然连接器配置了consumer.security.protocol = IAM,但需确认Connect进程的IAM身份具备完整权限:
- 确保EC2实例绑定的IAM角色拥有
kafka:DescribeCluster、kafka:ListTopics、kafka:DescribeTopic、kafka:GetPartitionMetadata、kafka:Subscribe、kafka:Fetch权限,权限范围覆盖MSKTutorialTopic。 - 检查Connect的worker配置文件(如
connect-distributed.properties)是否正确配置IAM客户端参数:
若worker全局已配置IAM,连接器层级的security.protocol=SASL_SSL sasl.mechanism=AWS_MSK_IAM sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required; sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandlerconsumer.security.protocol可不用重复设置,但需保证两者配置一致。
2. 验证topic的分区与偏移量状态
- 执行CLI命令查看topic元数据:
确认topic存在、分区数量正常,且所有分区的ISR列表包含可用broker节点。kafka-topics.sh --describe --topic MSKTutorialTopic --bootstrap-server <MSK_BOOTSTRAP_SERVERS> - 查看连接器对应的消费者组状态:
若显示kafka-consumer-groups.sh --describe --group connect-SampleS3Test --bootstrap-server <MSK_BOOTSTRAP_SERVERS>CURRENT-OFFSET为-或无分区分配,说明消费者组无法获取topic元数据或无分区访问权限;若消费者组状态为Empty,可能是topic无消息或起始偏移量配置导致。
3. 检查Connect与MSK的网络连接配置
- 确认Connect的worker配置中
bootstrap.servers使用MSK的SASL_SSL端口(默认9098),而非PLAINTEXT端口。 - 检查日志中的节点断开原因,若为SSL证书问题,需确保worker配置了
ssl.truststore.location(自定义证书场景)或启用ssl.endpoint.identification.algorithm=https(默认开启)。 - 重新验证EC2到MSK broker 9098端口的连通性:
nc -zv <MSK_BROKER_HOST> 9098。
4. 调整连接器起始偏移量配置
若topic当前无新消息,连接器默认从latest偏移量消费会出现分区分配为空的情况,可在连接器配置中添加:
consumer.auto.offset.reset=earliest
强制从topic最早偏移量开始消费,验证是否能获取分区与消息。
5. 检查版本兼容性
Kafka 3.6.0对应Confluent Platform 7.6.x,S3 Connector 10.6.0属于该系列,理论兼容,但可开启Connect的DEBUG级别日志,排查是否存在隐藏的兼容性警告。
6. 验证S3相关权限与配置
虽然当前核心问题是分区分配,但S3权限异常可能间接影响任务状态:
- 确保EC2的IAM角色拥有
s3:PutObject、s3:ListBucket权限,目标桶msk-connectors存在于ap-south-1区域。 - 确认
topics.dir=tutorial配置对应的桶内目录可读写。
内容的提问来源于stack exchange,提问作者whatsinthename
相关产品推荐
相关产品推荐

