创建AWS amazon MSK JavaScript客户端连接



是否有人使用JavaScript成功建立了与Amazon MSK Kafka集群的客户端连接?没有YouTube视频或在线例子AFAIK在那里。尝试使用KafkaJs的npm模块对我来说不起作用,因为如果不在代理上安装IamAWSLogin插件,就不支持SASL AWS I am角色,而您无法ssh到该插件中。

尝试使用普通的SASL方法在KafkaJs上不起作用,因为aws不使用用户名和密码。

我不觉得卡夫卡节点也有用。

有线索吗?

开发中有一个新功能,允许使用AWS注入身份验证机制。

https://medium.com/@jm18457_46341/使用-amason-msk-with-iam-access-control-for-apache-kafka和-node-js-with-kafkajs-71638912fe88

也许有必要为您的项目添加一个分支dpendency,这对生产构建来说是一个风险,但好消息是已经审查过了,应该很快合并:(

https://github.com/tulios/kafkajs/pull/1101

我们也曾与IAM进行过斗争,而且似乎只针对Java客户端。

我们已经让它与用户名/密码一起工作。此处提供了MSK配置的详细信息https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html.我建议您使用自定义安全组设置MSK,并为MSK端口设置适当的入站访问权限。

当集群被设置时;查看客户端信息";按钮以获取要使用的代理程序/端口。

这就是你的KafkaJS客户端设置:

new Kafka({
clientId: 'my-app',
brokers: ['something.kafka.us-east-1.amazonaws.com:9096', 'somethingelse.kafka.us-east-1.amazonaws.com:9096'],
ssl: true,
sasl: {
mechanism: 'scram-sha-512',
username,
password,
}
})

我能够通过kafkajs库连接并使用Amazon MSK Kafka集群。最初,我遵循kafkajs库文档中关于如何将aws机制用于sasl的说明。

考虑到默认情况下无法从互联网访问MSK Kafka集群,我在下面的视频中首先创建了一个VPN客户端:https://www.youtube.com/watch?v=Bv70DoHDDCY,确保客户端授权用户访问我的VPC的子网,然后我简单地从配置中删除了sasl部分。

所以。。。我用了一些类似的东西:

const kafkaClient = new Kafka({
clientId: 'local-client',
brokers: [
'b-2.xxx.xxx.xx.xxx.xx.eu-central-1.amazonaws.com:9094',
'b-3.xxx.xxx.xx.xxx.xx.eu-central-1.amazonaws.com:9094',
'b-1.xxx.xxx.xx.xxx.xx.eu-central-1.amazonaws.com:9094'
],
ssl: true,
})

如果sasl:{…}部分在那里,我会得到奇怪的错误,比如"[BrokerPool]无法连接到种子代理,正在尝试列表中的另一个代理:鉴于当前SASL状态",请求无效

很可能由于VPN连接,sasl不再需要了。

最新更新