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

您正在查看Amazon IoT Greengrass Version 1.Amazon IoT Greengrass Version 2是最新的主要版本Amazon IoT Greengrass. 有关使用Amazon IoT Greengrass V2,请参阅Amazon IoT Greengrass Version 2开发人员指南.

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

创建并打包 Lambda 函数

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

在此步骤中,您:

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

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

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

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

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

 

  1. Amazon IoT Greengrass核心开发工具包下载页面,下载Amazon IoT Greengrass核心软件开发工具包到您的计算机。

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

    本模块中的 Lambda 函数使用:

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

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

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

  4. 要创建 Lambda 函数部署软件包,请将greengrassHelloWorld.pygreengrasssdk文件夹添加到压缩zip文件名为hello_world_python_lambda.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. 选择 Author from scratch

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

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

    • 适用于Permissions (权限),请保留默认设置。这将创建一个授予基本 Lambda 权限的执行角色。不使用该角色Amazon IoT Greengrass.

    选择 Create function(创建函数)。

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

    1. 在存储库的代码选项卡,在源代码中,选择正在从. 从下拉列表中,选择.zip 文件.

      
                突出显示 .zip 文件的 “从上传” 下拉菜单。
    2. 选择上传,然后选择您的hello_world_python_lambda.zip部署程序包。然后,选择 Save (保存)

    3. 在存储库的代码选项卡,在Runtime 设置中,选择编辑,然后输入以下值。

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

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

      
                                    “Runtime (运行时设置)” 部分,其中 “Runtime (运行时)” 字段设置为 “Python 3.7”,“处理程序” 字段设置为 “GreengrassWorld。函数处理程序”。
    4. 选择 Save

      注意

      这些区域有:测试按钮Amazon Lambda控制台与此函数一起使用时不起作用。这些区域有:Amazon IoT Greengrass核心 SDK 不包含独立运行 Greengrass Lambda 函数所需的模块Amazon Lambda控制台。这些模块(例如greengrass_common)在这些函数部署到您的 Greengrass 核心后提供给这些函数。

  9. 发布 Lambda 函数:

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

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

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

    注意

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

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

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

      注意

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

       

      
                                    “名称” 字段设置为 “GGG_HelloWorld”、“版本” 字段设置为 1 的 “版本” 屏幕截图。