是否有人使用 JavaScript 成功建立了与 Amazon MSK Kafka 集群的客户端连接?没有 YouTube 视频或在线示例 AFAIK。尝试使用 KafkaJs npm 模块对我不起作用,因为如果没有在无法 ssh 进入的代理上安装 IamAWSLogin 插件,则不支持 SASL AWS 我是角色。
尝试使用普通 SASL 方法在 KafkaJs 上不起作用,因为 aws 不使用用户名和密码。
我也没有发现 kafka-node 有用。
有什么线索吗?
是否有人使用 JavaScript 成功建立了与 Amazon MSK Kafka 集群的客户端连接?没有 YouTube 视频或在线示例 AFAIK。尝试使用 KafkaJs npm 模块对我不起作用,因为如果没有在无法 ssh 进入的代理上安装 IamAWSLogin 插件,则不支持 SASL AWS 我是角色。
尝试使用普通 SASL 方法在 KafkaJs 上不起作用,因为 aws 不使用用户名和密码。
我也没有发现 kafka-node 有用。
有什么线索吗?
有一个新功能正在开发中,允许为 AWS 注入身份验证机制。
也许有必要为您的项目添加一个分支依赖,这对生产构建来说是一个风险,但是好消息已经过审查并且应该很快被合并:)
我们也与 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 的说明进行操作。
考虑到默认情况下无法从 Internet 访问 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。