AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 AWS IoT Greengrass 配置 Lambda 函数

现在,您已准备好为 AWS IoT Greengrass 配置您的 Lambda 函数。在此步骤中,您还可以配置订阅,以允许 Lambda 函数与 AWS IoT 通信并为 Greengrass 组配置本地日志记录。

  1. 在 AWS IoT 控制台中的 Greengrass 下,选择 Groups (组),然后选择您在模块 2 中创建的组。

  2. 在组配置页面上,选择 Lambdas,然后选择 Add Lambda

    
                            突出显示“Lambdas”和“Add Lambda (添加 Lambda)”的组页面。
  3. 选择 Use existing Lambda

    
                            突出显示了“Use existing Lambda (使用现有的 Lambda)”按钮的“Add a Lambda to your Greengrass Group (将 Lambda 添加到 Greengrass 组)”的屏幕截图。
  4. 搜索您在上一步中创建的 Lambda 的名称 (Greengrass_HelloWorld,而不是别名名称),选择它,然后选择 Next (下一步)

    
                            突出显示了“Greengrass_HelloWorld”和“Next (下一步)”按钮的“Use existing Lambda (使用现有的 Lambda)”的屏幕截图。
  5. 对于版本,选择 Alias: GG_HelloWorld (别名:GG_HelloWorld),然后选择 Finish。您应该在您的组中看到 Greengrass_HelloWorld Lambda 函数,使用 GG_HelloWorld 别名。

  6. 选择省略号 (),然后选择编辑配置

    
                            突出显示了省略号以及“Edit Configuration (编辑配置)”的“MyFirstGroup”的屏幕截图。
  7. 组特定的 Lambda 配置页面上,进行以下更改:

    • 超时设置为 25 秒。此 Lambda 函数在每次调用前会休眠 20 秒。

    • 对于 Lambda 生命周期,选择 Make this function long-lived and keep it running indefinitely (使此函数长时间生存,保持其无限期运行)

     

    
                            选择了“25”(秒) 和“Make this function long-lived and keep it running indefinitely (使此函数长时间生存,保持其无限期运行)”单选按钮的配置页面的屏幕截图。

    注意

    长时间生存的 Lambda 函数在 AWS IoT Greengrass 启动后自动启动并在自己的容器(或沙盒)中保持运行。这与按需 Lambda 函数相反,后者在调用时启动,并在没有要执行的任务时停止。有关更多信息,请参阅Greengrass Lambda 函数的生命周期配置

  8. 为所有其他字段保留默认值(如 Run as (运行为)Containerization (容器化)Input payload data type (输入负载数据类型)),然后选择 Update (更新) 以保存您的更改。有关 Lambda 函数属性的信息,请参阅使用组特定配置控制 Greengrass Lambda 函数的执行

    接下来,创建一个允许 Lambda 向 AWS IoT 发送MQTT 消息的订阅。

    Greengrass Lambda 函数可以与以下对象交换 MQTT 消息:

    该组使用订阅来控制这些实体可以如何互相通信。订阅提供可预测的交互和一层安全性。

    订阅由源、目标和主题组成。源是消息的发起方,目标是消息的目的地。主题允许您筛选从源发送到目标的数据。源或目标可以是 Greengrass 设备、Lambda 函数、连接器、设备影子或 AWS IoT。

    注意

    订阅是定向的,也就是消息流为特定方向:从源流到目标。要允许双向通信,您必须设置两个订阅。

    Greengrass_HelloWorld Lambda 函数只将消息发送到 AWS IoT 中的 hello/world 主题,如以下 greengrassHelloWorld.py 代码段中所示:

    def greengrass_hello_world_run(): if not my_platform: client.publish(topic='hello/world', payload='Hello world! Sent from Greengrass Core.') else: client.publish(topic='hello/world', payload='Hello world! Sent from Greengrass Core running on platform: {}'.format(my_platform)) Timer(5, greengrass_hello_world_run).start()

    由于 Greengrass_HelloWorld Lambda 函数只将消息发送到 AWS IoT 中的 hello/world 主题,因此您只需要创建一个从 Lambda 函数到 AWS IoT 的订阅,如下文所示。

  9. 在组配置页面中,选择订阅,然后选择添加第一个订阅

    
                            突出显示了“Subscription (订阅)”和“Add your first Subscription (添加第一个订阅)”的“Group configuration (组配置)”页面的屏幕截图。
  10. 选择源中,选择选择。然后,在 Lambdas 选项卡上,选择 Greengrass_HelloWorld 作为源。

    
                            突出显示了“Lambdas”和“Greengrass_HelloWorld”的“Select a source (选择源)”页面的屏幕截图。
  11. 对于选择目标,选择选择。然后,在服务选项卡上,选择 IoT 云,然后选择下一步

    
                            突出显示了“Services (服务)”选项卡、“IoT Cloud (IoT 云)”和“Next (下一步)”按钮的“Select a target (选择目标)”区域。
  12. 对于 Topic filter (主题筛选条件),输入 hello/world,然后选择 Next (下一步)

    
                            “Topic filter (主题筛选条件)”下突出显示了“hello/world”的屏幕截图。
  13. 选择 Finish (完成)

  14. 配置组的日志记录设置。在本教程中,您将配置 AWS IoT Greengrass 系统组件和用户定义的 Lambda 函数,以将日志写入核心设备的文件系统。有关更多信息,请参阅 利用 AWS IoT Greengrass 日志进行监控

    1. 在组配置页面上,选择 Settings (设置)

    2. 对于 Local logs configuration (本地日志配置),选择 Edit (编辑)

    3. Configure Group logging (配置组日志记录) 页面上,选择 Add another log type (添加其他日志类型)。

    4. 对于事件源,选择 User Lambdas (用户 Lambdas)Greengrass system (Greengrass 系统),然后选择 Update (更新)

    5. 保留日志记录级别和磁盘空间限制的默认值,然后选择 Save (保存)