

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

# 旧版订阅路由器


旧版订阅路由器 (`aws.greengrass.LegacySubscriptionRouter`) 管理 Greengrass 核心设备上的订阅。订阅是 Amazon IoT Greengrass V1 的一项功能，它定义了 Lambda 函数可用于在核心设备上进行 MQTT 消息传送的主题。有关更多信息，请参阅 *Amazon IoT Greengrass V1 开发人员指南*中的 [MQTT 消息传递工作流程中的托管订阅](https://docs.amazonaws.cn/greengrass/v1/developerguide/gg-sec.html#gg-msg-workflow)。

您可以使用此组件启用对使用 C Amazon IoT Greengrass ore SDK 的连接器组件和 Lambda 函数组件的订阅。

**注意**  <a name="legacy-subscription-router-requirement-note"></a>
只有当您的 Lambda 函数使用 Amazon IoT Greengrass 核心软件开发工具包中的`publish()`函数时，才需要使用旧版订阅路由器组件。如果您更新 Lambda 函数代码以使用 Amazon IoT Device SDK V2 中的进程间通信 (IPC) 接口，则无需部署旧版订阅路由器组件。有关更多信息，请参阅以下[进程间通信](interprocess-communication.md)服务：  
[发布/订阅本地消息](ipc-publish-subscribe.md)
[发布/订阅 Amazon IoT Core MQTT 消息](ipc-iot-core-mqtt.md)

**Topics**
+ [

## 版本
](#legacy-subscription-router-component-versions)
+ [

## Type
](#legacy-subscription-router-component-type)
+ [

## 操作系统
](#legacy-subscription-router-component-os-support)
+ [

## 要求
](#legacy-subscription-router-component-requirements)
+ [

## 依赖项
](#legacy-subscription-router-component-dependencies)
+ [

## 配置
](#legacy-subscription-router-component-configuration)
+ [

## 本地日志文件
](#legacy-subscription-router-component-log-file)
+ [

## 更改日志
](#legacy-subscription-router-component-changelog)

## 版本


此组件具有以下版本：
+ 2.1.x
+ 2.0.x

## Type


<a name="public-component-type-generic"></a>此<a name="public-component-type-generic-phrase"></a>组件是一个通用组件 (`aws.greengrass.generic`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 运行组件的生命周期脚本。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅[组件类型](develop-greengrass-components.md#component-types)。

## 操作系统


此组件只能安装在 Linux 核心设备上。

## 要求


此组件具有以下要求：
+ 支持在 VPC 中运行旧版订阅路由器。

## 依赖项


部署组件时， Amazon IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#legacy-subscription-router-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [Amazon IoT Greengrass 控制台](https://console.amazonaws.cn//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.1.15 ]

下表列出了此组件版本 2.1.15 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.17.0 | 软性 | 

------
#### [ 2.1.14 ]

下表列出了此组件版本 2.1.14 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.16.0 | 软性 | 

------
#### [ 2.1.13 ]

下表列出了此组件版本 2.1.13 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.15.0 | 软性 | 

------
#### [ 2.1.12 ]

下表列出了此组件的版本 2.1.12 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.14.0 | 软性 | 

------
#### [ 2.1.11 ]

下表列出了此组件的版本 2.1.11 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0 | 软性 | 

------
#### [ 2.1.10 ]

下表列出了此组件的版本 2.1.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0 | 软性 | 

------
#### [ 2.1.9 ]

下表列出了此组件的版本 2.1.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0 | 软性 | 

------
#### [ 2.1.8 ]

下表列出了此组件的版本 2.1.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0 | 软性 | 

------
#### [ 2.1.7 ]

下表列出了此组件的版本 2.1.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0 | 软性 | 

------
#### [ 2.1.6 ]

下表列出了此组件的版本 2.1.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0 | 软性 | 

------
#### [ 2.1.5 ]

下表列出了此组件的版本 2.1.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0 | 软性 | 

------
#### [ 2.1.4 ]

下表列出了此组件的版本 2.1.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0 | 软性 | 

------
#### [ 2.1.3 ]

下表列出了此组件的版本 2.1.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0 | 软性 | 

------
#### [ 2.1.2 ]

下表列出了此组件的版本 2.1.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0 | 软性 | 

------
#### [ 2.1.1 ]

下表列出了此组件的版本 2.1.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0 | 软性 | 

------
#### [ 2.1.0 ]

下表列出了此组件版本 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0 | 软性 | 

------
#### [ 2.0.3 ]

下表列出了此组件的版本 2.0.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0 | 软性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置


此组件提供您可以在部署组件时自定义的以下配置参数。

------
#### [ v2.1.x ]

`subscriptions`  
<a name="legacy-subscription-router-component-configuration-subscriptions-intro"></a>（可选）要在核心设备上启用的订阅。这是一个对象，其中每个键都是唯一 ID，每个值都是定义该连接器订阅的对象。部署使用 Core SDK 的 V1 连接器组件或 Lambda 函数时，必须配置订阅。 Amazon IoT Greengrass   
每个订阅对象包含以下信息：    
`id`  <a name="legacy-subscription-router-component-configuration-subscription-id"></a>
此订阅的唯一 ID。此 ID 必须与此订阅对象的密钥匹配。  
`source`  
Lambda 函数，它使用 Amazon IoT Greengrass 核心软件开发工具包针对您在中指定的主题发布 MQTT 消息。`subject`指定下列项之一：  
+ <a name="legacy-subscription-router-component-configuration-subscription-source-target-component-name"></a>核心设备上 Lambda 函数组件的名称。使用 `component:` 前缀指定组件名称，例如 **component:com.example.HelloWorldLambda**。
+ <a name="legacy-subscription-router-component-configuration-subscription-source-target-function-arn"></a>核心设备 Lambda 函数的 Amazon 资源名称（ARN）。
**重要**  <a name="legacy-subscription-router-function-version-requirement"></a>
如果 Lambda 函数的版本发生变化，则必须使用该函数的新版本配置订阅。否则，在版本与订阅匹配之前，此组件不会路由消息。  
您必须指定 Amazon 资源名称（ARN），其中包含要导入的函数版本。您不能使用像 `$LATEST` 这样的版本别名。
要部署 V1 连接器组件的订阅，请指定该组件名称或连接器组件的 Lambda 函数的 ARN。  
`subject`  <a name="legacy-subscription-router-component-configuration-subscription-subject"></a>
源和目标可在其上发布和接收消息的 MQTT 主题或主题筛选条件。此值支持 `+` 和 `#` 主题通配符。  
`target`  
<a name="legacy-subscription-router-component-configuration-subscription-target-intro"></a>在 `subject` 中指定的主题上接收 MQTT 消息的目标。订阅指定该`source`函数向核心设备上的 Lambda 函数发布 Amazon IoT Core 或发布 MQTT 消息。指定下列项之一：  
+ <a name="legacy-subscription-router-component-configuration-subscription-target-cloud"></a>`cloud`。 该`source`函数将 MQTT 消息发布到。 Amazon IoT Core
+ <a name="legacy-subscription-router-component-configuration-subscription-source-target-component-name"></a>核心设备上 Lambda 函数组件的名称。使用 `component:` 前缀指定组件名称，例如 **component:com.example.HelloWorldLambda**。
+ <a name="legacy-subscription-router-component-configuration-subscription-source-target-function-arn"></a>核心设备 Lambda 函数的 Amazon 资源名称（ARN）。
**重要**  <a name="legacy-subscription-router-function-version-requirement"></a>
如果 Lambda 函数的版本发生变化，则必须使用该函数的新版本配置订阅。否则，在版本与订阅匹配之前，此组件不会路由消息。  
您必须指定 Amazon 资源名称（ARN），其中包含要导入的函数版本。您不能使用像 `$LATEST` 这样的版本别名。
默认值：无订阅

**Example 配置更新示例（定义订阅 Amazon IoT Core）**  
以下示例指定 `com.example.HelloWorldLambda` Lambda 函数组件向 Amazon IoT Core 发布有关该主题的 MQTT 消息。`hello/world`  

```
{
  "subscriptions": {
    "Greengrass_HelloWorld_to_cloud": {
      "id": "Greengrass_HelloWorld_to_cloud",
      "source": "component:com.example.HelloWorldLambda",
      "subject": "hello/world",
      "target": "cloud"
    }
  }
}
```

**Example 配置更新示例（定义对另一个 Lambda 函数的订阅）**  
以下示例指定 `com.example.HelloWorldLambda` Lambda 函数组件将 MQTT 消息发布至 `hello/world` 主题上的 `com.example.MessageRelay` Lambda 函数组件。  

```
{
  "subscriptions": {
    "Greengrass_HelloWorld_to_MessageRelay": {
      "id": "Greengrass_HelloWorld_to_MessageRelay",
      "source": "component:com.example.HelloWorldLambda",
      "subject": "hello/world",
      "target": "component:com.example.MessageRelay"
    }
  }
}
```

------
#### [ v2.0.x ]

`subscriptions`  
<a name="legacy-subscription-router-component-configuration-subscriptions-intro"></a>（可选）要在核心设备上启用的订阅。这是一个对象，其中每个键都是唯一 ID，每个值都是定义该连接器订阅的对象。部署使用 Core SDK 的 V1 连接器组件或 Lambda 函数时，必须配置订阅。 Amazon IoT Greengrass   
每个订阅对象包含以下信息：    
`id`  <a name="legacy-subscription-router-component-configuration-subscription-id"></a>
此订阅的唯一 ID。此 ID 必须与此订阅对象的密钥匹配。  
`source`  
Lambda 函数，它使用 Amazon IoT Greengrass 核心软件开发工具包针对您在中指定的主题发布 MQTT 消息。`subject`指定以下内容：  
+ <a name="legacy-subscription-router-component-configuration-subscription-source-target-function-arn"></a>核心设备 Lambda 函数的 Amazon 资源名称（ARN）。
**重要**  <a name="legacy-subscription-router-function-version-requirement"></a>
如果 Lambda 函数的版本发生变化，则必须使用该函数的新版本配置订阅。否则，在版本与订阅匹配之前，此组件不会路由消息。  
您必须指定 Amazon 资源名称（ARN），其中包含要导入的函数版本。您不能使用像 `$LATEST` 这样的版本别名。
要部署 V1 连接器组件的订阅，请指定连接器组件的 Lambda 函数的 ARN。  
`subject`  <a name="legacy-subscription-router-component-configuration-subscription-subject"></a>
源和目标可在其上发布和接收消息的 MQTT 主题或主题筛选条件。此值支持 `+` 和 `#` 主题通配符。  
`target`  
<a name="legacy-subscription-router-component-configuration-subscription-target-intro"></a>在 `subject` 中指定的主题上接收 MQTT 消息的目标。订阅指定该`source`函数向核心设备上的 Lambda 函数发布 Amazon IoT Core 或发布 MQTT 消息。指定下列项之一：  
+ <a name="legacy-subscription-router-component-configuration-subscription-target-cloud"></a>`cloud`。 该`source`函数将 MQTT 消息发布到。 Amazon IoT Core
+ <a name="legacy-subscription-router-component-configuration-subscription-source-target-function-arn"></a>核心设备 Lambda 函数的 Amazon 资源名称（ARN）。
**重要**  <a name="legacy-subscription-router-function-version-requirement"></a>
如果 Lambda 函数的版本发生变化，则必须使用该函数的新版本配置订阅。否则，在版本与订阅匹配之前，此组件不会路由消息。  
您必须指定 Amazon 资源名称（ARN），其中包含要导入的函数版本。您不能使用像 `$LATEST` 这样的版本别名。
默认值：无订阅

**Example 配置更新示例（定义订阅 Amazon IoT Core）**  
以下示例指定`Greengrass_HelloWorld`函数向该`hello/world`主题发布 MQTT 消息。 Amazon IoT Core   

```
"subscriptions": {
  "Greengrass_HelloWorld_to_cloud": {
    "id": "Greengrass_HelloWorld_to_cloud",
    "source": "arn:aws:lambda:us-west-2:123456789012:function:Greengrass_HelloWorld:5",
    "subject": "hello/world",
    "target": "cloud"
  }
}
```

**Example 配置更新示例（定义对另一个 Lambda 函数的订阅）**  
以下示例指定 `Greengrass_HelloWorld` 函数向 `Greengrass_MessageRelay` 发布有关 `hello/world` 主题的 MQTT 消息。  

```
"subscriptions": {
  "Greengrass_HelloWorld_to_MessageRelay": {
    "id": "Greengrass_HelloWorld_to_MessageRelay",
    "source": "arn:aws:lambda:us-west-2:123456789012:function:Greengrass_HelloWorld:5",
    "subject": "hello/world",
    "target": "arn:aws:lambda:us-west-2:123456789012:function:Greengrass_MessageRelay:5"
  }
}
```

------

## 本地日志文件


此组件不输出日志。

## 更改日志


下表介绍每个组件版本的更改。


|  版本  |  更改  | 
| --- | --- | 
|  2.1.15  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.1.14  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.1.13  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.1.12  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.1.11  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.10  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.9  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.8  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.7  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.6  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.5  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.4  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.1.1  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.0  |  <a name="changelog-legacy-subscription-router-2.1.0"></a>[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/greengrass/v2/developerguide/legacy-subscription-router-component.html)  | 
|  2.0.3  |  初始版本。  | 