

终止支持通知：2026 年 10 月 7 日， AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# Greengrass 连接器入门（控制台）
<a name="connectors-console"></a>

此功能适用于 AWS IoT Greengrass 酷睿 v1.7 及更高版本。

本教程介绍如何使用 AWS 管理控制台 来处理连接器。

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

在本教程中，您将配置和部署 [ Twilio 通知](twilio-notifications-connector.md)连接器。连接器接收 Twilio 消息信息作为输入数据，然后触发 Twilio 文本消息。下图中将显示数据流。

![\[从 Lambda 函数到 Twilio 通知连接器再到 Twilio 的数据流。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/connectors/twilio-solution.png)


配置连接器后，您便可创建 Lambda 函数和订阅。
+ 该函数将评估来自温度传感器的模拟数据。它有条件地将 Twilio 消息信息发布到 MQTT 主题。这是连接器订阅的主题。
+ 该订阅允许函数发布到主题，并允许连接器接收来自该主题的数据。

Twilio 通知连接器需要 Twilio 身份验证令牌，才能与 Twilio API 进行交互。该令牌是在群组资源中创建 AWS Secrets Manager 和引用的文本类型密钥。这样就可以 AWS IoT Greengrass 在 Greengrass 内核上创建密钥的本地副本，在那里对其进行加密并可供连接器使用。有关更多信息，请参阅 [将机密部署到核 AWS IoT Greengrass 心](secrets.md)。

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

1. [创建 Secrets Manager 密钥](#connectors-console-create-secret)

1. [将密钥资源添加到组](#connectors-console-create-resource)

1. [将连接器添加到组](#connectors-console-create-connector)

1. [创建 Lambda 函数部署程序包](#connectors-console-create-deployment-package)

1. [创建 Lambda 函数](#connectors-console-create-function)

1. [将函数添加到组](#connectors-console-create-gg-function)

1. [将订阅添加到组](#connectors-console-create-subscription)

1. [部署组](#connectors-console-create-deployment)

1. [测试解决方案](#connectors-console-test-solution)

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

## 先决条件
<a name="connectors-console-prerequisites"></a>

要完成此教程，需要：
+ Greengrass 组和 Greengrass Core（v1.9.3 或更高版本）。要了解如何创建 Greengrass 组和核心，请参阅 [入门 AWS IoT Greengrass](gg-gs.md)。“入门”教程还包含用于安装 AWS IoT Greengrass Core 软件的步骤。
+ Python 3.7 安装在 AWS IoT Greengrass 核心设备上。
+  AWS IoT Greengrass 必须配置为支持本地密钥，如[密钥要求](secrets.md#secrets-reqs)中所述。
**注意**  
此要求包括允许访问您的 Secrets Manager 密钥。如果使用的是默认 Greengrass 服务角色，则 Greengrass 有权获得名称以 *greengrass-* 开头的密钥的值。
+ Twilio 账户 SID、身份验证令牌和支持 Twilio 的电话号码。创建 Twilio 项目后，项目控制面板上会显示这些值。
**注意**  
您可以使用 Twilio 试用账户。如果您使用的是试用账号，则必须将非 Twilio 收件人的电话号码添加到经过验证的电话号码列表中。 有关更多信息，请参阅[如何使用您的免费 Twilio 试用账户](https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account)。

## 步骤 1：创建 Secrets Manager 密钥
<a name="connectors-console-create-secret"></a>

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

1. <a name="create-secret-step-signin"></a>登录 [AWS Secrets Manager 控制台](https://console.aws.amazon.com/secretsmanager/)。
**注意**  
有关此过程的更多信息，请参阅*AWS Secrets Manager 用户指南*中的[步骤 1：在 AWS Secrets Manager中创建和存储密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html)。

1. <a name="create-secret-step-create"></a>选择**存储新密钥**。

1. <a name="create-secret-step-othertype"></a>在 **选择密钥类型** 下，选择 **其他密钥类型**。

1. **在 “指定要为此密钥存储的 key/value 配对**” 下，在 **Plaintext 选项卡上，输入您的 Twilio 身份验证令牌**。删除所有 JSON 格式设置，然后仅输入令牌值。

1. <a name="create-secret-step-encryption"></a>为加密密钥保留选中 **aws/secretsmanager**，然后选择**下一步**。
**注意**  
 AWS KMS 如果您使用 Secrets Manager 在账户中创建的默认 AWS 托管密钥，则不会向您收费。

1. 对于**密钥名称**，输入 **greengrass-TwilioAuthToken**，然后选择**下一步**。
**注意**  
*默认情况下，Greengrass 服务角色 AWS IoT Greengrass 允许获取名称以 greengrass-开头的机密的值。*有关更多信息，请参阅[密钥要求](secrets.md#secrets-reqs)。

1. <a name="create-secret-step-rotation"></a>本教程不需要轮换，因此，请选择“禁用自动轮换”，然后选择**下一步**。

1. <a name="create-secret-step-review"></a>在**审核**页上，审核您的设置，然后选择**存储**。

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

## 步骤 2：将密钥资源添加到 Greengrass 组
<a name="connectors-console-create-resource"></a>

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

1. <a name="console-gg-groups"></a>**在 AWS IoT 控制台导航窗格的**管理**下，展开 **Greengrass** 设备，然后选择群组 (V1)。**

1. <a name="create-secret-resource-step-choosegroup"></a>选择要将密钥资源添加到的组。

1. <a name="create-secret-resource-step-secretstab"></a>在组配置页面上，选择**资源**选项卡，然后向下滚动到**密钥**部分。**密钥**部分显示从属于该组的密钥资源。您可以从此部分添加、编辑和删除密钥资源。
**注意**  
或者，控制台允许您在配置连接器或 Lambda 函数时创建密钥和密钥资源。您可以从连接器的**配置参数**页面或 Lambda 函数的**资源**页面执行此操作。

1. <a name="create-secret-resource-step-addsecretresource"></a>在**密钥**部分下选择**添加**。

1. 在**添加密钥资源**页面，在**资源名称**中输入 **MyTwilioAuthToken**。

1. 对于**秘密**，选择 **greengr** ass-。TwilioAuthToken

1. <a name="create-secret-resource-step-selectlabels"></a>在 **“选择标签（可选）**” 部分中， AWSCURRENT 暂存标签表示密钥的最新版本。该标签始终包含在密钥资源中。
**注意**  
本教程只需要 AWSCURRENT 标签。您可以视情况包括 Lambda 函数或连接器所需的标签。

1. 选择**添加资源**。

## 步骤 3：将连接器添加到 Greengrass 组
<a name="connectors-console-create-connector"></a>

在此步骤中，您将为 [Twilio 通知连接器](twilio-notifications-connector.md)配置参数，并将其添加到组。

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

1. 在**添加连接器**页面上，选择 **Twilio Notifications**。

1. 选择 版本。

1. 在**配置**部分中：
   + 对于 **Twilio 身份验证令牌资源**，输入上一步中创建的资源。
**注意**  
输入该资源时，将为您填充 **Twilio 身份验证令牌密钥的 ARN** 属性。
   + 对于 **Default from phone number (默认的来电号码)**，输入您的支持 Twilio 的电话号码。
   + 对于 **Twilio account SID (Twilio 账户 SID)**，输入您的 Twilio 账户 SID。

1. 选择**添加资源**。

## 步骤 4：创建 Lambda 函数部署程序包
<a name="connectors-console-create-deployment-package"></a>

要创建 Lambda 函数，您必须先创建一个包含函数代码和依赖项的 Lambda 函数*部署包*。Greengrass Lambda 函数需要 [AWS IoT Greengrass Core 软件开发工具包](lambda-functions.md#lambda-sdks-core)来执行各项任务，例如在核心环境中与 MQTT 消息通信和访问本地机密等。本教程将创建一个 Python 函数，因此您需要在部署包中使用 Python 版本的软件开发工具包。

1. <a name="download-ggc-sdk"></a> 从[AWS IoT Greengrass 核心软件开发工具包](what-is-gg.md#gg-core-sdk-download)下载页面，将适用于 Python 的 AWS IoT Greengrass 酷睿 SDK 下载到你的电脑上。

1. <a name="unzip-ggc-sdk"></a>解压缩下载的程序包以获取软件开发工具包。软件开发工具包是 `greengrasssdk` 文件夹。

1. 将以下 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))
       }
   ```

1. 将以下项目压缩到名为 `temp_monitor_python.zip` 的文件中。在创建 ZIP 文件时，仅包含代码和依赖项，而不包含文件夹。
   + **temp\$1monitor.py**。应用程序逻辑。
   + **greengrasssdk**。发布 MQTT 消息的 Python Greengrass Lambda 函数所需的库。

   此即 Lambda 函数部署程序包。

现在，创建一个使用部署程序包的 Lambda 函数。

## 步骤 5：在控制台中创建 Lambda 函数 AWS Lambda
<a name="connectors-console-create-function"></a>

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

1. 首先，创建 Lambda 函数。

   1. <a name="lambda-console-open"></a>在中 AWS 管理控制台，选择**服务**，然后打开 AWS Lambda 控制台。

   1. <a name="lambda-console-create-function"></a>选择 **创建函数**，然后选择 **从头开始创作**。

   1. 在**基本信息**部分中，使用以下值：
      + 对于**函数名称**，请输入 **TempMonitor**。
      + 对于**运行时系统**，选择 **Python 3.7**。
      + 对于**权限**，请保留默认设置。这将创建一个授予基本 Lambda 权限的执行角色。此角色未被使用 AWS IoT Greengrass。

   1. <a name="lambda-console-save-function"></a>在页面底部，选择**创建函数**。

1. 接下来，注册处理程序并上传您的 Lambda 函数部署程序包。

   1. <a name="lambda-console-upload"></a>在**代码**选项卡上的**代码源**下，选择**上传自**。从下拉列表中选择 **.zip 文件**。  
![\[“上传自”下拉列表中突出显示了.zip 文件。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. 选择**上传**，然后选择您的 `temp_monitor_python.zip` 部署包。然后，选择**保存**。

   1. <a name="lambda-console-runtime-settings-para"></a>在函数的**代码**选项卡中，在**运行时设置**下选择**编辑**，然后输入以下值。
      + 对于**运行时系统**，选择 **Python 3.7**。
      + 对于**处理程序**，输入 **temp\$1monitor.function\$1handler**。

   1. <a name="lambda-console-save-config"></a>选择**保存**。
**注意**  
 AWS Lambda 主机上的 “**测试**” 按钮不适用于此功能。 AWS IoT Greengrass 核心软件开发工具包不包含在控制台中独立运行 Greengrass Lambda 函数所需的模块。 AWS Lambda 这些模块（例如 `greengrass_common`）是在函数部署到您的 Greengrass 核心之后提供给它们的。

1. 现在，发布 Lambda 函数的第一个版本并创建[此版本的别名](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)。
**注意**  
Greengrass 组可以按别名（推荐）或版本引用 Lambda 函数。使用别名，您可以更轻松地管理代码更新，因为您在更新函数代码时，不必更改订阅表或组定义。相反，您只需将别名指向新的函数版本。

   1. <a name="shared-publish-function-version"></a>在**操作**菜单上，选择**发布新版本**。

   1. <a name="shared-publish-function-version-description"></a>对于**版本描述**，输入 **First version**，然后选择**发布**。

   1. 在**TempMonitor:1** 配置页面上，从 “**操作**” 菜单中选择 “**创建别名**”。

   1. 在**创建新别名**页面上，使用以下值：
      + 对于**名称**，输入 **GG\$1TempMonitor**。
      + 对于**版本**，选择 **1**。
**注意**  
AWS IoT Greengrass **不支持 \$1LATEST 版本的 Lambda 别名。**

   1. 选择**创建**。

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

## 步骤 6：将 Lambda 函数添加到 Greengrass 组
<a name="connectors-console-create-gg-function"></a>

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

1. <a name="choose-add-lambda"></a>在组配置页面上，选择**Lambda 函数**选项卡。

1. 在**我的 Lambda 函数**部分下，选择**添加**。

1. 在**添加 Lambda 函数**页面上，选择您**TempMonitor**的 Lambda 函数。

1. 对于 **Lambda 函数版本**，请选择**别名：**GG\$1。TempMonitor

1. 选择**添加 Lambda 函数**。

## 步骤 7：将订阅添加到 Greengrass 组
<a name="connectors-console-create-subscription"></a>

<a name="connectors-how-to-add-subscriptions-p1"></a>在该步骤中，您将添加一个订阅，使 Lambda 函数将输入数据发送到连接器。此连接器定义它订阅的 MQTT 主题，因此该订阅使用其中一个主题。这与示例函数发布到的主题相同。

<a name="connectors-how-to-add-subscriptions-p2"></a>在本教程中，您还可以创建订阅，允许该函数接收来自连接器的模拟温度读数， AWS IoT 并 AWS IoT 允许从连接器接收状态信息。

1. <a name="shared-subscriptions-addsubscription"></a>在组配置页面中，选择**订阅**选项卡，然后选择**添加订阅**。

1. 在**创建订阅**页面中，按如下所述配置源和目标：

   1. 对于**源类型**，选择 **Lambda 函数**，然后选择。**TempMonitor**

   1. 对于**目标类型**，选择**连接器**，然后选择 **Twilio Notifications**。

1. 对于**主题筛选条件**，输入 **twilio/txt**。

1. 选择**创建订阅**。

1. 重复步骤 1-4，创建允许 AWS IoT 向函数发布消息的订阅。

   1. 在**源类型**中，选择**服务**，然后选择 **IoT 云**。

   1. 对于**选择目标**，选择 **Lambda 函数**，然后选择。**TempMonitor**

   1. 对于 **Topic filter (主题筛选条件)**，输入 **temperature/input**。

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

   1. 对于**源类型**，选择**连接器**，然后选择 **Twilio Notifications**。

   1. 对于**目标类型**，选择**服务**，然后选择 **IoT 云**。

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

## 步骤 8：部署 Greengrass 组
<a name="connectors-console-create-deployment"></a>

将组部署到核心设备。

1. <a name="shared-deploy-group-checkggc"></a>确保 AWS IoT Greengrass 核心正在运行。根据需要在您的 Raspberry Pi 终端中运行以下命令。

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

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

      如果输出包含 `root` 的 `/greengrass/ggc/packages/ggc-version/bin/daemon` 条目，则表示进程守护程序正在运行。
**注意**  
路径中的版本取决于 AWS IoT Greengrass 核心设备上安装的 Core 软件版本。

   1. 启动进程守护程序：

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. <a name="shared-deploy-group-deploy"></a>在组配置页面上，选择**部署**。

1. <a name="shared-deploy-group-ipconfig"></a>

   1. 在 **Lambda 函数**选项卡的**系统 Lambda 函数**部分下，选择 **IP 检测器**，再选择**编辑**。

   1. 在**编辑 IP 检测器设置**对话框中，选择**自动检测和覆盖 MQTT 代理端点**。

   1. 选择**保存**。

      这使得设备可以自动获取核心的连接信息，例如 IP 地址、DNS 和端口号。建议使用自动检测，但 AWS IoT Greengrass 也支持手动指定的端点。只有在首次部署组时，系统才会提示您选择发现方法。
**注意**  
如果出现提示，请授予创建 [Greengrass 服务角色并将其与当前](service-role.md)角色关联的权限。 AWS 账户 AWS 区域此角色 AWS IoT Greengrass 允许访问您在 AWS 服务中的资源。

      **部署**页面显示了部署时间戳、版本 ID 和状态。完成后，部署的状态应显示为 **已完成**。

      有关问题排查帮助，请参阅[故障排除 AWS IoT Greengrass](gg-troubleshooting.md)。

**注意**  
<a name="one-conn-version"></a>Greengrass 组在一个时间上只能包含一个版本的连接器。有关升级连接器版本的信息，请参阅[升级连接器版本](connectors.md#upgrade-connector-versions)。

## 测试解决方案
<a name="connectors-console-test-solution"></a>

1. <a name="choose-test-page"></a>在 AWS IoT 主机主页上，选择 “**测试**”。

1. 对于**订阅主题**，请使用以下值，然后选择**订阅**。Twilio 通知连接器向此主题发布状态信息。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/connectors-console.html)

1. 对于**发布到主题**，请使用以下值，然后选择**发布** 来调用函数。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/connectors-console.html)

   如果成功，收件人将收到短信，控制台将在[输出数据](twilio-notifications-connector.md#twilio-notifications-connector-data-output)中显示 `success` 状态。

   现在，将输入消息中的 `temperature` 更改为 **29** 并发布。由于此值小于 30，因此该 TempMonitor 函数不会触发 Twilio 消息。

## 另请参阅
<a name="connectors-console-see-also"></a>
+ [使用 Greengrass 连接器与服务和协议集成](connectors.md)
+  [AWS提供的 Greengrass 连接器](connectors-list.md)