为了账号安全,请及时绑定邮箱和手机立即绑定

将 confluence-kafka python 库与 AWS lambda 一起使用时出错

将 confluence-kafka python 库与 AWS lambda 一起使用时出错

MM们 2023-07-18 10:40:39
我尝试使用confluence-kafka python 库通过 lambda 函数管理我的集群,但该函数失败并出现错误:"Unable to import module 'Test': No module named 'confluent_kafka.cimpl'"我的要求.txtrequestsconfluent-kafka为了创建 zip 文件,我将代码移动到虚拟环境的 site-packages 位置并压缩所有内容。Python代码:import confluent_kafka.adminimport requestsdef lambda_handler(event, context):    print("Hello World")我使用的是 macOS 10.X。在 Linux 上,我注意到 pip install 创建了一个单独的 confluence_kafka.libs,它不会在 mac 上创建
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我创建了所需的图层并可以验证它是否有效

使用的技术包括最近的AWS 博客中描述的docker 工具

  • 如何使用 Docker 模拟 Lambda 环境创建 Lambda 层?

于是针对这个问题,我验证如下:

  1. 创建空文件夹,例如mylayer.

  2. 转到该文件夹并创建requirements.txt包含以下内容的文件

echo requests > requirements.txt
echo confluent-kafka >> requirements.txt
  1. 运行以下 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"
  1. 创建图层为 zip:

zip -r mylayer.zip python > /dev/null
  1. mylayer.zip在AWS控制台中创建基于的lambda层。不要忘记指定Compatible runtimespython3.8.

  2. 使用以下 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__', '__builtins__', '__cached__', '__cake__', '__copyright__', '__description__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__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


查看完整回答
反对 回复 2023-07-18
?
慕的地10843

TA贡献1785条经验 获得超8个赞

即使在正确设置图层后我也遇到了这个问题。我能够通过将我的层和函数设置为使用架构 x86_64 来解决这个问题



查看完整回答
反对 回复 2023-07-18
  • 2 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信