Greengrass 连接器入门(控制台) - 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开发人员指南.

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

Greengrass 连接器入门(控制台)

此功能适用于Amazon IoT Greengrass核心 v1.7 及更高版本。

本教程介绍如何通过 Amazon Web Services Management Console 使用连接器。

使用连接器可加快开发生命周期。连接器是预先构建、可重复使用的模块,可以更加轻松地与服务、协议和资源进行交互。它们可以帮助您将业务逻辑更快地部署到 Greengrass 设备。有关更多信息,请参阅 使用 Greengrass 连接器与服务和协议集成

在本教程中,您将配置和部署Twilio 通知连接器。连接器接收 Twilio 消息信息作为输入数据,然后触发 Twilio 文本消息。下图中将显示数据流。

从 Lambda 函数到 Twilio 的数据流。

配置连接器后,您便可创建 Lambda 函数和订阅。

  • 该函数将评估来自温度传感器的模拟数据。它有条件地将 Twilio 消息信息发布到 MQTT 主题。这是连接器订阅的主题。

  • 该订阅允许函数发布到主题,并允许连接器接收来自该主题的数据。

Twilio 通知连接器需要 Twilio 身份验证令牌,才能与 Twilio API 进行交互。令牌是在 Amazon Secrets Manager 中创建且从组资源中引用的文本类型密钥。这样一来,Amazon IoT Greengrass 便可在 Greengrass 核心上创建密钥的本地副本,在该核心中,此类副本经过加密且可供连接器使用。有关更多信息,请参阅 将密钥部署到 Amazon IoT Greengrass 核心

本教程包含以下概括步骤:

完成本教程大约需要 20 分钟。

Prerequisites

要完成此教程,需要:

  • Greengrass 组和 Greengrass Core(v1.9.3 或更高版本)。要了解如何创建 Greengrass 组和核心,请参阅 开始使用 Amazon IoT Greengrass。“入门”教程还包含用于安装 Amazon IoT Greengrass Core 软件的步骤。

  • 安装在 Amazon IoT Greengrass 核心设备上的 Python 3.7。

  • Amazon IoT Greengrass必须配置为支持本地密钥,如Secret 要求

    注意

    此要求包括允许访问您的 Secrets Manager 密钥。如果您使用的是默认 Greengrass 服务角色,则 Greengrass 有权获取名称以Greengrass-

  • Twilio 账户 SID、身份验证令牌和支持 Twilio 的电话号码。创建 Twilio 项目后,项目控制面板上会显示这些值。

    注意

    您可以使用 Twilio 试用账户。如果您使用的是试用帐户,则必须将非 Twilio 收件人电话号码添加到已验证的电话号码列表中。有关更多信息,请参阅 。如何使用您的免费 Twilio 试用账户

第 1 步:创建 Secrets Manager 密码

在此步骤中,您将使用 Amazon Secrets Manager 控制台为 Twilio 身份验证令牌创建一个文本类型密钥。

  1. 登录到 Amazon Secrets Manager 控制台

    注意

    有关此过程的更多信息,请参阅步骤 1: 创建并存储密钥Amazon Secrets Manager中的Amazon Secrets Manager用户指南

  2. 选择存储新密钥

  3. Select secret type (选择密钥类型) 下,选择 Other type of secrets (其他密钥类型)

  4. 指定要为此密钥存储的键-值对,在明文选项卡上,输入您的 Twilio 身份验证令牌。删除所有 JSON 格式设置,然后仅输入令牌值。

    
                        在 Secrets Manager 控制台中指定密钥的值。
  5. 请确保为加密密钥保持选中 DefaultEncryptionKey,然后选择 Next (下一步)

    注意

    您不需要通过Amazon KMS如果您使用默认的Amazon密钥管理器在您的帐户中创建的托管密钥。

  6. 对于密钥名称,输入 greengrass-TwilioAuthToken,然后选择下一步

    注意

    默认情况下,Greengrass 服务角色允许Amazon IoT Greengrass获取密钥的值,其名称以Greengrass-。有关更多信息,请参阅密钥要求

  7. 本教程不需要轮换,因此,请选择 Disable automatic rotation (禁用自动轮换),然后选择 Next (下一步)

  8. Review (审核) 页上,审核您的设置,然后选择 Store (存储)

    接下来,在 Greengrass 组中创建一个引用该密钥的密钥资源。

