如何解决在AWS Lambda中使用confluent-kafka python库时出错
我正在尝试使用confluent-kafka python库通过lambda函数管理我的集群,但是该函数失败并显示以下错误:
"Unable to import module 'Test': No module named 'confluent_kafka.cimpl'"
我的要求。txt
requests
confluent-kafka
要创建zip文件,我将代码移到了虚拟环境的site-packages位置,并压缩了所有内容。
Python代码:
import confluent_kafka.admin
import requests
def lambda_handler(event,context):
print("Hello World")
我正在使用macOS10.X。在Linux上,我注意到pip install创建了一个单独的confluent_kafka.libs,该文件无法在Mac上创建
解决方法
我创建了所需的图层,并且可以确保其正常工作。
所使用的技术包括最近的 AWS博客中所述的 docker工具:
因此,对于这个问题,我进行了如下验证:
-
创建空文件夹,例如
mylayer
。 -
转到该文件夹并创建内容为{p>的
requirements.txt
文件
echo requests > requirements.txt
echo confluent-kafka >> requirements.txt
- 运行以下docker命令:
docker run -v "$PWD":/var/task "lambci/lambda:build-python3.8" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.8/site-packages/; exit"
- 以zip格式创建图层:
zip -r mylayer.zip python > /dev/null
-
在AWS控制台中基于
mylayer.zip
创建lambda层。不要忘记为Compatible runtimes
指定python3.8
。 -
使用以下lambda函数测试lambda中的图层:
import confluent_kafka.admin
import requests
def lambda_handler(event,context):
print(dir(confluent_kafka.admin))
print(dir(requests))
print("Hello World")
该函数正确执行:
['AdminClient','BrokerMetadata','CONFIG_SOURCE_DEFAULT_CONFIG','CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG','CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG','CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG','CONFIG_SOURCE_STATIC_BROKER_CONFIG','CONFIG_SOURCE_UNKNOWN_CONFIG','ClusterMetadata','ConfigEntry','ConfigResource','ConfigSource','Enum','KafkaException','NewPartitions','NewTopic','PartitionMetadata','RESOURCE_ANY','RESOURCE_BROKER','RESOURCE_GROUP','RESOURCE_TOPIC','RESOURCE_UNKNOWN','TopicMetadata','_AdminClientImpl','__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__path__','__spec__','concurrent','functools']
['ConnectTimeout','ConnectionError','DependencyWarning','FileModeWarning','HTTPError','NullHandler','PreparedRequest','ReadTimeout','Request','RequestException','RequestsDependencyWarning','Response','Session','Timeout','TooManyRedirects','URLRequired','__author__','__author_email__','__build__','__cake__','__copyright__','__description__','__license__','__title__','__url__','__version__','_check_cryptography','_internal_utils','adapters','api','auth','certs','chardet','check_compatibility','codes','compat','cookies','delete','exceptions','get','head','hooks','logging','models','options','packages','patch','post','put','request','session','sessions','ssl','status_codes','structures','urllib3','utils','warnings']
Hello World
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。