创建并打包 Lambda 函数 - AWS IoT Greengrass

您正在查看 AWS AWS IoT Greengrass 版本 1 的文档。AWS IoT Greengrass 版本 2 是 AWS AWS IoT Greengrass 的最新主要版本。有关使用 AWS AWS IoT Greengrass 版本 2 的更多信息,请参阅 AWS AWS IoT Greengrass V2 开发人员指南

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建并打包 Lambda 函数

本模块中的示例 Python Lambda 函数使用适用于 Python AWS IoT Greengrass Core 开发工具包 的 来发布 MQTT 消息。

在此步骤中,您:

  • 将 适用于 Python 的 AWS IoT Greengrass Core 开发工具包 下载到您的计算机(而不是 AWS IoT Greengrass Core 设备)。

  • 创建包含函数代码和依赖项的 Lambda 函数部署程序包。

  • 使用 Lambda 控制台创建 Lambda 函数和上传部署程序包。

  • 发布 Lambda 函数的版本并创建指向该版本的别名。

要完成本模块,必须在核心设备上安装 Python 3.7。

 

  1. AWS IoT Greengrass Core 开发工具包 下载 页面,将 适用于 Python 的 AWS IoT Greengrass Core 开发工具包 下载到您的计算机。

  2. 解压缩下载的程序包以获取 Lambda 函数代码和软件开发工具包。

    本模块中的 Lambda 函数使用:

    • 中的 greengrassHelloWorld.py 文件examples\HelloWorld。 这是您的 Lambda 函数代码。该函数每 5 秒将两条可能的消息之一发布到 hello/world 主题一次。

    • greengrasssdk 文件夹。这是开发工具包。

  3. greengrasssdk 文件夹复制到包含 HelloWorldgreengrassHelloWorld.py. 文件夹中。

  4. 要创建 Lambda 函数部署程序包,请将 greengrassHelloWorld.pygreengrasssdk 文件夹保存到名为 的压缩zip文件中hello_world_python_lambda.zippy 文件和greengrasssdk文件夹必须位于 目录的根目录中。

    
                            显示 hello_word_python_lambda.zip 的压缩内容的屏幕截图。

    在类 UNIX 系统(包括 Mac 终端)上,您可以使用以下命令打包文件和文件夹:

    zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
    注意

    根据您的发行版,可能需要先安装 zip(例如,通过运行 sudo apt-get install zip). 您的发行版的安装命令可能不同。

    现在您已准备好创建您的 Lambda 函数和上传部署程序包。

  5. 打开 Lambda 控制台,选择 Create function (创建函数).

  6. 选择 Author from scratch.

  7. 将您的函数命名为 Greengrass_HelloWorld 并设置其余字段,如下所示:

    • 对于 Runtime (运行时),选择 Python 3.7.

    • 对于权限,请保留默认设置。这将创建一个授予基本 Lambda 权限的执行角色。(此角色未由 AWS IoT Greengrass 使用。)

    选择 Create function.

    
                            “Basic information (基本信息)”部分,其中“Function name (函数名称)”字段设置为“Greengrass_HelloWorld”,“Runtime (运行时)”字段设置为“Python 3.7”。
  8. 上传您的 Lambda 函数部署软件包:

    1. 在 Configuration (配置) 选项卡上的 Function code (函数代码) 下,选择 Actions。 从下拉列表中,选择 Upload a .zip file。 然后,选择 hello_world_python_lambda.zip

    2. Runtime settings (运行时设置) 下,选择 Edit。 在 Edit runtime settings (编辑运行时设置) 页面上,设置其余字段,如下所示:

      • 对于 Runtime (运行时),选择 Python 3.7.

      • 对于 Handler (处理程序),输入 greengrassHelloWorld.function_handler

      
                                    “Runtime settings (运行时设置)”部分,其中“Runtime (运行时)”字段设置为“Python 3.7”,“Handler (处理程序)”字段设置为greengrassHelloWorld.function_handler".
    3. 选择 Save.

      注意

      AWS Lambda 控制台上的测试键不可与该函数一同使用。AWS IoT Greengrass 核心 SDK 不包含在 AWS Lambda 控制台中独立运行 Greengrass Lambda 函数所需的模块。这些模块(例如 greengrass_common)会在被部署到您的 Greengrass 核心之后提供给这些函数。

  9. 发布 Lambda 函数:

    1. 从页面顶部的 Actions (操作) 菜单中,选择 Publish new version (发布新版本)。

      
                                    突出显示了“Publish new version (发布新版本)”的“Actions (操作)”菜单的屏幕截图。
    2. 对于 Version description (版本描述),输入 First version,然后选择 Publish (发布).

      
                                    “Version description (版本描述)”字段设置为“First version (第一个版本)”并且突出显示了“Publish (发布)”按钮的屏幕截图。
  10. 函数版本Lambda创建别名

    注意

    Greengrass 组可以按别名 (推荐) 或版本引用 Lambda 函数。通过使用别名,可以更轻松地管理代码更新,因为您在更新函数代码时无需更改订阅表或组定义。相反,您只是将别名指向新的函数版本。

    1. 从页面顶部的 Actions (操作) 菜单中,选择 Create alias (创建别名)。

      
                                    “Actions (操作)”菜单设置为“Create alias (创建别名)”的屏幕截图。
    2. 将别名命名为 GG_HelloWorld,将版本设置为 1(对应于您刚刚发布的版本),然后选择 Create (创建).

      注意

      AWS IoT Greengrass 不支持 $LATEST 版本的 Lambda 别名。

       

      
                                    “Name (名称)”字段设置为 HelloWorld (版本)”字段设置为 1 的“Create a new alias (创建新别名)”的屏幕截图。