创建并打包 Lambda 函数 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 Amazon IoT Greengrass V1 维护策略。在此日期之后,将 Amazon IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 Amazon IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 Amazon IoT Greengrass Version 2,这样可以添加重要的新功能支持其他平台

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

创建并打包 Lambda 函数

此模块中的 Python Lambda 函数示例使用适用于 Python 的 Amazon IoT Greengrass 核心开发工具包发布 MQTT 消息。

在此步骤中,您:

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

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

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

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

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

 

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

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

    本模块中的 Lambda 函数使用:

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

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

  3. greengrasssdk 文件夹复制到包含 greengrassHelloWorld.pyHelloWorld 文件夹中。

  4. 要创建 Lambda 函数部署程序包,请将 greengrassHelloWorld.py 文件和 greengrasssdk 文件夹保存到名为 hello_world_python_lambda.zip 的压缩 zip 文件。py 文件和 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 控制台,选择创建函数

  6. 选择从头开始编写

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

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

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

    选择 Create function(创建函数)。

  8. 上传 Lambda 函数部署软件包:

    1. 代码选项卡上的代码源下,选择上传自。从下拉列表中选择 .zip 文件

      
                “上传自”下拉列表中突出显示了.zip 文件。
    2. 选择上传,然后选择您的 hello_world_python_lambda.zip 部署包。然后,选择 Save (保存)

    3. 在函数的代码选项卡中,在运行时设置下选择编辑,然后输入以下值。

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

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

      
                                    “运行时设置”部分,其中“运行时”字段设置为“Python 3.7”,“处理程序”字段设置为“greengrassHelloWorld.function_handler”。
    4. 选择 Save(保存)。

      注意

      Amazon Lambda 控制台上的测试按钮不适用于此功能。Amazon IoT Greengrass Core 软件开发工具包不包含在 Amazon Lambda 控制台中独立运行 Greengrass Lambda 函数所需的模块。这些模块(例如 greengrass_common)是在函数部署到您的 Greengrass 核心之后提供给它们的。

  9. 发布 Lambda 函数:

    1. 在页面顶部的操作菜单上,选择发布新版本

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

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

    注意

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

    1. 从页面顶部的操作菜单中,选择创建别名

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

      注意

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

       

      
                                    “名称”字段设置为“GG_HelloWorld”、“版本”字段设置为 1 的“创建新别名”的屏幕截图。