Python 无法连接到MSK上的Kafka

Python 无法连接到MSK上的Kafka,python,apache-kafka,kafka-consumer-api,kafka-producer-api,aws-msk,Python,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,Aws Msk,我已经在MSK上创建了一个Kafka集群,现在我正试图用python连接到该集群 我写了这个短代码: 从卡夫卡导入卡夫卡制作人 导入json 制作人=卡夫卡制作人( bootstrap_servers=['host1:9092','host2:9092'], value_serializer=lambda x:json.dumps(x).encode('utf-8'), api_版本=(2,4,1) ) send('test',value={'hello':'world'}) 问题是,每次我运

我已经在MSK上创建了一个Kafka集群,现在我正试图用python连接到该集群

我写了这个短代码:

从卡夫卡导入卡夫卡制作人
导入json
制作人=卡夫卡制作人(
bootstrap_servers=['host1:9092','host2:9092'],
value_serializer=lambda x:json.dumps(x).encode('utf-8'),
api_版本=(2,4,1)
)
send('test',value={'hello':'world'})
问题是,每次我运行它时,都会出现以下错误:

KafkaTimeoutError: Failed to update metadata after 60.0 secs.
我认为这可能与卡夫卡创建主题有关,所以我在配置中添加了这一行

auto.create.topics.enable=true
但我还是犯了同样的错误

这是我的完整配置文件:

default.replication.factor=3
min.insync.replicas=2
num.io.threads=8
num.network.threads=5
num.partitions=1
num.replica.fetchers=2
socket.request.max.bytes=104857600
unclean.leader.election.enable=true
auto.create.topics.enable=true
zookeeper.connection.timeout.ms=5000
我错过了什么?我在某个地方读到可能与SSL身份验证有关的信息,但在任何步骤中,都没有任何.pem文件、.ca文件或类似文件。

您可能无法连接到MSK。您遇到的错误是超时错误

第一次开始使用MSK时的一个错误假设是,您可以从AWS网络外部连接到MSK这是一个错误的假设。美国焊接学会有一份详细的文件,说明了如何才能做到这一点

如果您不是从MSK VPC中的EC2实例运行客户端,您将无法访问它。即使您在MSK安全组策略中打开了相关的安全规则

我花时间尝试多个代理从AWS外部访问MSK,但没有成功。只需遵循我上面提到的指南,它可能会解决您的连接问题


另外,如果您是MSK新手,我强烈建议您阅读教程,或至少完成步骤5()和6()。

您能分享您的配置吗?(有兴趣查看播发的
。侦听器
)我将配置添加到问题正文中。但是我认为AWS MSK的全部要点是它是可管理的,我不必处理这种配置。而且,在添加了
auto.create.topics.enable=true
之后,您是否重新启动了群集?我对MSK其实很陌生,但我相信它是自己重新启动的,因为更新过程大约需要5到10分钟。每当我在AWS中连接超时时,我的第一个想法就是安全组。MSK群集的安全组是否允许从应用程序的安全组进入tcp端口9092?您是否尝试过从EC2 MSK VPC实例到本地计算机的端口转发?我以前没有与MSK合作过,但有一个问题,我不得不从面向非公共的VPC中的一个实例向前移植到本地机器的跳转框。显然,遵循文档是更好的选择。我的EC2实例无法从本地计算机访问,必须通过bastion主机。仅仅为了连接MSK而在多台机器上转发端口的费用太高了,所以我没有尝试过