【问题标题】:Create AWS amazon-MSK JavaScript Client connection创建 AWS amazon-MSK JavaScript 客户端连接
【发布时间】:2021-06-12 17:01:32
【问题描述】:
是否有人使用 JavaScript 成功建立了与 Amazon MSK Kafka 集群的客户端连接?没有 YouTube 视频或在线示例 AFAIK 不存在。尝试使用 KafkaJs npm 模块对我不起作用,因为如果不在无法 ssh 进入的代理上安装 IamAWSLogin 插件,则不支持 SASL AWS 我是角色。
尝试使用普通 SASL 方法在 KafkaJs 上不起作用,因为 aws 不使用用户名和密码。
我没有发现 kafka-node 也有用。
有什么线索吗?
【问题讨论】:
标签:
apache-kafka
kafka-consumer-api
kafkajs
【解决方案2】:
我们也和 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,
}
})
【解决方案3】:
我能够通过 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。