第 2 步:将密钥资源添加到 Greengrass 组

在此步骤中,您将一个密钥资源 添加到 Greengrass 组。该资源是对上一步中创建的密钥的引用。

  1. 在Amazon IoT控制台的导航窗格中,选择Greengrass经典型 (V1)Groups

  2. 选择要将密钥资源添加到的组。

  3. 在组配置页面上,选择 Resources (资源),然后选择 Secret (密钥)。此选项卡显示属于该组的密钥资源。您可以从此选项卡添加、编辑和删除密钥资源。

    
                组的“Resources (资源)”页面上的“Secret (密钥)”选项卡。
    注意

    或者,在配置连接器或 Lambda 函数时,控制台允许您创建秘密资源和秘密资源。您可以从连接器的配置参数页面或 Lambda 函数的资源页.

  4. 选择 Add a secret resource (添加密钥资源)

  5. Add a secret resource to your group (向组中添加密钥资源) 页面上,选择 Select (选择),然后选择 greengrass-TwilioAuthToken

  6. Select labels (Optional) (选择标签 (可选)) 页面上,选择 Next (下一步)。AWSCURRENT 暂存标签表示最新版密钥。该标签始终包含在密钥资源中。

    注意

    本教程只需要 AWSCURRENT 标签。您可以视情况包括 Lambda 函数或连接器所需的标签。

  7. Name your secret resource (为密钥资源命名) 页面上,输入 MyTwilioAuthToken,然后选择 Save (保存)

第 3 步:将连接器添加到 Greengrass 组

在该步骤中,您将为Twilio 通知连接器并将其添加到组中。

  1. 在组配置页面上,选择 Connectors (连接器),然后选择 Add a connector (添加连接器)

    
                        突出显示了“Add a connector (添加连接器)”的“Connectors (连接器)”页面。
  2. Select a connector (选择连接器) 页面上,选择 Twilio Notifications (Twilio 通知),然后选择 Next (下一步)

  3. Configure parameters (配置参数) 页面上,执行以下操作:

    • 对于 Twilio auth token resource (Twilio 身份验证令牌资源),选择 MyTwilioAuthToken。这是上一步中所创建的密钥资源。

      注意

      选择该资源时,将为您填充 ARN of Twilio auth token secret (Twilio 身份验证令牌密钥的 ARN) 属性。

    • 对于 Default from phone number (默认的来电号码),输入您的支持 Twilio 的电话号码。

    • 对于 Twilio account SID (Twilio 账户 SID),输入您的 Twilio 账户 SID。

  4. 选择添加

第 4 步:创建 Lambda 函数部署程序包

要创建 Lambda 函数,您必须首先创建 Lambda 函数部署程序包包含函数代码和依赖项。Greengrass Lambda 函数需要Amazon IoT Greengrass核心开发工具包用于在核心环境中与 MQTT 消息进行通信和访问本地机密等任务。本教程将创建一个 Python 函数,因此您可以在部署包中使用 SDK 的 Python 版本。

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

  2. 解压缩下载的程序包以获取软件开发工具包。软件开发工具包是 greengrasssdk 文件夹。

  3. 将以下 Python 代码函数保存在名为 temp_monitor.py 的本地文件中。

    import greengrasssdk import json import random client = greengrasssdk.client('iot-data') # publish to the Twilio Notifications connector through the twilio/txt topic def function_handler(event, context): temp = event['temperature'] # check the temperature # if greater than 30C, send a notification if temp > 30: data = build_request(event) client.publish(topic='twilio/txt', payload=json.dumps(data)) print('published:' + str(data)) print('temperature:' + str(temp)) return # build the Twilio request from the input data def build_request(event): to_name = event['to_name'] to_number = event['to_number'] temp_report = 'temperature:' + str(event['temperature']) return { "request": { "recipient": { "name": to_name, "phone_number": to_number, "message": temp_report } }, "id": "request_" + str(random.randint(1,101)) }
  4. 将以下项目压缩到名为 temp_monitor_python.zip 的文件中。在创建 ZIP 文件时,仅包含代码和依赖项,而不包含文件夹。

    • temp_monitor.py。应用程序逻辑。

    • greengrasssdk。发布 MQTT 消息的 Python Greengrass Lambda 函数所需的库。

    此即 Lambda 函数部署软件包。

