AWS IoT Greengrass Version 1 于 2023 年 6 月 30 日进入延长使用寿命阶段。有关更多信息,请参阅 AWS IoT Greengrass V1维护策略。在此日期之后,AWS IoT Greengrass V1 不再发布更新来提供新功能、功能增强、错误修复或安全补丁。在 AWS IoT Greengrass V1 上运行的设备不会受到干扰,并且将继续运行并连接到云。我们强烈建议您迁移到 AWS IoT Greengrass Version 2,从而添加重要的新功能并支持更多平台。
创建并打包 Lambda 函数
此模块中的 Python Lambda 函数示例使用适用于 Python 的 AWS IoT Greengrass 核心开发工具包发布 MQTT 消息。
在此步骤中,您:
-
将适用于 Python 的 AWS IoT Greengrass 核心开发工具包下载到您的计算机(而不是 AWS IoT Greengrass 核心设备)。
-
创建包含函数代码和依赖项的 Lambda 函数部署程序包。
-
使用 Lambda 控制台创建 Lambda 函数和上传部署程序包。
-
发布 Lambda 函数的版本并创建指向该版本的别名。
要完成本模块,必须在核心设备上安装 Python 3.7。
-
从 AWS IoT Greengrass Core 软件开发工具包下载页面,将适用于 Python 的 AWS IoT Greengrass Core 软件开发工具包下载到您的计算机上。
-
解压缩下载的程序包以获取 Lambda 函数代码和软件开发工具包。
本模块中的 Lambda 函数使用:
-
examples\HelloWorld
中的greengrassHelloWorld.py
文件。这是您的 Lambda 函数代码。该函数每 5 秒将两条可能的消息之一发布到hello/world
主题一次。 -
greengrasssdk
文件夹。这是软件开发工具包。
-
-
将
greengrasssdk
文件夹复制到包含greengrassHelloWorld.py
的HelloWorld
文件夹中。 -
要创建 Lambda 函数部署程序包,请将
greengrassHelloWorld.py
文件和greengrasssdk
文件夹保存到名为hello_world_python_lambda.zip
的压缩zip
文件。py
文件和greengrasssdk
文件夹必须位于该目录的根目录中。在类 UNIX 系统(包括 Mac 终端)上,您可以使用以下命令打包文件和文件夹:
zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
注意
根据您的发行版,可能需要先安装
zip
(例如,通过运行sudo apt-get install zip
)。您的发行版的安装命令可能不同。现在您已准备好创建您的 Lambda 函数和上传部署程序包。
-
打开 Lambda 控制台,选择创建函数。
-
选择从头开始创作。
-
将您的函数命名为
Greengrass_HelloWorld
并设置其余字段,如下所示:-
对于运行时系统,选择 Python 3.7。
-
对于权限,请保留默认设置。这将创建一个授予基本 Lambda 权限的执行角色。此角色未由 AWS IoT Greengrass 使用。
选择 Create function (创建函数)。
-
-
上传 Lambda 函数部署软件包:
-
在代码选项卡上的代码源下,选择上传自。从下拉列表中选择 .zip 文件。
-
选择上传,然后选择您的
hello_world_python_lambda.zip
部署包。然后,选择保存。 -
在函数的代码选项卡中,在运行时设置下选择编辑,然后输入以下值。
-
对于运行时系统,选择 Python 3.7。
-
对于处理程序,输入
greengrassHelloWorld.function_handler
。
-
-
选择保存。
注意
AWS Lambda 控制台上的测试按钮不适用于此功能。AWS IoT Greengrass Core 软件开发工具包不包含在 AWS Lambda 控制台中独立运行 Greengrass Lambda 函数所需的模块。这些模块(例如
greengrass_common
)是在函数部署到您的 Greengrass 核心之后提供给它们的。
-
-
发布 Lambda 函数:
-
在页面顶部的操作菜单上,选择发布新版本。
-
对于版本描述,输入
First version
,然后选择发布。
-
-
注意
Greengrass 组可以按别名(推荐)或版本引用 Lambda 函数。使用别名,您可以更轻松地管理代码更新,因为您在更新函数代码时,不必更改订阅表或组定义。相反,您只需将别名指向新的函数版本。
-
从页面顶部的操作菜单中,选择创建别名。
-
将别名命名为
GG_HelloWorld
,将版本设置为1
(对应于您刚刚发布的版本),然后选择保存。注意
AWS IoT Greengrass 不支持 $LATEST 版本的 Lambda 别名。
-