Conflunet Kafka 5.0.0 была установлена на AWS EC2 с публичным IP-адресом, скажем, 54.XX.XX.XX Открыт порт 9092 на машине EC2 с 0.0.0.0
В / 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
}
zip-пакет сделан локально, как показано ниже:
pip install confluent_kafka has been done in the same directory
zip -r iotstatesboto.zip iotstatesboto.py confluent*
Этот zip-файл загружен в функцию Lambda.Затем, когда функция «Тест» отправляет фиктивное сообщение, сначала появляется следующая ошибка:
:
{
"errorMessage": "Unable to import module 'iotstatesboto'"
}
и еще одна:
Unable to import module 'iotstatesboto': No module named 'confluent_kafka.cimpl'
Я установил имя обработчикаas "iotstatesboto.lambda_handler"
Любая подсказка о том, что может отсутствовать в шагах, чтобы заставить производителя из лямбда-функции записать в поток kakfa на EC2?