现在,创建 Lambda 函数,使用部署程序包。

第 5 步:创建 Lambda 函数Amazon Lambda控制台

在此步骤中,您将使用Amazon Lambda控制台创建 Lambda 函数,然后将其配置为使用您的部署程序包。接着,发布函数版本并创建别名。

  1. 首先,创建 Lambda 函数。

    1. 在 Amazon Web Services Management Console中,选择 Services (服务),然后打开 Amazon Lambda 控制台。

    2. 选择创建函数,然后选择从头开始创作

    3. Basic information (基本信息) 部分中,使用以下值:

      • 函数名称中,输入 TempMonitor

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

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

    4. 在页面底部,选择创建函数

  2. 接下来,注册处理程序并上传 Lambda 函数部署软件包。

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

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

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

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

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

    4. 选择保存

      注意

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

  3. 现在,发布 Lambda 函数的第一个版本并创建版本的别名

    注意

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

    1. Actions 菜单上,选择 Publish new version

    2. 对于 Version description (版本描述),输入 First version,然后选择 Publish (发布)

    3. TempMonitor: 1 配置页面上,从 Actions (操作) 菜单中选择 Create alias (创建别名)

    4. 创建新别名页面上,使用以下值:

      • 对于名称,输入 GG_TempMonitor

      • 对于 Version (版本),选择 1

      注意

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

    5. 选择创建

现在,您已准备就绪,可以将 Lambda 函数添加到 Greengrass 组。

第 6 步:将 Lambda 函数添加到 Greengrass 组

在该步骤中,您将 Lambda 函数添加到该组,然后配置其生命周期和环境变量。有关更多信息,请参阅 使用组特定的配置控制 Greengrass Lambda 函数的执行

  1. 在组配置页面上,选择 Lambdas,然后选择添加 Lambda

    
                突出显示“Lambdas”和“Add Lambda (添加 Lambda)”的组页面。
  2. 将 Lambda 添加到 Greengrass 组页面上,选择使用现有 Lambda

    
                突出显示“Use existing Lambda (使用现有 Lambda)”的“Add a Lambda to your Greengrass Group (将 Lambda 添加到 Greengrass 组)”页面。
  3. 在存储库的使用现有的 Lambda页面上,选择TempMonitor,然后选择下一步

  4. 在存储库的选择一个 Lambda 版本页面上,选择别名:GG_ 温度监视器,然后选择Finish

步骤 7:将订阅添加到 Greengrass 组

在该步骤中,您将添加一个订阅,使 Lambda 函数将输入数据发送到连接器。此连接器定义它订阅的 MQTT 主题,因此该订阅使用其中一个主题。这与示例函数发布到的主题相同。

