AWS Greengrass Lambda组件在导入GreengrassCoreIPCClientV2的Python时挂起。

0

【以下的问题经过翻译处理】 你好,我需要一些故障排除的帮助。

我正在运行Greengrassv2并构建一个lambda组件。目标运行时(greengrass核心)运行在树莓派(arm32v7)上。因此,我正在一个基于“arm32v7/python:3.9-slim-bullseye”的容器中创建lambda部署包。我的lambda部署包包含“_awscrt.cpython-39-arm-linux-gnueabihf.so”等文件,这让我认为我已经正确地编译了wheels。

现在我面临的问题 我的lambda函数组件按预期工作,直到我执行像from awsiot.greengrasscoreipc.clientv2 import GreengrassCoreIPCClientV2这样的导入操作。当我执行这个操作时,函数会挂起,没有报错,在组件日志中,导入之前的调试打印也会正确地显示出来。

我运行所有组件的最新版本,例如greengrass核心的版本是2.7.0。

组件配置中指定了“containerMode”:“GreengrassContainer”。

我还没有太多的调试信息,因为lambda组件日志很安静,并且greengrass.log非常愉快,它的最新行只是说明已经发布到本地PubSub主题(这触发了我的Lambda组件)。

如果我在AWS中执行lambda函数,我会立即收到一个错误:“No module named 'pycares._cares'”。<----这可以预料到,因为wheels没有为amazon linux2架构编译。

*我怀疑是关于Python版本的问题,我还没有检查运行时Greengrass使用的Python版本是哪个。但是树莓派正在全局使用pyenv设置Python 3.8.3。并且如上所述,我使用Python3.9编译AWS Greengrass Lambda组件在导入GreengrassCoreIPCClientV2的Python时挂起。

profile picture
专家
已提问 5 个月前7 查看次数
1 回答
0

【以下的回答经过翻译处理】 您好 @rikerik,

我强烈建议创建一个Greengrass v2自定义组件,而不是使用Greengrass Lambda来在Greengrass上运行您的代码。在Greengrass V2中,Lambdas是为向后兼容Greengrass v1而支持的。

为了帮助您入门,请查看此教程,教程的步骤5提供了一步步创建一个简单的python Hello World组件的说明。

Greengrass v2还提供了一个Greengrass开发工具包CLI,简化了将组件创建和部署到AWS Greengrass的过程。

与Lambdas相比,Greengrass组件作为操作系统进程而不是容器运行,使依赖管理更加容易。此外,您可以在Greengrass组件配方中添加设置命令以安装依赖项。

Greengrass组件还可以订阅本地PubSub主题,这里提供了一个python代码示例链接

希望这能帮到您。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则