无法从AWS Lambda函数编写的生产者在AWS EC2上向kafka发送消息

2024-09-30 12:21:45 发布

您现在位置:Python中文网/ 问答频道 /正文

Confluent Kafka 5.0.0已安装在AWS EC2上,其公共IP为54。二十、 XX.XX号 用0.0.0.0打开EC2机器上的端口9092

在/etc/kafka/服务器.属性我有adverted.listeners=纯文本://54。二十、 XX.XX:9092还有听众=明文://0.0.0.0:9092个 在/etc/kafka/生产者.属性我有bootstrap.servers=00.0.0:9092

本地文件iotstatesboto.py已写如下,它有汇合生产者代码:

from confluent_kafka import Producer
import json

broker = '54.XX.XX.XX'
topic = 'mytopic'

def delivery_report(err, msg):
    if err is not None:
        print('Message delivery failed: {}'.format(err))
    else:
        print('Message delivered to {}'.format(msg.topic()))

def lambda_handler(event, context): 
    p = Producer({'bootstrap.servers': broker})
    message = json.dumps(event)
    print(message)
    p.produce(topic, message.encode('utf-8'), callback=delivery_report)
    return { 
        'message' : message
    }  

zip包在本地制作,如下所示:

^{pr2}$

此zip文件上载到Lambda函数。 然后当“Test”函数发送一个伪消息时,出现以下错误

第一个:

{
  "errorMessage": "Unable to import module 'iotstatesboto'"
}

还有一个是:

Unable to import module 'iotstatesboto': No module named 'confluent_kafka.cimpl'

我已将处理程序名称设置为“iotstatesboto.lambda_处理程序““

有没有线索,在这些步骤中,从lambda函数中获取producer来写入EC2上的kakfa stream?在


Tags: kafkatolambda函数importmessagetopicetc
1条回答
网友
1楼 · 发布于 2024-09-30 12:21:45

使用AWS Lambda时,必须手动提供所有库,即将它们添加到Lambda函数代码所使用的zip中。您还必须添加所有共享对象库(如果有的话)。在

在本例中,awslambda为您提供了python环境,它由python标准库+Boto3组成,因此没有其他lib。在

相关问题 更多 >

    热门问题