对于本教程,您还可以创建订阅,以允许函数从 Amazon IoT 接收模拟温度读数,并允许 Amazon IoT 从连接器接收状态信息。

  1. 在组配置页面中,选择 Subscriptions (订阅),然后选择 Add Subscription (添加订阅)

    
                突出显示“Subscriptions (订阅)”和“Add Subscription (添加订阅)”的组页面。
  2. 选择您的源和目标页面,配置源和目标,如下所示:

    1. 对于选择源,选择 Lambda,然后选择 TempMonitor

    2. 适用于选择一个目标中,选择连接器,然后选择Twilio 通知

    3. 选择 Next

  3. 在存储库的使用主题筛选您的数据页面,适用于必需的主题语法中,选择twilio/txt,然后选择下一步

  4. 选择 Finish

  5. 重复步骤 1 至 4,以创建允许 Amazon IoT 将消息发布到该函数的订阅。

    1. 对于选择源,选择服务,然后选择 IoT Cloud

    2. 对于选择目标,选择 Lambda,然后选择 TempMonitor

    3. 对于 Topic filter (主题筛选条件),输入 temperature/input

  6. 重复步骤 1 至 4,以创建允许连接器将消息发布到 Amazon IoT 的订阅。

    1. 适用于选择源中,选择连接器,然后选择Twilio 通知

    2. 对于选择目标,选择服务,然后选择 IoT Cloud

    3. 对于主题筛选条件,已为您输入 twilio/message/status。这是连接器发布到的预定义主题。

步骤 8:部署 Greengrass 组

将组部署到核心设备。

  1. 确保将Amazon IoT Greengrass核心正在运行。根据需要在您的 Raspberry Pi 终端中运行以下命令。

    1. 要检查守护程序是否正在运行,请执行以下操作:

      ps aux | grep -E 'greengrass.*daemon'

      如果输出包含 root/greengrass/ggc/packages/ggc-version/bin/daemon 条目,则表示守护程序正在运行。

      注意

      路径中的版本取决于您的核心设备上安装的 Amazon IoT Greengrass 核心软件版本。

    2. 启动守护程序:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. 在组配置页面上,选择部署,然后从操作菜单中,选择部署

    
                突出显示“Deployments (部署)”和“Deploy (部署)”的组页面。
  3. 如果出现提示,请在配置设备搜索您的核心的方式页面上,选择自动检测

    这使得设备可以自动获取核心的连接信息,例如 IP 地址、DNS 和端口号。建议使用自动检测,不过 Amazon IoT Greengrass 也支持手动指定的终端节点。只有在首次部署组时,系统才会提示您选择发现方法。

    
                突出显示“Automatic detection (自动检测)”的“Configure how devices discover your core (配置设备搜索您的核心的方式)”页面。
    注意

    如果出现提示,则授予创建Greengrass 服务角色并将其与 Amazon Web Services 账户 在当前的 Amazon Web Services 区域 。此角色允许Amazon IoT Greengrass访问您的资源Amazon服务。

    Deployments (部署) 页面显示了部署时间戳、版本 ID 和状态。完成后,部署的状态应显示为 Successfully completed (成功完成)

    有关问题排查帮助,请参阅Amazon IoT Greengrass 故障排除

注意

Greengrass 组一次只能包含一个版本的连接器。有关升级连接器版本的信息,请参阅升级连接器版本

测试解决方案

  1. 在存储库的Amazon IoT控制台主页,选择测试

    
                左侧窗格Amazon IoT控制台。
  2. 适用于订阅主题,使用以下值,然后选择订阅。Twilio 通知连接器向此主题发布状态信息。

    属性

    订阅主题

    twilio/message/status

    MQTT 负载显示

    将负载显示为字符串

  3. 适用于向主题发布,使用以下值,然后选择发布调用函数。

    属性

    主题

    temperature/input

    Message

    recipient-name 替换为文本消息收件人的姓名,将 recipient-phone-number 替换为文本消息收件人的电话号码。示例:+12345000000

    { "to_name": "recipient-name", "to_number": "recipient-phone-number", "temperature": 31 }

    如果您使用的是试用帐户,则必须将非 Twilio 收件人电话号码添加到已验证的电话号码列表中。有关更多信息,请参阅 。验证您的个人电话号码

    如果成功,收件人会收到短信,控制台会显示success状态来自输出数据

    现在,将输入消息中的 temperature 更改为 29 并发布。由于温度小于 30,因此 TempMonitor 函数不会触发 Twilio 消息。

另请参阅