无法从aws lambda函数中编写的生产者向aws ec2上的kafka发送消息

ohfgkhjo  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(633)

Conflune kafka 5.0.0已安装在aws ec2上,其公共ip地址为54.xx.xx.xx,在ec2机器上以0.0.0.0打开端口9092
在/etc/kafka/server.properties中,我已经公布了.listeners=plaintext://54.xx.xx.xx:9092和侦听器=plaintext://0.0.0.0:9092在/etc/kafka/producer.properties中我有bootstrap.servers=0.0.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
    }

本地制作的邮政包如下:

pip install confluent_kafka has been done in the same directory
zip -r iotstatesboto.zip iotstatesboto.py confluent*

此zip文件上载到lambda函数。当“test”函数发送一个伪消息时,会出现以下错误
第一:

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

还有一个是:

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

我已将处理程序名称设置为“iotstatesboto.lambda\u handler”
从lambda函数获取producer以写入ec2上的kakfa流,这些步骤中可能缺少什么线索?

ovfsdjhp

ovfsdjhp1#

使用aws lambda时,必须手动提供所有库,即将它们添加到lambda函数代码所使用的zip中。您还必须添加所有共享对象库(如果有的话)。
在本例中,awslambda为您提供了由python标准库+boto3组成的python环境,因此没有其他lib。

相关问题