You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Lambda函数连接Amazon MSK集群并获取对应连接字符串?

作为Kafka生产者的Lambda连接MSK集群,不需要使用ZookeeperConnectString,该串仅用于MSK集群内部运维管理场景,客户端生产/消费消息需要使用MSK提供的Broker端点连接串。

你可以通过两种方式获取可用的连接串:

方式1:AWS CLI手动查询

MSK集群部署完成后,执行以下命令即可返回所有类型的连接端点:

aws kafka get-bootstrap-brokers --cluster-arn <替换为你的MSK集群ARN>

返回结果会包含明文、TLS加密、SASL认证等不同协议的连接串,根据你集群开启的访问协议选择即可。

方式2:在Serverless配置中直接引用(更适配你当前的部署流程)

你可以直接通过CloudFormation内置函数获取MSK的连接串,要么部署后导出查看,要么直接注入到Lambda的环境变量中,不需要手动查询:

# 示例serverless.yml配置
resources:
  Resources:
    # 你原来的MSK配置保持不变
    MSK:
      Type: AWS::MSK::Cluster
      Properties:
        ClusterName: kafkaOne
        KafkaVersion: 2.2.1
        NumberOfBrokerNodes: 3
        BrokerNodeGroupInfo:
          InstanceType: kafka.t3.small
          ClientSubnets:
            - Ref: PrivateSubnet1
            - Ref: PrivateSubnet2
            - Ref: PrivateSubnet3
  # 新增Outputs导出连接串,部署完成后会在控制台输出
  Outputs:
    MSKBootstrapServers:
      Value: !Join [',', !GetAtt MSK.BootstrapBrokerStringTls]
      Export:
        Name: MSKBootstrapServers

# 如果要直接注入到Lambda环境变量,在函数配置中添加即可
functions:
  yourKafkaProducerFunc:
    handler: index.handler
    environment:
      KAFKA_BOOTSTRAP_SERVERS: !Join [',', !GetAtt MSK.BootstrapBrokerStringTls]
    # 注意必须将Lambda部署到和MSK同VPC的私有子网
    vpc:
      subnetIds:
        - Ref: PrivateSubnet1
        - Ref: PrivateSubnet2
        - Ref: PrivateSubnet3
      securityGroupIds:
        - Ref: LambdaSecurityGroup

额外注意事项

  • Lambda关联的安全组需要开放到MSK集群对应端口的出站规则:明文访问端口为9092,TLS加密访问端口为9094
  • MSK集群的安全组需要开放来自Lambda安全组的对应端口入站规则
  • 如果后续升级MSK的Kafka版本,注意保持Lambda中Kafka客户端版本和集群版本兼容

内容的提问来源于stack exchange,提问作者daesu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 12:18:03