1

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

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

我也没有发现 kafka-node 有用。

有什么线索吗?

4

3 回答 3

1

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

https://medium.com/@jm18457_46341/using-amazon-msk-with-iam-access-control-for-apache-kafka-and-node-js-with-kafkajs-71638912fe88

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

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

于 2021-11-21T21:01:10.880 回答
1

我们也与 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,
  }
})
于 2021-06-23T02:04:59.117 回答
0

我能够通过 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。

于 2021-07-10T14:12:12.240 回答