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
EXPERTE
gefragt vor 6 Monaten8 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen