

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

# AWS 提供的组件
<a name="public-components"></a>

AWS IoT Greengrass 提供和维护可部署到设备上的预构建组件。这些组件包括功能（例如流管理器）、AWS IoT Greengrass V1 连接器（例如 CloudWatch 指标）和本地开发工具（例如 AWS IoT Greengrass CLI）。您可以[将这些组件部署](manage-deployments.md)到设备上独立使用，也可以将它们用作[自定义 Greengrass 组件](develop-greengrass-components.md)中的依赖关系。

**注意**  <a name="component-nucleus-dependency-update-note"></a>
AWS 提供的几个组件依赖于 Greengrass Nucleus 的特定次要版本。由于这种依赖关系，当您将 Greengrass Nucleus 更新到新的次要版本时，您需要更新这些组件。有关每个组件所依赖的特定内核版本的信息，请参阅相应的组件主题。有关更新 Nucleus 的更多信息，请参阅 [更新 AWS IoT Greengrass Core 软件（OTA）](update-greengrass-core-v2.md)。

<a name="component-table-type-description"></a>当组件同时具有通用和 Lambda 组件类型时，该组件的当前版本为通用类型，而该组件的之前版本为 Lambda 类型。


| 组件 | 描述 | [组件类型](develop-greengrass-components.md#component-types) | 支持的操作系统 | [开源](open-source.md) | 兼容 Nucleus Lite | 
| --- | --- | --- | --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | AWS IoT Greengrass Core 软件的内核 使用此组件在核心设备上配置和更新软件。 | Nucleus | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-nucleus) | 否 | 
| [Greengrass Nucleus Lite](greengrass-nucleus-lite-component.md) | 适用于资源受限设备的轻量级 Nucleus，针对低成本边缘设备和大量应用程序进行了优化 | NucleusLite | Linux | [是](https://github.com/aws-greengrass/aws-greengrass-lite) | 否 | 
| <a name="client-device-auth-component-table-row"></a>[客户端设备身份验证](client-device-auth-component.md) | 支持本地 IoT 设备（称为客户端设备）连接到核心设备。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-client-device-auth) | 否 | 
| [CloudWatch 指标](cloudwatch-metrics-component.md) | 向 Amazon CloudWatch 发布自定义指标。 | 通用、Lambda | Linux、Windows | [支持](https://github.com/aws-greengrass/aws-greengrass-cloudwatch-metrics) | 是 | 
| [AWS IoT Device Defender](device-defender-component.md) | 向管理员通知 Greengrass 核心设备状态的变化，以识别异常行为。 | 通用、Lambda | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-device-defender) | 否 | 
| [磁盘后台处理程序](disk-spooler-component.md) | 为从 Greengrass 核心设备假脱机到 AWS IoT Core 的消息启用持久性存储选项。此组件会将这些出站消息存储在磁盘上。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-disk-spooler) | 否 | 
| [Docker 应用程序管理器](docker-application-manager-component.md) | 支持 AWS IoT Greengrass 从 Docker Hub 或 Amazon Elastic Container Registry（Amazon ECR）中下载 Docker 映像。 | 通用 | Linux、Windows | 否 | 否 | 
| [适用于 Kinesis Video Streams 的 Edge 连接器](kvs-edge-connector-component.md) | 从本地摄像机读取视频源，将视频流发布到 Kinesis Video Streams，并使用 AWS IoT TwinMaker 在 Grafana 控制面板中显示视频流。 | 通用 | Linux | 否 | 否 | 
| [Greengrass CLI](greengrass-cli-component.md) | 提供一个命令行界面，可用于创建本地部署并与 Greengrass 核心设备及其组件进行交互。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-cli) | [否](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/ggl-cli.md) | 
| <a name="ip-detector-component-table-row"></a>[IP 检测器](ip-detector-component.md) | 向 AWS IoT Greengrass 报告 MQTT 代理连接信息，以便客户端设备可以了解连接方式。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-ip-detector) | 否 | 
| [Firehose](kinesis-firehose-component.md) | 通过 Amazon Data Firehose 传输流，将数据发布到 AWS 云 中的目标。 | Lambda | Linux | 否 | 否 | 
| [Lambda 启动程序](lambda-launcher-component.md) | 处理 Lambda 函数的进程和环境配置。 | 通用 | Linux | 否 | 否 | 
| [Lambda 管理器](lambda-manager-component.md) | 处理 Lambda 函数的进程间通信和扩展。 | 插件 | Linux | 否 | 否 | 
| [Lambda 运行时](lambda-runtimes-component.md) | 为每个 Lambda 运行时提供构件。 | 通用 | Linux | 否 | 否 | 
| [旧版订阅路由器](legacy-subscription-router-component.md) | 管理在 AWS IoT Greengrass V1 上运行的 Lambda 函数的订阅。 | 通用 | Linux | 否 | 否 | 
| [本地调试控制台](local-debug-console-component.md) | 提供本地控制台，可用于调试和管理 Greengrass 核心设备及其组件。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-localdebugconsole) | 否 | 
| [日志管理器](log-manager-component.md) | 在 Greengrass 核心设备上收集并上传日志。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-log-manager) | 否 | 
| [机器学习组件](machine-learning-components.md) | 提供机器学习模型和示例推理代码，可用于在 Greengrass 核心设备上执行机器学习推理。 | 请参阅 [机器学习组件](machine-learning-components.md)。 | 否 | 
| [Modbus-RTU 协议适配器](modbus-rtu-protocol-adapter-component.md) | 轮询来自本地 Modbus RTU 设备的信息。 | Lambda | Linux | 否 | 否 | 
| [Nucleus 遥测发射器](nucleus-emitter-component.md) | 将从内核收集的系统运行状况遥测数据发布到本地主题或 AWS IoT Core MQTT 主题。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-telemetry-nucleus-emitter) | 否 | 
| <a name="mqtt-bridge-component-table-row"></a>[MQTT 网桥](mqtt-bridge-component.md) | 在客户端设备、本地 AWS IoT Greengrass 发布/订阅和 AWS IoT Core 之间中继 MQTT 消息。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-mqtt-bridge) | 否 | 
| <a name="mqtt-broker-moquette-component-table-row"></a>[MQTT 3.1.1 代理（Moquette）](mqtt-broker-moquette-component.md) | 运行 MQTT 3.1.1 代理，处理客户端设备和核心设备之间的消息。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-moquette-mqtt) | 否 | 
| <a name="mqtt-broker-emqx-component-table-row"></a>[MQTT 5 代理（EMQX）](mqtt-broker-emqx-component.md) | 运行 MQTT 5 代理，处理客户端设备和核心设备之间的消息。 | 通用 | Linux、Windows | 否 | 否 | 
| [PKCS\$111 提供程序](pkcs11-provider-component.md) | 支持 Greengrass 组件访问安全存储在硬件安全模块（HSM）中的私钥和证书。 | 插件 | Linux | [是](https://github.com/aws-greengrass/aws-greengrass-pkcs11-provider) | 否 | 
| [密钥管理器](secret-manager-component.md) | 部署来自 AWS Secrets Manager 密钥的密钥，以便可以在 Greengrass 核心设备的自定义组件中安全使用凭证（例如密码）。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-secret-manager) | 否 | 
| [安全隧道](secure-tunneling-component.md) | 启用 AWS IoT 安全隧道连接，可用于与受限防火墙后方的 Greengrass 核心设备建立双向通信。 | 通用 | Linux | 否 | 是 | 
| <a name="shadow-manager-component-table-row"></a>[影子管理器](shadow-manager-component.md) | 支持与核心设备上的影子交互。它管理影子文档存储以及本地影子状态与 AWS IoT 设备影子服务的同步。 | 插件 | Linux、Windows | [是](https://github.com/aws-greengrass/aws-greengrass-shadow-manager) | 否 | 
| [Amazon SNS](sns-component.md) | 将消息发布到 Amazon SNS 主题。 | Lambda | Linux | 否 | 否 | 
| [流管理器](stream-manager-component.md) | 将大量数据从本地源流式传输到 AWS 云。 | 通用 | Linux、Windows | 否 | 是 | 
| [系统日志转发服务器](system-log-forwarder-component.md) | 将 systemd-Journald 日志上传至 AWS 云。 | 通用 | Linux | [支持](https://github.com/aws-greengrass/aws-greengrass-system-log-forwarder) | 是 | 
| [Systems Manager Agent](systems-manager-agent-component.md) | 使用 AWS Systems Manager 管理核心设备，使您能够修补设备、运行命令等。 | 通用 | Linux | [是](https://github.com/aws/amazon-ssm-agent/blob/mainline/packaging/greengrass/component.json) | 否 | 
| [令牌交换服务](token-exchange-service-component.md) | 提供可用于与 AWS 服务交互的 AWS 凭证。 | 通用 | Linux、Windows | 否 | 否 | 
| [物联网 SiteWise OPC UA 采集器](iotsitewise-opcua-collector-component.md) | 从 OPC-UA 服务器收集数据。 | 通用 | Linux、Windows | 否 | 否 | 
| [物联网 SiteWise OPC UA 数据源模拟器](iotsitewise-opcua-data-source-simulator-component.md) | 运行生成样本数据的本地 OPC-UA 服务器。 | 通用 | Linux、Windows | 否 | 否 | 
| [物联网 SiteWise 发行商](iotsitewise-publisher-component.md) | 将数据发布到 AWS 云。 | 通用 | Linux、Windows | 否 | 否 | 
| [物联网 SiteWise 处理器](iotsitewise-processor-component.md) | 处理 Greengrass 核心设备上的数据。 | 通用 | Linux、Windows | 否 | 否 | 

# Greengrass Nucleus
<a name="greengrass-nucleus-component"></a>

Greengrass nucleus 组件 `aws.greengrass.Nucleus` () 是必备组件，也是在设备上运行 AWS IoT Greengrass 核心软件的最低要求。您可以将此组件配置为远程自定义和更新 AWS IoT Greengrass Core 软件。部署此组件可在核心设备上配置代理、设备角色和 AWS IoT 事物配置等设置。

**注意**  
从 Greengrass 2.14.0 版本开始，内存占用优化版核心设备运行时可用于受限的边缘设备。请参阅 [Greengrass Nucleus Lite](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)，了解有关其配置和使用的更多信息。

**重要**  
当 nucleus 组件的版本发生变化时，或者当你更改某些配置参数时， AWS IoT Greengrass Core 软件（包括 nucleus 和设备上的所有其他组件）会重新启动以应用更改。  
<a name="component-patch-update"></a>部署组件时， AWS IoT Greengrass 会安装该组件所有依赖项的最新支持版本。因此，如果您向事物组中添加新设备或更新针对这些设备的部署，则 AWS提供的公共组件的新补丁版本可能会自动部署到您的核心设备上。某些自动更新（例如 Nucleus 更新）可能会导致您的设备意外重启。  
<a name="component-version-pinning"></a>为防止设备上运行的组件出现意外更新，我们建议您在[创建部署](create-deployments.md)时直接包含您对该组件的首选版本。有关 C AWS IoT Greengrass ore 软件更新行为的更多信息，请参阅[更新 AWS IoT Greengrass Core 软件（OTA）](update-greengrass-core-v2.md)。

**Topics**
+ [版本](#greengrass-nucleus-component-versions)
+ [设备要求](#greengrass-v2-requirements)
+ [支持的平台](#greengrass-v2-supported-platforms)
+ [操作系统](#greengrass-nucleus-component-os-support)
+ [要求](#greengrass-nucleus-component-requirements)
+ [依赖项](#greengrass-nucleus-component-dependencies)
+ [下载并安装](#greengrass-nucleus-component-install)
+ [配置](#greengrass-nucleus-component-configuration)
+ [本地日志文件](#greengrass-nucleus-component-log-file)
+ [更改日志](#greengrass-nucleus-component-changelog)

## 版本
<a name="greengrass-nucleus-component-versions"></a>

此组件具有以下版本：
+ 2.16.x
+ 2.15.x
+ 2.14.x
+ 2.13.x
+ 2.12.x
+ 2.11.x
+ 2.10.x
+ 2.9.x
+ 2.8.x
+ 2.7.x
+ 2.6.x
+ 2.5.x
+ 2.4.x
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## 设备要求
<a name="greengrass-v2-requirements"></a>

**注意**  
您可以使用 AWS IoT Device Tester AWS IoT Greengrass 来验证您的设备是否可以运行 AWS IoT Greengrass Core 软件并与通信 AWS 云。有关更多信息，请参阅 [使用适用于 AWS IoT Greengrass V2 的 AWS IoT Device Tester](device-tester-for-greengrass-ug.md)。

------
#### [ Linux ]
+ <a name="requirement-supported-region"></a>使用支持[AWS 区域](https://en.wikipedia.org/wiki/Amazon_Web_Services#Availability_and_topology)的 AWS IoT Greengrass V2。有关支持的区域列表，请参见 *AWS 一般参考* 中的 [AWS IoT Greengrass V2 端点和配额](https://docs.aws.amazon.com/general/latest/gr/greengrassv2.html)。
+ 至少 256 MB 磁盘空间可供 AWS IoT Greengrass 酷睿软件使用。此要求不包括部署到核心设备的组件。
+ 分配给 AWS IoT Greengrass 核心软件的最少 96 MB 内存。此要求不包括核心设备上运行的组件。有关更多信息，请参阅 [使用 JVM 选项控制内存分配](configure-greengrass-core-v2.md#jvm-tuning)。
+ Java 运行时环境（JRE）版本 8 或更高版本。Java 必须在设备的 [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) 环境变量中可用。要使用 Java 开发自定义组件，您必须安装 Java 开发工具包 (JDK)。我们建议您使用 [Amazon Corretto](https://aws.amazon.com/corretto/) 或 [OpenJDK](https://openjdk.java.net/) 长期支持版本。需要版本 8 或更高版本。
+ [GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.25 或更高版本。
+ 您必须以 root 用户身份运行 AWS IoT Greengrass Core 软件。例如，使用 `sudo`。
+ 运行 AWS IoT Greengrass Core 软件（例如`root`）的 root 用户必须具有`sudo`与任何用户和任何组一起运行的权限。`/etc/sudoers` 文件必须授予该用户以其他组身份运行 `sudo` 的权限。用户权限在 `/etc/sudoers` 中应如以下示例所示。

  ```
  root    ALL=(ALL:ALL) ALL
  ```
+ 核心设备必须能够对一组端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。
+ 必须使用 `exec` 权限挂载 `/tmp` 目录。
+ 以下所有 Shell 命令：
  + `ps -ax -o pid,ppid`
  + `sudo`
  + `sh`
  + `kill`
  + `cp`
  + `chmod`
  + `rm`
  + `ln`
  + `echo`
  + `exit`
  + `id`
  + `uname`
  + `grep`
+ 您的设备可能还需要以下可选的 Shell 命令：
  + （可选）`systemctl`。此命令用于将 AWS IoT Greengrass Core 软件设置为系统服务。
  + （可选）`useradd`、`groupadd` 和 `usermod`。这些命令用于设置 `ggc_user` 系统用户和 `ggc_group` 系统组。
  + （可选）`mkfifo`。此命令用于将 Lambda 函数作为组件运行。
+ 要为组件进程配置系统资源限制，您的设备必须运行 Linux 内核版本 2.6.24 或更高版本。
+ 要运行 Lambda 函数，您的设备必须满足更多要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。

------
#### [ Windows ]
+ <a name="requirement-supported-region"></a>使用支持[AWS 区域](https://en.wikipedia.org/wiki/Amazon_Web_Services#Availability_and_topology)的 AWS IoT Greengrass V2。有关支持的区域列表，请参见 *AWS 一般参考* 中的 [AWS IoT Greengrass V2 端点和配额](https://docs.aws.amazon.com/general/latest/gr/greengrassv2.html)。
+ 至少 256 MB 磁盘空间可供 AWS IoT Greengrass 酷睿软件使用。此要求不包括部署到核心设备的组件。
+ 分配给 AWS IoT Greengrass 核心软件的最低 160 MB 内存。此要求不包括核心设备上运行的组件。有关更多信息，请参阅 [使用 JVM 选项控制内存分配](configure-greengrass-core-v2.md#jvm-tuning)。
+ Java 运行时环境（JRE）版本 8 或更高版本。Java 必须在设备的 [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) 系统变量中可用。要使用 Java 开发自定义组件，您必须安装 Java 开发工具包 (JDK)。我们建议您使用 [Amazon Corretto](https://aws.amazon.com/corretto/) 或 [OpenJDK](https://openjdk.java.net/) 长期支持版本。需要版本 8 或更高版本。
**注意**  
要使用 [Greengrass Nucleus](#greengrass-nucleus-component) 版本 2.5.0，您必须使用 64 位版本的 Java 运行时环境（JRE）。Greengrass nucleus 版本 2.5.1 支持 32 位和 64 位。 JREs
+ 安装 AWS IoT Greengrass 核心软件的用户必须是管理员。
+ 您必须将 AWS IoT Greengrass Core 软件作为系统服务进行安装。安装软件时指定 `--setup-system-service true`。
+ 每个运行组件进程的用户都必须存在于 LocalSystem 账户中，并且该用户的名字和密码必须位于该 LocalSystem 账户的 Credential Manager 实例中。当你按照说明[安装 C AWS IoT Greengrass ore 软件](install-greengrass-core-v2.md)时，你可以设置这个用户。
+ 核心设备必须能够对一组端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。

------

## 支持的平台
<a name="greengrass-v2-supported-platforms"></a>

AWS IoT Greengrass 正式支持运行以下平台的设备。平台未包含在此列表中的设备可能可以运行，但只能在这些指定平台上 AWS IoT Greengrass 进行测试。

------
#### [ Linux ]

架构：
+ Armv7l
+ Armv8 () AArch64
+ x86\$164

------
#### [ Windows ]

架构：
+ x86\$164

版本：
+ Windows 10
+ Windows 11
+ Windows Server 2019
+ Windows Server 2022

**注意**  
Windows 设备目前不支持某些 AWS IoT Greengrass 功能。有关更多信息，请参阅[Greengrass 功能兼容性](operating-system-feature-support-matrix.md)和[功能注意事项](#greengrass-v2-windows-feature-considerations)。

------

### 功能注意事项
<a name="greengrass-v2-windows-feature-considerations"></a>

Windows 设备目前不支持某些 AWS IoT Greengrass 功能。查看功能差异以确认 Windows 设备是否满足您的要求。有关更多信息，请参阅 [Greengrass 功能兼容性](operating-system-feature-support-matrix.md)。

[要构建基于 Linux 的自定义操作系统，可以在项目 AWS IoT Greengrass 中使用 BitBake 配方。`meta-aws`](https://github.com/aws/meta-aws/tree/master/recipes-iot)该`meta-aws`项目提供了一些方法，可用于在使用Yocto Project构建 AWS 框架[OpenEmbedded](https://www.openembedded.org/wiki/Main_Page)和Yocto Project构建框架构建的[嵌入式Linux](https://elinux.org/) 系统中构建边缘软件功能。[Yocto 项目](https://www.yoctoproject.org/)是一个开源协作项目，可帮助您为嵌入式应用程序构建基于 Linux 的自定义系统，而不考虑硬件架构。在您的设备上 AWS IoT Greengrass 安装、配置和自动运行 AWS IoT Greengrass Core 软件的 BitBake 秘诀。

Linux 平台也可以 AWS IoT Greengrass 在 Docker 容器中运行。有关更多信息，请参阅 [在 Docker 容器中运行 AWS IoT Greengrass 核心软件](run-greengrass-docker.md)。

## 操作系统
<a name="greengrass-nucleus-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

有关更多信息，请参阅 [支持的平台](#greengrass-v2-supported-platforms)。

## 要求
<a name="greengrass-nucleus-component-requirements"></a>

设备必须满足某些要求才能安装和运行 Greengrass nucleus 和 Core 软件。 AWS IoT Greengrass 有关更多信息，请参阅 [设备要求](#greengrass-v2-requirements)。

支持 Greengrass Nucleus 组件在 VPC 中运行。要在 VPC 中部署此组件，需要满足以下条件。
+ Greengrass 核心组件必须连接到、 AWS IoT data凭证 AWS IoT 和 Amazon S3。

## 依赖项
<a name="greengrass-nucleus-component-dependencies"></a>

Greengrass Nucleus 不包含任何组件依赖关系。但是，一些 AWS提供的组件将内核作为依赖关系包含在内。有关更多信息，请参阅 [AWS 提供的组件](public-components.md)。

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

## 下载并安装
<a name="greengrass-nucleus-component-install"></a>

您可以下载安装程序，在您的设备上安装 Greengrass Nucleus 组件。此安装程序将您的设备设置为 Greengrass 核心设备。您可以执行两种类型的安装：一种是为您创建所需 AWS 资源的快速安装，另一种是手动安装，您可以自己创建 AWS 资源。有关更多信息，请参阅 [安装 AWS IoT Greengrass Core 软件](install-greengrass-core-v2.md)。

您也可以按照教程安装 Greengrass Nucleus 并探索 Greengrass 组件开发。有关更多信息，请参阅 [教程：AWS IoT Greengrass V2 入门](getting-started.md)。

## 配置
<a name="greengrass-nucleus-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。某些参数要求 AWS IoT Greengrass Core软件重新启动才能生效。有关为什么以及如何配置此组件的详细信息，请参阅 [配置 AWS IoT Greengrass 核心软件](configure-greengrass-core-v2.md)。

`iotRoleAlias`  
<a name="nucleus-component-configuration-iot-role-alias"></a>指向令牌交换 IAM 角色的角色别名。 AWS IoT AWS IoT 凭证提供者扮演此角色是为了允许 Greengrass 核心设备与服务进行交互。 AWS 有关更多信息，请参阅 [授权核心设备与 AWS 服务交互](device-service-role.md)。  
当你使用`--provision true`选项运行 AWS IoT Greengrass Core 软件时，该软件会预置一个角色别名并在 nucleus 组件中设置其值。

  `interpolateComponentConfiguration`   
（可选）您可以启用 Greengrass Nucleus，以便在组件配置中插入[组件配方变量](component-recipe-reference.md#recipe-variables)并[合并配置更新](update-component-configurations.md#merge-configuration-update-recipe-variables)。我们建议您将此选项设置为 `true`，以便核心设备可以运行在其配置中使用配方变量的 Greengrass 组件。  
此组件的 v2.6.0 及更高版本中提供了此功能。  
默认值：`false`

`networkProxy`  
（可选）用于所有连接的网络代理。有关更多信息，请参阅 [通过端口 443 或网络代理进行连接](configure-greengrass-core-v2.md#configure-alpn-network-proxy)。  
<a name="nucleus-component-parameter-restart-para"></a>当您部署对此配置参数的更改时， AWS IoT Greengrass Core 软件会重新启动以使更改生效。
该对象包含以下信息：    
`noProxyAddresses`  
（可选）不使用代理的 IP 地址或主机名的逗号分隔列表。  
`proxy`  
要连接的代理。该对象包含以下信息：    
`url`  
代理服务器的 URL，格式为 `scheme://userinfo@host:port`。  <a name="nucleus-component-configuration-proxy-url-segments"></a>
+ `scheme` – 方案，必须是 `http` 或 `https`。
**重要**  
<a name="https-proxy-greengrass-nucleus-requirement"></a>Greengrass 核心设备必须运行 [Greengrass Nucleus](#greengrass-nucleus-component) v2.5.0 或更高版本才能使用 HTTPS 代理。  
如果您配置 HTTPS 代理，则必须将代理服务器 CA 证书添加到核心设备的 Amazon 根 CA 证书中。有关更多信息，请参阅 [使核心设备信任 HTTPS 代理](configure-greengrass-core-v2.md#https-proxy-certificate-trust)。
+ `userinfo` –（可选）用户名和密码信息。如果您在 `url` 中指定此信息，则 Greengrass 核心设备将忽略 `username` 和 `password` 字段。
+ `host` – 代理服务器的主机名或 IP 地址。
+ `port` –（可选）端口号。如果您未指定端口，则 Greengrass 核心设备将使用以下默认值：
  + `http` – 80
  + `https` – 443  
`username`  
（可选）代理服务器进行身份验证时使用的用户名。  
`password`  
（可选）用于对代理服务器进行身份验证的密码。

`mqtt`  
（可选）Greengrass 核心设备的 MQTT 配置。有关更多信息，请参阅 [通过端口 443 或网络代理进行连接](configure-greengrass-core-v2.md#configure-alpn-network-proxy)。  
<a name="nucleus-component-parameter-restart-para"></a>当您部署对此配置参数的更改时， AWS IoT Greengrass Core 软件会重新启动以使更改生效。
该对象包含以下信息：    
`port`  
（可选）用于 MQTT 连接的端口。  
默认值：`8883`  
`keepAliveTimeoutMs`  
（可选）客户端为保持 MQTT 连接处于活动状态而发送的每条 `PING` 消息之间的时间（以毫秒为单位）。此值必须大于 `pingTimeoutMs`。  
默认值：`60000`（60 秒）。  
`pingTimeoutMs`  
（可选）客户端等待从服务器接收 `PINGACK` 消息的时间（以毫秒为单位）。如果等待时间超过了超时时间，则核心设备将关闭并重新打开 MQTT 连接。此值必须小于 `keepAliveTimeoutMs`。  
默认值：`30000`（30 秒）  
`operationTimeoutMs`  
（可选）客户端等待 MQTT 操作（例如 `CONNECT` 或 `PUBLISH`）完成的时间（以毫秒为单位）。此选项不适用于 MQTT `PING` 或保持活动状态的消息。  
默认值：`30000`（30 秒）  
`maxInFlightPublishes`  
（可选）可同时传输的未确认 MQTT QoS 1 消息的最大数量。  
此组件的 v2.1.0 及更高版本中提供了此功能。  
默认值：`5`  
有效范围：最大值为 100  
`maxMessageSizeInBytes`  
（可选）MQTT 消息的最大大小。如果一条消息超过此大小，Greengrass Nucleus会拒绝该消息并给出错误。  
此组件的 v2.1.0 及更高版本中提供了此功能。  
默认值：`131072`（128 KB）  
有效范围：最大值为 `2621440`（2.5 MB）  
`maxPublishRetry`  
（可选）消息发布失败的最大重试次数。您可以指定 `-1` 以无限次重试。  
此组件的 v2.1.0 及更高版本中提供了此功能。  
默认值：`100`  
`spooler`  
（可选）Greengrass 核心设备的 MQTT 后台处理程序配置。该对象包含以下信息：    
`storageType`  
用于存储消息的存储类型。如果将 `storageType` 设置为 `Disk`，则可以配置 `pluginName`。您可指定 `Memory` 或 `Disk`。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.11.0 及更高版本。  
如果将 MQTT 后台处理程序 `storageType` 设置为 `Disk`，并且您想将 Greengrass Nucleus从 2.11.x 版本降级到早期版本，则必须将配置更改回到 `Memory`。Greengrass Nucleus版本 2.10.x 及更早版本支持的 `storageType` 的唯一配置是 `Memory`。不遵循此指南可能会导致后台处理程序中断。这将导致您的 Greengrass 核心设备无法向 AWS 云发送 MQTT 消息。
默认值：`Memory`  
`pluginName`  
（可选）插件组件名称。仅当 `storageType` 设置为 `Disk` 时，才会使用此组件。此选项默认为 `aws.greengrass.DiskSpooler`，并将使用 Greengrass 提供的 [磁盘后台处理程序](disk-spooler-component.md)。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.11.0 及更高版本。  
默认值：`"aws.greengrass.DiskSpooler"`  
`maxSizeInBytes`  
（可选）核心设备在内存中存储未处理的 MQTT 消息的最大缓存大小。如果缓存已满，将拒绝新消息。  
默认值：`2621440`（2.5 MB）  
`keepQos0WhenOffline`  
（可选）您可以缓冲核心设备离线时收到的 MQTT QoS 0 消息。如果将此选项设置为 `true`，则核心设备会缓冲离线时无法发送的 QoS 0 消息。如果将此选项设置为 `false`，则核心设备会丢弃这些消息。除非缓冲区已满，否则核心设备始终会缓冲 QoS 1 消息。  
默认值：`false`  
`version`  
（可选）MQTT 的版本。您可指定 `mqtt3` 或 `mqtt5`。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.10.0 及更高版本。  
默认值：`mqtt5`  
`receiveMaximum`  
（可选）代理可以发送的未确认 QoS1 数据包的最大数量。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.10.0 及更高版本。  
默认值：`100`  
`sessionExpirySeconds`  
（可选）您可以从 IoT Core 请求持续会话的时间（以秒为单位）。默认值为支持的最长时间 AWS IoT Core。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.10.0 及更高版本。  
默认值：`604800 (7 days)`  
`minimumReconnectDelaySeconds`  
（可选）重新连接行为的选项。MQTT 重新连接的最短时间（以秒为单位）。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.10.0 及更高版本。  
默认值：`1`  
`maximumReconnectDelaySeconds`  
（可选）重新连接行为的选项。MQTT 重新连接的最长时间（以秒为单位）。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.10.0 及更高版本。  
默认值：`120`  
`minimumConnectedTimeBeforeRetryResetSeconds`  
（可选）重新连接行为的选项。在重试延迟重置到最小值之前，连接必须处于活动状态的时间（以秒为单位）。  
此功能适用于 [Greengrass Nucleus 组件](#greengrass-nucleus-component)的 v2.10.0 及更高版本。  
默认值：`30`

  `jvmOptions`  
（可选）用于运行 AWS IoT Greengrass 核心软件的 JVM 选项。有关运行 C AWS IoT Greengrass ore 软件时推荐的 JVM 选项的信息，请参阅[使用 JVM 选项控制内存分配](configure-greengrass-core-v2.md#jvm-tuning)。  
<a name="nucleus-component-parameter-restart-para"></a>当您部署对此配置参数的更改时， AWS IoT Greengrass Core 软件会重新启动以使更改生效。

`iotDataEndpoint`  
<a name="nucleus-component-configuration-iot-data-endpoint"></a>您的 AWS IoT 数据端点 AWS 账户。  
<a name="nucleus-component-set-iot-endpoints"></a>当你使用该`--provision true`选项运行 AWS IoT Greengrass Core 软件时，该软件会从 AWS IoT 中获取你的数据和凭据端点，并将其设置在 nucleus 组件中。

`iotCredEndpoint`  
<a name="nucleus-component-configuration-iot-cred-endpoint"></a>您的 AWS IoT 凭证端点 AWS 账户。  
<a name="nucleus-component-set-iot-endpoints"></a>当你使用该`--provision true`选项运行 AWS IoT Greengrass Core 软件时，该软件会从 AWS IoT 中获取你的数据和凭据端点，并将其设置在 nucleus 组件中。

`greengrassDataPlaneEndpoint`  
此组件的 v2.7.0 及更高版本中提供了此功能。  
有关更多信息，请参阅 [使用由私有 CA 签名的设备证书](configure-greengrass-core-v2.md#configure-nucleus-private-ca)。

`greengrassDataPlanePort`  
此组件的 v2.0.4 及更高版本中提供了此功能。  
（可选）用于数据面板连接的端口。有关更多信息，请参阅 [通过端口 443 或网络代理进行连接](configure-greengrass-core-v2.md#configure-alpn-network-proxy)。  
您必须指定设备可以进行出站连接的端口。如果您指定被屏蔽的端口，则设备将无法连接 AWS IoT Greengrass 以接收部署。
从以下选项中进行选择：  
+ `443`
+ `8443`
默认值：`8443`

`awsRegion`  
 AWS 区域 要使用的。

`runWithDefault`  
用于运行组件的系统用户。  
<a name="nucleus-component-parameter-restart-para"></a>当您部署对此配置参数的更改时， AWS IoT Greengrass Core 软件会重新启动以使更改生效。
该对象包含以下信息：    
`posixUser`  
核心设备用于运行通用组件和 Lambda 组件的系统用户名称或 ID，以及系统组（可选）。使用以下格式指定由半角冒号（`:`）分隔的用户和组：`user:group`。组是可选的。如果您未指定群组，则 AWS IoT Greengrass Core 软件将使用该用户的主群组。举例来说，可以指定 `ggc_user` 或 `ggc_user:ggc_group`。有关更多信息，请参阅 [配置运行组件的用户](configure-greengrass-core-v2.md#configure-component-user)。  
当你使用`--component-default-user ggc_user:ggc_group`选项运行 AWS IoT Greengrass Core 软件安装程序时，软件会在 nucleus 组件中设置此参数。  
`windowsUser`  
此组件的 v2.5.0 及更高版本中提供了此功能。  
用于在 Windows 核心设备上运行此组件的 Windows 用户名称。用户必须存在于每台 Windows 核心设备上，其用户名和密码必须存储在 LocalSystem 账户的凭据管理器实例中。有关更多信息，请参阅 [配置运行组件的用户](configure-greengrass-core-v2.md#configure-component-user)。  
当你使用`--component-default-user ggc_user`选项运行 AWS IoT Greengrass Core 软件安装程序时，软件会在 nucleus 组件中设置此参数。  
`systemResourceLimits`  
此组件的 v2.4.0 及更高版本中提供了此功能。 AWS IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。  
默认情况下适用于通用和非容器化 Lambda 组件进程的系统资源限制。您可在创建部署时覆盖单个组件的系统资源限制。有关更多信息，请参阅 [配置组件的系统资源限制](configure-greengrass-core-v2.md#configure-component-system-resource-limits)。  
该对象包含以下信息：    
`cpus`  
 <a name="system-resource-limits-cpu-definition-each"></a>每个组件进程可在核心设备上使用的最大 CPU 时间。核心设备的总 CPU 时间等于 CPU 核心的设备数量。例如，在一台有 4 个 CPU 核心的核心设备上，您可以将此值设置为 `2`，以便将每个组件进程限制为使用每个 CPU 核心的 50%。在一台有 1 个 CPU 核心的设备上，您可以将此值设置为 `0.25`，以便将组件进程限制为使用 CPU 的 25%。如果将此值设置为大于 CPU 内核数的数字，则 AWS IoT Greengrass Core 软件不会限制组件的 CPU 使用率。  
`memory`  
 <a name="system-resource-limits-memory-definition-each"></a>每个组件进程可在核心设备上使用的最大 RAM 数量（以千字节表示）。

 `s3EndpointType`   
（可选）S3 端点类型。此参数仅对美国东部（弗吉尼亚州北部）（`us-east-1`）地区生效。从任何其他地区设置此参数将被忽略。从以下选项中进行选择：  
+ `REGIONAL` – S3 客户端和预签名 URL 使用区域端点。
+ `GLOBAL` – S3 客户端和预签名 URL 使用传统端点。
+ `DUALSTACK`— S3 预签名的 URL 使用双堆栈端点。
默认值：`GLOBAL`

 `fipsMode`   
（可选）让 Greengrass 使用 FIPS 端点。有关如何启用 FIPS 端点的更多信息，请参阅 [FIPS](FIPS.html) 端点。  
从以下选项中进行选择：  
+ `true` 设置为 true 时，端点将使用 FIPS 端点。
+ `false` 设置为 false 时，端点不使用 FIPS 端点。
默认值：`false`

`logging`  
（可选）核心设备的日志记录配置。有关如何配置和使用 Greengrass 日志的更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。  
该对象包含以下信息：    
  `level`   
（可选）要输出的日志消息的最低级别。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
  `format`   
（可选）日志的数据格式。从以下选项中进行选择：  
+ `TEXT` – 如果您想以文本形式查看日志，请选择此选项。
+ `JSON` – 如果您想使用 [Greengrass CLI 日志命令](gg-cli-logs.md)查看日志或以编程方式与日志交互，请选择此选项。
默认值：`TEXT`  
`outputType`  
（可选）日志的输出类型。从以下选项中进行选择：  
+ `FILE`— C AWS IoT Greengrass ore 软件将日志输出到您在中指定的目录中的文件`outputDirectory`。
+ `CONSOLE`— C AWS IoT Greengrass ore 软件将日志打印到`stdout`。选择此选项可在核心设备打印日志时查看日志。
默认值：`FILE`  
  `fileSizeKB`   
（可选）每个日志文件的最大大小（以千字节表示）。日志文件超过此最大文件大小后， AWS IoT Greengrass Core 软件会创建一个新的日志文件。  
<a name="nucleus-component-logging-parameter-file-only"></a>仅当为 `outputType` 指定 `FILE` 时，此参数才适用。  
默认值：`1024`  
  `totalLogsSizeKB`   
（可选）每个组件（包括 Greengrass Nucleus）的最大日志文件总大小（以千字节表示）。Greengrass Nucleus的日志文件还包括来自[插件组件](develop-greengrass-components.md#component-types)的日志。当组件的日志文件总大小超过此最大大小后， AWS IoT Greengrass Core 软件会删除该组件最旧的日志文件。  
此参数等同于[日志管理器组件的](log-manager-component.md)[磁盘空间限制](log-manager-component.md#log-manager-component-configuration)参数（`diskSpaceLimit`），您可为 Greengrass Nucleus（系统）和每个组件指定该参数。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为 Greengrass 核和每个组件的最大总日志大小。  
<a name="nucleus-component-logging-parameter-file-only"></a>仅当为 `outputType` 指定 `FILE` 时，此参数才适用。  
默认值：`10240`  
  `outputDirectory`   
（可选）日志文件的输出目录。  
<a name="nucleus-component-logging-parameter-file-only"></a>仅当为 `outputType` 指定 `FILE` 时，此参数才适用。  
默认值：`/greengrass/v2/logs`，其中 `/greengrass/v2` 是 AWS IoT Greengrass 根文件夹。

  `fleetstatus`   
此组件的 v2.1.0 及更高版本中提供了此参数。  
（可选）核心设备的实例集状态配置。  
该对象包含以下信息：    
`periodicStatusPublishIntervalSeconds`  
（可选）核心设备向 AWS 云发布设备状态的间隔时间（以秒为单位）。  
最小值：`86400`（24 小时）  
默认值：`86400`（24 小时）

  `telemetry`   
（可选）核心设备的系统运行状况遥测配置。有关遥测指标以及如何处理遥测数据的更多信息，请参阅 [从 AWS IoT Greengrass 核心设备收集系统运行状况遥测数据](telemetry.md)。  
该对象包含以下信息：    
`enabled`  
（可选）您可以启用或禁用遥测。  
默认值：`true`  
`periodicAggregateMetricsIntervalSeconds`  
（可选）核心设备汇总指标的时间间隔（以秒为单位）。  
如果将此值设置为低于支持的最小值，则内核将改用默认值。  
最低：`3600`  
默认值：`3600`  
`periodicPublishMetricsIntervalSeconds`  
（可选）核心设备向 AWS 云发布遥测指标的间隔时间（以秒为单位）。  
如果将此值设置为低于支持的最小值，则内核将改用默认值。  
最低：`86400`  
默认值：`86400`

`deploymentPollingFrequencySeconds`  
（可选）轮询部署通知的时间段（以秒为单位）。  
默认值：`15`

`componentStoreMaxSizeBytes`  
（可选）组件存储在磁盘上的最大大小，其中包括组件配方和构件。  
默认值：`10000000000`（10 GB）

  `platformOverride`   
（可选）标识核心设备平台的属性字典。使用它来定义自定义平台属性，组件配方可以使用这些属性来识别组件的正确生命周期和构件。例如，您可以定义硬件功能属性，以便仅部署组件运行所需的最小构件集。有关更多信息，请参阅组件配方中的[清单平台参数](component-recipe-reference.md#component-platform-definition)。  
您也可以使用此参数来覆盖核心设备的 `os` 和 `architecture` 平台属性。

  `httpClient`   
此组件的 v2.5.0 及更高版本中提供了此参数。  
（可选）核心设备的 HTTP 客户端配置。这些配置选项适用于该组件发出的所有 HTTP 请求。如果核心设备在速度较慢的网络上运行，则可以增加这些超时持续时间以防止 HTTP 请求超时。  
该对象包含以下信息：    
`connectionTimeoutMs`  
（可选）连接请求超时之前等待连接打开的时间（以毫秒为单位）。  
默认值：`2000`（2 秒）  
`socketTimeoutMs`  
（可选）连接超时之前等待通过打开的连接传输数据的时间（以毫秒为单位）。  
默认值：`30000`（30 秒）

  `deploymentConfigurationTimeSource`   
此参数在该组件的 2.15.0 及更高版本中可用。  
（可选）处理部署时使用的时间戳。默认值为 `deploymentCreationTime`。  
此对象包含以下值：    
`deploymentCreationTime`  
默认值为 `deploymentConfigurationTimeSource`。设备使用部署创建时间戳来解决处理期间的配置密钥冲突问题。选择此行为后，由 Nucleus 保持的本地设备配置可能具有比传入部署更长的时间戳，因此会拒绝现在视为过时的传入配置更改。  
`deploymentProcessingTime`  
设备使用其本地时间戳来解决部署处理期间的配置密钥冲突问题。处理完毕后，设备会根据处理的时间戳而不是部署创建时间戳更新配置。该行为假设设备时钟已正确校准。  
当希望新设备在首次连接时使用此行为时，请在初始设备映像或安装中配置此 Nucleus 设置，而不是通过部署进行配置。使用 Nucleus Classic 安装程序的 [https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-installer.html](https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-installer.html) 选项进行此种配置。  
这种初始配置是必不可少的，因为设备按任意顺序处理多个部署。如果初始配置不当，设备可能会在收到将 Nucleus 配置设置为 `deploymentProcessingTime` 的部署之前，使用默认 `deploymentCreationTime` 行为处理部署。

**Example 示例：配置合并更新**  

```
{
  "iotRoleAlias": "GreengrassCoreTokenExchangeRoleAlias",
  "networkProxy": {
    "noProxyAddresses": "http://192.168.0.1,www.example.com",
    "proxy": {
      "url": "http://my-proxy-server:1100",
      "username": "Mary_Major",
      "password": "pass@word1357"
    }
  },
  "mqtt": {
    "port": 443
  },
  "greengrassDataPlanePort": 443,
  "jvmOptions": "-Xmx64m",
  "runWithDefault": {
    "posixUser": "ggc_user:ggc_group"
  }
}
```

## 本地日志文件
<a name="greengrass-nucleus-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="greengrass-nucleus-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.16.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.16.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.15.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.15.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.14.3  |  错误修复和改进 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.14.2  |  错误修复和改进 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.14.1  |  错误修复和改进 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  emrfs  |  此版本不再可用。此版本的改进将在此组件的更高版本中提供。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.13.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.12.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.12.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.12.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.12.3  |   此版本不再可用。此版本的改进将在此组件的更高版本中提供。  错误修复和改进 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.12.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.12.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.12.0  |  <a name="changelog-nucleus-2.12.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.11.3  |  <a name="changelog-nucleus-2.11.3"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.11.2  |  <a name="changelog-nucleus-2.11.2"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.11.1  |  <a name="changelog-nucleus-2.11.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.11.0  |  <a name="changelog-nucleus-2.11.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.10.3  |  <a name="changelog-nucleus-2.10.3"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.10.2  |  <a name="changelog-nucleus-2.10.2"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.10.1  |  <a name="changelog-nucleus-2.10.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.10.0  |  <a name="changelog-nucleus-2.10.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.9.6  |  <a name="changelog-nucleus-2.9.6"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.9.5  |  <a name="changelog-nucleus-2.9.5"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.9.4  |  <a name="changelog-nucleus-2.9.4"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.9.3  |  <a name="changelog-nucleus-2.9.3"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.9.2  |  <a name="changelog-nucleus-2.9.2"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.9.1  |  <a name="changelog-nucleus-2.9.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.9.0  |  <a name="changelog-nucleus-2.9.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.8.1  |  <a name="changelog-nucleus-2.8.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.8.0  |  <a name="changelog-nucleus-2.8.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.7.0  |  <a name="changelog-nucleus-2.7.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.6.0  |  <a name="changelog-nucleus-2.6.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.5.6  |  <a name="changelog-nucleus-2.5.6"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.5.5  |  <a name="changelog-nucleus-2.5.5"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.5.4  |  <a name="changelog-nucleus-2.5.4"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.5.3  |  <a name="changelog-nucleus-2.5.3"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.5.2  |  <a name="changelog-nucleus-2.5.2"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.5.1  |   此版本不再可用。此版本的改进将在此组件的更高版本中提供。  <a name="changelog-nucleus-2.5.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.5.0  |  <a name="changelog-nucleus-2.5.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.4.0  |  <a name="changelog-nucleus-2.4.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.3.0  |  <a name="changelog-nucleus-2.3.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.2.0  |  <a name="changelog-nucleus-2.2.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.1.0  |  <a name="changelog-nucleus-2.1.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.0.5  |  <a name="changelog-nucleus-2.0.5"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.0.4  |  <a name="changelog-nucleus-2.0.4"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-component.html)  | 
|  2.0.3  |  初始版本。  | 

# Greengrass Nucleus Lite
<a name="greengrass-nucleus-lite-component"></a>

Greengrass Nucleus Lite (`aws.greengrass.NucleusLite`) 是适用于受限边缘设备的设备运行时，并针对最小的内存占用（使用的 RAM 少于 5MB）进行了优化。它已在 2.14.0 AWS IoT Greengrass 版本中引入，向后兼容 AWS IoT Greengrass 通用组件、Greengrass V2 API 和 SDK。

Greengrass Nucleus Lite 用作普通[ Greengrass Nucleus (`aws.greengrass.Nucleus`) ](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html)的替代品，可用于异构 Greengrass 设备实例集。

**Topics**
+ [版本](#greengrass-nucleus-lite-component-versions)
+ [操作系统](#greengrass-nucleus-lite-component-os-support)
+ [要求](#greengrass-nucleus-lite-component-requirements)
+ [兼容性](#greengrass-nucleus-lite-component-compatibility)
+ [下载并安装](#greengrass-nucleus-lite-component-install)
+ [配置](#greengrass-nucleus-lite-component-configuration)
+ [本地日志文件](#greengrass-nucleus-lite-component-log-file)
+ [更改日志](#greengrass-nucleus-lite-component-changelog)

## 版本
<a name="greengrass-nucleus-lite-component-versions"></a>

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

## 操作系统
<a name="greengrass-nucleus-lite-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux（使用 systemd 的发行版）

有关更多信息，请参阅 [Greengrass Nucleus](https://docs.aws.amazon.com/greengrass/v2/developerguide/operating-system-feature-support-matrix.html)。

## 要求
<a name="greengrass-nucleus-lite-component-requirements"></a>

设备必须满足某些要求才能安装和运行 nu AWS IoT Greengrass cleus lite 和 AWS IoT Greengrass Core 软件。有关更多信息，请参阅[设置指南](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/SETUP.md#setting-up-greengrass-nucleus-lite)。
+ 5MB 的 Nucleus 运行时 RAM 空间。
+ 5MB 存储空间（磁盘/闪存）。

其他系统依赖关系可见[《安装指南》](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/SETUP.md#dependencies)。

支持 Greengrass Nucleus 组件在 VPC 中运行。要在 VPC 中部署此组件，需要满足以下条件：
+ Greengrass 核心必须连接到数据、凭证 AWS IoT 和 Amazon S AWS IoT 3。

## 兼容性
<a name="greengrass-nucleus-lite-component-compatibility"></a>

n AWS IoT Greengrass ucleus lite 与 AWS IoT Greengrass v2 API（的子集）兼容并受支持。 SDKs它不依赖于任何特定的语言， runtimes/VMs 但是添加到部署中的组件可能需要特定的运行时（例如：Java JVM、Python）。有关 Greengrass Nucleus Lite 支持功能的更多信息，请参阅[Greengrass 功能兼容性](operating-system-feature-support-matrix.md)。

## 下载并安装
<a name="greengrass-nucleus-lite-component-install"></a>

您可以下载 apt 软件包、[从源代码构建](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/README.md#getting-started)、[使用 Yocto 层或为](https://github.com/aws4embeddedlinux/meta-aws)兼容设备[下载预构建的 Yocto 镜像](https://github.com/aws4embeddedlinux/meta-aws-demos)（例如）。 RaspberryPi您可以从[AWS IoT Core 控制台](https://console.aws.amazon.com/iot/home)下载**连接工具包**，其中包含设备的所有凭证和初始配置。每种特定的分发方法都包含了有关如何安装的说明。

你也可以按照教程安装 n AWS IoT Greengrass ucleus 精简版并探索 Greengrass 组件的开发。有关更多信息，请参阅 [教程：AWS IoT Greengrass V2 入门](getting-started.md)。

## 配置
<a name="greengrass-nucleus-lite-component-configuration"></a>

Nucleus 提供以下[配置](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/SETUP.md#configuring-greengrass)参数。某些参数要求 AWS IoT Greengrass Core软件重新启动才能生效。

`iotRoleAlias`  
指向令牌交换 IAM 角色的角色别名。 AWS IoT AWS IoT 凭证提供者扮演此角色是为了允许 Greengrass 核心设备与服务进行交互。 AWS 有关更多信息，请参阅[授权核心设备与 AWS 服务交互。](https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html)

`iotDataEndpoint`  
<a name="nucleus-component-configuration-iot-data-endpoint"></a>您的 AWS IoT 数据端点 AWS 账户。

`iotCredEndpoint`  
<a name="nucleus-component-configuration-iot-cred-endpoint"></a>您的 AWS IoT 凭证终端节点 AWS 账户。

`greengrassDataPlanePort`  
用于数据面板连接的端口。有关更多信息，请参阅[通过端口 443 或网络代理进行连接](https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-alpn-network-proxy)。  
您必须指定设备可以进行出站连接的端口。如果您指定被屏蔽的端口，则设备将无法连接 AWS IoT Greengrass 以接收部署。从以下选项中进行选择：  
+ `443`
+ `8443`
+ 默认值：`8443`

`awsRegion`  
 AWS 区域 要使用的。

`runWithDefault`  
用于运行组件的系统用户。  
<a name="nucleus-component-parameter-restart-para"></a>当您部署对此配置参数的更改时， AWS IoT Greengrass Core 软件会重新启动以使更改生效。
该对象包含以下信息：    
`posixUser`  
核心设备用于运行通用组件的系统用户名称或 ID，以及系统组（可选）。使用以下格式指定由半角冒号（`:`）分隔的用户和组：`user:group`。组是可选的。如果您未指定群组，则 AWS IoT Greengrass Core 软件将使用该用户的主群组。举例来说，可以指定 `ggc_user` 或 `ggc_user:ggc_group`。有关更多信息，请参阅 [配置运行组件的用户](configure-greengrass-core-v2.md#configure-component-user)。

`networkProxy`  
（可选）用于所有连接的网络代理。有关更多信息，请参阅 [通过端口 443 或网络代理进行连接](configure-greengrass-core-v2.md#configure-alpn-network-proxy)。  
当您部署对此配置参数的更改时，更改将在下次重启 AWS IoT Greengrass 核心软件后生效。
该对象包含以下信息：    
`noProxyAddresses`  
（可选）不使用代理的 IP 地址或主机名的逗号分隔列表。  
`proxy`  
要连接的代理。该对象包含以下信息：    
`url`  
代理服务器的 URL，格式为 `http://host:port`。  
+ `scheme` – 方案，必须是 `http`。
+ `host` – 代理服务器的主机名或 IP 地址。
+ `port` –（可选）端口号。如果您未指定端口，则 Greengrass 核心设备将使用以下默认值：
  + `http` – 80

## 本地日志文件
<a name="greengrass-nucleus-lite-component-log-file"></a>

消息记录至标准输出，然后由 systemd 处理日志文件。

**查看此组件的日志**
+ 使用 `journalctl` 查看日志

## 更改日志
<a name="greengrass-nucleus-lite-component-changelog"></a>


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.3.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.3.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.3.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.0.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-nucleus-lite-component.html)  | 
|  2.0.0  |  初始版本。  | 

# 客户端设备身份验证
<a name="client-device-auth-component"></a>

客户端设备身份验证组件（`aws.greengrass.clientdevices.Auth`）对客户端设备进行身份验证并授权客户端设备操作。

**注意**  <a name="client-device-component-context"></a>
客户端设备是本地 IoT 设备，连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。

**Topics**
+ [版本](#client-device-auth-component-versions)
+ [Type](#client-device-auth-component-type)
+ [操作系统](#client-device-auth-component-os-support)
+ [要求](#client-device-auth-component-requirements)
+ [依赖项](#client-device-auth-component-dependencies)
+ [配置](#client-device-auth-component-configuration)
+ [本地日志文件](#client-device-auth-component-log-file)
+ [更改日志](#client-device-auth-component-changelog)

## 版本
<a name="client-device-auth-component-versions"></a>

**注意**  
客户端设备身份验证版本 2.3.0 已停用。我们强烈建议您升级到客户端设备身份验证版本 2.3.1 或更高版本。

此组件具有以下版本：
+ 2.5.x
+ 2.4.x
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="client-device-auth-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="client-device-auth-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="client-device-auth-component-requirements"></a>

此组件具有以下要求：
+ [Greengrass 服务](greengrass-service-role.md)角色必须与您的关联并允许 AWS 账户 该权限。`iot:DescribeCertificate`
+ 核心设备的 AWS IoT 策略必须允许以下权限：
  + `greengrass:GetConnectivityInfo`，其中资源包括运行该组件的核心设备的 ARN
  + `greengrass:VerifyClientDeviceIoTCertificateAssociation`，其中资源包括连接到核心设备的每台客户端设备的 Amazon 资源名称（ARN）
  + `greengrass:VerifyClientDeviceIdentity`
  + `greengrass:PutCertificateAuthorities`
  + `iot:Publish`，其中资源包括以下 MQTT 主题的 ARN：
    + `$aws/things/coreDeviceThingName*-gci/shadow/get`
  + `iot:Subscribe`，其中资源包括以 ARNs 下 MQTT 主题过滤器：
    + `$aws/things/coreDeviceThingName*-gci/shadow/update/delta`
    + `$aws/things/coreDeviceThingName*-gci/shadow/get/accepted`
  + `iot:Receive`，其中资源包括以 ARNs 下 MQTT 主题：
    + `$aws/things/coreDeviceThingName*-gci/shadow/update/delta`
    + `$aws/things/coreDeviceThingName*-gci/shadow/get/accepted`

  有关更多信息，请参阅[AWS IoT 数据平面操作策略](device-auth.md#iot-policies)和[支持客户端设备的最低 AWS IoT 政策](device-auth.md#client-device-support-minimal-iot-policy)。
+ （可选）要使用离线身份验证， AWS IoT Greengrass 服务使用的 AWS Identity and Access Management (IAM) 角色必须包含以下权限：
  + `greengrass:ListClientDevicesAssociatedWithCoreDevice`，支持核心设备列出客户端以进行离线身份验证。
+ 支持在 VPC 中运行客户端设备身份验证组件。要在 VPC 中部署此组件，需要满足以下条件。
  + 客户端设备身份验证组件必须连接到 AWS IoT data、 AWS IoT 凭证和 Amazon S3。

### 端点和端口
<a name="client-device-auth-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 终端节点 | 端口 | 必需 | 描述 | 
| --- | --- | --- | --- | 
|  `iot.region.amazonaws.com`  | 443 | 是 |  用于获取有关 AWS IoT 事物证书的信息。  | 

## 依赖项
<a name="client-device-auth-component-dependencies"></a>

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

------
#### [ 2.5.5 ]

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


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

------
#### [ 2.5.4 ]

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


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

------
#### [ 2.5.2 – 2.5.3 ]

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


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

------
#### [ 2.5.1 ]

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


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

------
#### [ 2.4.4 - 2.5.0 ]

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


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

------
#### [ 2.4.3 ]

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


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

------
#### [ 2.4.1 and 2.4.2 ]

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


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

------
#### [ 2.3.0 – 2.4.0 ]

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


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

------
#### [ 2.3.0 ]

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


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

------
#### [ 2.2.3 ]

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


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

------
#### [ 2.2.2 ]

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


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

------
#### [ 2.2.1 ]

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


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

------
#### [ 2.2.0 ]

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


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

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

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


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

------
#### [ 2.0.4 ]

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


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

------
#### [ 2.0.2 and 2.0.3 ]

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


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

------
#### [ 2.0.1 ]

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


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

------
#### [ 2.0.0 ]

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


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

------

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

## 配置
<a name="client-device-auth-component-configuration"></a>

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

**注意**  
订阅权限在客户端向本地 MQTT 代理发出订阅请求期间进行评估。如果客户端的现有订阅权限被撤销，则客户端将无法再订阅主题。但是，它将继续接收来自以前订阅的任何主题的消息。为防止这种行为，应在撤销订阅权限后重新启动本地 MQTT 代理，以强制客户端重新授权。  
对于 MQTT 5 代理（EMQX）组件，请更新 `restartIdentifier` 配置以重新启动 MQTT 5 代理。  
对于 MQTT 3.1.1 代理（Moquette）组件，默认情况下，当服务器证书更改以强制客户端重新授权时，它会每周重新启动一次。要强制重新启动，您可以更改核心设备的连接信息（IP 地址），也可以进行部署以移除代理组件，稍后再部署。

------
#### [ v2.5.0 – 2.5.4 ]

`deviceGroups`  
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称的开头和结尾使用此通配符，以匹配名称以您指定的字符串开头或结尾的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName`— 客户端设备的 AWS IoT 名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 结尾的客户端设备。  

```
thingName: *MyClientDevice
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + `mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源不支持 MQTT 主题通配符。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以在资源变量中的任意位置指定 `*` 通配符，以允许访问所有资源。例如，您可以指定 **mqtt:topic:my\$1** 以允许访问与该输入相匹配的资源。  
支持以下资源变量。  
+ `mqtt:topic:${iot:Connection.Thing.ThingName}`

  这将解析为正在评估策略的 AWS IoT Core 注册表中事物的名称。 AWS IoT Core 使用设备在进行身份验证时出示的证书来确定使用哪个东西来验证连接。只有当设备通过协议通过 MQTT 或 MQTT 进行连接时，此策略变量才可用。 WebSocket   
`statementDescription`  
（可选）此政策语句的描述。

`certificates`  <a name="client-device-auth-component-configuration-certificates"></a>
（可选）此核心设备的证书配置选项。该对象包含以下信息：    
`serverCertificateValiditySeconds`  
（可选）本地 MQTT 服务器证书到期后的时间长度（以秒为单位）。您可以配置此选项，以自定义客户端设备断开连接并重新连接到核心设备的频率。  
此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理（例如 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)）生成新证书并重新启动。发生这种情况时，连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。  
默认值：`604800`（7 天）  
最小值：`172800`（2 天）  
最大值：`864000`（10 天）

`performance`  
（可选）此核心设备的性能配置选项。该对象包含以下信息：    
`maxActiveAuthTokens`  
（可选）活动客户端设备授权令牌的最大数量。您可以增加此数字，以支持更多的客户端设备能够连接到单个核心设备，而无需重新对其进行身份验证。  
默认值：`2500`  
`cloudRequestQueueSize`  
（可选）在此组件拒绝 AWS 云 请求之前要排队的最大请求数。  
默认值：`100`  
`maxConcurrentCloudRequests`  
（可选）要向 AWS 云发送的并发请求的最大数量。您可以增加此数字，以提高您用于连接大量客户端设备的核心设备的身份验证性能。  
默认值：`1`

`certificateAuthority`  
（可选）证书颁发机构配置选项，使用您自己的中间证书颁发机构替换核心设备中间颁发机构。  
如果您将 Greengrass 核心设备配置为自定义证书颁发机构（CA），并使用相同的 CA 颁发客户端设备证书，则 Greengrass 会绕过对客户端设备 MQTT 操作的授权策略检查。客户端设备身份验证组件完全信任使用由配置 CA 签署的证书的客户端。  
要在使用自定义 CA 时限制此行为，请使用其他 CA 或中间 CA 创建和签署客户端设备，然后调整 `certificateUri` 和 `certificateChainUri` 字段以指向正确的中间 CA。
 该对象包含以下信息。    
certificateUri  
证书的位置。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书的 URI。  
`certificateChainUri`  
核心设备 CA 的设备链的 ARN。这应该是返回到您的根 CA 的完整证书链。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书链的 URI。  
`privateKeyUri`  
核心设备私钥的位置。这可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书私钥的 URI。

`security`  
（可选）此核心设备的安全配置选项。该对象包含以下信息。    
`clientDeviceTrustDurationMinutes`  
在要求客户端设备重新进行身份验证之前，客户端设备的身份验证信息可以被信任的持续时间（以分钟为单位）。默认值是 1。

`metrics`  
（可选）此核心设备的指标选项。仅当客户端设备身份验证出现错误时，才会显示错误指标。该对象包含以下信息：    
`disableMetrics`  
如果 `disableMetrics` 字段设置为 `true`，则客户端设备身份验证将不会收集指标。  
默认值：`false`  
`aggregatePeriodSeconds`  
以秒为单位的聚合周期，决定了客户端设备身份验证聚合指标并将其发送给遥测座席的频率。这不会改变指标的发布频率，因为遥测座席仍然每天发布一次。  
默认值：`3600`

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `ERRORED`。  
默认值：`120`

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用事物名称策略）**  <a name="client-device-auth-component-configuration-example-mythingname"></a>
以下示例配置支持客户端设备在以客户端设备的事物名称开头并以字符串 `topic` 结尾的主题上发布。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "myThing": {
        "selectionRule": "thingName: *",
        "policyName": "MyThingNamePolicy"
      }
    },
    "policies": {
      "MyThingNamePolicy": {
        "policyStatement": {
          "statementDescription": "mqtt publish",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:${iot:Connection.Thing.ThingName}/*/topic"
          ]
        }
      }
    }
  }
}
```

------
#### [ v2.4.5 ]

`deviceGroups`  
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称的开头和结尾使用此通配符，以匹配名称以您指定的字符串开头或结尾的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName`— 客户端设备的 AWS IoT 名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 结尾的客户端设备。  

```
thingName: *MyClientDevice
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topicfilter"></a>`mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源支持 `+` 和 `#` MQTT 主题通配符。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

    客户端设备可以订阅您允许的确切主题筛选条件。例如，如果您允许客户端设备订阅 `mqtt:topicfilter:client/+/status` 资源，则客户端设备可以订阅 `client/+/status`，但不能订阅 `client/client1/status`。
您可以指定 `*` 通配符以允许访问所有操作。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以指定 `*` 通配符以允许访问所有资源。您不能使用 `*` 通配符来匹配部分资源标识符。例如，您可以指定 **"resources": "\$1"**，但不能指定 **"resources": "mqtt:clientId:\$1"**。  
`statementDescription`  
（可选）此政策语句的描述。

`certificates`  <a name="client-device-auth-component-configuration-certificates"></a>
（可选）此核心设备的证书配置选项。该对象包含以下信息：    
`serverCertificateValiditySeconds`  
（可选）本地 MQTT 服务器证书到期后的时间长度（以秒为单位）。您可以配置此选项，以自定义客户端设备断开连接并重新连接到核心设备的频率。  
此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理（例如 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)）生成新证书并重新启动。发生这种情况时，连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。  
默认值：`604800`（7 天）  
最小值：`172800`（2 天）  
最大值：`864000`（10 天）

`performance`  
（可选）此核心设备的性能配置选项。该对象包含以下信息：    
`maxActiveAuthTokens`  
（可选）活动客户端设备授权令牌的最大数量。您可以增加此数字，以支持更多的客户端设备能够连接到单个核心设备，而无需重新对其进行身份验证。  
默认值：`2500`  
`cloudRequestQueueSize`  
（可选）在此组件拒绝 AWS 云 请求之前要排队的最大请求数。  
默认值：`100`  
`maxConcurrentCloudRequests`  
（可选）要向 AWS 云发送的并发请求的最大数量。您可以增加此数字，以提高您用于连接大量客户端设备的核心设备的身份验证性能。  
默认值：`1`

`certificateAuthority`  
（可选）证书颁发机构配置选项，使用您自己的中间证书颁发机构替换核心设备中间颁发机构。  
如果您将 Greengrass 核心设备配置为自定义证书颁发机构（CA），并使用相同的 CA 颁发客户端设备证书，则 Greengrass 会绕过对客户端设备 MQTT 操作的授权策略检查。客户端设备身份验证组件完全信任使用由配置 CA 签署的证书的客户端。  
要在使用自定义 CA 时限制此行为，请使用其他 CA 或中间 CA 创建和签署客户端设备，然后调整 `certificateUri` 和 `certificateChainUri` 字段以指向正确的中间 CA。
 该对象包含以下信息。    
certificateUri  
证书的位置。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书的 URI。  
`certificateChainUri`  
核心设备 CA 的设备链的 ARN。这应该是返回到您的根 CA 的完整证书链。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书链的 URI。  
`privateKeyUri`  
核心设备私钥的位置。这可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书私钥的 URI。

`security`  
（可选）此核心设备的安全配置选项。该对象包含以下信息。    
`clientDeviceTrustDurationMinutes`  
在要求客户端设备重新进行身份验证之前，客户端设备的身份验证信息可以被信任的持续时间（以分钟为单位）。默认值是 1。

`metrics`  
（可选）此核心设备的指标选项。仅当客户端设备身份验证出现错误时，才会显示错误指标。该对象包含以下信息：    
`disableMetrics`  
如果 `disableMetrics` 字段设置为 `true`，则客户端设备身份验证将不会收集指标。  
默认值：`false`  
`aggregatePeriodSeconds`  
以秒为单位的聚合周期，决定了客户端设备身份验证聚合指标并将其发送给遥测座席的频率。这不会改变指标的发布频率，因为遥测座席仍然每天发布一次。  
默认值：`3600`

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `ERRORED`。  
默认值：`120`

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

------
#### [ v2.4.2 - v2.4.4 ]

`deviceGroups`  <a name="client-device-auth-component-configuration-devicegroups"></a>
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称结尾使用此通配符，以匹配名称以您指定的字符串开头的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName` – 客户端设备的 AWS IoT 事物的名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topicfilter"></a>`mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源支持 `+` 和 `#` MQTT 主题通配符。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

    客户端设备可以订阅您允许的确切主题筛选条件。例如，如果您允许客户端设备订阅 `mqtt:topicfilter:client/+/status` 资源，则客户端设备可以订阅 `client/+/status`，但不能订阅 `client/client1/status`。
您可以指定 `*` 通配符以允许访问所有操作。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以指定 `*` 通配符以允许访问所有资源。您不能使用 `*` 通配符来匹配部分资源标识符。例如，您可以指定 **"resources": "\$1"**，但不能指定 **"resources": "mqtt:clientId:\$1"**。  
`statementDescription`  
（可选）此政策语句的描述。

`certificates`  <a name="client-device-auth-component-configuration-certificates"></a>
（可选）此核心设备的证书配置选项。该对象包含以下信息：    
`serverCertificateValiditySeconds`  
（可选）本地 MQTT 服务器证书到期后的时间长度（以秒为单位）。您可以配置此选项，以自定义客户端设备断开连接并重新连接到核心设备的频率。  
此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理（例如 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)）生成新证书并重新启动。发生这种情况时，连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。  
默认值：`604800`（7 天）  
最小值：`172800`（2 天）  
最大值：`864000`（10 天）

`performance`  
（可选）此核心设备的性能配置选项。该对象包含以下信息：    
`maxActiveAuthTokens`  
（可选）活动客户端设备授权令牌的最大数量。您可以增加此数字，以支持更多的客户端设备能够连接到单个核心设备，而无需重新对其进行身份验证。  
默认值：`2500`  
`cloudRequestQueueSize`  
（可选）在此组件拒绝 AWS 云 请求之前要排队的最大请求数。  
默认值：`100`  
`maxConcurrentCloudRequests`  
（可选）要向 AWS 云发送的并发请求的最大数量。您可以增加此数字，以提高您用于连接大量客户端设备的核心设备的身份验证性能。  
默认值：`1`

`certificateAuthority`  
（可选）证书颁发机构配置选项，使用您自己的中间证书颁发机构替换核心设备中间颁发机构。  
如果您将 Greengrass 核心设备配置为自定义证书颁发机构（CA），并使用相同的 CA 颁发客户端设备证书，则 Greengrass 会绕过对客户端设备 MQTT 操作的授权策略检查。客户端设备身份验证组件完全信任使用由配置 CA 签署的证书的客户端。  
要在使用自定义 CA 时限制此行为，请使用其他 CA 或中间 CA 创建和签署客户端设备，然后调整 `certificateUri` 和 `certificateChainUri` 字段以指向正确的中间 CA。
 该对象包含以下信息。    
certificateUri  
证书的位置。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书的 URI。  
`certificateChainUri`  
核心设备 CA 的设备链的 ARN。这应该是返回到您的根 CA 的完整证书链。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书链的 URI。  
`privateKeyUri`  
核心设备私钥的位置。这可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书私钥的 URI。

`security`  
（可选）此核心设备的安全配置选项。该对象包含以下信息。    
`clientDeviceTrustDurationMinutes`  
在要求客户端设备重新进行身份验证之前，客户端设备的身份验证信息可以被信任的持续时间（以分钟为单位）。默认值是 1。

`metrics`  
（可选）此核心设备的指标选项。仅当客户端设备身份验证出现错误时，才会显示错误指标。该对象包含以下信息：    
`disableMetrics`  
如果 `disableMetrics` 字段设置为 `true`，则客户端设备身份验证将不会收集指标。  
默认值：`false`  
`aggregatePeriodSeconds`  
以秒为单位的聚合周期，决定了客户端设备身份验证聚合指标并将其发送给遥测座席的频率。这不会改变指标的发布频率，因为遥测座席仍然每天发布一次。  
默认值：`3600`

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `ERRORED`。  
默认值：`120`

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

------
#### [ v2.4.0 - v2.4.1 ]

`deviceGroups`  <a name="client-device-auth-component-configuration-devicegroups"></a>
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称结尾使用此通配符，以匹配名称以您指定的字符串开头的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName` – 客户端设备的 AWS IoT 事物的名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topicfilter"></a>`mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源支持 `+` 和 `#` MQTT 主题通配符。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

    客户端设备可以订阅您允许的确切主题筛选条件。例如，如果您允许客户端设备订阅 `mqtt:topicfilter:client/+/status` 资源，则客户端设备可以订阅 `client/+/status`，但不能订阅 `client/client1/status`。
您可以指定 `*` 通配符以允许访问所有操作。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以指定 `*` 通配符以允许访问所有资源。您不能使用 `*` 通配符来匹配部分资源标识符。例如，您可以指定 **"resources": "\$1"**，但不能指定 **"resources": "mqtt:clientId:\$1"**。  
`statementDescription`  
（可选）此政策语句的描述。

`certificates`  <a name="client-device-auth-component-configuration-certificates"></a>
（可选）此核心设备的证书配置选项。该对象包含以下信息：    
`serverCertificateValiditySeconds`  
（可选）本地 MQTT 服务器证书到期后的时间长度（以秒为单位）。您可以配置此选项，以自定义客户端设备断开连接并重新连接到核心设备的频率。  
此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理（例如 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)）生成新证书并重新启动。发生这种情况时，连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。  
默认值：`604800`（7 天）  
最小值：`172800`（2 天）  
最大值：`864000`（10 天）

`performance`  
（可选）此核心设备的性能配置选项。该对象包含以下信息：    
`maxActiveAuthTokens`  
（可选）活动客户端设备授权令牌的最大数量。您可以增加此数字，以支持更多的客户端设备能够连接到单个核心设备，而无需重新对其进行身份验证。  
默认值：`2500`  
`cloudRequestQueueSize`  
（可选）在此组件拒绝 AWS 云 请求之前要排队的最大请求数。  
默认值：`100`  
`maxConcurrentCloudRequests`  
（可选）要向 AWS 云发送的并发请求的最大数量。您可以增加此数字，以提高您用于连接大量客户端设备的核心设备的身份验证性能。  
默认值：`1`

`certificateAuthority`  
（可选）证书颁发机构配置选项，使用您自己的中间证书颁发机构替换核心设备中间颁发机构。该对象包含以下信息。  
 该对象包含以下信息：    
certificateUri  
证书的位置。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书的 URI。  
`certificateChainUri`  
核心设备 CA 的设备链的 ARN。这应该是返回到您的根 CA 的完整证书链。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书链的 URI。  
`privateKeyUri`  
核心设备私钥的位置。这可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书私钥的 URI。

`security`  
（可选）此核心设备的安全配置选项。该对象包含以下信息。    
`clientDeviceTrustDurationMinutes`  
在要求客户端设备重新进行身份验证之前，客户端设备的身份验证信息可以被信任的持续时间（以分钟为单位）。默认值是 1。

`metrics`  
（可选）此核心设备的指标选项。仅当客户端设备身份验证出现错误时，才会显示错误指标。该对象包含以下信息：    
`disableMetrics`  
如果 `disableMetrics` 字段设置为 `true`，则客户端设备身份验证将不会收集指标。  
默认值：`false`  
`aggregatePeriodSeconds`  
以秒为单位的聚合周期，决定了客户端设备身份验证聚合指标并将其发送给遥测座席的频率。这不会改变指标的发布频率，因为遥测座席仍然每天发布一次。  
默认值：`3600`

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

------
#### [ v2.3.x ]

`deviceGroups`  <a name="client-device-auth-component-configuration-devicegroups"></a>
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称结尾使用此通配符，以匹配名称以您指定的字符串开头的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName` – 客户端设备的 AWS IoT 事物的名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topicfilter"></a>`mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源支持 `+` 和 `#` MQTT 主题通配符。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

    客户端设备可以订阅您允许的确切主题筛选条件。例如，如果您允许客户端设备订阅 `mqtt:topicfilter:client/+/status` 资源，则客户端设备可以订阅 `client/+/status`，但不能订阅 `client/client1/status`。
您可以指定 `*` 通配符以允许访问所有操作。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以指定 `*` 通配符以允许访问所有资源。您不能使用 `*` 通配符来匹配部分资源标识符。例如，您可以指定 **"resources": "\$1"**，但不能指定 **"resources": "mqtt:clientId:\$1"**。  
`statementDescription`  
（可选）此政策语句的描述。

`certificates`  <a name="client-device-auth-component-configuration-certificates"></a>
（可选）此核心设备的证书配置选项。该对象包含以下信息：    
`serverCertificateValiditySeconds`  
（可选）本地 MQTT 服务器证书到期后的时间长度（以秒为单位）。您可以配置此选项，以自定义客户端设备断开连接并重新连接到核心设备的频率。  
此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理（例如 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)）生成新证书并重新启动。发生这种情况时，连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。  
默认值：`604800`（7 天）  
最小值：`172800`（2 天）  
最大值：`864000`（10 天）

`performance`  
（可选）此核心设备的性能配置选项。该对象包含以下信息：    
`maxActiveAuthTokens`  
（可选）活动客户端设备授权令牌的最大数量。您可以增加此数字，以支持更多的客户端设备能够连接到单个核心设备，而无需重新对其进行身份验证。  
默认值：`2500`  
`cloudRequestQueueSize`  
（可选）在此组件拒绝 AWS 云 请求之前要排队的最大请求数。  
默认值：`100`  
`maxConcurrentCloudRequests`  
（可选）要向 AWS 云发送的并发请求的最大数量。您可以增加此数字，以提高您用于连接大量客户端设备的核心设备的身份验证性能。  
默认值：`1`

`certificateAuthority`  
（可选）证书颁发机构配置选项，使用您自己的中间证书颁发机构替换核心设备中间颁发机构。该对象包含以下信息。    
certificateUri  
证书的位置。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书的 URI。  
`certificateChainUri`  
核心设备 CA 的设备链的 ARN。这应该是返回到您的根 CA 的完整证书链。它可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书链的 URI。  
`privateKeyUri`  
核心设备私钥的位置。这可以是文件系统 URI，也可以是指向硬件安全模块中存储的证书私钥的 URI。

`security`  
（可选）此核心设备的安全配置选项。该对象包含以下信息。    
`clientDeviceTrustDurationMinutes`  
在要求客户端设备重新进行身份验证之前，客户端设备的身份验证信息可以被信任的持续时间（以分钟为单位）。默认值是 1。

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

------
#### [ v2.2.x ]

`deviceGroups`  <a name="client-device-auth-component-configuration-devicegroups"></a>
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称结尾使用此通配符，以匹配名称以您指定的字符串开头的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName` – 客户端设备的 AWS IoT 事物的名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topicfilter"></a>`mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源支持 `+` 和 `#` MQTT 主题通配符。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

    客户端设备可以订阅您允许的确切主题筛选条件。例如，如果您允许客户端设备订阅 `mqtt:topicfilter:client/+/status` 资源，则客户端设备可以订阅 `client/+/status`，但不能订阅 `client/client1/status`。
您可以指定 `*` 通配符以允许访问所有操作。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以指定 `*` 通配符以允许访问所有资源。您不能使用 `*` 通配符来匹配部分资源标识符。例如，您可以指定 **"resources": "\$1"**，但不能指定 **"resources": "mqtt:clientId:\$1"**。  
`statementDescription`  
（可选）此政策语句的描述。

`certificates`  <a name="client-device-auth-component-configuration-certificates"></a>
（可选）此核心设备的证书配置选项。该对象包含以下信息：    
`serverCertificateValiditySeconds`  
（可选）本地 MQTT 服务器证书到期后的时间长度（以秒为单位）。您可以配置此选项，以自定义客户端设备断开连接并重新连接到核心设备的频率。  
此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理（例如 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)）生成新证书并重新启动。发生这种情况时，连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。  
默认值：`604800`（7 天）  
最小值：`172800`（2 天）  
最大值：`864000`（10 天）

`performance`  
（可选）此核心设备的性能配置选项。该对象包含以下信息：    
`maxActiveAuthTokens`  
（可选）活动客户端设备授权令牌的最大数量。您可以增加此数字，以支持更多的客户端设备能够连接到单个核心设备，而无需重新对其进行身份验证。  
默认值：`2500`  
`cloudRequestQueueSize`  
（可选）在此组件拒绝 AWS 云 请求之前要排队的最大请求数。  
默认值：`100`  
`maxConcurrentCloudRequests`  
（可选）要向 AWS 云发送的并发请求的最大数量。您可以增加此数字，以提高您用于连接大量客户端设备的核心设备的身份验证性能。  
默认值：`1`

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

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

`deviceGroups`  <a name="client-device-auth-component-configuration-devicegroups"></a>
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称结尾使用此通配符，以匹配名称以您指定的字符串开头的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName` – 客户端设备的 AWS IoT 事物的名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topicfilter"></a>`mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源支持 `+` 和 `#` MQTT 主题通配符。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

    客户端设备可以订阅您允许的确切主题筛选条件。例如，如果您允许客户端设备订阅 `mqtt:topicfilter:client/+/status` 资源，则客户端设备可以订阅 `client/+/status`，但不能订阅 `client/client1/status`。
您可以指定 `*` 通配符以允许访问所有操作。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以指定 `*` 通配符以允许访问所有资源。您不能使用 `*` 通配符来匹配部分资源标识符。例如，您可以指定 **"resources": "\$1"**，但不能指定 **"resources": "mqtt:clientId:\$1"**。  
`statementDescription`  
（可选）此政策语句的描述。

`certificates`  <a name="client-device-auth-component-configuration-certificates"></a>
（可选）此核心设备的证书配置选项。该对象包含以下信息：    
`serverCertificateValiditySeconds`  
（可选）本地 MQTT 服务器证书到期后的时间长度（以秒为单位）。您可以配置此选项，以自定义客户端设备断开连接并重新连接到核心设备的频率。  
此组件在本地 MQTT 服务器证书到期前 24 小时对其进行轮换。MQTT 代理（例如 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)）生成新证书并重新启动。发生这种情况时，连接到该核心设备的所有客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。  
默认值：`604800`（7 天）  
最小值：`172800`（2 天）  
最大值：`864000`（10 天）

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

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

`deviceGroups`  <a name="client-device-auth-component-configuration-devicegroups"></a>
设备组是指有权与核心设备连接和通信的客户端设备组。使用选择规则来识别客户端设备组，并定义*客户端设备授权策略*，为每个设备组指定权限。  
该对象包含以下信息：    
`formatVersion`  
此配置对象的格式版本。  
从以下选项中进行选择：  
+ `2021-03-05`  
`definitions`  
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的*选择规则*。每个定义还指定了要应用于与选择规则相匹配的客户端设备的权限策略。如果某客户端设备是多个设备组的成员，则该设备的权限由每个组的权限策略组成。  
该对象包含以下信息：    
`groupNameKey`  
该设备组的名称。*groupNameKey*替换为可帮助您识别此设备组的名称。  
该对象包含以下信息：    
`selectionRule`  
用于指定哪些客户端设备是该设备组成员的查询。当客户端设备连接时，核心设备会评估此选择规则，以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员，则核心设备使用该设备组的策略来授权客户端设备的操作。  
每条选择规则至少包含一个*选择规则子句*，即可以匹配客户端设备的单个表达式查询。选择规则使用的查询语法与 AWS IoT 舰队索引相同。有关选择规则语法的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT 实例集索引查询语法](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)。  
使用 `*` 通配符，将多个客户端设备与一个选择规则子句进行匹配。您可以在事物名称结尾使用此通配符，以匹配名称以您指定的字符串开头的客户端设备。您还可以使用此通配符来匹配所有客户端设备。  
要选择包含冒号字符（`:`）的值，请使用反斜杠字符（`\\`）对冒号进行转义。在 JSON 等格式中，您必须对反斜杠字符进行转义，因此您在冒号字符之前输入两个反斜杠字符。例如，指定 `thingName: MyTeam\\\\:ClientDevice1` 以选择名称为 `MyTeam:ClientDevice1` 的事物。
您可指定以下选择器：  
+ `thingName` – 客户端设备的 AWS IoT 事物的名称。

**Example 选择规则示例**  
以下选择规则匹配名称为 `MyClientDevice1` 或 `MyClientDevice2` 的客户端设备。  

```
thingName: MyClientDevice1 OR thingName: MyClientDevice2
```

**Example 选择规则示例（使用通配符）**  
以下选择规则匹配名称以 `MyClientDevice` 开头的客户端设备。  

```
thingName: MyClientDevice*
```

**Example 选择规则示例（匹配所有设备）**  
以下选择规则匹配所有客户端设备。  

```
thingName: *
```  
`policyName`  
适用于该设备组中的客户端设备的权限策略。指定您在 `policies` 对象中定义的策略的名称。  
`policies`  
针对连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以用来执行这些操作的资源。  
该对象包含以下信息：    
`policyNameKey`  
该授权策略的名称。*policyNameKey*替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义哪个策略适用于设备组。  
该对象包含以下信息：    
`statementNameKey`  
该策略语句的名称。*statementNameKey*替换为可帮助您识别此政策声明的名称。  
该对象包含以下信息：    
`operations`  
允许使用此策略中的资源的操作列表。  
您可以包括以下任一操作：  
+ `mqtt:connect` – 授予权限以连接核心设备。客户端设备必须具有此权限才能连接到核心设备。

  此操作支持以下资源：
  + `mqtt:clientId:deviceClientId` – 根据客户端设备用于连接核心设备的 MQTT 代理的客户端 ID 来限制访问。*deviceClientId*替换为要使用的客户端 ID。
+ `mqtt:publish` – 授予权限以向主题发布 MQTT 消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topic"></a>`mqtt:topic:mqttTopic` – 根据客户端设备用于发布消息的 MQTT 主题来限制访问。*mqttTopic*替换为要使用的主题。

    此资源不支持 MQTT 主题通配符。
+ `mqtt:subscribe` – 授予权限以订阅 MQTT 主题筛选条件，以接收消息。

  此操作支持以下资源：
  + <a name="client-device-authorization-policy-resource-mqtt-topicfilter"></a>`mqtt:topicfilter:mqttTopicFilter` – 根据客户端设备可用于订阅消息的 MQTT 主题来限制访问。*mqttTopicFilter*替换为要使用的主题筛选器。

    此资源支持 `+` 和 `#` MQTT 主题通配符。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

    客户端设备可以订阅您允许的确切主题筛选条件。例如，如果您允许客户端设备订阅 `mqtt:topicfilter:client/+/status` 资源，则客户端设备可以订阅 `client/+/status`，但不能订阅 `client/client1/status`。
您可以指定 `*` 通配符以允许访问所有操作。  
`resources`  
允许此策略中的操作的资源列表。指定与此策略中的操作相对应的资源。例如，您可以在指定 `mqtt:publish` 操作的策略中指定 MQTT 主题资源列表（`mqtt:topic:mqttTopic`）。  
您可以指定 `*` 通配符以允许访问所有资源。您不能使用 `*` 通配符来匹配部分资源标识符。例如，您可以指定 **"resources": "\$1"**，但不能指定 **"resources": "mqtt:clientId:\$1"**。  
`statementDescription`  
（可选）此政策语句的描述。

**Example 示例：配置合并更新（使用限制策略）**  <a name="client-device-auth-component-configuration-example-restrictive"></a>
以下示例配置指定允许名称以开头的`MyClientDevice`客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyDeviceGroup": {
        "selectionRule": "thingName: MyClientDevice*",
        "policyName": "MyRestrictivePolicy"
      }
    },
    "policies": {
      "MyRestrictivePolicy": {
        "AllowConnect": {
          "statementDescription": "Allow client devices to connect.",
          "operations": [
            "mqtt:connect"
          ],
          "resources": [
            "*"
          ]
        },
        "AllowPublish": {
          "statementDescription": "Allow client devices to publish on test/topic.",
          "operations": [
            "mqtt:publish"
          ],
          "resources": [
            "mqtt:topic:test/topic"
          ]
        },
        "AllowSubscribe": {
          "statementDescription": "Allow client devices to subscribe to test/topic/response.",
          "operations": [
            "mqtt:subscribe"
          ],
          "resources": [
            "mqtt:topicfilter:test/topic/response"
          ]
        }
      }
    }
  }
}
```

**Example 示例：配置合并更新（使用宽松策略）**  <a name="client-device-auth-component-configuration-example-permissive"></a>
以下示例配置指定允许所有客户端设备 publish/subscribe 在所有主题上进行连接。  

```
{
  "deviceGroups": {
    "formatVersion": "2021-03-05",
    "definitions": {
      "MyPermissiveDeviceGroup": {
        "selectionRule": "thingName: *",
        "policyName": "MyPermissivePolicy"
      }
    },
    "policies": {
      "MyPermissivePolicy": {
        "AllowAll": {
          "statementDescription": "Allow client devices to perform all actions.",
          "operations": [
            "*"
          ],
          "resources": [
            "*"
          ]
        }
      }
    }
  }
}
```

------

## 本地日志文件
<a name="client-device-auth-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="client-device-auth-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.5.5  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.5.4  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.5.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.5.2  |  Greengrass nucleus 版本 2.14.0 版本的版本已更新。  | 
|  2.5.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.5.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.4.5  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html) | 
|  2.4.4  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.4.3  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.4.2  |  <a name="changelog-client-device-auth-2.4.2"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.4.1  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.4.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.3.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.3.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.3.0  |   此版本不再可用。此版本的改进将在此组件的更高版本中提供。  新特征 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.2.3  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.2.1  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。 | 
|  2.2.0  |  <a name="changelog-client-device-auth-2.2.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.0.4  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/client-device-auth-component.html)  | 
|  2.0.2  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.1  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.0  |  初始版本。  | 

# CloudWatch 指标
<a name="cloudwatch-metrics-component"></a>

亚马逊 CloudWatch 指标组件 (`aws.greengrass.Cloudwatch`) 将来自Greengrass核心设备的自定义指标发布到亚马逊。 CloudWatch该组件使组件能够发布 CloudWatch 指标，您可以使用这些指标来监控和分析 Greengrass 核心设备的环境。有关更多信息，请参阅[亚马逊* CloudWatch 用户指南中的使用亚马逊 CloudWatch*指标](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

要使用此组件发布 CloudWatch 指标，请向该组件订阅的主题发布一条消息。默认情况下，此组件订阅 `cloudwatch/metric/put`[local publish/subscribe](ipc-publish-subscribe.md) 主题。部署此组件时，您可以指定其他主题，包括 AWS IoT Core MQTT 主题。

该组件对位于同一命名空间中的指标进行批处理，并定期将其发布到 CloudWatch 。

**注意**  
此组件提供的功能与 AWS IoT Greengrass V1 中的 CloudWatch 指标连接器类似。有关更多信息，请参阅《*AWS IoT Greengrass V1 开发者指南*》中的[CloudWatch 指标连接器](https://docs.aws.amazon.com/greengrass/latest/developerguide/cloudwatch-metrics-connector.html)。

**Topics**
+ [版本](#cloudwatch-metrics-component-versions)
+ [Type](#cloudwatch-metrics-component-type)
+ [操作系统](#cloudwatch-metrics-component-os-support)
+ [要求](#cloudwatch-metrics-component-requirements)
+ [依赖项](#cloudwatch-metrics-component-dependencies)
+ [配置](#cloudwatch-metrics-component-configuration)
+ [输入数据](#cloudwatch-metrics-component-input-data)
+ [输出数据](#cloudwatch-metrics-component-output-data)
+ [许可证](#cloudwatch-metrics-component-licenses)
+ [本地日志文件](#cloudwatch-metrics-component-log-file)
+ [更改日志](#cloudwatch-metrics-component-changelog)
+ [另请参阅](#cloudwatch-metrics-component-see-also)

## 版本
<a name="cloudwatch-metrics-component-versions"></a>

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

有关每个组件版本中的更改的信息，请参阅[更改日志](#cloudwatch-metrics-component-changelog)。

## Type
<a name="cloudwatch-metrics-component-type"></a>

------
#### [ v3.x ]

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

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

<a name="public-component-type-lambda"></a>此<a name="public-component-type-lambda-phrase"></a>组件是一个 Lambda 组件 (`aws.greengrass.lambda`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 使用 [Lambda 启动程序组件](lambda-launcher-component.md)运行此组件的 Lambda 函数。

------

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

## 操作系统
<a name="cloudwatch-metrics-component-os-support"></a>

------
#### [ v3.x ]

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

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

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

------

## 要求
<a name="cloudwatch-metrics-component-requirements"></a>

此组件具有以下要求：

------
#### [ 3.x ]
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `cloudwatch:PutMetricData` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "cloudwatch:PutMetricData"
        ],
        "Effect": "Allow",
        "Resource": "*"
      }
    ]
  }
  ```

------

  有关更多信息，请参阅《[亚马逊* CloudWatch 用户指南》中的亚马逊 CloudWatch*权限参考](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html)。

------
#### [ 2.x ]
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `cloudwatch:PutMetricData` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "cloudwatch:PutMetricData"
        ],
        "Effect": "Allow",
        "Resource": "*"
      }
    ]
  }
  ```

------

  有关更多信息，请参阅《[亚马逊* CloudWatch 用户指南》中的亚马逊 CloudWatch*权限参考](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html)。
+ <a name="connector-component-legacy-subscription-router-dependency"></a>要接收此组件的输出数据，在部署此组件时，必须合并[旧版订阅路由器组件](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) 的以下配置更新。此配置指定此组件发布响应的主题。

------
#### [ Legacy subscription router v2.1.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-cloudwatch": {
        "id": "aws-greengrass-cloudwatch",
        "source": "component:aws.greengrass.Cloudwatch",
        "subject": "cloudwatch/metric/put/status",
        "target": "cloud"
      }
    }
  }
  ```

------
#### [ Legacy subscription router v2.0.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-cloudwatch": {
        "id": "aws-greengrass-cloudwatch",
        "source": "arn:aws:lambda:region:aws:function:aws-greengrass-cloudwatch:version",
        "subject": "cloudwatch/metric/put/status",
        "target": "cloud"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*替换为 AWS 区域 你使用的。
  + *version*替换为该组件运行的 Lambda 函数的版本。要查找 Lambda 函数版本，您必须查看要部署的此组件版本配方。在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中打开此组件的详细信息页面，然后查找 **Lambda 函数**键值对。此键值对包含 Lambda 函数的名称和版本。

**重要**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
每次部署此组件时，都必须更新旧版订阅路由器上的 Lambda 函数版本。这样能够确保为部署的组件版本使用正确的 Lambda 函数版本。

------

  <a name="connector-component-create-deployments"></a>有关更多信息，请参阅 [创建部署](create-deployments.md)。

------

### 端点和端口
<a name="cloudwatch-metrics-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `monitoring.region.amazonaws.com`  | 443 | 是 |  上传 CloudWatch 指标。  | 

## 依赖项
<a name="cloudwatch-metrics-component-dependencies"></a>

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

------
#### [ 3.2.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 3.0.0 - 3.1.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.7 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.5 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | >=1.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | >=1.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=1.0.0  | 硬性 | 

------

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

## 配置
<a name="cloudwatch-metrics-component-configuration"></a>

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

------
#### [ v3.x ]

 `PublishInterval`   
（可选）组件发布给定命名空间的批处理指标之前等待的最长秒数。要将组件配置为在收到指标时发布它们，即不进行批处理，请指定 `0`。  
该组件在同一命名空间中收到 20 个指标之后或在您指定的间隔之后发布到。 CloudWatch   
组件不指定事件的发布顺序。
此值最多可以是 900 秒。  
默认值：10 秒

 `MaxMetricsToRetain`   
（可选）组件将指标替换为新指标之前，所有命名空间内可在内存中保存的指标的最大数量。  
此限制适用于核心设备无法连接互联网的情况，以便组件缓冲指标供稍后发布。缓冲区已满时，组件会将最旧的指标替换为较新的指标。给定命名空间中的指标仅替换同一命名空间中的指标。  
如果组件的主机进程中断，则组件不会保存指标。例如，在部署或核心设备重新启动期间，可能会发生此情况。
此值必须至少为 2,000 个指标。  
默认值：5,000 个指标

`InputTopic`  
（可选）组件订阅以接收消息的主题。如果您为 `PubSubToIoTCore` 指定 `true`，则可以在本主题中使用 MQTT 通配符（\$1 和 \$1）。  
默认值：`cloudwatch/metric/put`

`OutputTopic`  
（可选）组件向其发布状态响应的主题。  
默认值：`cloudwatch/metric/put/status`

`PubSubToIoTCore`  
（可选）字符串值，用于定义是否发布和订阅 AWS IoT Core MQTT 主题。支持的值为 `true` 和 `false`。  
默认值：`false`

`LogLevel`  
（组件）组件的日志记录级别。从以下日志级别中选择，此处按级别顺序列出：  
+ `DEBUG`
+ `INFO`
+ `WARNING`
+ `ERROR`
+ `CRITICAL`
默认值：`INFO`

`UseInstaller`  
（可选）布尔值，用于定义是否使用此组件中的安装程序脚本来安装此组件的 SDK 依赖关系。  
如果您想使用自定义脚本来安装依赖关系，或者想要在预构建的 Linux 映像中包含运行时依赖关系，请将此值设置为 `false`。要使用此组件，必须安装以下库（包括所有依赖关系），并使其可供默认 Greengrass 系统用户使用。  
+ [适用于 Python 的AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [适用于 Python (Boto3) 的 AWS SDK](http://boto.readthedocs.org/en/latest/ref/)
默认值：`true`

`PublishRegion`  
（可选） AWS 区域 要向其发布 CloudWatch 指标的。此值覆盖核心设备的默认区域。此参数仅是跨区域指标的必需参数。

`accessControl`  
（可选）包含允许组件发布和订阅指定主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。如果您为 `InputTopic` 和 `OutputTopic` 指定了自定义值，则必须更新此对象中的资源值。  
默认值：  

```
{
  "aws.greengrass.ipc.pubsub": {
    "aws.greengrass.Cloudwatch:pubsub:1": {
      "policyDescription": "Allows access to subscribe to input topics.",
      "operations": [
        "aws.greengrass#SubscribeToTopic"
      ],
      "resources": [
        "cloudwatch/metric/put"
      ]
    },
    "aws.greengrass.Cloudwatch:pubsub:2": {
      "policyDescription": "Allows access to publish to output topics.",
      "operations": [
        "aws.greengrass#PublishToTopic"
      ],
      "resources": [
        "cloudwatch/metric/put/status"
      ]
    }
  },
  "aws.greengrass.ipc.mqttproxy": {
    "aws.greengrass.Cloudwatch:mqttproxy:1": {
      "policyDescription": "Allows access to subscribe to input topics.",
      "operations": [
        "aws.greengrass#SubscribeToIoTCore"
      ],
      "resources": [
        "cloudwatch/metric/put"
      ]
    },
    "aws.greengrass.Cloudwatch:mqttproxy:2": {
      "policyDescription": "Allows access to publish to output topics.",
      "operations": [
        "aws.greengrass#PublishToIoTCore"
      ],
      "resources": [
        "cloudwatch/metric/put/status"
      ]
    }
  }
}
```

**Example 示例：配置合并更新**  

```
{
  "PublishInterval": 0,
  "PubSubToIoTCore": true
}
```

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

**注意**  <a name="connector-component-lambda-parameters"></a>
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数，以便在您的设备上配置此组件。

 `lambdaParams`   
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息：    
 `EnvironmentVariables`   
包含 Lambda 函数的参数的对象。该对象包含以下信息：    
 `PUBLISH_INTERVAL`   
（可选）组件发布给定命名空间的批处理指标之前等待的最长秒数。要将组件配置为在收到指标时发布它们，即不进行批处理，请指定 `0`。  
该组件在同一命名空间中收到 20 个指标之后或在您指定的间隔之后发布到。 CloudWatch   
组件不保证事件的发布顺序。
此值最多可以是 900 秒。  
默认值：10 秒  
 `MAX_METRICS_TO_RETAIN`   
（可选）组件将指标替换为新指标之前，所有命名空间内可在内存中保存的指标的最大数量。  
此限制适用于核心设备无法连接互联网的情况，以便组件缓冲指标供稍后发布。缓冲区已满时，组件会将最旧的指标替换为较新的指标。给定命名空间中的指标仅替换同一命名空间中的指标。  
如果组件的主机进程中断，则组件不会保存指标。例如，在部署或核心设备重新启动期间，可能会发生此情况。
此值必须至少为 2,000 个指标。  
默认值：5,000 个指标  
 `PUBLISH_REGION`   
（可选） AWS 区域 要向其发布 CloudWatch 指标的。此值覆盖核心设备的默认区域。此参数仅是跨区域指标的必需参数。

`containerMode`  <a name="connector-component-container-mode-parameter"></a>
（可选）此组件的容器化模式。从以下选项中进行选择：  <a name="lambda-function-component-container-mode-parameter"></a>
+ `NoContainer` – 该组件不在隔离的运行时环境中运行。
+ `GreengrassContainer`— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
默认值：`GreengrassContainer`

 `containerParams`   
<a name="connector-component-container-params-description"></a>（可选）包含此组件的容器参数的对象。如果您为 `containerMode` 指定 `GreengrassContainer`，则该组件使用这些参数。  
该对象包含以下信息：    
 `memorySize`   
<a name="connector-component-container-params-memory-size-description"></a>（可选）要分配给组件的内存量（以千字节为单位）。  
默认为 64 MB（65,535 KB）。

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（可选）包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是从 AWS IoT Core 还是本地 publish/subscribe 主题订阅 MQTT 主题。  
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`type`  
（可选）此组件用于订阅 publish/subscribe 消息的消息类型。从以下选项中进行选择：  
+ `PUB_SUB` – 订阅本地发布/订阅消息。如果选择此选项，主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。
+ `IOT_CORE`— 订阅 AWS IoT Core MQTT 消息。如果选择此选项，主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
默认值：`PUB_SUB`  
`topic`  
（可选）组件订阅以接收消息的主题。如果您为 `type` 指定 `IotCore`，则可以在本主题中使用 MQTT 通配符（`+` 和 `#`）。

**Example 示例：配置合并更新（容器模式）**  

```
{
  "containerMode": "GreengrassContainer"
}
```

**Example 示例：配置合并更新（无容器模式）**  

```
{
  "containerMode": "NoContainer"
}
```

------

## 输入数据
<a name="cloudwatch-metrics-component-input-data"></a>

此组件接受有关以下主题的指标并将这些指标发布到 CloudWatch。<a name="connector-component-local-publish"></a>默认情况下，此组件订阅本地 publish/subscribe 消息。有关如何从您的自定义组件向此组件发布消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。

从组件版本 v3.0.0 开始，您可以选择通过将 `PubSubToIoTCore` 配置参数设置为 `true` 来将此组件配置为订阅 MQTT 主题。有关在自定义组件中向 MQTT 主题发布消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。

 **默认主题：**`cloudwatch/metric/put`

<a name="connector-component-input-properties"></a>消息接受以下属性。输入消息必须采用 JSON 格式。

 `request`   
此消息中的指标。  
请求对象包含要发布到 CloudWatch 的指标数据。指标值必须符合 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html) 操作的规范。  
类型：包含以下信息的 `object`：    
 `namespace`   
此请求中指标数据的用户定义命名空间。 CloudWatch 使用命名空间作为指标数据点的容器。  
不能指定以保留字符串 `AWS/` 开头的命名空间。
类型：`string`  
有效模式：`[^:].*`  
 `metricData`   
指标的数据。  
类型：包含以下信息的 `object`：    
 `metricName`   
指标的名称。  
类型：`string`  
 `value`   
指标的值。  
CloudWatch 拒绝太小或太大的值。该值必须介于`8.515920e-109`和`1.174271e+108`（基数 10）或`2e-360`和`2e360`（基数 2）之间。 CloudWatch 不支持特殊值`NaN`，例如`+Infinity`、和`-Infinity`。
类型：`double`  
 `dimensions`   
（可选）指标的维度。维度提供有关指标及其数据的附加信息。指标最多可定义 10 个维度。  
此组件自动包含一个名为 `coreName` 的维度，其中的值是核心设备的名称。  
类型：对象的 `array`，每个对象都包含以下信息：    
 `name`   
（可选）维度名称。  
类型：`string`  
 `value`   
（可选）维度值。  
类型：`string`  
 `timestamp`   
（可选）接收指标数据的时间，以 Unix 纪元时间（以秒为单位）表示。  
默认为组件收到消息的时间。  
类型：`double`  
如果您使用此组件的版本 2.0.3 到版本 2.0.7，我们建议您在从单一来源发送多个指标时分别检索每个指标的时间戳。不要使用变量来存储时间戳。  
 `unit`   
（可选）指标的单位。  
类型：`string`  
有效值：`Seconds`、`Microseconds`、`Milliseconds`、`Bytes`、`Kilobytes`、`Megabytes`、`Gigabytes`、`Terabytes`、`Bits`、`Kilobits`、`Megabits`、`Gigabits`、`Terabits`、`Percent`、`Count`、`Bytes/Second`、`Kilobytes/Second`、`Megabytes/Second`、`Gigabytes/Second`、`Terabytes/Second`、`Bits/Second`、`Kilobits/Second`、`Megabits/Second`、`Gigabits/Second`、`Terabits/Second`、`Count/Second`、`None`  
默认值为 `None`。

**注意**  
适用于 CloudWatch `PutMetricData` API 的所有配额都适用于您使用此组件发布的指标。以下配额尤其重要：  
API 有效载荷的 40 KB 限制
每个 API 请求的 20 个指标
`PutMetricData` API 的每秒 150 个事务 (TPS)
有关更多信息，请参阅《*CloudWatch 用户指南》*中的[CloudWatch 服务配额](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)。

**Example 示例输入**  

```
{
  "request": {
    "namespace": "Greengrass",
    "metricData": {
      "metricName": "latency",
      "dimensions": [
        {
          "name": "hostname",
          "value": "test_hostname"
        }
      ],
      "timestamp": 1539027324,
      "value": 123.0,
      "unit": "Seconds"
    }
  }
}
```

## 输出数据
<a name="cloudwatch-metrics-component-output-data"></a>

 <a name="connector-component-output-data-pubsub"></a>默认情况下，此组件将响应作为以下本地 publish/subscribe 主题的输出数据发布。有关如何在自定义组件中订阅此主题消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。

您可以选择通过将 `PubSubToIoTCore` 配置参数设置为 `true` 来将此组件配置为发布到 MQTT 主题。有关在自定义组件中订阅 MQTT 主题消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。

**注意**  
默认情况下，组件版本 2.0.x 会将响应作为输出数据发布到 MQTT 主题。您必须在[旧版订阅路由器组件](legacy-subscription-router-component.md)的配置中将主题指定为 `subject`。

 **默认主题：**`cloudwatch/metric/put/status`

**Example 示例输出：成功**  
响应包括指标数据的命名空间和 CloudWatch 响应中的`RequestId`字段。  

```
{
  "response": {
    "cloudwatch_rid": "70573243-d723-11e8-b095-75ff2EXAMPLE",
    "namespace": "Greengrass",
    "status": "success"
  }
}
```

**Example 示例输出：失败**  

```
{
  "response" : {
    "namespace": "Greengrass",
    "error": "InvalidInputException",
    "error_message": "cw metric is invalid",
    "status": "fail"
  }
}
```

**注意**  <a name="connector-component-retryable-error"></a>
如果组件检测到可以重试的错误（例如连接错误），它会在下一次批处理中重试发布。

## 许可证
<a name="cloudwatch-metrics-component-licenses"></a>

此组件包含以下第三方软件/许可：<a name="boto-3-licenses"></a>
+ [适用于 Python (Boto3) 的 AWS SDK](https://pypi.org/project/boto3/)/Apache 许可证 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache 许可证 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF 许可证
+ [docutils](https://pypi.org/project/docutils/)/BSD 许可证，GNU 通用公共许可证 (GPL)，Python 软件基金会许可证，公共领域
+ [jmespath](https://pypi.org/project/jmespath/)/MIT 许可证
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache 许可证 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT 许可证

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 本地日志文件
<a name="cloudwatch-metrics-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.Cloudwatch.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.Cloudwatch.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.Cloudwatch.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.Cloudwatch.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="cloudwatch-metrics-component-changelog"></a>

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

------
#### [ v3.x ]


|  **版本**  |  **更改**  | 
| --- | --- | 
|  3.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  3.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  3.0.0  |  <a name="changelog-cloudwatch-metrics-3.0.0-major-version-changes"></a>此版本的 CloudWatch 指标组件需要的配置参数与版本 2.x 不同。如果您为版本 2.x 使用非默认配置，并且想要从 v2.x 升级到 v3.x，则必须更新该组件的配置。有关更多信息，请参阅[CloudWatch指标组件配置](#cloudwatch-metrics-component-configuration)。 <a name="changelog-cloudwatch-metrics-3.0.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.8  |  对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。  | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  2.0.8  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/cloudwatch-metrics-component.html)  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.5  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.4  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

------

## 另请参阅
<a name="cloudwatch-metrics-component-see-also"></a>
+ [使用亚马逊* CloudWatch 用户指南中的亚马逊 CloudWatch*指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)
+ [PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)在 *Amazon CloudWatch API 参考*中

# AWS IoT Device Defender
<a name="device-defender-component"></a>

组 AWS IoT Device Defender 件 (`aws.greengrass.DeviceDefender`) 会通知管理员有关 Greengrass 核心设备状态的变化。这有助于识别可能指示受损设备的异常行为。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [AWS IoT Device Defender](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender.html)。

该组件读取核心设备上的系统指标。然后，将指标发布给 AWS IoT Device Defender。有关如何阅读和解释此组件报告指标的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的[设备指标文档规范](https://docs.aws.amazon.com/iot/latest/developerguide/detect-device-side-metrics.html#DetectMetricsMessagesSpec)。

**注意**  
此组件提供的功能与中的 Device Defender 连接器类似 AWS IoT Greengrass V1。有关更多信息，请参阅《AWS IoT Greengrass V1 开发人员指南》**中的 [Device Defender 连接器](https://docs.aws.amazon.com/greengrass/latest/developerguide/device-defender-connector.html)。

**Topics**
+ [版本](#device-defender-component-versions)
+ [Type](#device-defender-component-type)
+ [操作系统](#device-defender-component-os-support)
+ [要求](#device-defender-component-requirements)
+ [依赖项](#device-defender-component-dependencies)
+ [配置](#device-defender-component-configuration)
+ [输入数据](#device-defender-component-input-data)
+ [输出数据](#device-defender-component-output-data)
+ [本地日志文件](#device-defender-component-log-file)
+ [许可证](#device-defender-component-licenses)
+ [更改日志](#device-defender-component-changelog)

## 版本
<a name="device-defender-component-versions"></a>

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

有关每个组件版本中的更改的信息，请参阅[更改日志](#device-defender-component-changelog)。

## Type
<a name="device-defender-component-type"></a>

------
#### [ v3.x ]

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

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

<a name="public-component-type-lambda"></a>此<a name="public-component-type-lambda-phrase"></a>组件是一个 Lambda 组件 (`aws.greengrass.lambda`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 使用 [Lambda 启动程序组件](lambda-launcher-component.md)运行此组件的 Lambda 函数。

------

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

## 操作系统
<a name="device-defender-component-os-support"></a>

------
#### [ v3.x ]

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

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

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

------

## 要求
<a name="device-defender-component-requirements"></a>

此组件具有以下要求：

------
#### [ v3.x ]
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ AWS IoT Device Defender 配置为使用 “检测” 功能来监视违规行为。有关更多信息，请参阅 *AWS IoT Core 开发人员指南*中的[检测](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html)。

------
#### [ v2.x ]
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ AWS IoT Device Defender 配置为使用 “检测” 功能来监视违规行为。有关更多信息，请参阅 *AWS IoT Core 开发人员指南*中的[检测](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html)。
+ 安装在核心设备上的 [psutil](https://pypi.org/project/psutil/) 库。版本 5.7.0 是经验证可与组件一起使用的最新版本。
+ 安装在核心设备上的 [cbor](https://pypi.org/project/cbor/) 库。版本 1.0.0 是经验证可与组件一起使用的最新版本。
+ <a name="connector-component-legacy-subscription-router-dependency"></a>要接收此组件的输出数据，在部署此组件时，必须合并[旧版订阅路由器组件](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) 的以下配置更新。此配置指定此组件发布响应的主题。

------
#### [ Legacy subscription router v2.1.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-device-defender": {
        "id": "aws-greengrass-device-defender",
        "source": "component:aws.greengrass.DeviceDefender",
        "subject": "$aws/things/+/defender/metrics/json",
        "target": "cloud"
      }
    }
  }
  ```

------
#### [ Legacy subscription router v2.0.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-device-defender": {
        "id": "aws-greengrass-device-defender",
        "source": "arn:aws:lambda:region:aws:function:aws-greengrass-device-defender:version",
        "subject": "$aws/things/+/defender/metrics/json",
        "target": "cloud"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*替换为 AWS 区域 你使用的。
  + *version*替换为该组件运行的 Lambda 函数的版本。要查找 Lambda 函数版本，您必须查看要部署的此组件版本配方。在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中打开此组件的详细信息页面，然后查找 **Lambda 函数**键值对。此键值对包含 Lambda 函数的名称和版本。

**重要**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
每次部署此组件时，都必须更新旧版订阅路由器上的 Lambda 函数版本。这样能够确保为部署的组件版本使用正确的 Lambda 函数版本。

------

  <a name="connector-component-create-deployments"></a>有关更多信息，请参阅 [创建部署](create-deployments.md)。

------

## 依赖项
<a name="device-defender-component-dependencies"></a>

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

------
#### [ 3.1.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 3.0.0 - 3.0.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 2.0.12 - 2.0.17 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.12 - 2.0.16 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <3.0.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.10 - 2.0.11 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.9 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.8 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.7 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.5 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | >=1.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | >=1.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=1.0.0  | 硬性 | 

------

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

## 配置
<a name="device-defender-component-configuration"></a>

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

------
#### [ v3.x ]

`PublishRetryCount`  
重试发布的次数。此功能仅在版本 3.1.1 中可用。  
最小值为 0。  
最大值为 72。  
默认：5

`SampleIntervalSeconds`  
（可选）组件收集和报告指标的每个周期间隔的时间（以秒为单位）。  
最小值为 300 秒 (5 分钟)。  
默认值：300 秒

 `UseInstaller`   
（可选）布尔值，用于定义是否使用此组件中的安装程序脚本来安装此组件的依赖关系。  
如果您想使用自定义脚本来安装依赖关系，或者想要在预构建的 Linux 映像中包含运行时依赖关系，请将此值设置为 `false`。要使用此组件，必须安装以下库（包括所有依赖关系），并使其可供默认 Greengrass 系统用户使用。  
+ [适用于 Python 的AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [cbor](https://pypi.org/project/cbor/) 库。版本 1.0.0 是经验证可与组件一起使用的最新版本。
+ [psutil](https://pypi.org/project/psutil/) 库。版本 5.7.0 是经验证可与组件一起使用的最新版本。
如果您在配置为使用 HTTPS 代理的核心设备上使用此组件的 3.0.0 或 3.0.1 版本，则必须将此值设置为 `false`。在此组件的这些版本中，安装程序脚本不支持在 HTTPS 代理后操作。
默认值：`true`

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

**注意**  <a name="connector-component-lambda-parameters"></a>
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数，以便在您的设备上配置此组件。

`lambdaParams`  
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息：    
`EnvironmentVariables`  
包含 Lambda 函数的参数的对象。该对象包含以下信息：    
`PROCFS_PATH`  
（可选）`/proc` 文件夹的路径。  
+ 要在容器中运行此组件，请使用默认值 `/host-proc`。默认情况下，此组件在容器中运行。
+ 要在无容器模式下运行此组件，请为此参数指定 `/proc`。
默认值：`/host-proc`。这是此组件在容器中挂载 `/proc` 文件夹的默认路径。  
此组件拥有对此文件夹的只读访问权限。  
`SAMPLE_INTERVAL_SECONDS`  
（可选）组件收集和报告指标的每个周期间隔的时间（以秒为单位）。  
最小值为 300 秒 (5 分钟)。  
默认值：300 秒

`containerMode`  
（可选）此组件的容器化模式。从以下选项中进行选择：  
+ `GreengrassContainer`— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
+ `NoContainer` – 该组件不在隔离的运行时环境中运行。

  如果指定此选项，则必须为 `PROCFS_PATH` 环境变量参数指定 `/proc`。
默认值：`GreengrassContainer`

`containerParams`  
<a name="connector-component-container-params-description"></a>（可选）包含此组件的容器参数的对象。如果您为 `containerMode` 指定 `GreengrassContainer`，则该组件使用这些参数。  
该对象包含以下信息：    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>（可选）要分配给组件的内存量（以千字节为单位）。  
默认为 50000 KB。

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（可选）包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是从 AWS IoT Core 还是本地 publish/subscribe 主题订阅 MQTT 主题。  
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`type`  
（可选）此组件用于订阅 publish/subscribe 消息的消息类型。从以下选项中进行选择：  
+ `PUB_SUB` – 订阅本地发布/订阅消息。如果选择此选项，主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。
+ `IOT_CORE`— 订阅 AWS IoT Core MQTT 消息。如果选择此选项，主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
默认值：`PUB_SUB`  
`topic`  
（可选）组件订阅以接收消息的主题。如果您为 `type` 指定 `IotCore`，则可以在本主题中使用 MQTT 通配符（`+` 和 `#`）。

**Example 示例：配置合并更新（容器模式）**  

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "PROCFS_PATH": "/host_proc"
    }
  },
  "containerMode": "GreengrassContainer"
}
```

**Example 示例：配置合并更新（无容器模式）**  

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "PROCFS_PATH": "/proc"
    }
  },
  "containerMode": "NoContainer"
}
```

------

## 输入数据
<a name="device-defender-component-input-data"></a>

此组件不接受消息作为输入数据。

## 输出数据
<a name="device-defender-component-output-data"></a>

此组件将安全指标发布到以下保留主题 AWS IoT Device Defender。在发布指标时*coreDeviceName*，此组件将替换为核心设备的名称。

**主题 (AWS IoT Core MQTT)：**`$aws/things/coreDeviceName/defender/metrics/json`

**Example 输出示例**  

```
{
  "header": {
    "report_id": 1529963534,
    "version": "1.0"
  },
  "metrics": {
    "listening_tcp_ports": {
      "ports": [
        {
          "interface": "eth0",
          "port": 24800
        },
        {
          "interface": "eth0",
          "port": 22
        },
        {
          "interface": "eth0",
          "port": 53
        }
      ],
      "total": 3
    },
    "listening_udp_ports": {
      "ports": [
        {
          "interface": "eth0",
          "port": 5353
        },
        {
          "interface": "eth0",
          "port": 67
        }
      ],
      "total": 2
    },
    "network_stats": {
      "bytes_in": 1157864729406,
      "bytes_out": 1170821865,
      "packets_in": 693092175031,
      "packets_out": 738917180
    },
    "tcp_connections": {
      "established_connections":{
        "connections": [
          {
            "local_interface": "eth0",
            "local_port": 80,
            "remote_addr": "192.168.0.1:8000"
          },
          {
            "local_interface": "eth0",
            "local_port": 80,
            "remote_addr": "192.168.0.1:8000"
          }
        ],
        "total": 2
      }
    }
  }
}
```

有关此组件报告指标的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的[设备指标文档规范](https://docs.aws.amazon.com/iot/latest/developerguide/detect-device-side-metrics.html#DetectMetricsMessagesSpec)。

## 本地日志文件
<a name="device-defender-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.DeviceDefender.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.DeviceDefender.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.DeviceDefender.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.DeviceDefender.log -Tail 10 -Wait
  ```

------

## 许可证
<a name="device-defender-component-licenses"></a>

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="device-defender-component-changelog"></a>

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

------
#### [ v3.x ]


|  **版本**  |  **更改**  | 
| --- | --- | 
|  3.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/device-defender-component.html)  | 
|  3.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/device-defender-component.html)  | 
|  3.0.1  |  修复了组件如何计算指标增量值的问题。  | 
|  3.0.0  |   此版本不再可用。此版本的改进将在此组件的更高版本中提供。  初始版本。  | 

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.0.17  |  Greengrass nucleus 版本 2.14.0 版本的版本已更新。  | 
|  2.0.16  |  对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。  | 
|  2.0.11  |  版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。  | 
|  2.0.10  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.0.9  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.5  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.4  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

------

# 磁盘后台处理程序
<a name="disk-spooler-component"></a>

磁盘假脱机组件 (`aws.greengrass.DiskSpooler`) 为从 Greengrass 核心设备后台处理的消息提供了永久存储选项。 AWS IoT Core此组件会将这些出站消息存储在磁盘上。

**Topics**
+ [版本](#disk-spooler-component-versions)
+ [Type](#disk-spooler-component-type)
+ [操作系统](#disk-spooler-component-os-support)
+ [要求](#disk-spooler-component-requirements)
+ [依赖项](#disk-spooler-component-dependencies)
+ [使用量](#disk-spooler-component-usage)
+ [本地日志文件](#disk-spooler-component-log-file)
+ [更改日志](#disk-spooler-component-changelog)

## 版本
<a name="disk-spooler-component-versions"></a>

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

## Type
<a name="disk-spooler-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="disk-spooler-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="disk-spooler-component-requirements"></a>

此组件具有以下要求：
+ 应将 `storageType` 设置为 `Disk` 才能使用此组件。可以在 [Greengrass Nucleus 配置](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration)中对此进行设置。
+ 不得将 `maxSizeInBytes` 配置为大于设备上的可用空间。可以在 [Greengrass Nucleus 配置](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration)中对此进行设置。
+ 支持在 VPC 中运行磁盘后台处理程序组件。

## 依赖项
<a name="disk-spooler-component-dependencies"></a>

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

------
#### [ 1.0.7 ]

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


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

------
#### [ 1.0. ]

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


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

------
#### [ 1.0.5 ]

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


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

------
#### [ 1.0.4 ]

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


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

------
#### [ 1.0.1 – 1.0.3 ]

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


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

------
#### [ 1.0.0 ]

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


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

------

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

## 使用量
<a name="disk-spooler-component-usage"></a>

要使用磁盘后台处理程序组件，必须部署 `aws.greengrass.DiskSpooler`。

要配置和使用此组件，必须将 `pluginName` 设置为 `aws.greengrass.DiskSpooler`。

## 本地日志文件
<a name="disk-spooler-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="disk-spooler-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.0.7  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  1.0.6  |  Greengrass nucleus 版本 2.15.0 版本的版本已更新。  | 
|  1.0.5  |  Greengrass nucleus 版本 2.14.0 版本的版本已更新。  | 
|  1.0.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/disk-spooler-component.html)  | 
|  1.0.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/disk-spooler-component.html)  | 
|  1.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/disk-spooler-component.html)  | 
|  1.0.1  |  版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。  | 
|  1.0.0  |  初始版本。  | 

# Docker 应用程序管理器
<a name="docker-application-manager-component"></a>

Docker 应用程序管理器组件 (`aws.greengrass.DockerApplicationManager`) 允许 AWS IoT Greengrass 从托管在亚马逊 Elastic Container Registry (Amazon ECR) 上的公共映像注册表和私有注册表下载 Docker 镜像。它还允许自动管理证书 AWS IoT Greengrass ，以便安全地从 Amazon ECR 中的私有存储库下载图像。

开发运行 Docker 容器的自定义组件时，请将 Docker 应用程序管理器作为依赖关系包含在组件中，用于下载指定为构件的 Docker 映像。有关更多信息，请参阅 [运行 Docker 容器](run-docker-container.md)。

**Topics**
+ [版本](#docker-application-manager-component-versions)
+ [Type](#docker-application-manager-component-type)
+ [操作系统](#docker-application-manager-component-os-support)
+ [要求](#docker-application-manager-component-requirements)
+ [依赖项](#docker-application-manager-component-dependencies)
+ [配置](#docker-application-manager-component-configuration)
+ [本地日志文件](#docker-application-manager-component-log-file)
+ [更改日志](#docker-application-manager-component-changelog)
+ [另请参阅](#docker-application-manager-component-see-also)

## 版本
<a name="docker-application-manager-component-versions"></a>

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

## Type
<a name="docker-application-manager-component-type"></a>

<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)。

## 操作系统
<a name="docker-application-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="docker-application-manager-component-requirements"></a>

此组件具有以下要求：
+ <a name="docker-engine-requirement"></a>Greengrass 核心设备上安装的 [Docker Engine](https://docs.docker.com/engine/) 1.9.1 或更高版本。版本 20.10 是经验证可与 AWS IoT Greengrass 核心软件配合使用的最新版本。在部署运行 Docker 容器的组件之前，必须直接在核心设备上安装 Docker。
+ <a name="docker-daemon-requirement"></a>在部署此组件之前，Docker 进程守护程序已启动并在核心设备上运行。
+ 存储在以下支持的映像源之一中的 Docker 映像：
  + Amazon Elastic Container Registry（Amazon ECR）中的公共和私有映像存储库
  + 公共 Docker Hub 存储库
  + 公共 Docker 可信注册表
+ Docker 映像作为构件包含在您的自定义 Docker 容器组件中。使用以下 URI 格式来指定您的 Docker 映像：<a name="docker-image-artifact-uri"></a>
  + Amazon ECR 私有映像：`docker:account-id.dkr.ecr.region.amazonaws.com/repository/image[:tag|@digest]`
  + Amazon ECR 公共映像：`docker:public.ecr.aws/repository/image[:tag|@digest]`
  + Docker Hub 公共映像：`docker:name[:tag|@digest]`

  有关更多信息，请参阅 [运行 Docker 容器](run-docker-container.md)。
**注意**  
如果您没有在映像的构件 URI 中指定映像标签或映像摘要，则在部署自定义 Docker 容器组件时，Docker 应用程序管理器会拉取该映像的最新可用版本。为确保所有核心设备都运行相同版本的映像，我们建议您在构件 URI 中包含映像标签或摘要。
+ <a name="docker-user-permissions-requirement"></a>运行 Docker 容器组件的系统用户必须具有根或管理员权限，或者您必须将 Docker 配置为以非根用户或非管理员用户身份运行。
  + 在 Linux 设备上，您可向 `docker` 组中添加一个用户以调用 `docker` 命令，无需 `sudo`。
  + 在 Windows 设备上，您可将用户添加到 `docker-users` 组中以调用 `docker` 命令，无需管理员权限。

------
#### [ Linux or Unix ]

  要添加 `ggc_user` 或您用于运行 Docker 容器组件的非根用户至 `docker` 组中，请运行以下命令：

  ```
  sudo usermod -aG docker ggc_user
  ```

  有关更多信息，请参阅[以非根用户身份管理 Docker](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)。

------
#### [ Windows Command Prompt (CMD) ]

  要添加 `ggc_user` 或您用于运行 Docker 容器组件的非根用户至 `docker-users` 组中，请以管理员身份运行以下命令：

  ```
  net localgroup docker-users ggc_user /add
  ```

------
#### [ Windows PowerShell ]

  要添加 `ggc_user` 或您用于运行 Docker 容器组件的非根用户至 `docker-users` 组中，请以管理员身份运行以下命令：

  ```
  Add-LocalGroupMember -Group docker-users -Member ggc_user
  ```

------
+ <a name="docker-proxy-requirement"></a>如果您[将 AWS IoT Greengrass Core 软件配置为使用网络代理](configure-greengrass-core-v2.md#configure-alpn-network-proxy)，则必须[将 Docker 配置为使用相同的代理服务器](https://docs.docker.com/network/proxy/)。
+ 如果您的 Docker 映像存储在 Amazon ECR 私有注册表中，则必须将令牌交换服务组件作为依赖关系包含在 Docker 容器组件中。此外，[Greengrass 设备角色](device-service-role.md)必须允许执行 `ecr:GetAuthorizationToken`、`ecr:BatchGetImage` 和 `ecr:GetDownloadUrlForLayer` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "ecr:GetAuthorizationToken",
          "ecr:BatchGetImage",
          "ecr:GetDownloadUrlForLayer"
        ],
        "Resource": [
          "*"
        ],
        "Effect": "Allow"
      }
    ]
  }
  ```

------

  ```
  ```
+ 支持 Docker 应用程序管理器组件在 VPC 中运行。要在 VPC 中部署此组件，需要满足以下条件。
  + Docker 应用管理器组件必须具备下载映像的连接功能。例如，如果您使用 ECR，则必须连接至以下端点。
    + `*.dkr.ecr.region.amazonaws.com`（VPC 端点 `com.amazonaws.region.ecr.dkr`）
    + `api.ecr.region.amazonaws.com`（VPC 端点 `com.amazonaws.region.ecr.api`）

### 端点和端口
<a name="docker-application-manager-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `ecr.region.amazonaws.com`  | 443 | 否 |  如果您从 Amazon ECR 下载 Docker 映像，则此为必填项。  | 
|  `hub.docker.com` `registry.hub.docker.com/v1`  | 443 | 否 |  如果您从 Docker Hub 下载 Docker 映像，则此为必填项。  | 

## 依赖项
<a name="docker-application-manager-component-dependencies"></a>

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

------
#### [ 2.0.15 ]

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


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

------
#### [ 2.0.14 ]

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


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

------
#### [ 2.0.13 ]

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


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

------
#### [ 2.0.12 ]

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


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

------
#### [ 2.0.11 ]

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


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

------
#### [ 2.0.10 ]

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


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

------
#### [ 2.0.9 ]

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


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

------
#### [ 2.0.8 ]

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


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

------
#### [ 2.0.7 ]

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


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

------
#### [ 2.0.6 ]

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


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

------
#### [ 2.0.5 ]

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


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

------
#### [ 2.0.4 ]

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


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

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

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


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

------
#### [ 2.0.2 ]

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


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

------
#### [ 2.0.1 ]

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


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

------
#### [ 2.0.0 ]

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


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

------

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

## 配置
<a name="docker-application-manager-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="docker-application-manager-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="docker-application-manager-component-changelog"></a>

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


|   **版本**   |   **更改**   | 
| --- | --- | 
|  2.0.15  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.0.14  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.0.13  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.0.12  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.0.11  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.0.10  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.0.9  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.0.8  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.0.7  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.0.5  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.0.4  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.3  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.2  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.1  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.0  |  初始版本。  | 

## 另请参阅
<a name="docker-application-manager-component-see-also"></a>
+  [运行 Docker 容器](run-docker-container.md) 

# 适用于 Kinesis Video Streams 的 Edge 连接器
<a name="kvs-edge-connector-component"></a>

Kinesis Video Streams 组件 (`aws.iot.EdgeConnectorForKVS`) 的 Edge 连接器读取来自本地摄像机的视频源，并将视频流发布至 Kinesis Video Streams。您可以将此组件配置为使用实时流媒体协议（RTSP）从互联网协议（IP）摄像机读取视频源。然后，您可以在 [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) 或本地 Grafana 服务器中设置控制面板，以监控视频流并与之交互。

您可以将此组件与集成 AWS IoT TwinMaker ，以在 Grafana 仪表板中显示和控制视频流。 AWS IoT TwinMaker 是一项使您能够构建物理系统的可操作数字双胞胎的 AWS 服务。您可以使用 AWS IoT TwinMaker 可视化来自传感器、摄像头和企业应用程序的数据，以便跟踪实际工厂、建筑物或工业厂房。您可以使用此数据来监控运营、诊断和纠正错误。有关更多信息，请参阅[什么是 AWS IoT TwinMaker？](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/what-is-twinmaker.html) 在《*AWS IoT TwinMaker 用户指南》*中。

该组件将其配置存储在中 AWS IoT SiteWise，这是一项对工业数据进行建模和存储的 AWS 服务。在中 AWS IoT SiteWise，*资产*表示诸如设备、设备或其他对象组之类的对象。要配置和使用此组件，您需要为每台 Greengrass 核心设备以及连接到每台核心设备的每台 IP 摄像机创建 AWS IoT SiteWise 资产。每个资产都具备相应属性，您可以对其进行配置，以控制实时流媒体、按需上传和本地缓存等功能。要为每台摄像机指定 URL，请在 AWS Secrets Manager 中创建一个包含摄像机 URL 的密钥。如果摄像机需要身份验证，您还可以在 URL 中指定用户名和密码。然后，您可以在 IP 摄像机的资产属性中指定该密钥。

此组件将每台摄像机的视频流上传至 Kinesis 视频流。您可以在每台摄像机的 AWS IoT SiteWise 资产配置中指定目标 Kinesis 视频流的名称。如果 Kinesis 视频流不存在，该组件会为您创建它。

AWS IoT TwinMaker 提供了一个脚本，你可以运行该脚本来创建这些 AWS IoT SiteWise 资产和 Secrets Manager 密钥。有关如何创建这些资源以及如何安装、配置和使用此组件的更多信息，请参阅*《AWS IoT TwinMaker 用户指南*》中的[AWS IoT TwinMaker 视频集成](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/video-integration.html)。

**注意**  
适用于 Kinesis Video Streams 组件的 Edge 连接器仅在以下 AWS 区域中可用：  
美国东部（弗吉尼亚州北部）
美国西部（俄勒冈州）
欧洲地区（法兰克福）
欧洲地区（爱尔兰）
亚太地区（新加坡）
亚太地区（东京）
亚太地区（首尔）
亚太地区（悉尼）
亚太地区（孟买）
中国（北京）

**Topics**
+ [版本](#kvs-edge-connector-component-versions)
+ [Type](#kvs-edge-connector-component-type)
+ [操作系统](#kvs-edge-connector-component-os-support)
+ [要求](#kvs-edge-connector-component-requirements)
+ [依赖项](#kvs-edge-connector-component-dependencies)
+ [配置](#kvs-edge-connector-component-configuration)
+ [许可证](#kvs-edge-connector-component-licenses)
+ [用法](#kvs-edge-connector-component-usage)
+ [本地日志文件](#kvs-edge-connector-component-log-file)
+ [更改日志](#kvs-edge-connector-component-changelog)
+ [另请参阅](#kvs-edge-connector-component-see-also)

## 版本
<a name="kvs-edge-connector-component-versions"></a>

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

## Type
<a name="kvs-edge-connector-component-type"></a>

<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)。

## 操作系统
<a name="kvs-edge-connector-component-os-support"></a>

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

## 要求
<a name="kvs-edge-connector-component-requirements"></a>

此组件具有以下要求：
+ 您只能将此组件部署至单个核心设备，因为每个核心设备的组件配置必须是唯一的。您无法将此组件部署至核心设备组。
+ [GStreamer](https://gstreamer.freedesktop.org)1.18.4 或更高版本安装在核心设备上。有关更多信息，请参阅[安装 GStreamer](https://gstreamer.freedesktop.org/documentation/installing/index.html?gi-language=c)。

  在带有的设备上`apt`，您可以运行以下命令进行安装 GStreamer。

  ```
  sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps
  sudo apt install -y gstreamer1.0-libav
  sudo apt install -y gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools
  ```
+ 每台核心设备的 AWS IoT SiteWise 资产。此 AWS IoT SiteWise 资产代表核心设备。有关如何创建此资产的更多信息，请参阅《*AWS IoT TwinMaker 用户指南》*中的[AWS IoT TwinMaker 视频集成](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/video-integration.html)。
+ 与每个核心设备相连的每台 IP 摄像机的 AWS IoT SiteWise 资产。这些 AWS IoT SiteWise 资产代表将视频流式传输至每台核心设备的摄像机。每台摄像机的资产都必须与连接到摄像机的核心设备资产相关联。摄像机资产具有相应属性，您可以配置这些属性来指定 Kinesis 视频流、身份验证密钥和视频流参数。有关如何创建和配置摄像机资产的更多信息，请参阅*《AWS IoT TwinMaker 用户指南*》中的[AWS IoT TwinMaker 视频集成](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/video-integration.html)。
+ 每台 IP 摄像机的 AWS Secrets Manager 秘密。此密钥必须定义键值对，其中键是 `RTSPStreamUrl`，值是摄像机 URL。如果摄像机需要身份验证，请在此 URL 中包含用户名和密码。在创建此组件所需的资源时，您可以使用脚本来创建密钥。有关更多信息，请参阅《*AWS IoT TwinMaker 用户指南》*中的[AWS IoT TwinMaker 视频集成](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/video-integration.html)。

  您还可以使用 Secrets Manager 控制台和 API 创建其他密钥。有关更多信息，请参阅《AWS Secrets Manager 用户指南》**中的[创建密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)。
+ [Greengrass 代币交换](device-service-role.md)角色必须允许以下、和 AWS IoT SiteWise Kinesis Video Streams 操作，如 AWS Secrets Manager以下示例 IAM 策略所示。
**注意**  
此示例策略允许设备获取名为 **IPCamera1Url** 和 **IPCamera2Url** 的密钥值。在配置每个 IP 摄像机时，您需要指定一个包含该摄像机 URL 的密钥。如果摄像机需要身份验证，您还可以在 URL 中指定用户名和密码。核心设备的令牌交换角色必须允许访问每个要连接的 IP 摄像机的密钥。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "secretsmanager:GetSecretValue"
        ],
        "Effect": "Allow",
        "Resource": [
        "arn:aws:secretsmanager:us-east-1:123456789012:secret:IPCamera1Url",
    "arn:aws:secretsmanager:us-east-1:123456789012:secret:IPCamera2Url"
        ]
      },
      {
        "Action": [
          "iotsitewise:BatchPutAssetPropertyValue",
          "iotsitewise:DescribeAsset",
          "iotsitewise:DescribeAssetModel",
          "iotsitewise:DescribeAssetProperty",
          "iotsitewise:GetAssetPropertyValue",
          "iotsitewise:ListAssetRelationships",
          "iotsitewise:ListAssets",
          "iotsitewise:ListAssociatedAssets",
          "kinesisvideo:CreateStream",
          "kinesisvideo:DescribeStream",
          "kinesisvideo:GetDataEndpoint",
          "kinesisvideo:PutMedia",
          "kinesisvideo:TagStream"
        ],
        "Effect": "Allow",
        "Resource": [
          "*"
        ]
      }
    ]
  }
  ```

------
**注意**  
如果您使用客户管理的密 AWS Key Management Service 钥来加密机密，则设备角色还必须允许该`kms:Decrypt`操作。

### 端点和端口
<a name="kvs-edge-connector-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `kinesisvideo.region.amazonaws.com`  | 443 | 是 |  将数据上传至 Kinesis Video Streams。  | 
|  `data.iotsitewise.region.amazonaws.com`  | 443 | 是 |  将视频流元数据发布至 AWS IoT SiteWise。  | 
|  `secretsmanager.region.amazonaws.com`  | 443 | 是 |  将摄像机 URL 密钥下载至核心设备。  | 

## 依赖项
<a name="kvs-edge-connector-component-dependencies"></a>

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [令牌交换服务](token-exchange-service-component.md) | >=2.0.3 | 硬性 | 
| [流管理器](stream-manager-component.md) | >=2.0.9 | 硬性 | 

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

## 配置
<a name="kvs-edge-connector-component-configuration"></a>

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

`SiteWiseAssetIdForHub`  
代表此核心设备的 AWS IoT SiteWise 资产的 ID。有关如何创建此资产并使用它与该组件交互的更多信息，请参阅*《AWS IoT TwinMaker 用户指南*》中的[AWS IoT TwinMaker 视频集成](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/video-integration.html)。

**Example 示例：配置合并更新**  

```
{
  "SiteWiseAssetIdForHub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```

## 许可证
<a name="kvs-edge-connector-component-licenses"></a>

此组件包含以下第三方软件/许可：
+ [Quartz 作业调度程序](http://www.quartz-scheduler.org/)/Apache 许可证 2.0
+ [ GStreamer 1.x 的 Java 绑定](https://github.com/gstreamer-java/gst1-java-core) /GNU 宽松通用公共许可证 v3.0

## 用法
<a name="kvs-edge-connector-component-usage"></a>

要配置此组件并与之交互，可以在代表核心设备及其连接的 IP 摄像机的 AWS IoT SiteWise 资产上设置属性。您还可以通过以下方式在 Grafana 仪表板中可视化视频流并与之交互。 AWS IoT TwinMaker有关更多信息，请参阅《*AWS IoT TwinMaker 用户指南》*中的[AWS IoT TwinMaker 视频集成](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/video-integration.html)。

## 本地日志文件
<a name="kvs-edge-connector-component-log-file"></a>

此组件使用以下日志文件。

```
/greengrass/v2/logs/aws.iot.EdgeConnectorForKVS.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径。

  ```
  sudo tail -f /greengrass/v2/logs/aws.iot.EdgeConnectorForKVS.log
  ```

## 更改日志
<a name="kvs-edge-connector-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.0.5  |  常规错误修复和性能改进。  | 
|  1.0.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/kvs-edge-connector-component.html)  | 
|  1.0.3  |  常规错误修复和性能改进。  | 
|  1.0.1  |  常规错误修复和性能改进。  | 
|  1.0.0  |  初始版本。  | 

## 另请参阅
<a name="kvs-edge-connector-component-see-also"></a>
+ [什么是 AWS IoT TwinMaker？](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/what-is-twinmaker.html) 在《*AWS IoT TwinMaker 用户指南》*中
+ AWS IoT TwinMaker 《*AWS IoT TwinMaker 用户指南》*中的@@ [视频集成](https://docs.aws.amazon.com/iot-twinmaker/latest/guide/video-integration.html)
+ [什么是 AWS IoT SiteWise？](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) 在《*AWS IoT SiteWise 用户指南》*中
+ [更新《AWS IoT SiteWise 用户指南》**中的属性值](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-attribute-values.html)
+ *AWS Secrets Manager 用户指南* 中的[什么是 AWS Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ 《AWS Secrets Manager 用户指南》中的**[创建和管理密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)

# Greengrass CLI
<a name="greengrass-cli-component"></a>

Greengrass CLI 组件（`aws.greengrass.Cli`）提供了一个本地命令行界面，您可以在核心设备上使用该界面在本地开发和调试组件。例如，您可以使用 Greengrass CLI 在核心设备上创建本地部署和重启组件。

您可以在安装 C AWS IoT Greengrass ore 软件时安装此组件。有关更多信息，请参阅 [教程：AWS IoT Greengrass V2 入门](getting-started.md)。

**重要**  
 <a name="local-dev-tools-production-environment-warning"></a>我们建议您仅在开发环境中使用此组件，不要在生产环境中使用。此组件允许访问您在生产环境中通常不需要的信息和操作。遵循最低权限原则，将此组件仅部署到有需求的核心设备。

在安装此组件后，请运行以下命令，查看其帮助文档。安装此组件后，它会在 `/greengrass/v2/bin` 文件夹中添加一个指向 `greengrass-cli` 的符号链接。您可以从此路径运行 Greengrass CLI，也可以将其添加到您的 `PATH` 环境变量中以在没有绝对路径的情况下运行 `greengrass-cli`。

------
#### [ Linux or Unix ]

```
/greengrass/v2/bin/greengrass-cli help
```

------
#### [ Windows ]

```
C:\greengrass\v2\bin\greengrass-cli help
```

------

例如，以下命令会重新启动名为 `com.example.HelloWorld` 的组件。

------
#### [ Linux or Unix ]

```
sudo /greengrass/v2/bin/greengrass-cli component restart --names "com.example.HelloWorld"
```

------
#### [ Windows ]

```
C:\greengrass\v2\bin\greengrass-cli component restart --names "com.example.HelloWorld"
```

------

有关更多信息，请参阅 [Greengrass 命令行界面](gg-cli.md)。

**Topics**
+ [版本](#greengrass-cli-component-versions)
+ [Type](#greengrass-cli-component-type)
+ [操作系统](#greengrass-cli-component-os-support)
+ [要求](#greengrass-cli-component-requirements)
+ [依赖项](#greengrass-cli-component-dependencies)
+ [配置](#greengrass-cli-component-configuration)
+ [本地日志文件](#greengrass-cli-component-log-file)
+ [更改日志](#greengrass-cli-component-changelog)

## 版本
<a name="greengrass-cli-component-versions"></a>

此组件具有以下版本：
+ 2.16.x
+ 2.15.x
+ 2.14.x
+ 2.13.x
+ 2.12.x
+ 2.11.x
+ 2.10.x
+ 2.9.x
+ 2.8.x
+ 2.7.x
+ 2.6.x
+ 2.5.x
+ 2.4.x
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="greengrass-cli-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="greengrass-cli-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="greengrass-cli-component-requirements"></a>

此组件具有以下要求：
+ <a name="greengrass-cli-authorization-requirement"></a>您必须获得授权才能使用 Greengrass CLI 与核心软件进行交互。 AWS IoT Greengrass 执行以下任一操作以使用 Greengrass CLI：
  + 使用运行 C AWS IoT Greengrass ore 软件的系统用户。
  + 使用具有根权限或管理员权限的用户。在 Linux 核心设备上，您可以使用 `sudo` 获取根权限。
  + 部署组件时，请使用您在 `AuthorizedPosixGroups` 或 `AuthorizedWindowsGroups` 配置参数中指定的组中的系统用户。有关更多信息，请参阅 [Greengrass CLI 组件配置](#greengrass-cli-component-configuration)。
+ 支持 Greengrass CLI 组件在 VPC 中运行。

## 依赖项
<a name="greengrass-cli-component-dependencies"></a>

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

------
#### [ 2.16.0 ]

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


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

------
#### [ 2.15.1 ]

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


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

------
#### [ 2.15.0 ]

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


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

------
#### [ 2.14.0 – 2.14.3 ]

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


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

------
#### [ 2.13.0 ]

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


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

------
#### [ 2.12.0 – 2.12.6 ]

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


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

------
#### [ 2.11.0 – 2.11.3 ]

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


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

------
#### [ 2.10.0 – 2.10.3 ]

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


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

------
#### [ 2.9.0 – 2.9.6 ]

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


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

------
#### [ 2.8.0 – 2.8.1 ]

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


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

------
#### [ 2.7.0 ]

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


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

------
#### [ 2.6.0 ]

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


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

------
#### [ 2.5.0 – 2.5.6 ]

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


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

------
#### [ 2.4.0 ]

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


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

------
#### [ 2.3.0 ]

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


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

------
#### [ 2.2.0 ]

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


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

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

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


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

------
#### [ 2.0.x ]

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


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

**注意**  
Greengrass Nucleus 的最低兼容版本对应 Greengrass CLI 组件的补丁版本。

------

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

## 配置
<a name="greengrass-cli-component-configuration"></a>

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

------
#### [ 2.5.x - 2.14.x ]

`AuthorizedPosixGroups`  <a name="greengrass-cli-component-configuration-authorizedposixgroups"></a>
（可选）包含以逗号分隔的系统组列表的字符串。您授权这些系统组使用 Greengrass CLI 与核心软件进行交互。 AWS IoT Greengrass 您可以指定组名或群组 IDs。例如，`group1,1002,group3` 授权三个系统组（`group1`、`1002` 和 `group3`）使用 Greengrass CLI。  
如果您未指定要授权的任何群组，则可以以 root 用户 `sudo` () 或运行核心软件的系统用户身份使用 Greengrass CLI。 AWS IoT Greengrass 

`AuthorizedWindowsGroups`  <a name="greengrass-cli-component-configuration-authorizedwindowsgroups"></a>
（可选）包含以逗号分隔的系统组列表的字符串。您授权这些系统组使用 Greengrass CLI 与核心软件进行交互。 AWS IoT Greengrass 您可以指定组名或群组 IDs。例如，`group1,1002,group3` 授权三个系统组（`group1`、`1002` 和 `group3`）使用 Greengrass CLI。  
如果您未指定要授权的任何群组，则可以以管理员或运行 Core 软件的系统用户身份使用 Greengrass CLI。 AWS IoT Greengrass 

**Example 示例：配置合并更新**  
以下示例配置指定授权三个 POSIX 系统组（`group1`、`1002` 和 `group3`）和两个 Windows 用户组（`Device Operators` 和 `QA Engineers`）使用 Greengrass CLI。  

```
{
  "AuthorizedPosixGroups": "group1,1002,group3",
  "AuthorizedWindowsGroups": "Device Operators,QA Engineers"
}
```

------
#### [ 2.4.x - 2.0.x ]

`AuthorizedPosixGroups`  <a name="greengrass-cli-component-configuration-authorizedposixgroups"></a>
（可选）包含以逗号分隔的系统组列表的字符串。您授权这些系统组使用 Greengrass CLI 与核心软件进行交互。 AWS IoT Greengrass 您可以指定组名或群组 IDs。例如，`group1,1002,group3` 授权三个系统组（`group1`、`1002` 和 `group3`）使用 Greengrass CLI。  
如果您未指定要授权的任何群组，则可以以 root 用户 `sudo` () 或运行核心软件的系统用户身份使用 Greengrass CLI。 AWS IoT Greengrass 

**Example 示例：配置合并更新**  
以下示例配置指定授权三个系统组（`group1`、`1002` 和 `group3`）使用 Greengrass CLI。  

```
{
  "AuthorizedPosixGroups": "group1,1002,group3"
}
```

------

## 本地日志文件
<a name="greengrass-cli-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="greengrass-cli-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.16.1  |  Greengrass nucleus 版本 2.16.1 版本的版本已更新。  | 
|  2.16.0  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.15.1  |  Greengrass nucleus 版本 2.15.1 版本的版本已更新。  | 
|  2.15.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-cli-component.html)  | 
|  2.14.3  |  Greengrass nucleus 版本 2.14.3 版本的版本已更新。  | 
|  2.14.2  |  Greengrass nucleus 版本 2.14.2 版本的版本已更新。  | 
|  2.14.1  |  Greengrass nucleus 版本 2.14.1 版本的版本已更新。  | 
|  emrfs  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-cli-component.html)  | 
|  2.13.0  |  对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。  | 
|  2.12.6  |  对 Greengrass Nucleus版本 2.12.6 发行版进行了版本更新。  | 
|  2.12.5  |  对 Greengrass Nucleus 版本 2.12.5 发行版进行了版本更新。  | 
|  2.12.4  |  对 Greengrass Nucleus 版本 2.12.4 发行版进行了版本更新。  | 
|  2.12.3  |   此版本不再可用。此版本的改进将在此组件的更高版本中提供。  对 Greengrass Nucleus 版本 2.12.3 发行版进行了版本更新。  | 
|  2.12.2  |  对 Greengrass Nucleus 版本 2.12.2 发行版进行了版本更新。  | 
|  2.12.1  |  对 Greengrass Nucleus 版本 2.12.1 发行版进行了版本更新。  | 
|  2.12.0  |  版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。  | 
|  2.11.3  |  对 Greengrass Nucleus 版本 2.11.3 发行版进行了版本更新。  | 
|  2.11.2  |  对 Greengrass Nucleus 版本 2.11.2 发行版进行了版本更新。  | 
|  2.11.1  |  对 Greengrass Nucleus 版本 2.11.1 发行版进行了版本更新。  | 
|  2.11.0  |  <a name="changelog-cli-2.11.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-cli-component.html)  | 
|  2.10.3  |  对 Greengrass Nucleus 版本 2.10.3 发行版进行了版本更新。  | 
|  2.10.2  |  对 Greengrass Nucleus 版本 2.10.2 发行版进行了版本更新。  | 
|  2.10.1  |  对 Greengrass Nucleus 版本 2.10.1 发行版进行了版本更新。  | 
|  2.10.0  |  版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。  | 
|  2.9.6  |  对 Greengrass Nucleus 版本 2.9.6 发行版进行了版本更新。  | 
|  2.9.5  |  对 Greengrass Nucleus 版本 2.9.5 发行版进行了版本更新。  | 
|  2.9.4  |  对 Greengrass Nucleus 版本 2.9.4 发行版进行了版本更新。  | 
|  2.9.3  |  对 Greengrass Nucleus 版本 2.9.3 发行版进行了版本更新。  | 
|  2.9.2  |  对 Greengrass Nucleus 版本 2.9.2 发行版进行了版本更新。  | 
|  2.9.1  |  对 Greengrass Nucleus 版本 2.9.1 发行版进行了版本更新。  | 
|  2.9.0  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.8.1  |  对 Greengrass Nucleus 版本 2.8.1 发行版进行了版本更新。  | 
|  2.8.0  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.7.0  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.6.0  |  <a name="changelog-greengrass-cli-2.6.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-cli-component.html)  | 
|  2.5.6  |  对 Greengrass Nucleus 版本 2.5.6 发行版进行了版本更新。  | 
|  2.5.5  |  对 Greengrass Nucleus 版本 2.5.5 发行版进行了版本更新。  | 
|  2.5.4  |  对 Greengrass Nucleus 版本 2.5.4 发行版进行了版本更新。  | 
|  2.5.3  |  对 Greengrass Nucleus 版本 2.5.3 发行版进行了版本更新。  | 
|  2.5.2  |  对 Greengrass Nucleus 版本 2.5.2 发行版进行了版本更新。  | 
|  2.5.1  |  对 Greengrass Nucleus 版本 2.5.1 发行版进行了版本更新。  | 
|  2.5.0  |  <a name="changelog-greengrass-cli-2.5.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-cli-component.html)  | 
|  2.4.0  |  <a name="changelog-greengrass-cli-2.4.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-cli-component.html)  | 
|  2.3.0  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.2.0  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.0  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.5  | 对 Greengrass Nucleus 版本 2.0.5 发行版进行了版本更新。 | 
|  2.0.4  | 对 Greengrass Nucleus 版本 2.0.4 发行版进行了版本更新。 | 
|  2.0.3  |  初始版本。  | 

# IP 检测器
<a name="ip-detector-component"></a>

IP 检测器组件 (`aws.greengrass.clientdevices.IPDetector`) 执行以下操作：
+ 监控 Greengrass 核心设备的网络连接信息。这些信息包括核心设备的网络端点以及 MQTT 代理运行的端口。
+ 更新 AWS IoT Greengrass 云服务中核心设备的连接信息。

客户端设备可以使用 Greengrass 云发现来检索关联核心设备的连接信息。然后，客户端设备可以尝试连接到每台核心设备，直至其成功连接。

**注意**  <a name="client-device-component-context"></a>
客户端设备是本地 IoT 设备，连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。

IP 检测器组件将核心设备的现有连接信息替换为其检测到的信息。由于此组件会删除现有信息，因此您可以使用 IP 检测器组件，也可以手动管理连接信息。

**Topics**
+ [版本](#ip-detector-component-versions)
+ [Type](#ip-detector-component-type)
+ [操作系统](#ip-detector-component-os-support)
+ [要求](#ip-detector-component-requirements)
+ [依赖项](#ip-detector-component-dependencies)
+ [配置](#ip-detector-component-configuration)
+ [本地日志文件](#ip-detector-component-log-file)
+ [更改日志](#ip-detector-component-changelog)

## 版本
<a name="ip-detector-component-versions"></a>

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

## Type
<a name="ip-detector-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="ip-detector-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="ip-detector-component-requirements"></a>

此组件具有以下要求：
+ [Greengrass 服务](greengrass-service-role.md)角色必须与 AWS 账户 您的关联并允许和权限。`iot:GetThingShadow` `iot:UpdateThingShadow`
+ 核心设备的 AWS IoT 策略必须允许该`greengrass:UpdateConnectivityInfo`权限。有关更多信息，请参阅[AWS IoT 数据平面操作策略](device-auth.md#iot-policies)和[支持客户端设备的最低 AWS IoT 政策](device-auth.md#client-device-support-minimal-iot-policy)。
+ 如果您将核心设备的 MQTT 代理组件配置为使用默认端口 8883 以外的端口，则必须使用 IP 检测器 v2.1.0 或更高版本。将其配置为报告代理运行的端口。
+ 如果您的网络设置很复杂，IP 检测器组件可能无法识别客户端设备可以连接的核心设备的端点。如果 IP 检测器组件无法管理端点，则您必须改为手动管理核心设备端点。例如，如果核心设备位于将 MQTT 代理端口转发给它的路由器后方，则您必须将路由器的 IP 地址指定为核心设备的端点。有关更多信息，请参阅 [管理核心设备端点](manage-core-device-endpoints.md)。
+ 支持在 VPC 中运行 IP 检测器组件。

## 依赖项
<a name="ip-detector-component-dependencies"></a>

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

------
#### [ 2.2.3 ]

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


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

------
#### [ 2.2.2 ]

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


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

------
#### [ 2.2.1 ]

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


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

------
#### [ 2.2.0 ]

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


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

------
#### [ 2.1.8 – 2.1.9 ]

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

------
#### [ 2.1.0 and 2.0.2 ]

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


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

------
#### [ 2.0.1 ]

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


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

------
#### [ 2.0.0 ]

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


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

------

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

## 配置
<a name="ip-detector-component-configuration"></a>

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

------
#### [ 2.2.x ]

`defaultPort`  <a name="ip-detector-component-configuration-default-port"></a>
<a name="ip-detector-component-configuration-default-port-definition"></a>（可选）此组件检测到 IP 地址时要用于报告的 MQTT 代理端口。如果您将 MQTT 代理配置为使用默认端口 8883 以外的端口，则必须指定此参数。  
默认值：`8883`

`includeIPv4LoopbackAddrs`  <a name="ip-detector-component-configuration-include-ipv4-loopback-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。  
默认值：`false`

`includeIPv4LinkLocalAddrs`  <a name="ip-detector-component-configuration-include-ipv4-link-local-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。  
默认值：`false`

`includeIPv6LoopbackAddrs`  <a name="ip-detector-component-configuration-include-ipv6-loopback-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv6-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv6 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。您必须将 `includeIPv4Addrs` 设置为 `false` 并将 `includeIPv6Addrs` 设置为 `true` 才能使用此选项。  
默认值：`false`

`includeIPv6LinkLocalAddrs`  <a name="ip-detector-component-configuration-include-ipv6-link-local-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv6-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv6 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。您必须将 `includeIPv4Addrs` 设置为 `false` 并将 `includeIPv6Addrs` 设置为 `true` 才能使用此选项。  
默认值：`false`

`includeIPv4Addrs`  <a name="ip-detector-component-configuration-include-ipv4-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv4-addrs-definition"></a>（可选）默认设置为 `true`。您可以启用此选项来发布在核心设备上找到 IPv4 的地址。  
默认值：`true`

`includeIPv6Addrs`  <a name="ip-detector-component-configuration-include-ipv6-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv6-addrs-definition"></a>（可选）您可以启用此选项来发布在核心设备上找到 IPv6 的地址。将 `includeIPv4Addrs` 设置为 `false` 以使用此选项。  
默认值：`false`

------
#### [ 2.1.x ]

`defaultPort`  <a name="ip-detector-component-configuration-default-port"></a>
<a name="ip-detector-component-configuration-default-port-definition"></a>（可选）此组件检测到 IP 地址时要用于报告的 MQTT 代理端口。如果您将 MQTT 代理配置为使用默认端口 8883 以外的端口，则必须指定此参数。  
默认值：`8883`

`includeIPv4LoopbackAddrs`  <a name="ip-detector-component-configuration-include-ipv4-loopback-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。  
默认值：`false`

`includeIPv4LinkLocalAddrs`  <a name="ip-detector-component-configuration-include-ipv4-link-local-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。  
默认值：`false`

------
#### [ 2.0.x ]

`includeIPv4LoopbackAddrs`  <a name="ip-detector-component-configuration-include-ipv4-loopback-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。  
默认值：`false`

`includeIPv4LinkLocalAddrs`  <a name="ip-detector-component-configuration-include-ipv4-link-local-addrs"></a>
<a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。  
默认值：`false`

------

## 本地日志文件
<a name="ip-detector-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="ip-detector-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.2.3  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.2.2  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.2.1  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.2.0  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/ip-detector-component.html)  | 
|  2.1.9  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/ip-detector-component.html)  | 
|  2.1.8  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.7  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.6  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.5  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.4  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/ip-detector-component.html)  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/ip-detector-component.html)  | 
|  2.0.2  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.1  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.0  |  初始版本。  | 

# Firehose
<a name="kinesis-firehose-component"></a>

Firehose 组件 (`aws.greengrass.KinesisFirehose`) 通过亚马逊数据 Firehose 传输流将数据发布到目的地，例如亚马逊 S3、亚马逊 Redshift 和亚马逊服务。 OpenSearch 有关更多信息，请参阅《Amazon Data Firehose 开发人员指南》**中的[什么是 Amazon Data Firehose？](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)。

要通过此组件发布至 Kinesis 传输流，请向此组件订阅的主题发布一条消息。默认情况下，此组件订阅 `kinesisfirehose/message` 和 `kinesisfirehose/message/binary/#` [本地发布/订阅](ipc-publish-subscribe.md)主题。部署此组件时，您可以指定其他主题，包括 AWS IoT Core MQTT 主题。

**注意**  
此组件提供的功能与 V1 中的 Firehose 连接器类似。 AWS IoT Greengrass 有关更多信息，请参阅 *AWS IoT Greengrass V1 开发人员指南*中的 [Firehose 连接器](https://docs.aws.amazon.com/greengrass/latest/developerguide/kinesis-firehose-connector.html)。

**Topics**
+ [版本](#kinesis-firehose-component-versions)
+ [Type](#kinesis-firehose-component-type)
+ [操作系统](#kinesis-firehose-component-os-support)
+ [要求](#kinesis-firehose-component-requirements)
+ [依赖项](#kinesis-firehose-component-dependencies)
+ [配置](#kinesis-firehose-component-configuration)
+ [输入数据](#kinesis-firehose-component-input-data)
+ [输出数据](#kinesis-firehose-component-output-data)
+ [本地日志文件](#kinesis-firehose-component-log-file)
+ [许可证](#kinesis-firehose-component-licenses)
+ [更改日志](#kinesis-firehose-component-changelog)
+ [另请参阅](#kinesis-firehose-component-see-also)

## 版本
<a name="kinesis-firehose-component-versions"></a>

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

## Type
<a name="kinesis-firehose-component-type"></a>

<a name="public-component-type-lambda"></a>此<a name="public-component-type-lambda-phrase"></a>组件是一个 Lambda 组件 (`aws.greengrass.lambda`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 使用 [Lambda 启动程序组件](lambda-launcher-component.md)运行此组件的 Lambda 函数。

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

## 操作系统
<a name="kinesis-firehose-component-os-support"></a>

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

## 要求
<a name="kinesis-firehose-component-requirements"></a>

此组件具有以下要求：
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `firehose:PutRecord` 和 `firehose:PutRecordBatch` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
        ],
        "Effect": "Allow",
        "Resource": [
          "arn:aws:firehose:us-east-1:123456789012:deliverystream/stream-name"
        ]
      }
    ]
  }
  ```

------

  您可以动态覆盖该组件输入消息有效载荷中的默认传输流。如果您的应用程序使用此功能，则 IAM 策略须包括所有目标流作为资源。您可以授予对资源的具体或条件访问权限（例如，通过使用通配符 `*` 命名方案）。
+ <a name="connector-component-legacy-subscription-router-dependency"></a>要接收此组件的输出数据，在部署此组件时，必须合并[旧版订阅路由器组件](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) 的以下配置更新。此配置指定此组件发布响应的主题。

------
#### [ Legacy subscription router v2.1.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-kinesisfirehose": {
        "id": "aws-greengrass-kinesisfirehose",
        "source": "component:aws.greengrass.KinesisFirehose",
        "subject": "kinesisfirehose/message/status",
        "target": "cloud"
      }
    }
  }
  ```

------
#### [ Legacy subscription router v2.0.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-kinesisfirehose": {
        "id": "aws-greengrass-kinesisfirehose",
        "source": "arn:aws:lambda:region:aws:function:aws-greengrass-kinesisfirehose:version",
        "subject": "kinesisfirehose/message/status",
        "target": "cloud"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*替换为您使用 AWS 区域 的。
  + *version*替换为该组件运行的 Lambda 函数的版本。要查找 Lambda 函数版本，您必须查看要部署的此组件版本配方。在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中打开此组件的详细信息页面，然后查找 **Lambda 函数**键值对。此键值对包含 Lambda 函数的名称和版本。

**重要**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
每次部署此组件时，都必须更新旧版订阅路由器上的 Lambda 函数版本。这样能够确保为部署的组件版本使用正确的 Lambda 函数版本。

------

  <a name="connector-component-create-deployments"></a>有关更多信息，请参阅 [创建部署](create-deployments.md)。
+ 支持在 VPC 中运行 Firehose 组件。要在 VPC 中部署此组件，需要满足以下条件。
  + Firehose 组件必须连接至 VPC 终端节点为 `com.amazonaws.region.kinesis-firehose` 的 `firehose.region.amazonaws.com`。

### 端点和端口
<a name="kinesis-firehose-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `firehose.region.amazonaws.com`  | 443 | 是 |  将数据上传至 Firehose。  | 

## 依赖项
<a name="kinesis-firehose-component-dependencies"></a>

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

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.16.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.15.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.14.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.7 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.5 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | >=1.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | >=1.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=1.0.0  | 硬性 | 

------

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

## 配置
<a name="kinesis-firehose-component-configuration"></a>

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

**注意**  <a name="connector-component-lambda-parameters"></a>
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数，以便在您的设备上配置此组件。

`lambdaParams`  
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息：    
`EnvironmentVariables`  
包含 Lambda 函数的参数的对象。该对象包含以下信息：    
`DEFAULT_DELIVERY_STREAM_ARN`  
组件发送数据的默认 Firehose 传输流 ARN。您可以用输入消息有效载荷中的 `delivery_stream_arn` 属性覆盖目标流。  
核心设备角色必须允许对所有目标传输流执行所需操作。有关更多信息，请参阅 [要求](#kinesis-firehose-component-requirements)。  
`PUBLISH_INTERVAL`  
（可选）组件发布批处理数据至 Firehose 之前等待的最长秒数。要将组件配置为在收到指标时发布它们，即不进行批处理，请指定 `0`。  
此值最多可以是 900 秒。  
默认值：10 秒  
`DELIVERY_STREAM_QUEUE_SIZE`  
（可选）在同一传输流的新记录被组件拒绝之前要保留在内存中的记录的最大数目。  
此值必须至少为 2,000 条记录。  
默认值：5,000 条记录

`containerMode`  <a name="connector-component-container-mode-parameter"></a>
（可选）此组件的容器化模式。从以下选项中进行选择：  <a name="lambda-function-component-container-mode-parameter"></a>
+ `NoContainer` – 该组件不在隔离的运行时环境中运行。
+ `GreengrassContainer`— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
默认值：`GreengrassContainer`

`containerParams`  
<a name="connector-component-container-params-description"></a>（可选）包含此组件的容器参数的对象。如果您为 `containerMode` 指定 `GreengrassContainer`，则该组件使用这些参数。  
该对象包含以下信息：    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>（可选）要分配给组件的内存量（以千字节为单位）。  
默认为 64 MB（65,535 KB）。

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（可选）包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是从 AWS IoT Core 还是本地 publish/subscribe 主题订阅 MQTT 主题。  
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`type`  
（可选）此组件用于订阅 publish/subscribe 消息的消息类型。从以下选项中进行选择：  
+ `PUB_SUB` – 订阅本地发布/订阅消息。如果选择此选项，主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。
+ `IOT_CORE`— 订阅 AWS IoT Core MQTT 消息。如果选择此选项，主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
默认值：`PUB_SUB`  
`topic`  
（可选）组件订阅以接收消息的主题。如果您为 `type` 指定 `IotCore`，则可以在本主题中使用 MQTT 通配符（`+` 和 `#`）。

**Example 示例：配置合并更新（容器模式）**  

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "DEFAULT_DELIVERY_STREAM_ARN": "arn:aws:firehose:us-west-2:123456789012:deliverystream/mystream"
    }
  },
  "containerMode": "GreengrassContainer"
}
```

**Example 示例：配置合并更新（无容器模式）**  

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "DEFAULT_DELIVERY_STREAM_ARN": "arn:aws:firehose:us-west-2:123456789012:deliverystream/mystream"
    }
  },
  "containerMode": "NoContainer"
}
```

## 输入数据
<a name="kinesis-firehose-component-input-data"></a>

此组件接受以下主题的流内容，并会将这些内容发送到目标传输流。该组件接受两种类型的输入数据：
+ JSON 数据，位于 `kinesisfirehose/message` 主题中。
+ 二进制数据，位于 `kinesisfirehose/message/binary/#` 主题中。

**JSON 数据的默认主题（本地发布/订阅）：**`kinesisfirehose/message`  
<a name="connector-component-input-properties"></a>消息接受以下属性。输入消息必须采用 JSON 格式。    
`request`  
要发送到传输流和目标传输流（如果不同于默认流）的数据。  
类型：包含以下信息的 `object`：    
`data`  
要发送到传输流的数据。  
类型：`string`  
`delivery_stream_arn`  
（可选）目标 Firehose 传输流的 ARN。指定此属性是为了覆盖默认传输流。  
类型：`string`  
`id`  <a name="connector-component-input-property-id"></a>
请求的任意 ID。使用此属性将输入请求映射到输出响应。指定此属性时，组件会将响应对象中的 `id` 属性设置为该值。  
类型：`string`

**Example 示例输入**  

```
{
  "request": {
    "delivery_stream_arn": "arn:aws:firehose:region:account-id:deliverystream/stream2-name",
    "data": "Data to send to the delivery stream."
  },
  "id": "request123"
}
```

**二进制数据的默认主题（本地发布/订阅）：**`kinesisfirehose/message/binary/#`  
使用此主题发送包含二进制数据的消息。此组件不会解析二进制数据。该组件按原样传输数据。  
要将输入请求映射到输出响应，请将消息主题中的 `#` 通配符替换为任意请求 ID。例如，如果您将消息发布到 `kinesisfirehose/message/binary/request123`，响应对象中的 `id` 属性将设置为 `request123`。  
如果您不希望将请求映射到响应，可以将消息发布到 `kinesisfirehose/message/binary/`。请务必包含尾斜杠 (`/`)。

## 输出数据
<a name="kinesis-firehose-component-output-data"></a>

 <a name="connector-component-output-data"></a>默认情况下，此组件会将响应作为输出数据发布至以下 MQTT 主题。您必须在[旧版订阅路由器组件](legacy-subscription-router-component.md)的配置中将主题指定为 `subject`。有关如何在自定义组件中订阅此主题消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。

**默认主题 (AWS IoT Core MQTT)：**`kinesisfirehose/message/status`

**Example 输出示例**  
响应将包含批次中发送的每条数据记录的状态。  

```
{
  "response": [
    {
      "ErrorCode": "error",
      "ErrorMessage": "test error",
      "id": "request123",
      "status": "fail"
    },
    {
      "firehose_record_id": "xyz2",
      "id": "request456",
      "status": "success"
    },
    {
      "firehose_record_id": "xyz3",
      "id": "request890",
      "status": "success"
    }
  ]
}
```

**注意**  <a name="connector-component-retryable-error"></a>
如果组件检测到可以重试的错误（例如连接错误），它会在下一次批处理中重试发布。

## 本地日志文件
<a name="kinesis-firehose-component-log-file"></a>

此组件使用以下日志文件。

```
/greengrass/v2/logs/aws.greengrass.KinesisFirehose.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径。

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.KinesisFirehose.log
  ```

## 许可证
<a name="kinesis-firehose-component-licenses"></a>

此组件包含以下第三方软件/许可：<a name="boto-3-licenses"></a>
+ [适用于 Python (Boto3) 的 AWS SDK](https://pypi.org/project/boto3/)/Apache 许可证 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache 许可证 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF 许可证
+ [docutils](https://pypi.org/project/docutils/)/BSD 许可证，GNU 通用公共许可证 (GPL)，Python 软件基金会许可证，公共领域
+ [jmespath](https://pypi.org/project/jmespath/)/MIT 许可证
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache 许可证 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT 许可证

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="kinesis-firehose-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.10  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.1.9  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.1.8  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.1.7  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.6  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.5  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.4  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.3  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/kinesis-firehose-component.html)  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.5  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.4  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

## 另请参阅
<a name="kinesis-firehose-component-see-also"></a>
+ 《Amazon Data Firehose 开发人员指南》**中的[什么是 Amazon Data Firehose？](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)

# Lambda 启动程序
<a name="lambda-launcher-component"></a>

Lambda 启动器组件 (`aws.greengrass.LambdaLauncher`) 在 AWS IoT Greengrass 核心设备上启动和停止 AWS Lambda 功能。此组件还会进行任何容器化设置并以您指定的用户身份运行进程。

**注意**  <a name="lambda-component-dependency-note"></a>
将 Lambda 函数组件部署到核心设备时，部署还包括此组件。有关更多信息，请参阅 [运行 AWS Lambda 函数](run-lambda-functions.md)。

**Topics**
+ [版本](#lambda-launcher-component-versions)
+ [Type](#lambda-launcher-component-type)
+ [操作系统](#lambda-launcher-component-os-support)
+ [要求](#lambda-launcher-component-requirements)
+ [依赖项](#lambda-launcher-component-dependencies)
+ [配置](#lambda-launcher-component-configuration)
+ [本地日志文件](#lambda-launcher-component-log-file)
+ [更改日志](#lambda-launcher-component-changelog)

## 版本
<a name="lambda-launcher-component-versions"></a>

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

## Type
<a name="lambda-launcher-component-type"></a>

<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)。

## 操作系统
<a name="lambda-launcher-component-os-support"></a>

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

## 要求
<a name="lambda-launcher-component-requirements"></a>

此组件具有以下要求：
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ 支持在 VPC 中运行 Lambda 启动程序组件。

## 依赖项
<a name="lambda-launcher-component-dependencies"></a>

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

------
#### [ 2.0.11 – 2.0.13 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Lambda 管理器](lambda-manager-component.md) | >=2.0.0 <2.4.0  | 硬性 | 

------
#### [ 2.0.9 – 2.0.10 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Lambda 管理器](lambda-manager-component.md) | >=2.0.0 <2.3.0  | 硬性 | 

------
#### [ 2.0.4 - 2.0.8 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Lambda 管理器](lambda-manager-component.md) | >=2.0.0 <2.2.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Lambda 管理器](lambda-manager-component.md) | >=2.0.3 <2.1.0 | 硬性 | 

------

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

## 配置
<a name="lambda-launcher-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="lambda-launcher-component-log-file"></a>

此组件使用以下日志文件。

```
/greengrass/v2/logs/lambdaFunctionComponentName.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径，并*lambdaFunctionComponentName*替换为该组件启动的 Lambda 函数组件的名称。

  ```
  sudo tail -f /greengrass/v2/logs/lambdaFunctionComponentName.log
  ```

## 更改日志
<a name="lambda-launcher-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.0.13  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-launcher-component.html)  | 
|  2.0.12  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-launcher-component.html)  | 
|  2.0.11  |  支持 Lambda 管理器 2.3.0。  | 
|  2.0.10  |  <a name="changelog-lambda-launcher-2.0.10"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-launcher-component.html)  | 
|  2.0.9  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.6  |  常规性能改进和错误修复。  | 
|  2.0.4  |  <a name="changelog-lambda-launcher-2.0.4"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-launcher-component.html)  | 
|  2.0.3  |  初始版本。  | 

# Lambda 管理器
<a name="lambda-manager-component"></a>

Lambda 管理器组件 (`aws.greengrass.LambdaManager`) 管理在 Greengrass 核心设备上运行的 AWS Lambda 函数的工作项和进程间通信。

**注意**  <a name="lambda-component-dependency-note"></a>
将 Lambda 函数组件部署到核心设备时，部署还包括此组件。有关更多信息，请参阅 [运行 AWS Lambda 函数](run-lambda-functions.md)。

**Topics**
+ [版本](#lambda-manager-component-versions)
+ [操作系统](#lambda-manager-component-os-support)
+ [Type](#lambda-manager-component-type)
+ [要求](#lambda-manager-component-requirements)
+ [依赖项](#lambda-manager-component-dependencies)
+ [配置](#lambda-manager-component-configuration)
+ [本地日志文件](#lambda-manager-component-log-file)
+ [更改日志](#lambda-manager-component-changelog)

## 版本
<a name="lambda-manager-component-versions"></a>

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

## 操作系统
<a name="lambda-manager-component-os-support"></a>

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

## Type
<a name="lambda-manager-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 要求
<a name="lambda-manager-component-requirements"></a>

此组件具有以下要求：
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ 支持在 VPC 中运行 Lambda 管理器组件。

## 依赖项
<a name="lambda-manager-component-dependencies"></a>

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

------
#### [ 2.3.7 ]

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


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

------
#### [ 2.3.6 ]

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


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

------
#### [ 2.3.5 ]

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


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

------
#### [ 2.3.4 ]

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


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

------
#### [ 2.3.2 and 2.3.3 ]

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


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

------
#### [ 2.2.10 and 2.3.1 ]

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


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

------
#### [ 2.2.8 and 2.2.9 ]

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


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

------
#### [ 2.2.7 ]

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


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

------
#### [ 2.2.6 ]

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


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

------
#### [ 2.2.5 ]

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


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

------
#### [ 2.2.4 ]

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


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

------
#### [ 2.2.1 - 2.2.3 ]

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


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

------
#### [ 2.2.0 ]

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


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

------
#### [ 2.1.3 and 2.1.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [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.x ]

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


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

------

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

## 配置
<a name="lambda-manager-component-configuration"></a>

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

`logHandlerMode`  
仅适用于 Lambda 管理器 2.3.0\$1 
用于选择要使用的 Lambda 日志管理器的实现。将该值设置为 `optimized` 可使用更少的线程来读取 Lambda 日志。

`getResultTimeoutInSecond`  
（可选）Lambda 函数超时前可运行的最长时间（以秒为单位）。  
默认值：`60`

## 本地日志文件
<a name="lambda-manager-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

```
/greengrass/v2/logs/greengrass.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径。

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

## 更改日志
<a name="lambda-manager-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.3.7  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.3.6  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.3.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.3.4  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.3.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.3.2  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.3.1  |  <a name="changelog-lambda-manager-2.3.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.3.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.2.11  |  <a name="changelog-lambda-manager-2.2.11"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.2.10  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.2.9  |  <a name="changelog-lambda-manager-2.2.9"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.2.8  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.2.7  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.2.6  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.2.5  |  <a name="changelog-lambda-manager-2.2.5"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.2.4  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.2.0  |  <a name="changelog-lambda-manager-2.2.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  2.1.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-manager-component.html)  | 
|  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  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

# Lambda 运行时
<a name="lambda-runtimes-component"></a>

Lambda 运行时组件 (`aws.greengrass.LambdaRuntimes`) 提供了 Greengrass 核心设备用于运行 AWS Lambda 函数的运行时。

**注意**  <a name="lambda-component-dependency-note"></a>
将 Lambda 函数组件部署到核心设备时，部署还包括此组件。有关更多信息，请参阅 [运行 AWS Lambda 函数](run-lambda-functions.md)。

**Topics**
+ [版本](#lambda-runtimes-component-versions)
+ [类型](#lambda-runtimes-component-type)
+ [操作系统](#lambda-runtimes-component-os-support)
+ [要求](#lambda-runtimes-component-requirements)
+ [依赖项](#lambda-runtimes-component-dependencies)
+ [配置](#lambda-runtimes-component-configuration)
+ [本地日志文件](#lambda-runtimes-component-log-file)
+ [更改日志](#lambda-runtimes-component-changelog)

## 版本
<a name="lambda-runtimes-component-versions"></a>

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

## 类型
<a name="lambda-runtimes-component-type"></a>

<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)。

## 操作系统
<a name="lambda-runtimes-component-os-support"></a>

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

## 要求
<a name="lambda-runtimes-component-requirements"></a>

此组件具有以下要求：
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ 支持在 VPC 中运行 Lambda 运行时组件。

## 依赖项
<a name="lambda-runtimes-component-dependencies"></a>

此组件没有任何依赖关系。

## 配置
<a name="lambda-runtimes-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="lambda-runtimes-component-log-file"></a>

此组件不输出日志。

## 更改日志
<a name="lambda-runtimes-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.0.9  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/lambda-runtimes-component.html)  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.5  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.4  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

# 旧版订阅路由器
<a name="legacy-subscription-router-component"></a>

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

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

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

## 版本
<a name="legacy-subscription-router-component-versions"></a>

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

## Type
<a name="legacy-subscription-router-component-type"></a>

<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)。

## 操作系统
<a name="legacy-subscription-router-component-os-support"></a>

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

## 要求
<a name="legacy-subscription-router-component-requirements"></a>

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

## 依赖项
<a name="legacy-subscription-router-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#legacy-subscription-router-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//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)。

## 配置
<a name="legacy-subscription-router-component-configuration"></a>

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

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

`subscriptions`  
<a name="legacy-subscription-router-component-configuration-subscriptions-intro"></a>（可选）要在核心设备上启用的订阅。这是一个对象，其中每个键都是唯一 ID，每个值都是定义该连接器订阅的对象。部署使用 Core SDK 的 V1 连接器组件或 Lambda 函数时，必须配置订阅。 AWS IoT Greengrass   
每个订阅对象包含以下信息：    
`id`  <a name="legacy-subscription-router-component-configuration-subscription-id"></a>
此订阅的唯一 ID。此 ID 必须与此订阅对象的密钥匹配。  
`source`  
Lambda 函数，它使用 AWS 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 函数发布 AWS IoT Core 或发布 MQTT 消息。指定下列项之一：  
+ <a name="legacy-subscription-router-component-configuration-subscription-target-cloud"></a>`cloud`。 该`source`函数将 MQTT 消息发布到。 AWS 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 配置更新示例（定义订阅 AWS IoT Core）**  
以下示例指定 `com.example.HelloWorldLambda` Lambda 函数组件向 AWS 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 函数时，必须配置订阅。 AWS IoT Greengrass   
每个订阅对象包含以下信息：    
`id`  <a name="legacy-subscription-router-component-configuration-subscription-id"></a>
此订阅的唯一 ID。此 ID 必须与此订阅对象的密钥匹配。  
`source`  
Lambda 函数，它使用 AWS 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 函数发布 AWS IoT Core 或发布 MQTT 消息。指定下列项之一：  
+ <a name="legacy-subscription-router-component-configuration-subscription-target-cloud"></a>`cloud`。 该`source`函数将 MQTT 消息发布到。 AWS 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 配置更新示例（定义订阅 AWS IoT Core）**  
以下示例指定`Greengrass_HelloWorld`函数向该`hello/world`主题发布 MQTT 消息。 AWS 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"
  }
}
```

------

## 本地日志文件
<a name="legacy-subscription-router-component-log-file"></a>

此组件不输出日志。

## 更改日志
<a name="legacy-subscription-router-component-changelog"></a>

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


|  版本  |  更改  | 
| --- | --- | 
|  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.aws.amazon.com/zh_cn/greengrass/v2/developerguide/legacy-subscription-router-component.html)  | 
|  2.0.3  |  初始版本。  | 

# 本地调试控制台
<a name="local-debug-console-component"></a>

本地调试控制台组件 (`aws.greengrass.LocalDebugConsole`) 提供了一个本地仪表板，用于显示有关 AWS IoT Greengrass 核心设备及其组件的信息。您可以使用此控制面板来调试核心设备和管理本地组件。

**重要**  
 <a name="local-dev-tools-production-environment-warning"></a>我们建议您仅在开发环境中使用此组件，不要在生产环境中使用。此组件允许访问您在生产环境中通常不需要的信息和操作。遵循最低权限原则，将此组件仅部署到有需求的核心设备。

**Topics**
+ [版本](#local-debug-console-component-versions)
+ [Type](#local-debug-console-component-type)
+ [操作系统](#local-debug-console-component-os-support)
+ [要求](#local-debug-console-component-requirements)
+ [依赖项](#local-debug-console-component-dependencies)
+ [配置](#local-debug-console-component-configuration)
+ [使用量](#local-debug-console-component-usage)
+ [本地日志文件](#local-debug-console-component-log-file)
+ [更改日志](#local-debug-console-component-changelog)

## 版本
<a name="local-debug-console-component-versions"></a>

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

## Type
<a name="local-debug-console-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="local-debug-console-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="local-debug-console-component-requirements"></a>

此组件具有以下要求：
+ 您可以使用用户名和密码登录控制面板。为您提供的用户名是 `debug`。您必须使用 AWS IoT Greengrass CLI 创建临时密码，以便通过核心设备上的控制面板对您进行身份验证。您必须能够使用 AWS IoT Greengrass CLI 才能使用本地调试控制台。有关更多信息，请参阅 [Greengrass CLI](greengrass-cli-component.md#greengrass-cli-component-requirements) 要求。有关如何生成密码和登录的更多信息，请参阅[本地调试控制台组件用法](#local-debug-console-component-usage)。
+ 支持在 VPC 中运行本地调试控制台组件。

## 依赖项
<a name="local-debug-console-component-dependencies"></a>

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

------
#### [ 2.4.6 ]

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


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

------
#### [ 2.4.5 ]

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


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

------
#### [ 2.4.4 ]

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


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

------
#### [ 2.4.3 ]

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


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

------
#### [ 2.4.1 – 2.4.2 ]

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


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

------
#### [ 2.4.0 ]

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


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

------
#### [ 2.3.0 and 2.3.1 ]

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


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

------
#### [ 2.2.9 ]

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


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

------
#### [ 2.2.8 ]

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


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

------
#### [ 2.2.7 ]

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


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

------
#### [ 2.2.6 ]

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


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

------
#### [ 2.2.5 ]

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


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

------
#### [ 2.2.4 ]

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


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

------
#### [ 2.2.3 ]

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


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

------
#### [ 2.2.2 ]

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


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

------
#### [ 2.2.1 ]

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


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

------
#### [ 2.2.0 ]

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


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

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

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


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

------
#### [ 2.0.x ]

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


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

------

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

## 配置
<a name="local-debug-console-component-configuration"></a>

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

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

`httpsEnabled`  
（可选）您可以为本地调试控制台启用 HTTPS 通信。如果启用 HTTPS 通信，则本地调试控制台会创建自签名证书。对于使用自签名证书的网站，Web 浏览器会显示安全警告，因此必须手动验证证书。这样就可以绕过警告。有关更多信息，请参阅 [使用量](#local-debug-console-component-usage)。  
默认值：`true`

`port`  <a name="local-debug-console-component-configuration-port"></a>
（可选）提供本地调试控制台的端口。  
默认值：`1441`

`websocketPort`  <a name="local-debug-console-component-configuration-websocket-port"></a>
（可选）用于本地调试控制台的 WebSocket 端口。  
默认值：`1442`

`bindHostname`  <a name="local-debug-console-component-configuration-bind-hostname"></a>
（可选）用于本地调试控制台的主机名。  
如果您在 [Docker 容器中运行 C AWS IoT Greengrass ore 软件](run-greengrass-docker.md)，请将此参数设置为`0.0.0.0`，这样您就可以在 Docker 容器之外打开本地调试控制台。  
默认值：`localhost`

**Example 示例：配置合并更新**  
以下示例配置指定在非默认端口上打开本地调试控制台并禁用 HTTPS。  

```
{
  "httpsEnabled": false,
  "port": "10441",
  "websocketPort": "10442"
}
```

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

`port`  <a name="local-debug-console-component-configuration-port"></a>
（可选）提供本地调试控制台的端口。  
默认值：`1441`

`websocketPort`  <a name="local-debug-console-component-configuration-websocket-port"></a>
（可选）用于本地调试控制台的 WebSocket 端口。  
默认值：`1442`

`bindHostname`  <a name="local-debug-console-component-configuration-bind-hostname"></a>
（可选）用于本地调试控制台的主机名。  
如果您在 [Docker 容器中运行 C AWS IoT Greengrass ore 软件](run-greengrass-docker.md)，请将此参数设置为`0.0.0.0`，这样您就可以在 Docker 容器之外打开本地调试控制台。  
默认值：`localhost`

**Example 示例：配置合并更新**  
以下示例配置指定在非默认端口上打开本地调试控制台。  

```
{
  "port": "10441",
  "websocketPort": "10442"
}
```

------

## 使用量
<a name="local-debug-console-component-usage"></a>

要使用本地调试控制台，请通过 Greengrass CLI 创建会话。创建会话时，Greengrass CLI 会提供一个用户名和临时密码，您可以用来登录本地调试控制台。

按照以下说明在核心设备或开发计算机上打开本地调试控制台。

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

在 2.1.0 及更高版本中，本地调试控制台默认使用 HTTPS。启用 HTTPS 后，本地调试控制台将创建自签名证书来保证安全连接。由于存在此自签名证书，当您打开本地调试控制台时，您的 Web 浏览器会显示安全警告。使用 Greengrass CLI 创建会话时，输出包括证书的指纹，因此您可以验证证书是否合法以及连接是否安全。

您可以禁用 HTTPS。有关更多信息，请参阅[本地调试控制台配置](#local-debug-console-component-configuration)。

**打开本地调试控制台**

1. <a name="local-debug-console-component-usage-forward-port"></a>（可选）要在开发计算机上查看本地调试控制台，可以通过 SSH 转发控制台端口。但是，您必须先在核心设备的 SSH 配置文件中启用 `AllowTcpForwarding` 选项。默认情况下，此选项处于启用状态。在开发计算机上运行以下命令，即可在开发计算机上查看 `localhost:1441` 控制面板。

   ```
   ssh -L 1441:localhost:1441 -L 1442:localhost:1442 username@core-device-ip-address
   ```
**注意**  
您可以从 `1441` 和 `1442` 更改默认端口。有关更多信息，请参阅[本地调试控制台配置](#local-debug-console-component-configuration)。

1. <a name="local-debug-console-component-create-session-step"></a>创建会话以使用本地调试控制台。创建会话时，会生成用于身份验证的密码。本地调试控制台需要密码才能提高安全性，因为您可以使用此组件在核心设备上查看重要信息并执行操作。如果您在组件配置中启用 HTTPS，则本地调试控制台还会创建证书来保证安全连接。HTTPS 默认处于启用状态。

   使用 C AWS IoT Greengrass LI 创建会话。此命令会生成一个含 43 个字符的随机密码，该密码将在 8 小时后过期。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass V2 根文件夹的路径。

------
#### [ Linux or Unix ]

   ```
   sudo /greengrass/v2/bin/greengrass-cli get-debug-password
   ```

------
#### [ Windows ]

   ```
   C:\greengrass\v2\bin\greengrass-cli get-debug-password
   ```

------

   如果您已将本地调试控制台配置为使用 HTTPS，则命令输出如下所示。打开本地调试控制台时，您可以使用证书指纹来验证连接是否安全。

   ```
   Username: debug
   Password: bEDp3MOHdj8ou2w5de_sCBI2XAaguy3a8XxREXAMPLE
   Password expires at: 2021-04-01T17:01:43.921999931-07:00
   The local debug console is configured to use TLS security. The certificate is self-signed so you will need to bypass your web browser's security warnings to open the console.
   Before you bypass the security warning, verify that the certificate fingerprint matches the following fingerprints.
   SHA-256: 15 0B 2C E2 54 8B 22 DE 08 46 54 8A B1 2B 25 DE FB 02 7D 01 4E 4A 56 67 96 DA A6 CC B1 D2 C4 1B
   SHA-1: BC 3E 16 04 D3 80 70 DA E0 47 25 F9 90 FA D6 02 80 3E B5 C1
   ```

   调试视图组件会创建一个持续 8 小时的会话。之后，您必须生成新的密码以再次查看本地调试控制台。

1. 打开并登录控制台。在 Greengrass 核心设备上查看控制面板，如果您通过 SSH 转发端口，则可以在开发计算机上查看控制面板。请执行以下操作之一：
   + 如果您在本地调试控制台中启用了 HTTPS（默认设置），请执行以下操作：

     1. 在核心设备上打开 `https://localhost:1441`，如果通过 SSH 转发端口，则在开发计算机上打开。

        您的浏览器可能会显示有关安全证书无效的安全警告。

     1. 如果您的浏览器显示安全警告，请验证证书是否合法并绕过安全警告。执行以下操作：

        1. 找到证书的 SHA-256 或 SHA-1 指纹，并验证它是否与 `get-debug-password` 命令之前打印的 SHA-256 或 SHA-1 指纹相匹配。您的浏览器可能会提供其中一个或两个指纹。要查看证书及其指纹，请查阅浏览器的文档。在某些浏览器中，证书指纹被称为拇指指纹。
**注意**  
如果证书指纹不匹配，请转至 [Step 2](#local-debug-console-component-create-session-step) 创建新会话。如果证书指纹仍然不匹配，则您的连接可能不安全。

        1. 如果证书指纹匹配，请绕过浏览器的安全警告，打开本地调试控制台。请查阅浏览器的文档以绕过浏览器安全警告。

     1. 使用 `get-debug-password` 命令之前打印的用户名和密码登录网站。

        本地调试控制台打开。

     1. 如果本地调试控制台显示错误提示由于 TLS 握手失败 WebSocket 而无法连接，则必须绕过该 URL 的自签名安全警告。 WebSocket   
![\[本地调试控制台中的 WebSocket TLS 握手错误。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/images/local-debug-console/websocket-tls-handshake-error.png)

        执行以下操作：

        1. 在打开本地调试控制台的同一浏览器中打开 `https://localhost:1442`。

        1. 验证证书并绕过安全警告。

           绕过警告后，您的浏览器可能会显示 HTTP 404 页面。

        1. 再次打开 `https://localhost:1441`。

           本地调试控制台会显示有关核心设备的信息。
   + 如果您在本地调试控制台中禁用了 HTTPS，请执行以下操作：

     1. <a name="local-debug-console-component-usage-open-localhost-http"></a>在核心设备上打开 `http://localhost:1441`，如果通过 SSH 转发端口，则在开发计算机上打开。

     1. <a name="local-debug-console-component-usage-sign-in"></a>使用 `get-debug-password` 命令之前打印的用户名和密码登录网站。

        本地调试控制台打开。

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

**打开本地调试控制台**

1. <a name="local-debug-console-component-usage-forward-port"></a>（可选）要在开发计算机上查看本地调试控制台，可以通过 SSH 转发控制台端口。但是，您必须先在核心设备的 SSH 配置文件中启用 `AllowTcpForwarding` 选项。默认情况下，此选项处于启用状态。在开发计算机上运行以下命令，即可在开发计算机上查看 `localhost:1441` 控制面板。

   ```
   ssh -L 1441:localhost:1441 -L 1442:localhost:1442 username@core-device-ip-address
   ```
**注意**  
您可以从 `1441` 和 `1442` 更改默认端口。有关更多信息，请参阅[本地调试控制台配置](#local-debug-console-component-configuration)。

1. 创建会话以使用本地调试控制台。创建会话时，会生成用于身份验证的密码。本地调试控制台需要密码才能提高安全性，因为您可以使用此组件在核心设备上查看重要信息并执行操作。

   使用 C AWS IoT Greengrass LI 创建会话。此命令会生成一个含 43 个字符的随机密码，该密码将在 8 小时后过期。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass V2 根文件夹的路径。

------
#### [ Linux or Unix ]

   ```
   sudo /greengrass/v2/bin/greengrass-cli get-debug-password
   ```

------
#### [ Windows ]

   ```
   C:\greengrass\v2\bin\greengrass-cli get-debug-password
   ```

------

   该命令输出如以下示例所示。

   ```
   Username: debug
   Password: bEDp3MOHdj8ou2w5de_sCBI2XAaguy3a8XxREXAMPLE
   Password will expire at: 2021-04-01T17:01:43.921999931-07:00
   ```

   调试视图组件会创建一个持续 4 小时的会话，然后您必须生成新密码才能再次查看本地调试控制台。

1. <a name="local-debug-console-component-usage-open-localhost-http"></a>在核心设备上打开 `http://localhost:1441`，如果通过 SSH 转发端口，则在开发计算机上打开。

1. <a name="local-debug-console-component-usage-sign-in"></a>使用 `get-debug-password` 命令之前打印的用户名和密码登录网站。

   本地调试控制台打开。

------

## 本地日志文件
<a name="local-debug-console-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="local-debug-console-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.4.6  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.4.5  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.4.4  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.4.3  |  对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/local-debug-console-component.html)  | 
|  2.4.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/local-debug-console-component.html)  | 
|  2.4.1  |  版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.4.0  |  <a name="changelog-local-debug-console-2.4.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/local-debug-console-component.html)  | 
|  2.3.1  |  版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.3.0  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/local-debug-console-component.html) | 
|  2.2.7  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.2.6  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.2.5  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.2.4  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/local-debug-console-component.html)  | 
|  2.2.2  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.2.1  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.2.0  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.0  |  <a name="changelog-local-debug-console-2.1.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/local-debug-console-component.html)  | 
|  2.0.3  |  初始版本。  | 

# 日志管理器
<a name="log-manager-component"></a>

**警告**  
我们建议升级到日志管理器 v2.3.5 或更高版本。版本 2.3.5 优化了日志管理器配置写入，减少了 IO 操作，提高了日志上传速度和设备整体性能，并可能延长设备寿命。

日志管理器组件 (`aws.greengrass.LogManager`) 将日志从 AWS IoT Greengrass 核心设备上传到 Amazon CloudWatch 日志。您可以上传来自 Greengrass Nucleus、其他 Greengrass 组件以及其他非 Greengrass 组件的应用程序和服务的日志。有关如何监控日志和本地文件系统上的 CloudWatch 日志的更多信息，请参阅[监控 AWS IoT Greengrass 日志](monitor-logs.md)。

<a name="log-manager-considerations-intro"></a>使用日志管理器组件写入日志时，需要考虑以下注意事项： CloudWatch <a name="log-manager-considerations"></a>
+ **日志延迟**

  日志管理器组件版本 2.2.8（及更早版本）仅处理和上传轮换日志文件中的日志。默认情况下， AWS IoT Greengrass Core 软件每小时或在 1,024 KB 之后轮换一次日志文件。因此，只有在 C AWS IoT Greengrass ore 软件或 Greengrass 组件写入价值超过 1,024 KB 的日志之后，日志管理器组件才会上传日志。您可以配置更低的日志文件大小限制，从而更频繁地轮换日志文件。这会导致日志管理器组件更频繁地将 CloudWatch 日志上传到日志。

  日志管理器组件版本 2.3.0（及更高版本）会处理并上传所有日志。写入新日志时，日志管理器版本 2.3.0（及更高版本）会处理并直接上传该活动日志文件，而不会等待其轮换。这意味着您可以在 5 分钟或更短时间内查看新日志。

  日志管理器组件会定期上传新日志。默认情况下，日志管理器组件每 5 分钟上传一次新日志。您可以配置较低的上传间隔，以便日志管理器组件通过配置来更频繁地将 CloudWatch 日志上传到日志。`periodicUploadIntervalSec`有关如何配置此周期性间隔的更多信息，请参阅[配置](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html#log-manager-component-configuration)。

  日志可以从同一 Greengrass 文件系统近乎实时地上传。如果您需要实时观察日志，可考虑使用[文件系统日志](monitor-logs.md#access-local-logs)。
**注意**  
如果您使用不同的文件系统写入日志，日志管理器会恢复到日志管理器组件版本 2.2.8 及更早版本中的行为。有关访问文件系统日志的信息，请参阅[访问文件系统日志](https://docs.aws.amazon.com/greengrass/v2/developerguide/monitor-logs.html#access-local-logs)。
+ **时钟偏差**

  日志管理器组件使用标准的签名版本 4 签名流程来创建对 CloudWatch 日志的 API 请求。如果核心设备上的系统时间不同步超过 15 分钟，则 CloudWatch Logs 会拒绝请求。有关更多信息，请参阅《AWS 一般参考》中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

有关此组件向其上传日志的日志组和日志流的信息，请参阅 [用法](#log-manager-component-usage)。

**Topics**
+ [版本](#log-manager-component-versions)
+ [Type](#log-manager-component-type)
+ [操作系统](#log-manager-component-os-support)
+ [要求](#log-manager-component-requirements)
+ [依赖项](#log-manager-component-dependencies)
+ [配置](#log-manager-component-configuration)
+ [用法](#log-manager-component-usage)
+ [本地日志文件](#log-manager-component-log-file)
+ [更改日志](#log-manager-component-changelog)

## 版本
<a name="log-manager-component-versions"></a>

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

## Type
<a name="log-manager-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="log-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="log-manager-component-requirements"></a>

此组件具有以下要求：
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `logs:CreateLogGroup`、`logs:CreateLogStream`、`logs:PutLogEvents` 和 `logs:DescribeLogStreams` 操作，如以下示例 IAM 策略中所示。

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "logs:CreateLogGroup",
          "logs:CreateLogStream",
          "logs:PutLogEvents",
          "logs:DescribeLogStreams"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:logs:*:*:*"
      }
    ]
  }
  ```
**注意**  
默认[情况下，您在安装 Core 软件时创建的 Greengrass 设备](device-service-role.md)角色包含 AWS IoT Greengrass 此示例策略中的权限。

  有关更多信息，请参阅 A *ma CloudWatch zon Logs 用户*指南中的[使用基于身份的 CloudWatch 日志策略（IAM 策略）](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html)。
+ 日志管理器组件支持在 VPC 中运行。要在 VPC 中部署此组件，需要满足以下条件。
  + 日志管理器组件必须连接至 VPC 端点为 `com.amazonaws.us-east-1.logs` 的 `logs.region.amazonaws.com`。

### 端点和端口
<a name="log-manager-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口： | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `logs.region.amazonaws.com`  | 443 | 否 |  如果将日志写入日 CloudWatch 志，则为必填项。  | 

## 依赖项
<a name="log-manager-component-dependencies"></a>

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

------
#### [ 2.3.11 ]

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


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

------
#### [ 2.3.10 ]

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


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

------
#### [ 2.3.9 ]

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


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

------
#### [ 2.3.8 ]

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


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

------
#### [ 2.3.7 ]

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


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

------
#### [ 2.3.5 and 2.3.6 ]

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


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

------
#### [ 2.3.3 – 2.3.4 ]

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


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

------
#### [ 2.2.8 – 2.3.2 ]

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


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

------
#### [ 2.2.7 ]

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


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

------
#### [ 2.2.6 ]

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


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

------
#### [ 2.2.5 ]

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


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

------
#### [ 2.2.1 - 2.2.4 ]

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


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

------
#### [ 2.1.3 and 2.2.0 ]

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


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

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

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


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

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

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


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

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

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


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

------
#### [ 2.0.x ]

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


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

------

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

## 配置
<a name="log-manager-component-configuration"></a>

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

------
#### [ v2.3.10 ]

`logsUploaderConfiguration`  
（可选）日志管理器组件上传的日志的配置。该对象包含以下信息：    
  `systemLogsConfiguration`   
[（可选） AWS IoT Greengrass 核心软件系统日志的配置，其中包括来自 [Greengrass](greengrass-nucleus-component.md) 核心的日志和插件组件。](develop-greengrass-components.md#component-types)指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息：    
`uploadToCloudWatch`  <a name="log-manager-component-configuration-system-upload-to-cloud-watch"></a>
（可选）您可以将系统日志上传到 CloudWatch 日志。  
默认值：`false`  
`minimumLogLevel`  <a name="log-manager-component-configuration-system-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。只有将 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)配置为输出 JSON 格式的日志时，此最低级别才适用。要启用 JSON 格式日志，请将[日志记录格式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)参数 (`logging.format`) 指定为 `JSON`。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-system-disk-space-limit"></a>
（可选）Greengrass 系统日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。在 Greengrass 系统日志文件的总大小超过此最大总大小后，核心软件会删除最旧的 Greengrass 系统日志文件。 AWS IoT Greengrass   
此参数等同于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`)。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为最大总 Greengrass 系统日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
  `componentLogsConfigurationMap`   
（可选）核心设备上组件的日志配置映射。此映射中的每个 `componentName` 对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到日 CloudWatch 志。  
我们强烈建议每个组件使用一个配置密钥。使用 `logFileRegex` 时，您应该只将一组只有一个正在被写入的日志文件的文件组为目标。不遵循此建议可能会导致重复的日志上传到 CloudWatch。如果您使用单个正则表达式以多个活动日志文件为目标，我们建议您升级到日志管理器 v2.3.1 或更高版本，并考虑使用[示例配置](#log-manager-multiple-logs-v2.3.10)更改您的配置。
如果要从 v2.2.0 之前的日志管理器版本升级，则可以继续使用 `componentLogsConfiguration` 列表，而不是 `componentLogsConfigurationMap`。但是，我们强烈建议您使用映射格式，以便可以使用合并和重置更新来修改特定组件的配置。有关 `componentLogsConfiguration` 参数的信息，请参阅此组件 v2.1.x 的配置参数。  
*`componentName`*  
*`componentName`* 组件的日志配置或此日志配置的应用程序。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。  
每个对象包含以下信息：    
`minimumLogLevel`  <a name="log-manager-component-configuration-component-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。仅当此组件的日志使用特定的 JSON 格式时，此最低级别才适用，您可以在[AWS IoT Greengrass 日志模块](https://github.com/aws-greengrass/aws-greengrass-logging-java)存储库中找到该格式 GitHub。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-component-disk-space-limit"></a>
（可选）此组件的所有日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。此组件日志文件的总大小超过此最大总大小后， AWS IoT Greengrass Core 软件将删除该组件最旧的日志文件。  
此参数与 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`) 有关。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为此组件的最大总日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`logFileDirectoryPath`  <a name="log-manager-component-configuration-component-log-file-dir-path"></a>
（可选）包含此组件日志文件的文件夹的路径。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
默认值：`/greengrass/v2/logs`。  
`logFileRegex`  <a name="log-manager-component-configuration-component-log-file-regex"></a>
（可选）用于指定组件或应用程序使用的日志文件名格式的正则表达式。日志管理器组件使用此正则表达式来识别位于 `logFileDirectoryPath` 的文件夹中的日志文件。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
如果您的组件或应用程序轮换日志文件，请指定与轮换的日志文件名相匹配的正则表达式。例如，您可以指定 **hello\$1world\$1\$1\$1\$1w\$1.log** 上传 Hello World 应用程序的日志。`\\\\w*` 模式匹配零个或多个单词字符，其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中，日志管理器将上传以下日志文件：  
+ `hello_world.log` – Hello World 应用程序的最新日志文件。
+ `hello_world_2020_12_15_17_0.log` – Hello World 应用程序的旧日志文件。
默认：`componentName\\\\w*.log`，其中*componentName*是此日志配置的组件名称。  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
`multiLineStartPattern`  <a name="log-manager-component-configuration-component-multi-line-start-pattern"></a>
（可选）用于标识新行上的日志消息属于新日志消息的正则表达式。如果正则表达式与新行不匹配，则日志管理器组件会将新行附加到上一行的日志消息。  
默认情况下，日志管理器组件会检查该行是否以空格字符（例如制表符或空格）开头。如果不是，则日志管理器会将该行作为新的日志消息处理。否则，它会将该行附加到当前日志消息。此行为可确保日志管理器组件不会拆分跨多行的消息，例如堆栈跟踪。

  `periodicUploadIntervalSec`   
（可选）日志管理器组件检查要上传的新日志文件的周期（以秒为单位）。  
默认值：`300`（5 分钟）  
最小值：`0.000001`（1 微秒）

`updateToTlogIntervalSec`  
（可选）Nucleus 将 Amazon CloudWatch Events 日志上传事件详细信息写入本地事务日志（`config.tlog`）的周期（以秒为单位）。默认为 `periodicUploadIntervalSec` 中指定的值。可修改此参数以增加写入间隔。  
默认值：`periodicUploadIntervalSec`  
最低：`periodicUploadIntervalSec`

`deprecatedVersionSupport`  
指示日志管理器是否应使用日志管理器 v2.3.5 中引入的日志记录速度改进。将值设置为 `false` 以使用改进。  
如果从日志管理器 v2.3.1 或更早版本升级时将此值设置为 `false`，可能会上传重复的日志条目。  
默认值为 `true`。

**Example 示例：配置合并更新**  
以下示例配置指定将系统日志和`com.example.HelloWorld`组件日志上传到日 CloudWatch 志。  

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true",
      "minimumLogLevel": "INFO",
      "diskSpaceLimit": "10",
      "diskSpaceLimitUnit": "MB",
      "deleteLogFileAfterCloudUpload": "false"
    },
    "componentLogsConfigurationMap": {
      "com.example.HelloWorld": {
        "minimumLogLevel": "INFO",
        "diskSpaceLimit": "20",
        "diskSpaceLimitUnit": "MB",
        "deleteLogFileAfterCloudUpload": "false"
      }
    }
  },
  "periodicUploadIntervalSec": "300",
  "deprecatedVersionSupport": "false"
}
```

**Example 示例：使用日志管理器 v2.3.1 上传多个活动日志文件的配置**  
如果要以多个活动日志文件为目标，则推荐使用以下示例配置。此示例配置指定了您要上传到哪些活动日志文件 CloudWatch。使用此配置示例配置还将上传与 `logFileRegex` 匹配的所有轮换文件。日志管理器 v2.3.1 支持此示例配置。  

```
{
  "logsUploaderConfiguration": {
    "componentLogsConfigurationMap": {
      "com.example.A": {
        "logFileRegex": "com.example.A\\w*.log",
        "deleteLogFileAfterCloudUpload": "false"
      }
      "com.example.B": {
        "logFileRegex": "com.example.B\\w*.log",
        "deleteLogFileAfterCloudUpload": "false"
      }
    }
  },
  "periodicUploadIntervalSec": "10"
}
```

------
#### [ v2.3.6 – v2.3.9 ]

`logsUploaderConfiguration`  
（可选）日志管理器组件上传的日志的配置。该对象包含以下信息：    
  `systemLogsConfiguration`   
[（可选） AWS IoT Greengrass 核心软件系统日志的配置，其中包括来自 [Greengrass](greengrass-nucleus-component.md) 核心的日志和插件组件。](develop-greengrass-components.md#component-types)指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息：    
`uploadToCloudWatch`  <a name="log-manager-component-configuration-system-upload-to-cloud-watch"></a>
（可选）您可以将系统日志上传到 CloudWatch 日志。  
默认值：`false`  
`minimumLogLevel`  <a name="log-manager-component-configuration-system-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。只有将 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)配置为输出 JSON 格式的日志时，此最低级别才适用。要启用 JSON 格式日志，请将[日志记录格式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)参数 (`logging.format`) 指定为 `JSON`。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-system-disk-space-limit"></a>
（可选）Greengrass 系统日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。在 Greengrass 系统日志文件的总大小超过此最大总大小后，核心软件会删除最旧的 Greengrass 系统日志文件。 AWS IoT Greengrass   
此参数等同于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`)。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为最大总 Greengrass 系统日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
  `componentLogsConfigurationMap`   
（可选）核心设备上组件的日志配置映射。此映射中的每个 `componentName` 对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到日 CloudWatch 志。  
我们强烈建议每个组件使用一个配置密钥。使用 `logFileRegex` 时，您应该只将一组只有一个正在被写入的日志文件的文件组为目标。不遵循此建议可能会导致重复的日志上传到 CloudWatch。如果您使用单个正则表达式以多个活动日志文件为目标，我们建议您升级到日志管理器 v2.3.1 或更高版本，并考虑使用[示例配置](#log-manager-multiple-logs-v2.3.1)更改您的配置。
如果要从 v2.2.0 之前的日志管理器版本升级，则可以继续使用 `componentLogsConfiguration` 列表，而不是 `componentLogsConfigurationMap`。但是，我们强烈建议您使用映射格式，以便可以使用合并和重置更新来修改特定组件的配置。有关 `componentLogsConfiguration` 参数的信息，请参阅此组件 v2.1.x 的配置参数。  
*`componentName`*  
*`componentName`* 组件的日志配置或此日志配置的应用程序。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。  
每个对象包含以下信息：    
`minimumLogLevel`  <a name="log-manager-component-configuration-component-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。仅当此组件的日志使用特定的 JSON 格式时，此最低级别才适用，您可以在[AWS IoT Greengrass 日志模块](https://github.com/aws-greengrass/aws-greengrass-logging-java)存储库中找到该格式 GitHub。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-component-disk-space-limit"></a>
（可选）此组件的所有日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。此组件日志文件的总大小超过此最大总大小后， AWS IoT Greengrass Core 软件将删除该组件最旧的日志文件。  
此参数与 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`) 有关。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为此组件的最大总日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`logFileDirectoryPath`  <a name="log-manager-component-configuration-component-log-file-dir-path"></a>
（可选）包含此组件日志文件的文件夹的路径。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
默认值：`/greengrass/v2/logs`。  
`logFileRegex`  <a name="log-manager-component-configuration-component-log-file-regex"></a>
（可选）用于指定组件或应用程序使用的日志文件名格式的正则表达式。日志管理器组件使用此正则表达式来识别位于 `logFileDirectoryPath` 的文件夹中的日志文件。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
如果您的组件或应用程序轮换日志文件，请指定与轮换的日志文件名相匹配的正则表达式。例如，您可以指定 **hello\$1world\$1\$1\$1\$1w\$1.log** 上传 Hello World 应用程序的日志。`\\\\w*` 模式匹配零个或多个单词字符，其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中，日志管理器将上传以下日志文件：  
+ `hello_world.log` – Hello World 应用程序的最新日志文件。
+ `hello_world_2020_12_15_17_0.log` – Hello World 应用程序的旧日志文件。
默认：`componentName\\\\w*.log`，其中*componentName*是此日志配置的组件名称。  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
`multiLineStartPattern`  <a name="log-manager-component-configuration-component-multi-line-start-pattern"></a>
（可选）用于标识新行上的日志消息属于新日志消息的正则表达式。如果正则表达式与新行不匹配，则日志管理器组件会将新行附加到上一行的日志消息。  
默认情况下，日志管理器组件会检查该行是否以空格字符（例如制表符或空格）开头。如果不是，则日志管理器会将该行作为新的日志消息处理。否则，它会将该行附加到当前日志消息。此行为可确保日志管理器组件不会拆分跨多行的消息，例如堆栈跟踪。

  `periodicUploadIntervalSec`   
（可选）日志管理器组件检查要上传的新日志文件的周期（以秒为单位）。  
默认值：`300`（5 分钟）  
最小值：`0.000001`（1 微秒）

`deprecatedVersionSupport`  
指示日志管理器是否应使用日志管理器 v2.3.5 中引入的日志记录速度改进。将值设置为 `false` 以使用改进。  
如果从日志管理器 v2.3.1 或更早版本升级时将此值设置为 `false`，可能会上传重复的日志条目。  
默认值为 `true`。

**Example 示例：配置合并更新**  
以下示例配置指定将系统日志和`com.example.HelloWorld`组件日志上传到日 CloudWatch 志。  

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true",
      "minimumLogLevel": "INFO",
      "diskSpaceLimit": "10",
      "diskSpaceLimitUnit": "MB",
      "deleteLogFileAfterCloudUpload": "false"
    },
    "componentLogsConfigurationMap": {
      "com.example.HelloWorld": {
        "minimumLogLevel": "INFO",
        "diskSpaceLimit": "20",
        "diskSpaceLimitUnit": "MB",
        "deleteLogFileAfterCloudUpload": "false"
      }
    }
  },
  "periodicUploadIntervalSec": "300",
  "deprecatedVersionSupport": "false"
}
```

**Example 示例：使用日志管理器 v2.3.1 上传多个活动日志文件的配置**  
如果要以多个活动日志文件为目标，则推荐使用以下示例配置。此示例配置指定了您要上传到哪些活动日志文件 CloudWatch。使用此配置示例配置还将上传与 `logFileRegex` 匹配的所有轮换文件。日志管理器 v2.3.1 支持此示例配置。  

```
{
  "logsUploaderConfiguration": {
    "componentLogsConfigurationMap": {
      "com.example.A": {
        "logFileRegex": "com.example.A\\w*.log",
        "deleteLogFileAfterCloudUpload": "false"
      }
      "com.example.B": {
        "logFileRegex": "com.example.B\\w*.log",
        "deleteLogFileAfterCloudUpload": "false"
      }
    }
  },
  "periodicUploadIntervalSec": "10"
}
```

------
#### [ v2.3.0 – 2.3.5 ]

`logsUploaderConfiguration`  
（可选）日志管理器组件上传的日志的配置。该对象包含以下信息：    
  `systemLogsConfiguration`   
[（可选） AWS IoT Greengrass 核心软件系统日志的配置，其中包括来自 [Greengrass](greengrass-nucleus-component.md) 核心的日志和插件组件。](develop-greengrass-components.md#component-types)指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息：    
`uploadToCloudWatch`  <a name="log-manager-component-configuration-system-upload-to-cloud-watch"></a>
（可选）您可以将系统日志上传到 CloudWatch 日志。  
默认值：`false`  
`minimumLogLevel`  <a name="log-manager-component-configuration-system-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。只有将 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)配置为输出 JSON 格式的日志时，此最低级别才适用。要启用 JSON 格式日志，请将[日志记录格式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)参数 (`logging.format`) 指定为 `JSON`。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-system-disk-space-limit"></a>
（可选）Greengrass 系统日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。在 Greengrass 系统日志文件的总大小超过此最大总大小后，核心软件会删除最旧的 Greengrass 系统日志文件。 AWS IoT Greengrass   
此参数等同于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`)。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为最大总 Greengrass 系统日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
  `componentLogsConfigurationMap`   
（可选）核心设备上组件的日志配置映射。此映射中的每个 `componentName` 对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到日 CloudWatch 志。  
我们强烈建议每个组件使用一个配置密钥。使用 `logFileRegex` 时，您应该只将一组只有一个正在被写入的日志文件的文件组为目标。不遵循此建议可能会导致重复的日志上传到 CloudWatch。如果您使用单个正则表达式以多个活动日志文件为目标，我们建议您升级到日志管理器 v2.3.1，并考虑使用[示例配置](#log-manager-multiple-logs-v2.3.1)更改您的配置。
如果要从 v2.2.0 之前的日志管理器版本升级，则可以继续使用 `componentLogsConfiguration` 列表，而不是 `componentLogsConfigurationMap`。但是，我们强烈建议您使用映射格式，以便可以使用合并和重置更新来修改特定组件的配置。有关 `componentLogsConfiguration` 参数的信息，请参阅此组件 v2.1.x 的配置参数。  
*`componentName`*  
*`componentName`* 组件的日志配置或此日志配置的应用程序。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。  
每个对象包含以下信息：    
`minimumLogLevel`  <a name="log-manager-component-configuration-component-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。仅当此组件的日志使用特定的 JSON 格式时，此最低级别才适用，您可以在[AWS IoT Greengrass 日志模块](https://github.com/aws-greengrass/aws-greengrass-logging-java)存储库中找到该格式 GitHub。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-component-disk-space-limit"></a>
（可选）此组件的所有日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。此组件日志文件的总大小超过此最大总大小后， AWS IoT Greengrass Core 软件将删除该组件最旧的日志文件。  
此参数与 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`) 有关。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为此组件的最大总日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`logFileDirectoryPath`  <a name="log-manager-component-configuration-component-log-file-dir-path"></a>
（可选）包含此组件日志文件的文件夹的路径。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
默认值：`/greengrass/v2/logs`。  
`logFileRegex`  <a name="log-manager-component-configuration-component-log-file-regex"></a>
（可选）用于指定组件或应用程序使用的日志文件名格式的正则表达式。日志管理器组件使用此正则表达式来识别位于 `logFileDirectoryPath` 的文件夹中的日志文件。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
如果您的组件或应用程序轮换日志文件，请指定与轮换的日志文件名相匹配的正则表达式。例如，您可以指定 **hello\$1world\$1\$1\$1\$1w\$1.log** 上传 Hello World 应用程序的日志。`\\\\w*` 模式匹配零个或多个单词字符，其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中，日志管理器将上传以下日志文件：  
+ `hello_world.log` – Hello World 应用程序的最新日志文件。
+ `hello_world_2020_12_15_17_0.log` – Hello World 应用程序的旧日志文件。
默认：`componentName\\\\w*.log`，其中*componentName*是此日志配置的组件名称。  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
`multiLineStartPattern`  <a name="log-manager-component-configuration-component-multi-line-start-pattern"></a>
（可选）用于标识新行上的日志消息属于新日志消息的正则表达式。如果正则表达式与新行不匹配，则日志管理器组件会将新行附加到上一行的日志消息。  
默认情况下，日志管理器组件会检查该行是否以空格字符（例如制表符或空格）开头。如果不是，则日志管理器会将该行作为新的日志消息处理。否则，它会将该行附加到当前日志消息。此行为可确保日志管理器组件不会拆分跨多行的消息，例如堆栈跟踪。

  `periodicUploadIntervalSec`   
（可选）日志管理器组件检查要上传的新日志文件的周期（以秒为单位）。  
默认值：`300`（5 分钟）  
最小值：`0.000001`（1 微秒）

**Example 示例：配置合并更新**  
以下示例配置指定将系统日志和`com.example.HelloWorld`组件日志上传到日 CloudWatch 志。  

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true",
      "minimumLogLevel": "INFO",
      "diskSpaceLimit": "10",
      "diskSpaceLimitUnit": "MB",
      "deleteLogFileAfterCloudUpload": "false"
    },
    "componentLogsConfigurationMap": {
      "com.example.HelloWorld": {
        "minimumLogLevel": "INFO",
        "diskSpaceLimit": "20",
        "diskSpaceLimitUnit": "MB",
        "deleteLogFileAfterCloudUpload": "false"
      }
    }
  },
  "periodicUploadIntervalSec": "300"
}
```

**Example 示例：使用日志管理器 v2.3.1 上传多个活动日志文件的配置**  
如果要以多个活动日志文件为目标，则推荐使用以下示例配置。此示例配置指定了您要上传到哪些活动日志文件 CloudWatch。使用此配置示例配置还将上传与 `logFileRegex` 匹配的所有轮换文件。日志管理器 v2.3.1 支持此示例配置。  

```
{
  "logsUploaderConfiguration": {
    "componentLogsConfigurationMap": {
      "com.example.A": {
        "logFileRegex": "com.example.A\\w*.log",
        "deleteLogFileAfterCloudUpload": "false"
      }
      "com.example.B": {
        "logFileRegex": "com.example.B\\w*.log",
        "deleteLogFileAfterCloudUpload": "false"
      }
    }
  },
  "periodicUploadIntervalSec": "10"
}
```

------
#### [ v2.2.x ]

`logsUploaderConfiguration`  
（可选）日志管理器组件上传的日志的配置。该对象包含以下信息：    
  `systemLogsConfiguration`   
[（可选） AWS IoT Greengrass 核心软件系统日志的配置，其中包括来自 [Greengrass](greengrass-nucleus-component.md) 核心的日志和插件组件。](develop-greengrass-components.md#component-types)指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息：    
`uploadToCloudWatch`  <a name="log-manager-component-configuration-system-upload-to-cloud-watch"></a>
（可选）您可以将系统日志上传到 CloudWatch 日志。  
默认值：`false`  
`minimumLogLevel`  <a name="log-manager-component-configuration-system-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。只有将 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)配置为输出 JSON 格式的日志时，此最低级别才适用。要启用 JSON 格式日志，请将[日志记录格式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)参数 (`logging.format`) 指定为 `JSON`。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-system-disk-space-limit"></a>
（可选）Greengrass 系统日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。在 Greengrass 系统日志文件的总大小超过此最大总大小后，核心软件会删除最旧的 Greengrass 系统日志文件。 AWS IoT Greengrass   
此参数等同于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`)。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为最大总 Greengrass 系统日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
  `componentLogsConfigurationMap`   
（可选）核心设备上组件的日志配置映射。此映射中的每个 `componentName` 对象都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到日 CloudWatch 志。  
如果要从 v2.2.0 之前的日志管理器版本升级，则可以继续使用 `componentLogsConfiguration` 列表，而不是 `componentLogsConfigurationMap`。但是，我们强烈建议您使用映射格式，以便可以使用合并和重置更新来修改特定组件的配置。有关 `componentLogsConfiguration` 参数的信息，请参阅此组件 v2.1.x 的配置参数。  
*`componentName`*  
*`componentName`* 组件的日志配置或此日志配置的应用程序。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。  
每个对象包含以下信息：    
`minimumLogLevel`  <a name="log-manager-component-configuration-component-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。仅当此组件的日志使用特定的 JSON 格式时，此最低级别才适用，您可以在[AWS IoT Greengrass 日志模块](https://github.com/aws-greengrass/aws-greengrass-logging-java)存储库中找到该格式 GitHub。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-component-disk-space-limit"></a>
（可选）此组件的所有日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。此组件日志文件的总大小超过此最大总大小后， AWS IoT Greengrass Core 软件将删除该组件最旧的日志文件。  
此参数与 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`) 有关。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为此组件的最大总日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`logFileDirectoryPath`  <a name="log-manager-component-configuration-component-log-file-dir-path"></a>
（可选）包含此组件日志文件的文件夹的路径。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
默认值：`/greengrass/v2/logs`。  
`logFileRegex`  <a name="log-manager-component-configuration-component-log-file-regex"></a>
（可选）用于指定组件或应用程序使用的日志文件名格式的正则表达式。日志管理器组件使用此正则表达式来识别位于 `logFileDirectoryPath` 的文件夹中的日志文件。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
如果您的组件或应用程序轮换日志文件，请指定与轮换的日志文件名相匹配的正则表达式。例如，您可以指定 **hello\$1world\$1\$1\$1\$1w\$1.log** 上传 Hello World 应用程序的日志。`\\\\w*` 模式匹配零个或多个单词字符，其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中，日志管理器将上传以下日志文件：  
+ `hello_world.log` – Hello World 应用程序的最新日志文件。
+ `hello_world_2020_12_15_17_0.log` – Hello World 应用程序的旧日志文件。
默认：`componentName\\\\w*.log`，其中*componentName*是此日志配置的组件名称。  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
`multiLineStartPattern`  <a name="log-manager-component-configuration-component-multi-line-start-pattern"></a>
（可选）用于标识新行上的日志消息属于新日志消息的正则表达式。如果正则表达式与新行不匹配，则日志管理器组件会将新行附加到上一行的日志消息。  
默认情况下，日志管理器组件会检查该行是否以空格字符（例如制表符或空格）开头。如果不是，则日志管理器会将该行作为新的日志消息处理。否则，它会将该行附加到当前日志消息。此行为可确保日志管理器组件不会拆分跨多行的消息，例如堆栈跟踪。

  `periodicUploadIntervalSec`   
（可选）日志管理器组件检查要上传的新日志文件的周期（以秒为单位）。  
默认值：`300`（5 分钟）  
最小值：`0.000001`（1 微秒）

**Example 示例：配置合并更新**  
以下示例配置指定将系统日志和`com.example.HelloWorld`组件日志上传到日 CloudWatch 志。  

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true",
      "minimumLogLevel": "INFO",
      "diskSpaceLimit": "10",
      "diskSpaceLimitUnit": "MB",
      "deleteLogFileAfterCloudUpload": "false"
    },
    "componentLogsConfigurationMap": {
      "com.example.HelloWorld": {
        "minimumLogLevel": "INFO",
        "diskSpaceLimit": "20",
        "diskSpaceLimitUnit": "MB",
        "deleteLogFileAfterCloudUpload": "false"
      }
    }
  },
  "periodicUploadIntervalSec": "300"
}
```

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

`logsUploaderConfiguration`  
（可选）日志管理器组件上传的日志的配置。该对象包含以下信息：    
 `systemLogsConfiguration`   
[（可选） AWS IoT Greengrass 核心软件系统日志的配置，其中包括来自 [Greengrass](greengrass-nucleus-component.md) 核心的日志和插件组件。](develop-greengrass-components.md#component-types)指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息：    
`uploadToCloudWatch`  <a name="log-manager-component-configuration-system-upload-to-cloud-watch"></a>
（可选）您可以将系统日志上传到 CloudWatch 日志。  
默认值：`false`  
`minimumLogLevel`  <a name="log-manager-component-configuration-system-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。只有将 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)配置为输出 JSON 格式的日志时，此最低级别才适用。要启用 JSON 格式日志，请将[日志记录格式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)参数 (`logging.format`) 指定为 `JSON`。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-system-disk-space-limit"></a>
（可选）Greengrass 系统日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。在 Greengrass 系统日志文件的总大小超过此最大总大小后，核心软件会删除最旧的 Greengrass 系统日志文件。 AWS IoT Greengrass   
此参数等同于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`)。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为最大总 Greengrass 系统日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
  `componentLogsConfiguration`   
（可选）核心设备上组件的日志配置列表。此列表中的每个配置都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch Logs  
每个对象包含以下信息：    
`componentName`  <a name="log-manager-component-configuration-component-component-name"></a>
此日志配置的组件或应用程序的名称。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。  
`minimumLogLevel`  <a name="log-manager-component-configuration-component-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。仅当此组件的日志使用特定的 JSON 格式时，此最低级别才适用，您可以在[AWS IoT Greengrass 日志模块](https://github.com/aws-greengrass/aws-greengrass-logging-java)存储库中找到该格式 GitHub。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-component-disk-space-limit"></a>
（可选）此组件的所有日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。此组件日志文件的总大小超过此最大总大小后， AWS IoT Greengrass Core 软件将删除该组件最旧的日志文件。  
此参数与 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`) 有关。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为此组件的最大总日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`logFileDirectoryPath`  <a name="log-manager-component-configuration-component-log-file-dir-path"></a>
（可选）包含此组件日志文件的文件夹的路径。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
默认值：`/greengrass/v2/logs`。  
`logFileRegex`  <a name="log-manager-component-configuration-component-log-file-regex"></a>
（可选）用于指定组件或应用程序使用的日志文件名格式的正则表达式。日志管理器组件使用此正则表达式来识别位于 `logFileDirectoryPath` 的文件夹中的日志文件。  
对于打印到标准输出（stdout）和标准错误（stderr）的 Greengrass 组件，无需指定此参数。  
如果您的组件或应用程序轮换日志文件，请指定与轮换的日志文件名相匹配的正则表达式。例如，您可以指定 **hello\$1world\$1\$1\$1\$1w\$1.log** 上传 Hello World 应用程序的日志。`\\\\w*` 模式匹配零个或多个单词字符，其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中，日志管理器将上传以下日志文件：  
+ `hello_world.log` – Hello World 应用程序的最新日志文件。
+ `hello_world_2020_12_15_17_0.log` – Hello World 应用程序的旧日志文件。
默认：`componentName\\\\w*.log`，其中*componentName*是此日志配置的组件名称。  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
`multiLineStartPattern`  <a name="log-manager-component-configuration-component-multi-line-start-pattern"></a>
（可选）用于标识新行上的日志消息属于新日志消息的正则表达式。如果正则表达式与新行不匹配，则日志管理器组件会将新行附加到上一行的日志消息。  
默认情况下，日志管理器组件会检查该行是否以空格字符（例如制表符或空格）开头。如果不是，则日志管理器会将该行作为新的日志消息处理。否则，它会将该行附加到当前日志消息。此行为可确保日志管理器组件不会拆分跨多行的消息，例如堆栈跟踪。

 `periodicUploadIntervalSec`   
（可选）日志管理器组件检查要上传的新日志文件的周期（以秒为单位）。  
默认值：`300`（5 分钟）  
最小值：`0.000001`（1 微秒）

**Example 示例：配置合并更新**  
以下示例配置指定将系统日志和`com.example.HelloWorld`组件日志上传到日 CloudWatch 志。  

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true",
      "minimumLogLevel": "INFO",
      "diskSpaceLimit": "10",
      "diskSpaceLimitUnit": "MB",
      "deleteLogFileAfterCloudUpload": "false"
    },
    "componentLogsConfiguration": [
      {
        "componentName": "com.example.HelloWorld",
        "minimumLogLevel": "INFO",
        "diskSpaceLimit": "20",
        "diskSpaceLimitUnit": "MB",
        "deleteLogFileAfterCloudUpload": "false"
      }
    ]
  },
  "periodicUploadIntervalSec": "300"
}
```

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

`logsUploaderConfiguration`  
（可选）日志管理器组件上传的日志的配置。该对象包含以下信息：    
`systemLogsConfiguration`  
（可选） AWS IoT Greengrass Core 软件系统日志的配置。指定此配置以允许日志管理器组件管理系统日志。该对象包含以下信息：    
`uploadToCloudWatch`  <a name="log-manager-component-configuration-system-upload-to-cloud-watch"></a>
（可选）您可以将系统日志上传到 CloudWatch 日志。  
默认值：`false`  
`minimumLogLevel`  <a name="log-manager-component-configuration-system-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。只有将 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)配置为输出 JSON 格式的日志时，此最低级别才适用。要启用 JSON 格式日志，请将[日志记录格式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)参数 (`logging.format`) 指定为 `JSON`。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-system-disk-space-limit"></a>
（可选）Greengrass 系统日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。在 Greengrass 系统日志文件的总大小超过此最大总大小后，核心软件会删除最旧的 Greengrass 系统日志文件。 AWS IoT Greengrass   
此参数等同于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`)。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为最大总 Greengrass 系统日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
`componentLogsConfiguration`  
（可选）核心设备上组件的日志配置列表。此列表中的每个配置都定义了组件或应用程序的日志配置。日志管理器组件将这些组件日志上传到 CloudWatch Logs  
每个对象包含以下信息：    
`componentName`  <a name="log-manager-component-configuration-component-component-name"></a>
此日志配置的组件或应用程序的名称。您可以指定 Greengrass 组件的名称或其他值来标识此日志组。  
`minimumLogLevel`  <a name="log-manager-component-configuration-component-minimum-log-level"></a>
（可选）要上传的日志消息的最低级别。仅当此组件的日志使用特定的 JSON 格式时，此最低级别才适用，您可以在[AWS IoT Greengrass 日志模块](https://github.com/aws-greengrass/aws-greengrass-logging-java)存储库中找到该格式 GitHub。  
从以下日志级别中选择，此处按级别顺序列出：  <a name="nucleus-log-levels"></a>
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`  
`diskSpaceLimit`  <a name="log-manager-component-configuration-component-disk-space-limit"></a>
（可选）此组件的所有日志文件的最大总大小，以您在 `diskSpaceLimitUnit` 中指定的单位为单位。此组件日志文件的总大小超过此最大总大小后， AWS IoT Greengrass Core 软件将删除该组件最旧的日志文件。  
此参数与 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的[日志大小限制](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-system-logs-limit)参数 (`totalLogsSizeKB`) 有关。 AWS IoT Greengrass Core 软件使用两个值中的最小值作为此组件的最大总日志大小。  
`diskSpaceLimitUnit`  <a name="log-manager-component-configuration-disk-space-limit-unit"></a>
（可选）`diskSpaceLimit` 的单位。从以下选项中进行选择：  
+ `KB` – 千字节
+ `MB` – 兆字节
+ `GB` – 千兆字节
默认值：`KB`  
`logFileDirectoryPath`  
包含此组件日志文件的文件夹的路径。  
要上传 Greengrass 组件的日志，请指定 **`/greengrass/v2`/logs**，并将 `/greengrass/v2` 替换为您的 Greengrass 根文件夹。  
`logFileRegex`  
用于指定组件或应用程序使用的日志文件名格式的正则表达式。日志管理器组件使用此正则表达式来识别位于 `logFileDirectoryPath` 的文件夹中的日志文件。  
要上传 Greengrass 组件的日志，请指定与轮换的日志文件名相匹配的正则表达式。例如，您可以指定 **com.example.HelloWorld\$1\$1w\$1.log** 上传 Hello World 组件的日志。`\\w*` 模式匹配零个或多个单词字符，其中包括字母数字字符和下划线。此正则表达式匹配名称中带有时间戳和不带时间戳的日志文件。在此示例中，日志管理器将上传以下日志文件：  
+ `com.example.HelloWorld.log` – Hello World 组件的最新日志文件。
+ `com.example.HelloWorld_2020_12_15_17_0.log` – Hello World 组件的旧日志文件。Greengrass Nucleus 向日志文件中添加轮换时间戳。  
`deleteLogFileAfterCloudUpload`  <a name="log-manager-component-configuration-delete-log-file-after-cloud-upload"></a>
（可选）在日志管理器组件将日志上传到 CloudWatch 日志后，您可以删除日志文件。  
默认值：`false`  
`multiLineStartPattern`  <a name="log-manager-component-configuration-component-multi-line-start-pattern"></a>
（可选）用于标识新行上的日志消息属于新日志消息的正则表达式。如果正则表达式与新行不匹配，则日志管理器组件会将新行附加到上一行的日志消息。  
默认情况下，日志管理器组件会检查该行是否以空格字符（例如制表符或空格）开头。如果不是，则日志管理器会将该行作为新的日志消息处理。否则，它会将该行附加到当前日志消息。此行为可确保日志管理器组件不会拆分跨多行的消息，例如堆栈跟踪。

`periodicUploadIntervalSec`  
（可选）日志管理器组件检查要上传的新日志文件的周期（以秒为单位）。  
默认值：`300`（5 分钟）  
最小值：`0.000001`（1 微秒）

**Example 示例：配置合并更新**  
以下示例配置指定将系统日志和`com.example.HelloWorld`组件日志上传到日 CloudWatch 志。  

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true",
      "minimumLogLevel": "INFO",
      "diskSpaceLimit": "10",
      "diskSpaceLimitUnit": "MB",
      "deleteLogFileAfterCloudUpload": "false"
    },
    "componentLogsConfiguration": [
      {
        "componentName": "com.example.HelloWorld",
        "minimumLogLevel": "INFO",
        "logFileDirectoryPath": "/greengrass/v2/logs",
        "logFileRegex": "com.example.HelloWorld\\w*.log",
        "diskSpaceLimit": "20",
        "diskSpaceLimitUnit": "MB",
        "deleteLogFileAfterCloudUpload": "false"
      }
    ]
  },
  "periodicUploadIntervalSec": "300"
}
```

------

## 用法
<a name="log-manager-component-usage"></a>

日志管理器组件将上传到以下日志组和日志流中。

------
#### [ 2.1.0 and later ]<a name="log-manager-log-group-stream-format"></a>

**日志组名称**  

```
/aws/greengrass/componentType/region/componentName
```
日志组名称使用以下变量：  
+ `componentType` – 组件的类型，可以为以下类型之一：
  + `GreengrassSystemComponent` – 此日志组包括针对内核和插件组件的日志，它们与 Greengrass Nucleus 在同一 JVM 中运行。组件是 [Greengrass Nucleus](greengrass-nucleus-component.md) 的一部分。
  + `UserComponent` – 此日志组包括针对设备上通用组件、Lambda 组件和其他应用程序的日志。组件不是 Greengrass Nucleus 的一部分。

  有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。
+ `region`— 核心设备使用的 AWS 区域。
+ `componentName` – 组件名称。对于系统日志，此值为 `System`。

**日志流名称**  

```
/date/thing/thingName
```
日志流名称使用以下变量：  
+ `date` – 日志的日期，例如 `2020/12/15`。日志管理器组件使用 `yyyy/MM/dd` 格式。
+ `thingName` – 核心设备名称。
如果事物名称包含冒号 (`:`)，则日志管理器会将冒号替换为加号 (`+`)。

------
#### [ 2.0.x ]

**日志组名称**  

```
/aws/greengrass/componentType/region/componentName
```
日志组名称使用以下变量：  
+ `componentType` – 组件的类型，可以为以下类型之一：
  + `GreengrassSystemComponent` – 组件是 [Greengrass Nucleus](greengrass-nucleus-component.md) 的一部分。
  + `UserComponent` – 组件不是 Greengrass Nucleus 的一部分。日志管理器将这种类型用于设备上的 Greengrass 组件和其他应用程序。
+ `region`— 核心设备使用的 AWS 区域。
+ `componentName` – 组件名称。对于系统日志，此值为 `System`。

**日志流名称**  

```
/date/deploymentTargets/thingName
```
日志流名称使用以下变量：  
+ `date` – 日志的日期，例如 `2020/12/15`。日志管理器组件使用 `yyyy/MM/dd` 格式。
+ `deploymentTargets` – 部署内容包含组件的事物。日志管理器组件用斜杠分隔每个目标。如果在本地部署后组件在核心设备上运行，则此值为 `LOCAL_DEPLOYMENT`。

  考虑一个示例，有一个名为 `MyGreengrassCore` 的核心设备，且该核心设备有两个部署：
  + 一个以核心设备 `MyGreengrassCore` 为目标的部署。
  + 一个以名为 `MyGreengrassCoreGroup` 的事物组（其中包含核心设备）为目标的部署。

  此核心设备的 `deploymentTargets` 是 `thing/MyGreengrassCore/thinggroup/MyGreengrassCoreGroup`。
+ `thingName` – 核心设备名称。

------

### 日志条目的格式。
<a name="log-manager-entry-format"></a>

Greengrass Nucleus 以字符串或 JSON 格式写入日志文件。对于系统日志，您可以通过设置 `logging` 条目的 `format` 字段来控制格式。您可以在 Greengrass Nucleus 组件的配置文件中找到 `logging` 条目。有关更多信息，请参阅 [Greengrass Nucleus 配置](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html#greengrass-nucleus-component-configuration)。

文本格式为自由格式，接受任何字符串。以下实例集状态服务消息是字符串格式日志记录的示例：

```
2023-03-26T18:18:27.271Z [INFO] (pool-1-thread-2)
com.aws.greengrass.status.FleetStatusService: fss-status-update-published. 
Status update published to FSS. {trigger=CADENCE, serviceName=FleetStatusService, 
currentState=RUNNING}
```

如果要使用 [Greengrass CLI 日志](https://docs.aws.amazon.com/greengrass/v2/developerguide/gg-cli-logs.html)命令查看日志或以编程方式与日志交互，则应使用 JSON 格式。以下示例概述了 JSON 形状：

```
{
   "loggerName": <string>,
   "level": <"DEBUG" | "INFO" | "ERROR" | "TRACE" | "WARN">,
   "eventType": <string, optional>,
   "cause": <string, optional>,
   "contexts": {},
   "thread": <string>,
   "message": <string>,
   "timestamp": <epoch time> # Needs to be epoch time
}
```

要控制组件日志的输出，可以使用 `minimumLogLevel` 配置选项。要使用此选项，您的组件必须以 JSON 格式写入其日志条目。您应使用与系统日志文件相同的格式。

## 本地日志文件
<a name="log-manager-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="log-manager-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.3.11  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.3.10  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.3.9  |  Greengrass nucleus 版本 2.14.0 版本的版本已更新。  | 
|  2.3.8  |  对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。  | 
|  2.3.7  |  版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。  | 
|  2.3.6  |  <a name="changelog-log-manager-2.3.6"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.3.5  |  <a name="changelog-log-manager-2.3.5"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html) 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.3.4  |  <a name="changelog-log-manager-2.3.4"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.3.3  |  版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。  | 
|  2.3.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.3.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.3.0  |   当您升级到日志管理器 2.3.0 时，我们建议您升级到 Greengrass Nucleus 2.9.1。   [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.2.8  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.2.7  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.2.6  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.2.5  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.2.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.2.1  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.1.1  |  <a name="changelog-log-manager-2.1.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.1.0  |  <a name="changelog-log-manager-2.1.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/log-manager-component.html)  | 
|  2.0.x  |  初始版本。  | 

# 机器学习组件
<a name="machine-learning-components"></a>

AWS IoT Greengrass 提供了以下机器学习组件，您可以将这些组件部署到支持的设备上，以便使用在 Amazon A SageMaker I 中训练的模型或存储在 Amazon S3 中的您自己的预训练模型来[执行机器学习推理](perform-machine-learning-inference.md)。<a name="ml-component-types"></a>

AWS 提供以下类别的机器学习组件：
+ **模型组件** – 包含作为 Greengrass 构件的机器学习模型。
+ **运行时组件** – 包含用于在 Greengrass 核心设备上安装机器学习框架及其依赖关系的脚本。
+ **推理组件** – 包含推理代码并包括组件依赖关系，用于安装机器学习框架和下载预训练的机器学习模型。

您可以使用 AWS提供的机器学习组件中的示例推理代码和预训练模型，使用 DLR 和 Lite 执行图像分类和目标检测。 TensorFlow 要使用存储在 Amazon S3 中的您自己的模型执行自定义机器学习推理，或者使用其他机器学习框架，您可以使用这些公有组件的配方作为模板来创建自定义机器学习组件。有关更多信息，请参阅 [自定义您的机器学习组件](ml-customization.md)。

AWS IoT Greengrass 还包括一个 AWS提供的组件，用于管理 Greengrass 核心设备上的 SageMaker AI Edge Manager 代理的安装和生命周期。借助 SageMaker AI Edge Manager，你可以直接在核心设备上使用 SageMaker Amazon AI Neo 编译的模型。有关更多信息，请参阅 [在 Greengrass 核心设备上使用亚马逊 SageMaker AI 边缘管理器](use-sagemaker-edge-manager.md)。

下表列出了中可用的机器学习组件 AWS IoT Greengrass。

**注意**  <a name="component-nucleus-dependency-update-note"></a>
 AWS提供的几个组件依赖于 Greengrass 核的特定次要版本。由于这种依赖关系，当您将 Greengrass Nucleus 更新到新的次要版本时，您需要更新这些组件。有关每个组件所依赖的特定内核版本的信息，请参阅相应的组件主题。有关更新 Nucleus 的更多信息，请参阅 [更新 AWS IoT Greengrass Core 软件（OTA）](update-greengrass-core-v2.md)。

<a name="component-table-type-description"></a>当组件同时具有通用和 Lambda 组件类型时，该组件的当前版本为通用类型，而该组件的之前版本为 Lambda 类型。


| 组件 | 描述 | [组件类型](develop-greengrass-components.md#component-types) | 支持的操作系统 | [开源](open-source.md) | 
| --- | --- | --- | --- | --- | 
| [SageMaker AI 边缘管理器](sagemaker-edge-manager-component.md) | 在 Greengrass 核心设备上部署 SageMaker Amazon AI Edge Manager 代理。 | 通用 | Linux、Windows | 否 | 
| [DLR 图像分类](dlr-image-classification-component.md) | 推理组件，使用 DLR 图像分类模型存储和 DLR 运行时组件作为依赖关系，在支持的设备上安装 DLR、下载示例图像分类模型和执行图像分类推理。 | 通用 | Linux、Windows | 否 | 
| [DLR 对象检测](dlr-object-detection-component.md) | 推理组件，使用 DLR 对象检测模型存储和 DLR 运行时组件作为依赖关系，在支持的设备上安装 DLR、下载示例对象检测模型和执行对象检测推理。 | 通用 | Linux、Windows | 否 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | 包含作为 Greengrass 伪影的样本 ResNet -50 图像分类模型的模型组件。 | 通用 | Linux、Windows | 否 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | 包含样本 YOLOv3 对象检测模型的模型组件，如 Greengrass 工件。 | 通用 | Linux、Windows | 否 | 
| [DLR 运行时](dlr-component.md) | 运行时组件，其中包含用于在 Greengrass 核心设备上安装 DLR 及其依赖关系的安装脚本。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版图像分类](tensorflow-lite-image-classification-component.md) | 推理组件，使用 TensorFlow Lite 图像分类模型存储和 TensorFlow Lite 运行时组件作为依赖项，用于在支持的设备上安装 TensorFlow Lite、下载样本图像分类模型和执行图像分类推理。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版物体检测](tensorflow-lite-object-detection-component.md) | 推理组件，使用 TensorFlow Lite 对象检测模型存储和 TensorFlow Lite 运行时组件作为依赖项，用于在支持的设备上安装 TensorFlow Lite、下载示例对象检测模型和执行对象检测推理。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | 包含作为 Greengrass 工件的示例 MobileNet v1 模型的模型组件。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版物体检测模型存储](tensorflow-lite-object-detection-model-store-component.md) | 模型组件，其中包含作为 Greengrass 工件的样本单枪检测 (SSD) MobileNet 模型。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版运行时](tensorflow-lite-component.md) | 包含用于安装 TensorFlow Lite 的安装脚本及其对 Greengrass 核心设备的依赖关系的运行时组件。 | 通用 | Linux、Windows | 否 | 

# SageMaker AI 边缘管理器
<a name="sagemaker-edge-manager-component"></a>

**重要**  
SageMaker AI 边缘管理器已于 2024 年 4 月 26 日停产。有关继续将模型部署到边缘设备的更多信息，请参阅 [SageMaker AI Edge Manager 生命周期终止](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-eol.html)。

Amazon A SageMaker I Edge Manager 组件 (`aws.greengrass.SageMakerEdgeManager`) 安装 SageMaker AI Edge Manager 代理二进制文件。

SageMaker AI Edge Manager 为边缘设备提供模型管理，因此您可以优化、保护、监控和维护边缘设备队列上的机器学习模型。 SageMaker AI Edge Manager 组件在您的核心设备上安装和管理 SageMaker AI Edge Manager 代理的生命周期。您还可以使用 SageMaker AI Edge Manager 在 Greengrass 核心设备上打包和使用 SageMaker AI Neo 编译的模型作为模型组件。有关在核心设备上使用 SageMaker AI Edge Manager 代理的更多信息，请参阅[在 Greengrass 核心设备上使用亚马逊 SageMaker AI 边缘管理器](use-sagemaker-edge-manager.md)。

SageMaker AI Edge Manager 组件 v1.3.x 安装边缘管理器代理二进制 v1.20220822.836f3023。有关 Edge Manager 代理二进制文件版本的更多信息，请参阅 [Edge Manager 代理](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-device-fleet-about)。

**注意**  
A SageMaker I 边缘管理器组件仅在以下版本中可用 AWS 区域：  
美国东部（俄亥俄州）
美国东部（弗吉尼亚州北部）
美国西部（俄勒冈州）
欧洲（法兰克福）
欧洲（爱尔兰）
亚太地区（东京）

**Topics**
+ [版本](#sagemaker-edge-manager-component-versions)
+ [Type](#sagemaker-edge-manager-component-type)
+ [操作系统](#sagemaker-edge-manager-component-os-support)
+ [要求](#sagemaker-edge-manager-component-requirements)
+ [依赖项](#sagemaker-edge-manager-component-dependencies)
+ [配置](#sagemaker-edge-manager-component-configuration)
+ [本地日志文件](#sagemaker-edge-manager-component-log-file)
+ [更改日志](#sagemaker-edge-manager-component-changelog)

## 版本
<a name="sagemaker-edge-manager-component-versions"></a>

此组件具有以下版本：
+ 1.3.x
+ 1.2.x
+ 1.1.x
+ 1.0.x

## Type
<a name="sagemaker-edge-manager-component-type"></a>

<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)。

## 操作系统
<a name="sagemaker-edge-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="sagemaker-edge-manager-component-requirements"></a>

此组件具有以下要求：<a name="sm-edge-manager-component-reqs"></a>
+ <a name="sm-req-core-device"></a>在 Amazon Linux 2、基于 Debian 的 Linux 平台（x86\$164 或 Armv8）或 Windows（x86\$164）上运行的 Greengrass 核心设备。如果没有，请参阅[教程：AWS IoT Greengrass V2 入门](getting-started.md)。
+ <a name="sm-req-python"></a>核心设备上已安装 [Python](https://www.python.org/downloads/) 3.6 或更高版本，包括适用于您的 Python 版本的 `pip`。
+ 已为 [Greengrass 设备角色](device-service-role.md)配置以下项：
  + <a name="sm-req-iam-trust-relationship"></a>允许 `credentials.iot.amazonaws.com` 和 `sagemaker.amazonaws.com` 担任该角色的信任关系，如以下 IAM 策略示例所示。

    ```
    { 
      "Version": "2012-10-17",		 	 	 
      "Statement": [ 
        { 
          "Effect": "Allow", 
          "Principal": {
            "Service": "credentials.iot.amazonaws.com"
           }, 
          "Action": "sts:AssumeRole" 
        },
        { 
          "Effect": "Allow", 
          "Principal": {
            "Service": "sagemaker.amazonaws.com"
          }, 
          "Action": "sts:AssumeRole" 
        } 
      ] 
    }
    ```
  + <a name="sm-req-iam-sagemanakeredgedevicefleetpolicy"></a>I [AmazonSageMakerEdgeDeviceFleetPolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonSageMakerEdgeDeviceFleetPolicy)AM 托管策略。
  + <a name="sm-req-iam-s3-putobject"></a>`s3:PutObject` 操作，如以下 IAM 策略示例所示。

    ```
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": [
            "s3:PutObject"
          ],
          "Resource": [
            "*"
          ],
          "Effect": "Allow"
        }
      ]
    }
    ```
+ <a name="sm-req-s3-bucket"></a>与您的 Greengrass 核心设备 AWS 区域 相同 AWS 账户 且创建的 Amazon S3 存储桶。 SageMaker AI Edge Manager 需要一个 S3 存储桶来创建边缘设备队列，并存储在设备上运行推理的示例数据。有关创建 S3 存储桶的更多信息，请参阅 [Amazon S3 入门](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)。
+ <a name="sm-req-edge-device-fleet"></a>使用与 Greengrass 核心设备相同的 AWS IoT 角色别名的 SageMaker AI 边缘设备舰队。有关更多信息，请参阅 [创建边缘设备实例集](get-started-with-edge-manager-on-greengrass.md#create-edge-device-fleet-for-greengrass)。
+ <a name="sm-req-edge-device"></a>您的 Greengrass 核心设备在 AI Edge 设备群中注册为边缘设备。 SageMaker 边缘设备名称必须与核心设备 AWS IoT 的事物名称相匹配。有关更多信息，请参阅 [注册 Greengrass 核心设备](get-started-with-edge-manager-on-greengrass.md#register-greengrass-core-device-in-sme)。

### 端点和端口
<a name="sagemaker-edge-manager-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 终端节点 | 端口 | 必需 | 描述 | 
| --- | --- | --- | --- | 
|  `edge.sagemaker.region.amazonaws.com`  | 443 | 是 |  检查设备注册状态并将指标发送给 SageMaker AI。  | 
|  `*.s3.amazonaws.com`  | 443 | 是 |  将捕获数据上传到您指定的 S3 存储桶。 您可以将 `*` 替换为将数据上传其中的每个存储桶的名称。  | 

## 依赖项
<a name="sagemaker-edge-manager-component-dependencies"></a>

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

------
#### [ 1.3.5 and 1.3.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.3.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.3.3 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.3.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.3.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.1.1 - 1.3.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.1.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.0.3 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.0.1 and 1.0.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------
#### [ 1.0.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0 | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=0.0.0 | 硬性 | 

------

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

## 配置
<a name="sagemaker-edge-manager-component-configuration"></a>

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

**注意**  
本节介绍了您在组件中设置的配置参数。有关相应的 SageMaker AI 边缘管理器配置的更多信息，请参阅 A *mazon A SageMaker I 开发者指南*中的[边缘管理器代理](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-device-fleet-about.html#edge-device-fleet-running-agent)。

`DeviceFleetName`  
包含你的 Greengrass 核心设备的 SageMaker AI Edge Manager 设备队列的名称。  
部署此组件时，必须在配置更新中指定此参数的值。

`BucketName`  
将捕获的推理数据上传其中的 S3 存储桶的名称。存储桶名称必须包含字符串 `sagemaker`。  
如果将 `CaptureDataDestination` 设置为 `Cloud`，或者将 `CaptureDataPeriodicUpload` 设置为 `true`，则在部署此组件时，必须在配置更新中为此参数指定一个值。  
捕获数据是一项 SageMaker AI 功能，用于将推理输入、推理结果和其他推理数据上传到 S3 存储桶或本地目录以供将来分析。有关在 SageMaker AI Edge Manager 中使用捕获数据的更多信息，请参阅 *Amazon A SageMaker I 开发者指南*中的[管理模型](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manage-model.html#edge-manage-model-capturedata)。

`CaptureDataBatchSize`  
（可选）代理处理的捕获数据请求批次的大小。该值必须小于您在 `CaptureDataBufferSize` 中指定的缓冲区大小。我们建议不要超过缓冲区大小的一半。  
缓冲区中的请求数量达到 `CaptureDataBatchSize` 数量时，或者达到 `CaptureDataPushPeriodSeconds` 时间间隔时（以先发生者为准），代理会处理请求批次。  
默认值：`10`

`CaptureDataBufferSize`  
（可选）缓冲区中存储的捕获数据请求的最大数量。  
默认值：`30`

`CaptureDataDestination`  
（可选）存储捕获的数据的目标位置。此参数可能具有以下值：  
+ `Cloud` – 将捕获的数据上传到您在 `BucketName` 中指定的 S3 存储桶。
+ `Disk` – 将捕获的数据写入组件的工作目录。
如果您指定 `Disk`，也可以将 `CaptureDataPeriodicUpload` 设置为 `true`，来选择定期将捕获的数据上传到您的 S3 存储桶。  
默认值：`Cloud`

`CaptureDataPeriodicUpload`  
（可选）指定是否定期上传捕获的数据的字符串值。支持的值为 `true` 和 `false`。  
如果将 `CaptureDataDestination` 设置为 `Disk`，并且还希望代理定期将捕获的数据上传到您的 S3 存储桶，则将此参数设置为 `true`。  
默认值：`false`

`CaptureDataPeriodicUploadPeriodSeconds`  
（可选） SageMaker AI Edge Manager 代理将捕获的数据上传到 S3 存储桶的时间间隔（以秒为单位）。如果将 `CaptureDataPeriodicUpload` 设置为 `true`，则使用此参数。  
默认值：`8`

`CaptureDataPushPeriodSeconds`  
（可选） SageMaker AI Edge Manager 代理处理来自缓冲区的一批捕获数据请求的时间间隔（以秒为单位）。  
缓冲区中的请求数量达到 `CaptureDataBatchSize` 数量时，或者达到 `CaptureDataPushPeriodSeconds` 时间间隔时（以先发生者为准），代理会处理请求批次。  
默认值：`4`

`CaptureDataBase64EmbedLimit`  
（可选） SageMaker AI Edge Manager 代理上传的最大捕获数据大小（以字节为单位）。  
默认值：`3072`

`FolderPrefix`  
（可选）代理将捕获的数据写入其中的文件夹的名称。如果将 `CaptureDataDestination` 设置为 `Disk`，则代理将在 `CaptureDataDiskPath` 指定的目录中创建文件夹。如果您将 `CaptureDataDestination` 设置为 `Cloud`，或者将 `CaptureDataPeriodicUpload` 设置为 `true`，则代理将在您的 S3 存储桶中创建文件夹。  
默认值：`sme-capture`

`CaptureDataDiskPath`  
此功能在 v1.1.0 及更高版本的 SageMaker AI Edge Manager 组件中可用。  
（可选）代理创建捕获的数据文件夹的文件夹路径。如果将 `CaptureDataDestination` 设置为 `Disk`，则代理将在此目录中创建捕获的数据文件夹。如果您未指定此值，则代理将在组件的工作目录中创建捕获的数据文件夹。使用 `FolderPrefix` 参数指定捕获的数据文件夹的名称。  
默认值：`/greengrass/v2/work/aws.greengrass.SageMakerEdgeManager/capture`

`LocalDataRootPath`  
此功能在 v1.2.0 及更高版本的 SageMaker AI Edge Manager 组件中可用。  
（可选）此组件在核心设备上存储以下数据的路径：  
+ 将 `DbEnable` 设置为 `true` 时，运行时数据的本地数据库。
+ SageMaker AI 新编译模型，当您设置`DeploymentEnable`为时，此组件会自动下载这些模型。`true`
默认值：`/greengrass/v2/work/aws.greengrass.SageMakerEdgeManager`

`DbEnable`  
（可选）您可以启用此组件，将运行时数据存储在本地数据库中，以便在组件出现故障或设备断电时保留数据。  
此数据库在核心设备的文件系统上需要 5 MB 的存储空间。  
默认值：`false`

`DeploymentEnable`  
此功能在 v1.2.0 及更高版本的 SageMaker AI Edge Manager 组件中可用。  
（可选）您可以启用此组件以自动检索您上传到 Amazon S3 的 SageMaker AI Neo 编译模型。将新模型上传到 Amazon S3 后，使用 SageMaker AI Studio 或 SageMaker AI API 将新模型部署到该核心设备。启用此功能后，无需创建 AWS IoT Greengrass 部署即可将新模型部署到核心设备。  
要使用此功能，必须将 `DbEnable` 设置为 `true`。此功能使用本地数据库来跟踪从 AWS 云中检索的模型。
默认值：`false`

`DeploymentPollInterval`  
此功能在 v1.2.0 及更高版本的 SageMaker AI Edge Manager 组件中可用。  
（可选）此组件检查要下载的新模型之间的间隔时间（以分钟为单位）。此选项适用于将 `DeploymentEnable` 设置为 `true` 时。  
默认值：`1440`（1 天）。

`DLRBackendOptions`  
此功能在 v1.2.0 及更高版本的 SageMaker AI Edge Manager 组件中可用。  
（可选）在此组件使用的 DLR 运行时中设置的 DLR 运行时标志。您可以使用以下标志：  
+ `TVM_TENSORRT_CACHE_DIR` – 启用 TensorRT 模型缓存。指定具有读/写权限的现有文件夹的绝对路径。
+ `TVM_TENSORRT_CACHE_DISK_SIZE_MB` – 指定 TensorRT 模型缓存文件夹的上限。目录大小超过此限制时，将会删除使用最少的缓存引擎。默认值为 512 MB。
例如，您可以将此参数设置为以下值，以启用 TensorRT 模型缓存并将缓存大小限制为 800 MB。  

```
TVM_TENSORRT_CACHE_DIR=/data/secured_folder/trt/cache; TVM_TENSORRT_CACHE_DISK_SIZE_MB=800
```

`SagemakerEdgeLogVerbose`  
（可选）指定是否启用调试日志记录的字符串值。支持的值为 `true` 和 `false`。  
默认值：`false`

`UnixSocketName`  
（可选） SageMaker AI Edge Manager 套接字文件描述符在核心设备上的位置。  
默认值：`/tmp/aws.greengrass.SageMakerEdgeManager.sock`

**Example 示例：配置合并更新**  
以下示例配置指定核心设备是的一部分，*MyEdgeDeviceFleet*并且代理将捕获数据写入设备和 S3 存储桶。此配置还会启用调试日志记录。  

```
{
    "DeviceFleetName": "MyEdgeDeviceFleet",
    "BucketName": "amzn-s3-demo-bucket",
    "CaptureDataDestination": "Disk",
    "CaptureDataPeriodicUpload": "true",
    "SagemakerEdgeLogVerbose": "true"    
}
```

## 本地日志文件
<a name="sagemaker-edge-manager-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.SageMakerEdgeManager.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.SageMakerEdgeManager.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.SageMakerEdgeManager.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.SageMakerEdgeManager.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="sagemaker-edge-manager-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.3.6  |  对 Greengrass Nucleus 2.12.5 发行版进行了版本更新。  | 
|  1.3.5  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  1.3.4  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  1.3.3  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  1.3.2  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  1.3.1  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  1.3.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/sagemaker-edge-manager-component.html)  | 
|  1.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/sagemaker-edge-manager-component.html)  | 
|  1.1.1  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/sagemaker-edge-manager-component.html)  | 
|  1.0.3  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  1.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/sagemaker-edge-manager-component.html)  | 
|  1.0.1  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  1.0.0  |  初始版本。  | 

# DLR 图像分类
<a name="dlr-image-classification-component"></a>

DLR 图像分类组件 (`aws.greengrass.DLRImageClassification`) 包含示例推理代码，用于使用[深度学习运行时](https://github.com/neo-ai/neo-ai-dlr)和 resnet-50 模型执行图像分类推理。此组件使用变体 [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) 和 [DLR 运行时](dlr-component.md) 组件作为依赖关系来下载 DLR 和示例模型。

要将此推理组件与自定义训练的 DLR 模型一起使用，请[创建依赖模型存储组件的自定义版本](ml-customization.md#override-public-model-store)。要使用自己的自定义推理代码，您可以使用此组件的配方作为模板来[创建自定义推理组件](ml-customization.md#create-inference-component)。

**Topics**
+ [版本](#dlr-image-classification-component-versions)
+ [Type](#dlr-image-classification-component-type)
+ [操作系统](#dlr-image-classification-component-os-support)
+ [要求](#dlr-image-classification-component-requirements)
+ [依赖项](#dlr-image-classification-component-dependencies)
+ [配置](#dlr-image-classification-component-configuration)
+ [本地日志文件](#dlr-image-classification-component-log-file)
+ [更改日志](#dlr-image-classification-component-changelog)

## 版本
<a name="dlr-image-classification-component-versions"></a>

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

## Type
<a name="dlr-image-classification-component-type"></a>

<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)。

## 操作系统
<a name="dlr-image-classification-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="dlr-image-classification-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="dlr-image-classification-component-dependencies"></a>

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

------
#### [ 2.1.13 and 2.1.14 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0 | 软性 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

------
#### [ 2.0.x ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | \$12.0.0 | 软性 | 
| DLR 图像分类模型存储 | \$12.0.0 | 硬性 | 
| DLR | \$11.3.0 | 软性 | 

------

## 配置
<a name="dlr-image-classification-component-configuration"></a>

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

------
#### [ 2.1.x ]

`accessControl`  
<a name="ml-config-accesscontrol-desc"></a>（可选）包含允许组件将消息发布到默认通知主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。  
默认值：  

```
{
   "aws.greengrass.ipc.mqttproxy": {
      "aws.greengrass.DLRImageClassification:mqttproxy:1": {
         "policyDescription": "Allows access to publish via topic ml/dlr/image-classification.",
         "operations": [
            "aws.greengrass#PublishToIoTCore"
         ],
         "resources": [
            "ml/dlr/image-classification"
         ]
      }
   }
}
```

`PublishResultsOnTopic`  
<a name="ml-config-publishresultsontopic-desc"></a>（可选）要将推理结果发布到的主题。如果修改此值，则还必须修改 `accessControl` 参数中 `resources` 的值，以匹配您的自定义主题名称。  
默认值：`ml/dlr/image-classification`

`Accelerator`  <a name="ml-config-accelerator"></a>
要使用的加速器。支持的值为 `cpu` 和 `gpu`。  
依赖模型组件中的示例模型仅支持 CPU 加速。要对不同的自定义模型使用 GPU 加速，请[创建自定义模型组件](ml-customization.md#override-public-model-store)以覆盖公共模型组件。  
默认值：`cpu`

`ImageDirectory`  
<a name="ml-config-imagedirectory-desc"></a>（可选）设备上推理组件读取图像的文件夹路径。您可以将此值修改为设备上您有权 read/write 访问的任何位置。  
<a name="ml-config-imagedirectory-img-default"></a>默认值：`/greengrass/v2/packages/artifacts-unarchived/component-name/image_classification/sample_images/`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`ImageName`  
<a name="ml-config-imagename-desc"></a>（可选）推理组件用作预测输入的图像名称。该组件可在 `ImageDirectory` 中指定的文件夹中查找图像。默认情况下，该组件使用默认图像目录中的示例图像。 AWS IoT Greengrass 支持以下图像格式：`jpeg`、`jpg``png`、和`npy`。  
<a name="ml-config-imagename-img-default"></a>默认值：`cat.jpeg`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`InferenceInterval`  <a name="ml-config-inferenceinterval"></a>
（可选）推理代码进行的每次预测之间的时间（以秒为单位）。示例推理代码无限期运行，并在指定的时间间隔内重复其预测。例如，如果您想使用摄像机拍摄的图像进行实时预测，则可以将其更改为较短的间隔。  
默认值：`3600`

`ModelResourceKey`  <a name="ml-config-modelresourcekey"></a>
<a name="ml-config-modelresourcekey-desc"></a>（可选）在依赖的公共模型组件中使用的模型。仅当使用自定义组件覆盖公共模型组件时，才修改此参数。  
默认值：  

```
{
    "armv7l": "DLR-resnet50-armv7l-cpu-ImageClassification",
    "aarch64": "DLR-resnet50-aarch64-cpu-ImageClassification",
    "x86_64": "DLR-resnet50-x86_64-cpu-ImageClassification",
    "windows": "DLR-resnet50-win-cpu-ImageClassification"
}
```

`UseCamera`  <a name="ml-config-usecamera"></a>
（可选）字符串值，用于定义是否使用连接到 Greengrass 核心设备的摄像机拍摄的图像。支持的值为 `true` 和 `false`。  
当您将此值设置为 `true` 时，示例推理代码将访问设备上的摄像机，并在本地对捕获的图像运行推理。`ImageName` 和 `ImageDirectory` 参数的值将被忽略。确保运行此组件的用户 read/write 可以访问相机存储捕获图像的位置。  
默认值：`false`  
当您查看此组件的配方时，`UseCamera` 配置参数不会显示在默认配置中。但是，在部署组件时，可以在[配置合并更新](update-component-configurations.md)中修改此参数的值。  
如果将 `UseCamera` 设置为 `true`，则还必须创建符号链接，以使推理组件能够从运行时组件创建的虚拟环境中访问您的摄像机。有关将摄像机与示例推理组件结合使用的更多信息，请参阅 [更新组件配置](ml-tutorial-image-classification-camera.md)。

------
#### [ 2.0.x ]

`MLRootPath`  <a name="ml-config-mlrootpath"></a>
<a name="ml-config-mlrootpath-desc"></a>（可选）Linux 核心设备上推理组件读取图像和写入推理结果的文件夹路径。您可以将此值修改为设备上运行此组件的用户有权 read/write 访问的任何位置。  
<a name="ml-config-mlrootpath-default-dlr"></a>默认值：`/greengrass/v2/work/variant.DLR/greengrass_ml`  
<a name="ml-config-mlrootpath-default-tfl"></a>默认值：`/greengrass/v2/work/variant.TensorFlowLite/greengrass_ml`

`Accelerator`  <a name="ml-config-accelerator"></a>
要使用的加速器。支持的值为 `cpu` 和 `gpu`。  
依赖模型组件中的示例模型仅支持 CPU 加速。要对不同的自定义模型使用 GPU 加速，请[创建自定义模型组件](ml-customization.md#override-public-model-store)以覆盖公共模型组件。  
默认值：`cpu`

`ImageName`  
<a name="ml-config-imagename-desc-dlr-1.3.0"></a>（可选）推理组件用作预测输入的图像名称。该组件可在 `ImageDirectory` 中指定的文件夹中查找图像。默认位置是`MLRootPath/images`。 AWS IoT Greengrass 支持以下图像格式：`jpeg`、`jpg``png`、和`npy`。  
<a name="ml-config-imagename-img-default"></a>默认值：`cat.jpeg`

`InferenceInterval`  <a name="ml-config-inferenceinterval"></a>
（可选）推理代码进行的每次预测之间的时间（以秒为单位）。示例推理代码无限期运行，并在指定的时间间隔内重复其预测。例如，如果您想使用摄像机拍摄的图像进行实时预测，则可以将其更改为较短的间隔。  
默认值：`3600`

`ModelResourceKey`  <a name="ml-config-modelresourcekey"></a>
<a name="ml-config-modelresourcekey-desc"></a>（可选）在依赖的公共模型组件中使用的模型。仅当使用自定义组件覆盖公共模型组件时，才修改此参数。  
默认值：  

```
armv7l: "DLR-resnet50-armv7l-cpu-ImageClassification"
x86_64: "DLR-resnet50-x86_64-cpu-ImageClassification"
```

------

## 本地日志文件
<a name="dlr-image-classification-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.DLRImageClassification.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.DLRImageClassification.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.DLRImageClassification.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.DLRImageClassification.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="dlr-image-classification-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.14  | 对 Greengrass Nucleus 2.12.5 发布版进行了版本更新。 | 
|  2.1.13  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.12  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.11  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.10  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.9  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.8  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.7  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.6  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.1.5  |  组件全部发布 AWS 区域。  | 
|  2.1.4  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。 此版本不适用于欧洲地区（伦敦）(`eu-west-2`)。  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.1.2  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.1  |  <a name="changelog-dlr-image-classification-2.1.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-image-classification-component.html)  | 
|  2.0.4  |  初始版本。  | 

# DLR 对象检测
<a name="dlr-object-detection-component"></a>

DLR 对象检测组件 (`aws.greengrass.DLRObjectDetection`) 包含示例推理代码，以使用[深度学习运行时](https://github.com/neo-ai/neo-ai-dlr)和示例预训练模型执行对象检测推理。此组件使用变体 [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) 和 [DLR 运行时](dlr-component.md) 组件作为依赖关系来下载 DLR 和示例模型。

要将此推理组件与自定义训练的 DLR 模型一起使用，请[创建依赖模型存储组件的自定义版本](ml-customization.md#override-public-model-store)。要使用自己的自定义推理代码，您可以使用此组件的配方作为模板来[创建自定义推理组件](ml-customization.md#create-inference-component)。

**Topics**
+ [版本](#dlr-object-detection-component-versions)
+ [Type](#dlr-object-detection-component-type)
+ [操作系统](#dlr-object-detection-component-os-support)
+ [要求](#dlr-object-detection-component-requirements)
+ [依赖项](#dlr-object-detection-component-dependencies)
+ [配置](#dlr-object-detection-component-configuration)
+ [本地日志文件](#dlr-object-detection-component-log-file)
+ [更改日志](#dlr-object-detection-component-changelog)

## 版本
<a name="dlr-object-detection-component-versions"></a>

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

## Type
<a name="dlr-object-detection-component-type"></a>

<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)。

## 操作系统
<a name="dlr-object-detection-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="dlr-object-detection-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上进行升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="dlr-object-detection-component-dependencies"></a>

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

------
#### [ 2.1.13 and 2.1.14 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0 | 软性 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | \$12.1.0 | 硬性 | 
| [DLR](dlr-component.md) | \$11.6.0 | 硬性 | 

------
#### [ 2.0.x ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | \$12.0.0 | 软性 | 
| DLR 对象检测模型存储 | \$12.0.0 | 硬性 | 
| DLR | \$11.3.0 | 软性 | 

------

## 配置
<a name="dlr-object-detection-component-configuration"></a>

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

------
#### [ 2.1.x ]

`accessControl`  
<a name="ml-config-accesscontrol-desc"></a>（可选）包含允许组件将消息发布到默认通知主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。  
默认值：  

```
{
   "aws.greengrass.ipc.mqttproxy": {
      "aws.greengrass.DLRObjectDetection:mqttproxy:1": {
         "policyDescription": "Allows access to publish via topic ml/dlr/object-detection.",
         "operations": [
            "aws.greengrass#PublishToIoTCore"
         ],
         "resources": [
            "ml/dlr/object-detection"
         ]
      }
   }
}
```

`PublishResultsOnTopic`  
<a name="ml-config-publishresultsontopic-desc"></a>（可选）要将推理结果发布到的主题。如果修改此值，则还必须修改 `accessControl` 参数中 `resources` 的值，以匹配您的自定义主题名称。  
默认值：`ml/dlr/object-detection`

`Accelerator`  <a name="ml-config-accelerator"></a>
要使用的加速器。支持的值为 `cpu` 和 `gpu`。  
依赖模型组件中的示例模型仅支持 CPU 加速。要对不同的自定义模型使用 GPU 加速，请[创建自定义模型组件](ml-customization.md#override-public-model-store)以覆盖公共模型组件。  
默认值：`cpu`

`ImageDirectory`  
<a name="ml-config-imagedirectory-desc"></a>（可选）设备上推理组件读取图像的文件夹路径。您可以将此值修改为设备上您有权 read/write 访问的任何位置。  
<a name="ml-config-imagedirectory-obj-default"></a>默认值：`/greengrass/v2/packages/artifacts-unarchived/component-name/object_detection/sample_images/`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`ImageName`  
<a name="ml-config-imagename-desc"></a>（可选）推理组件用作预测输入的图像名称。该组件可在 `ImageDirectory` 中指定的文件夹中查找图像。默认情况下，该组件使用默认图像目录中的示例图像。 AWS IoT Greengrass 支持以下图像格式：`jpeg`、`jpg``png`、和`npy`。  
<a name="ml-config-imagename-obj-default"></a>默认值：`objects.jpg`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`InferenceInterval`  <a name="ml-config-inferenceinterval"></a>
（可选）推理代码进行的每次预测之间的时间（以秒为单位）。示例推理代码无限期运行，并在指定的时间间隔内重复其预测。例如，如果您想使用摄像机拍摄的图像进行实时预测，则可以将其更改为较短的间隔。  
默认值：`3600`

`ModelResourceKey`  <a name="ml-config-modelresourcekey"></a>
<a name="ml-config-modelresourcekey-desc"></a>（可选）在依赖的公共模型组件中使用的模型。仅当使用自定义组件覆盖公共模型组件时，才修改此参数。  
默认值：  

```
{
    "armv7l": "DLR-yolo3-armv7l-cpu-ObjectDetection",
    "aarch64": "DLR-yolo3-aarch64-gpu-ObjectDetection",
    "x86_64": "DLR-yolo3-x86_64-cpu-ObjectDetection",
    "windows": "DLR-resnet50-win-cpu-ObjectDetection"
}
```

`UseCamera`  <a name="ml-config-usecamera"></a>
（可选）字符串值，用于定义是否使用连接到 Greengrass 核心设备的摄像机拍摄的图像。支持的值为 `true` 和 `false`。  
当您将此值设置为 `true` 时，示例推理代码将访问设备上的摄像机，并在本地对捕获的图像运行推理。`ImageName` 和 `ImageDirectory` 参数的值将被忽略。确保运行此组件的用户 read/write 可以访问相机存储捕获图像的位置。  
默认值：`false`  
当您查看此组件的配方时，`UseCamera` 配置参数不会显示在默认配置中。但是，在部署组件时，可以在[配置合并更新](update-component-configurations.md)中修改此参数的值。  
如果将 `UseCamera` 设置为 `true`，则还必须创建符号链接，以使推理组件能够从运行时组件创建的虚拟环境中访问您的摄像机。有关将摄像机与示例推理组件结合使用的更多信息，请参阅 [更新组件配置](ml-tutorial-image-classification-camera.md)。

------
#### [ 2.0.x ]

`MLRootPath`  <a name="ml-config-mlrootpath"></a>
<a name="ml-config-mlrootpath-desc"></a>（可选）Linux 核心设备上推理组件读取图像和写入推理结果的文件夹路径。您可以将此值修改为设备上运行此组件的用户有权 read/write 访问的任何位置。  
<a name="ml-config-mlrootpath-default-dlr"></a>默认值：`/greengrass/v2/work/variant.DLR/greengrass_ml`  
<a name="ml-config-mlrootpath-default-tfl"></a>默认值：`/greengrass/v2/work/variant.TensorFlowLite/greengrass_ml`

`Accelerator`  
请勿修改。目前，加速器唯一支持的值是 `cpu`，因为依赖模型组件中的模型仅针对 CPU 加速器进行编译。

`ImageName`  
<a name="ml-config-imagename-desc-dlr-1.3.0"></a>（可选）推理组件用作预测输入的图像名称。该组件可在 `ImageDirectory` 中指定的文件夹中查找图像。默认位置是`MLRootPath/images`。 AWS IoT Greengrass 支持以下图像格式：`jpeg`、`jpg``png`、和`npy`。  
<a name="ml-config-imagename-obj-default"></a>默认值：`objects.jpg`

`InferenceInterval`  <a name="ml-config-inferenceinterval"></a>
（可选）推理代码进行的每次预测之间的时间（以秒为单位）。示例推理代码无限期运行，并在指定的时间间隔内重复其预测。例如，如果您想使用摄像机拍摄的图像进行实时预测，则可以将其更改为较短的间隔。  
默认值：`3600`

`ModelResourceKey`  <a name="ml-config-modelresourcekey"></a>
<a name="ml-config-modelresourcekey-desc"></a>（可选）在依赖的公共模型组件中使用的模型。仅当使用自定义组件覆盖公共模型组件时，才修改此参数。  
默认值：  

```
{
    armv7l: "DLR-yolo3-armv7l-cpu-ObjectDetection",
    x86_64: "DLR-yolo3-x86_64-cpu-ObjectDetection"
}
```

------

## 本地日志文件
<a name="dlr-object-detection-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.DLRObjectDetection.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.DLRObjectDetection.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.DLRObjectDetection.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.DLRObjectDetection.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="dlr-object-detection-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.14  | 对 Greengrass Nucleus 2.12.5 发布版进行了版本更新。 | 
|  2.1.13  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.12  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.11  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.10  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.9  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.8  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.7  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.6  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.1.5  |  组件全部发布 AWS 区域。  | 
|  2.1.4  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。 此版本不适用于欧洲地区（伦敦）(`eu-west-2`)。  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.1.2  |  <a name="changelog-dlr-object-detection-2.1.2"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-object-detection-component.html)  | 
|  2.1.1  |  <a name="changelog-dlr-object-detection-2.1.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-object-detection-component.html)  | 
|  2.0.4  |  初始版本。  | 

# DLR 图像分类模型存储
<a name="dlr-image-classification-model-store-component"></a>

DLR 图像分类模型存储库是一个机器学习模型组件，其中包含预训练的 ResNet -50 个模型作为 Greengrass 工件。[此组件中使用的预训练模型从 [GluonCV 模型](https://cv.gluon.ai/model_zoo/index.html)库中获取，并使用 SageMaker AI Neo 深度学习运行时进行编译。](https://github.com/neo-ai/neo-ai-dlr)

[DLR 图像分类](dlr-image-classification-component.md)推理组件使用此组件作为模型来源的依赖关系。要使用自定义训练的 DLR 模型，请[创建此模型组件的自定义版本](ml-customization.md#override-public-model-store)，并将您的自定义模型作为组件构件包括在内。您可以使用此组件的配方作为模板来创建自定义模型组件。

**注意**  
DLR 图像分类模型存储组件的名称因版本而异。版本 2.1.x 及更高版本的组件名称为 `variant.DLR.ImageClassification.ModelStore`。版本 2.0.x 的组件名称为 `variant.ImageClassification.ModelStore`。

**Topics**
+ [版本](#dlr-image-classification-model-store-component-versions)
+ [Type](#dlr-image-classification-model-store-component-type)
+ [操作系统](#dlr-image-classification-model-store-component-os-support)
+ [要求](#dlr-image-classification-model-store-component-requirements)
+ [依赖项](#dlr-image-classification-model-store-component-dependencies)
+ [配置](#dlr-image-classification-model-store-component-configuration)
+ [本地日志文件](#dlr-image-classification-model-store-component-log-file)
+ [更改日志](#dlr-image-classification-model-store-component-changelog)

## 版本
<a name="dlr-image-classification-model-store-component-versions"></a>

此组件具有以下版本：
+ 2.1.x (`variant.DLR.ImageClassification.ModelStore`) 
+ 2.0.x (`variant.ImageClassification.ModelStore`) 

## Type
<a name="dlr-image-classification-model-store-component-type"></a>

<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)。

## 操作系统
<a name="dlr-image-classification-model-store-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="dlr-image-classification-model-store-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="dlr-image-classification-model-store-component-dependencies"></a>

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

------
#### [ 2.0.x ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | \$12.0.0 | 软性 | 

------

## 配置
<a name="dlr-image-classification-model-store-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="dlr-image-classification-model-store-component-log-file"></a>

此组件不输出日志。

## 更改日志
<a name="dlr-image-classification-model-store-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.13  | 对 Greengrass Nucleus 2.12.5 发布版进行了版本更新。 | 
|  2.1.12  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.11  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.10  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.9  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.8  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.7  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.6  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-image-classification-model-store-component.html)  | 
|  2.1.4  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.1.2  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.1  |  <a name="changelog-dlr-image-classification-model-store-2.1.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-image-classification-model-store-component.html)  | 
|  2.0.4  |  初始版本。  | 

# DLR 对象检测模型存储
<a name="dlr-object-detection-model-store-component"></a>

DLR 对象检测模型存储库是一个机器学习模型组件，其中包含作为 Greengrass 工件的预训练 YOLOv3 模型。此组件中使用的示例模型从 [GluonCV 模型](https://cv.gluon.ai/model_zoo/index.html)库中获取，并使用 SageMaker AI Neo [深度](https://github.com/neo-ai/neo-ai-dlr)学习运行时进行编译。

[DLR 对象检测](dlr-object-detection-component.md)推理组件使用此组件作为模型来源的依赖关系。要使用自定义训练的 DLR 模型，请[创建此模型组件的自定义版本](ml-customization.md#override-public-model-store)，并将您的自定义模型作为组件构件包括在内。您可以使用此组件的配方作为模板来创建自定义模型组件。

**注意**  
DLR 对象检测模型存储组件的名称因其版本而异。版本 2.1.x 及更高版本的组件名称为 `variant.DLR.ObjectDetection.ModelStore`。版本 2.0.x 的组件名称为 `variant.ObjectDetection.ModelStore`。

**Topics**
+ [版本](#dlr-object-detection-model-store-component-versions)
+ [Type](#dlr-object-detection-model-store-component-type)
+ [操作系统](#dlr-object-detection-model-store-component-os-support)
+ [要求](#dlr-object-detection-model-store-component-requirements)
+ [依赖项](#dlr-object-detection-model-store-component-dependencies)
+ [配置](#dlr-object-detection-model-store-component-configuration)
+ [本地日志文件](#dlr-object-detection-model-store-component-log-file)
+ [更改日志](#dlr-object-detection-model-store-component-changelog)

## 版本
<a name="dlr-object-detection-model-store-component-versions"></a>

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

## Type
<a name="dlr-object-detection-model-store-component-type"></a>

<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)。

## 操作系统
<a name="dlr-object-detection-model-store-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="dlr-object-detection-model-store-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上进行升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="dlr-object-detection-model-store-component-dependencies"></a>

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

------
#### [ 2.1.13 and 2.1.14 ]

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

------
#### [ 2.1.5 and 2.1.6 ]

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


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

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

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


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

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

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


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

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

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


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

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

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


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

------
#### [ 2.0.x ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | \$12.0.0 | 软性 | 

------

## 配置
<a name="dlr-object-detection-model-store-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="dlr-object-detection-model-store-component-log-file"></a>

此组件不输出日志。

## 更改日志
<a name="dlr-object-detection-model-store-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.14  |  对 Greengrass Nucleus 2.12.5 发布版进行了版本更新。  | 
|  2.1.13  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.12  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.11  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.10  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.9  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.8  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.7  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.6  |  添加 CPU 型号以修复 Armv8 (AArch64) 设备上的问题。  | 
|  2.1.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-object-detection-model-store-component.html)  | 
|  2.1.4  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.1.3  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.1.2  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.1  |  <a name="changelog-dlr-object-detection-model-store-2.1.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-object-detection-model-store-component.html) | 
|  2.0.4  |  初始版本。  | 

# DLR 运行时
<a name="dlr-component"></a>

DLR 运行时组件 (`variant.DLR`) 包含一个脚本，用于在设备上的虚拟环境中安装[深度学习运行时](https://github.com/neo-ai/neo-ai-dlr)（DLR）及其依赖关系。[DLR 图像分类](dlr-image-classification-component.md) 和 [DLR 对象检测](dlr-object-detection-component.md) 组件使用此组件作为安装 DLR 的依赖关系。组件版本 1.6.x 安装了 DLR v1.6.0，组件版本 1.3.x 安装了 DLR v1.3.0。

要使用不同的运行时，您可以使用此组件的配方作为模板来[创建自定义机器学习组件](ml-customization.md)。

**Topics**
+ [版本](#dlr-component-versions)
+ [Type](#dlr-component-type)
+ [操作系统](#dlr-component-os-support)
+ [要求](#dlr-component-requirements)
+ [依赖项](#dlr-component-dependencies)
+ [配置](#dlr-component-configuration)
+ [使用量](#dlr-component-usage)
+ [本地日志文件](#dlr-component-log-file)
+ [更改日志](#dlr-component-changelog)

## 版本
<a name="dlr-component-versions"></a>

此组件具有以下版本：
+ 1.6.x
+ 1.3.x

## Type
<a name="dlr-component-type"></a>

<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)。

## 操作系统
<a name="dlr-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="dlr-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上进行升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

### 端点和端口
<a name="dlr-component-endpoints"></a>

默认情况下，此组件使用安装程序脚本通过 `apt`、`yum`、`brew` 和 `pip` 命令来安装程序包，具体取决于核心设备使用的平台。此组件必须能够对各种程序包索引和存储库执行出站请求才能运行安装程序脚本。要允许此组件的出站流量通过代理或防火墙，您必须确定核心设备连接安装的程序包索引和存储库的端点。

在确定此组件的安装脚本所需的端点时，请考虑以下几点：
+ 端点取决于核心设备的平台。例如，运行 Ubuntu 的核心设备使用 `apt`，而不是 `yum` 或 `brew`。此外，使用相同程序包索引的设备可能具有不同的源列表，因此它们可能会从不同的存储库中检索软件包。
+ 使用相同程序包索引的多台设备之间的端点可能有所不同，因为每台设备都有自己的源列表，用于定义检索程序包的位置。
+ 端点可能会随时间而变化。每个软件包索引都提供您下载软件包的存储库，软件包的所有者可以更改软件包索引提供的内容 URLs 。 URLs 

有关此组件安装的依赖项以及如何禁用安装程序脚本的更多信息，请参阅[UseInstaller](#dlr-component-config-useinstaller-term)配置参数。

有关基本操作所需的端点和端口的更多信息，请参阅[允许设备流量通过代理或防火墙](allow-device-traffic.md)。

## 依赖项
<a name="dlr-component-dependencies"></a>

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

------
#### [ 1.6.11 - 1.6.16 ]

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


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

------
#### [ 1.6.10 ]

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


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

------
#### [ 1.6.9 ]

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


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

------
#### [ 1.6.8 ]

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


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

------
#### [ 1.6.6 and 1.6.7 ]

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


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

------
#### [ 1.6.4 and 1.6.5 ]

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


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

------
#### [ 1.6.3 ]

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


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

------
#### [ 1.6.2 ]

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


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

------
#### [ 1.6.1 ]

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


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

------
#### [ 1.3.x ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | \$12.0.0 | 软性 | 

------

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

## 配置
<a name="dlr-component-configuration"></a>

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

`MLRootPath`  
<a name="ml-config-mlrootpath-desc"></a>（可选）Linux 核心设备上推理组件读取图像和写入推理结果的文件夹路径。您可以将此值修改为设备上运行此组件的用户有权 read/write 访问的任何位置。  
<a name="ml-config-mlrootpath-default-dlr"></a>默认值：`/greengrass/v2/work/variant.DLR/greengrass_ml`

`WindowsMLRootPath`  
此组件的 v1.6.6 及更高版本中提供了此功能。  
<a name="ml-config-windowsmlrootpath-desc"></a>（可选）Windows 核心设备上推理组件读取图像和写入推理结果的文件夹路径。您可以将此值修改为设备上运行此组件的用户有权 read/write 访问的任何位置。  
<a name="ml-config-windowsmlrootpath-default-dlr"></a>默认值：`C:\greengrass\v2\\work\\variant.DLR\\greengrass_ml`

  `UseInstaller`   
<a name="ml-config-useinstaller-desc-dlr"></a>（可选）字符串值，用于定义是否使用此组件中的安装程序脚本来安装 DLR 及其依赖关系。支持的值为 `true` 和 `false`。  <a name="ml-config-useinstaller-libraries-dlr"></a>

如果您想使用自定义脚本进行 DLR 安装，或者想要在预构建的 Linux 映像中包含运行时依赖关系，请将此值设置为 `false`。要将此组件与 AWS提供的 DLR 推理组件一起使用，请安装以下库（包括所有依赖项），并将其提供给运行 ML 组件的系统用户（例如`ggc_user`）。
+ [Python](https://www.python.org/downloads/) 3.7 或更高版本，包括适用于您的 Python 版本的 `pip`。
+ [深度学习运行时](https://github.com/neo-ai/neo-ai-dlr) v1.6.0
+ [NumPy](https://numpy.org/install/).
+ [OpenCV-Python](https://pypi.org/project/opencv-python/)。
+ [AWS IoT Device SDK 适用于 Python 的 v2。](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [AWS 通用运行时 (CRT) Python](https://github.com/awslabs/aws-crt-python)。
+ [Picamera](https://picamera.readthedocs.io/en/release-1.13/)（仅适用于 Raspberry Pi 设备）。
+ [`awscam`模块](https://docs.aws.amazon.com/deeplens/latest/dg/deeplens-library-awscam-module.html)（用于 AWS DeepLens 设备）。
+ libGL（适用于 Linux 设备）
<a name="ml-config-useinstaller-default"></a>默认值：`true`

## 使用量
<a name="dlr-component-usage"></a>

使用此组件并将 `UseInstaller` 配置参数设置为 `true`，以在设备上安装 DLR 及其依赖关系。该组件在您的设备上设置一个虚拟环境，其中包括 OpenCV 和 DLR 所需的 NumPy 库。

**注意**  <a name="ml-installer-component-usage-note"></a>
此组件中的安装程序脚本还会安装其他系统库的最新版本，这是在设备上配置虚拟环境和使用已安装的机器学习框架时所需要的。这可能会升级您设备上的现有系统库。查看下表，了解此组件为每个受支持的操作系统安装的库列表。如果要自定义此安装过程，请将 `UseInstaller` 配置参数设置为 `false`，然后开发自己的安装程序脚本。


| 平台 | 安装在设备系统上的库 | 安装在虚拟环境中的库 | 
| --- | --- | --- | 
| Armv7l | build-essential, cmake, ca-certificates, git | setuptools, wheel | 
| Amazon Linux 2 | mesa-libGL | 无 | 
| Ubuntu | wget | 无 | 

部署推理组件时，此运行时组件会首先验证您的设备是否已安装 DLR 及其依赖关系，如果没有，则会为您安装。

## 本地日志文件
<a name="dlr-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/variant.DLR.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\variant.DLR.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/variant.DLR.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\variant.DLR.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="dlr-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.6.16  |  对 Greengrass Nucleus 版本 2.12.5 进行了版本更新。  | 
|  1.6.12  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-component.html)  | 
|  1.6.11  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  1.6.10  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  1.6.9  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  1.6.8  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  1.6.7  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-component.html)  | 
|  1.6.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-component.html)  | 
|  1.6.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-component.html)  | 
|  1.6.4  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  1.6.3  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  1.6.2  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  1.6.1  |  <a name="changelog-dlr-1.6.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/dlr-component.html)  | 
|  1.3.2  |  初始版本。安装 DLR v1.3.0。  | 

# TensorFlow 精简版图像分类
<a name="tensorflow-lite-image-classification-component"></a>

 TensorFlow Lite 图像分类组件 (`aws.greengrass.TensorFlowLiteImageClassification`) 包含示例推理代码，用于使用 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) 运行时和样本预训练的 MobileNet 1.0 量化模型执行图像分类推理。此组件使用变体[TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md)和[TensorFlow 精简版运行时](tensorflow-lite-component.md)组件作为依赖项来下载 TensorFlow Lite 运行时和示例模型。

要将此推理组件与自定义训练的 TensorFlow Lite 模型一起使用，[请创建依赖模型存储组件的自定义版本](ml-customization.md#override-public-model-store)。要使用自己的自定义推理代码，您可以使用此组件的配方作为模板来[创建自定义推理组件](ml-customization.md#create-inference-component)。

**Topics**
+ [版本](#tensorflow-lite-image-classification-component-versions)
+ [Type](#tensorflow-lite-image-classification-component-type)
+ [操作系统](#tensorflow-lite-image-classification-component-os-support)
+ [要求](#tensorflow-lite-image-classification-component-requirements)
+ [依赖项](#tensorflow-lite-image-classification-component-dependencies)
+ [配置](#tensorflow-lite-image-classification-component-configuration)
+ [本地日志文件](#tensorflow-lite-image-classification-component-log-file)
+ [更改日志](#tensorflow-lite-image-classification-component-changelog)

## 版本
<a name="tensorflow-lite-image-classification-component-versions"></a>

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

## Type
<a name="tensorflow-lite-image-classification-component-type"></a>

<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)。

## 操作系统
<a name="tensorflow-lite-image-classification-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="tensorflow-lite-image-classification-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="tensorflow-lite-image-classification-component-dependencies"></a>

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

------
#### [ 2.1.11 and 2.1.12 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

------

## 配置
<a name="tensorflow-lite-image-classification-component-configuration"></a>

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

`accessControl`  
<a name="ml-config-accesscontrol-desc"></a>（可选）包含允许组件将消息发布到默认通知主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。  
默认值：  

```
{
   "aws.greengrass.ipc.mqttproxy": {
      "aws.greengrass.TensorFlowLiteImageClassification:mqttproxy:1": {
         "policyDescription": "Allows access to publish via topic ml/tflite/image-classification.",
         "operations": [
            "aws.greengrass#PublishToIoTCore"
         ],
         "resources": [
            "ml/tflite/image-classification"
         ]
      }
   }
}
```

`PublishResultsOnTopic`  
<a name="ml-config-publishresultsontopic-desc"></a>（可选）要将推理结果发布到的主题。如果修改此值，则还必须修改 `accessControl` 参数中 `resources` 的值，以匹配您的自定义主题名称。  
默认值：`ml/tflite/image-classification`

`Accelerator`  <a name="ml-config-accelerator"></a>
要使用的加速器。支持的值为 `cpu` 和 `gpu`。  
依赖模型组件中的示例模型仅支持 CPU 加速。要对不同的自定义模型使用 GPU 加速，请[创建自定义模型组件](ml-customization.md#override-public-model-store)以覆盖公共模型组件。  
默认值：`cpu`

`ImageDirectory`  
<a name="ml-config-imagedirectory-desc"></a>（可选）设备上推理组件读取图像的文件夹路径。您可以将此值修改为设备上您有权 read/write 访问的任何位置。  
<a name="ml-config-imagedirectory-img-default"></a>默认值：`/greengrass/v2/packages/artifacts-unarchived/component-name/image_classification/sample_images/`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`ImageName`  
<a name="ml-config-imagename-desc"></a>（可选）推理组件用作预测输入的图像名称。该组件可在 `ImageDirectory` 中指定的文件夹中查找图像。默认情况下，该组件使用默认图像目录中的示例图像。 AWS IoT Greengrass 支持以下图像格式：`jpeg`、`jpg``png`、和`npy`。  
<a name="ml-config-imagename-img-default"></a>默认值：`cat.jpeg`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`InferenceInterval`  <a name="ml-config-inferenceinterval"></a>
（可选）推理代码进行的每次预测之间的时间（以秒为单位）。示例推理代码无限期运行，并在指定的时间间隔内重复其预测。例如，如果您想使用摄像机拍摄的图像进行实时预测，则可以将其更改为较短的间隔。  
默认值：`3600`

`ModelResourceKey`  <a name="ml-config-modelresourcekey"></a>
<a name="ml-config-modelresourcekey-desc"></a>（可选）在依赖的公共模型组件中使用的模型。仅当使用自定义组件覆盖公共模型组件时，才修改此参数。  
默认值：  

```
{
    "model": "TensorFlowLite-Mobilenet"
}
```

`UseCamera`  <a name="ml-config-usecamera"></a>
（可选）字符串值，用于定义是否使用连接到 Greengrass 核心设备的摄像机拍摄的图像。支持的值为 `true` 和 `false`。  
当您将此值设置为 `true` 时，示例推理代码将访问设备上的摄像机，并在本地对捕获的图像运行推理。`ImageName` 和 `ImageDirectory` 参数的值将被忽略。确保运行此组件的用户 read/write 可以访问相机存储捕获图像的位置。  
默认值：`false`  
当您查看此组件的配方时，`UseCamera` 配置参数不会显示在默认配置中。但是，在部署组件时，可以在[配置合并更新](update-component-configurations.md)中修改此参数的值。  
如果将 `UseCamera` 设置为 `true`，则还必须创建符号链接，以使推理组件能够从运行时组件创建的虚拟环境中访问您的摄像机。有关将摄像机与示例推理组件结合使用的更多信息，请参阅 [更新组件配置](ml-tutorial-image-classification-camera.md)。

## 本地日志文件
<a name="tensorflow-lite-image-classification-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="tensorflow-lite-image-classification-component-changelog"></a>

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


|  版本  |  更改  | 
| --- | --- | 
|  2.1.12  |  对 Greengrass Nucleus 版本 2.12.5 发行版进行了版本更新。  | 
|  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  |  初始版本。  | 

# TensorFlow 精简版物体检测
<a name="tensorflow-lite-object-detection-component"></a>

 TensorFlow Lite 对象检测组件 (`aws.greengrass.TensorFlowLiteObjectDetection`) 包含使用 L [TensorFlow it](https://www.tensorflow.org/lite/guide/python) e 执行对象检测推理的示例推理代码和预训练的单枪检测 (SSD) MobileNet 1.0 模型示例。此组件使用变体[TensorFlow 精简版物体检测模型存储](tensorflow-lite-object-detection-model-store-component.md)和[TensorFlow 精简版运行时](tensorflow-lite-component.md)组件作为依赖项来下载 TensorFlow Lite 和示例模型。

要将此推理组件与自定义训练的 TensorFlow Lite 模型一起使用，您可以[创建依赖模型存储组件的自定义版本](ml-customization.md#override-public-model-store)。要使用自己的自定义推理代码，请使用此组件的配方作为模板来[创建自定义推理组件](ml-customization.md#create-inference-component)。

**Topics**
+ [版本](#tensorflow-lite-object-detection-component-versions)
+ [Type](#tensorflow-lite-object-detection-component-type)
+ [操作系统](#tensorflow-lite-object-detection-component-os-support)
+ [要求](#tensorflow-lite-object-detection-component-requirements)
+ [依赖项](#tensorflow-lite-object-detection-component-dependencies)
+ [配置](#tensorflow-lite-object-detection-component-configuration)
+ [本地日志文件](#tensorflow-lite-object-detection-component-log-file)
+ [更改日志](#tensorflow-lite-object-detection-component-changelog)

## 版本
<a name="tensorflow-lite-object-detection-component-versions"></a>

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

## Type
<a name="tensorflow-lite-object-detection-component-type"></a>

<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)。

## 操作系统
<a name="tensorflow-lite-object-detection-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="tensorflow-lite-object-detection-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上进行升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="tensorflow-lite-object-detection-component-dependencies"></a>

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

------
#### [ 2.1.11 and 2.1.12 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0 | 软性 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | >=2.1.0 <2.2.0 | 硬性 | 
| [TensorFlow 精简版](tensorflow-lite-component.md) | >=2.5.0 <2.6.0 | 硬性 | 

------

## 配置
<a name="tensorflow-lite-object-detection-component-configuration"></a>

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

`accessControl`  
<a name="ml-config-accesscontrol-desc"></a>（可选）包含允许组件将消息发布到默认通知主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。  
默认值：  

```
{
   "aws.greengrass.ipc.mqttproxy": {
      "aws.greengrass.TensorFlowLiteObjectDetection:mqttproxy:1": {
         "policyDescription": "Allows access to publish via topic ml/tflite/object-detection.",
         "operations": [
            "aws.greengrass#PublishToIoTCore"
         ],
         "resources": [
            "ml/tflite/object-detection"
         ]
      }
   }
}
```

`PublishResultsOnTopic`  
<a name="ml-config-publishresultsontopic-desc"></a>（可选）要将推理结果发布到的主题。如果修改此值，则还必须修改 `accessControl` 参数中 `resources` 的值，以匹配您的自定义主题名称。  
默认值：`ml/tflite/object-detection`

`Accelerator`  <a name="ml-config-accelerator"></a>
要使用的加速器。支持的值为 `cpu` 和 `gpu`。  
依赖模型组件中的示例模型仅支持 CPU 加速。要对不同的自定义模型使用 GPU 加速，请[创建自定义模型组件](ml-customization.md#override-public-model-store)以覆盖公共模型组件。  
默认值：`cpu`

`ImageDirectory`  
<a name="ml-config-imagedirectory-desc"></a>（可选）设备上推理组件读取图像的文件夹路径。您可以将此值修改为设备上您有权 read/write 访问的任何位置。  
<a name="ml-config-imagedirectory-obj-default"></a>默认值：`/greengrass/v2/packages/artifacts-unarchived/component-name/object_detection/sample_images/`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`ImageName`  
<a name="ml-config-imagename-desc"></a>（可选）推理组件用作预测输入的图像名称。该组件可在 `ImageDirectory` 中指定的文件夹中查找图像。默认情况下，该组件使用默认图像目录中的示例图像。 AWS IoT Greengrass 支持以下图像格式：`jpeg`、`jpg``png`、和`npy`。  
<a name="ml-config-imagename-obj-default"></a>默认值：`objects.jpg`  
如果将 `UseCamera` 的值设置为 `true`，则忽略此配置参数。

`InferenceInterval`  <a name="ml-config-inferenceinterval"></a>
（可选）推理代码进行的每次预测之间的时间（以秒为单位）。示例推理代码无限期运行，并在指定的时间间隔内重复其预测。例如，如果您想使用摄像机拍摄的图像进行实时预测，则可以将其更改为较短的间隔。  
默认值：`3600`

`ModelResourceKey`  <a name="ml-config-modelresourcekey"></a>
<a name="ml-config-modelresourcekey-desc"></a>（可选）在依赖的公共模型组件中使用的模型。仅当使用自定义组件覆盖公共模型组件时，才修改此参数。  
默认值：  

```
{
    "model": "TensorFlowLite-SSD"
}
```

`UseCamera`  <a name="ml-config-usecamera"></a>
（可选）字符串值，用于定义是否使用连接到 Greengrass 核心设备的摄像机拍摄的图像。支持的值为 `true` 和 `false`。  
当您将此值设置为 `true` 时，示例推理代码将访问设备上的摄像机，并在本地对捕获的图像运行推理。`ImageName` 和 `ImageDirectory` 参数的值将被忽略。确保运行此组件的用户 read/write 可以访问相机存储捕获图像的位置。  
默认值：`false`  
当您查看此组件的配方时，`UseCamera` 配置参数不会显示在默认配置中。但是，在部署组件时，可以在[配置合并更新](update-component-configurations.md)中修改此参数的值。  
如果将 `UseCamera` 设置为 `true`，则还必须创建符号链接，以使推理组件能够从运行时组件创建的虚拟环境中访问您的摄像机。有关将摄像机与示例推理组件结合使用的更多信息，请参阅 [更新组件配置](ml-tutorial-image-classification-camera.md)。

**注意**  <a name="ml-config-not-visible-note"></a>
当您查看此组件的配方时，`UseCamera` 配置参数不会显示在默认配置中。但是，在部署组件时，可以在[配置合并更新](update-component-configurations.md)中修改此参数的值。  
如果将 `UseCamera` 设置为 `true`，则还必须创建符号链接，以使推理组件能够从运行时组件创建的虚拟环境中访问您的摄像机。有关将摄像机与示例推理组件结合使用的更多信息，请参阅 [更新组件配置](ml-tutorial-image-classification-camera.md)。

## 本地日志文件
<a name="tensorflow-lite-object-detection-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="tensorflow-lite-object-detection-component-changelog"></a>

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


|  版本  |  更改  | 
| --- | --- | 
|  2.1.12  |  对 Greengrass Nucleus 版本 2.12.5 发行版进行了版本更新。  | 
|  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  |  <a name="changelog-tensorflow-lite-object-detection-2.1.1"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/tensorflow-lite-object-detection-component.html)  | 
|  2.1.0  |  初始版本。  | 

# TensorFlow 精简版图像分类模型存储
<a name="tensorflow-lite-image-classification-model-store-component"></a>

 TensorFlow 精简版图像分类模型存储 (`variant.TensorFlowLite.ImageClassification.ModelStore`) 是一个机器学习模型组件，其中包含一个作为 Greengrass 工件的预训练的 MobileNet v1 模型。此组件中使用的示例模型是从 [TensorFlowHub](https://tfhub.dev/) 获取的，并使用 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) 实现。

[TensorFlow 精简版图像分类](tensorflow-lite-image-classification-component.md) 推理组件使用此组件作为模型来源的依赖关系。要使用自定义训练的 TensorFlow Lite 模型，请[创建此模型组件的自定义版本](ml-customization.md#override-public-model-store)，并将您的自定义模型作为组件构件包括在内。您可以使用此组件的配方作为模板来创建自定义模型组件。

**Topics**
+ [版本](#tensorflow-lite-image-classification-model-store-component-versions)
+ [Type](#tensorflow-lite-image-classification-model-store-component-type)
+ [操作系统](#tensorflow-lite-image-classification-model-store-component-os-support)
+ [要求](#tensorflow-lite-image-classification-model-store-component-requirements)
+ [依赖项](#tensorflow-lite-image-classification-model-store-component-dependencies)
+ [配置](#tensorflow-lite-image-classification-model-store-component-configuration)
+ [本地日志文件](#tensorflow-lite-image-classification-model-store-component-log-file)
+ [更改日志](#tensorflow-lite-image-classification-model-store-component-changelog)

## 版本
<a name="tensorflow-lite-image-classification-model-store-component-versions"></a>

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

## Type
<a name="tensorflow-lite-image-classification-model-store-component-type"></a>

<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)。

## 操作系统
<a name="tensorflow-lite-image-classification-model-store-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="tensorflow-lite-image-classification-model-store-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上进行升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="tensorflow-lite-image-classification-model-store-component-dependencies"></a>

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

------
#### [ 2.1.11 and 2.1.12  ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [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 | 软性 | 

------

## 配置
<a name="tensorflow-lite-image-classification-model-store-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="tensorflow-lite-image-classification-model-store-component-log-file"></a>

此组件不输出日志。

## 更改日志
<a name="tensorflow-lite-image-classification-model-store-component-changelog"></a>

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


|  版本  |  更改  | 
| --- | --- | 
|  2.1.12  |  对 Greengrass Nucleus 版本 2.12.5 发行版进行了版本更新。  | 
|  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  |  初始版本。  | 

# TensorFlow 精简版物体检测模型存储
<a name="tensorflow-lite-object-detection-model-store-component"></a>

 TensorFlow Lite 对象检测模型存储 (`variant.TensorFlowLite.ObjectDetection.ModelStore`) 是一个机器学习模型组件，其中包含作为 Greengrass 工件的预训练单枪检测 (SSD) MobileNet 模型。此组件中使用的示例模型是从 [TensorFlow Hub](https://tfhub.dev/) 获取的，并使用 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) 实现。

L [TensorFlow ite 对象检测](tensorflow-lite-object-detection-component.md)推理组件使用此组件作为模型源的依赖项。要使用自定义训练的 TensorFlow Lite 模型，请[创建此模型组件的自定义版本](ml-customization.md#override-public-model-store)，并将您的自定义模型作为组件构件包括在内。您可以使用此组件的配方作为模板来创建自定义模型组件。

**Topics**
+ [版本](#tensorflow-lite-object-detection-model-store-component-versions)
+ [Type](#tensorflow-lite-object-detection-model-store-component-type)
+ [操作系统](#tensorflow-lite-object-detection-model-store-component-os-support)
+ [要求](#tensorflow-lite-object-detection-model-store-component-requirements)
+ [依赖项](#tensorflow-lite-object-detection-model-store-component-dependencies)
+ [配置](#tensorflow-lite-object-detection-model-store-component-configuration)
+ [本地日志文件](#tensorflow-lite-object-detection-model-store-component-log-file)
+ [更改日志](#tensorflow-lite-object-detection-model-store-component-changelog)

## 版本
<a name="tensorflow-lite-object-detection-model-store-component-versions"></a>

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

## Type
<a name="tensorflow-lite-object-detection-model-store-component-type"></a>

<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)。

## 操作系统
<a name="tensorflow-lite-object-detection-model-store-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="tensorflow-lite-object-detection-model-store-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上进行升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

## 依赖项
<a name="tensorflow-lite-object-detection-model-store-component-dependencies"></a>

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

------
#### [ 2.1.11 and 2.1.12 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [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 | 软性 | 

------

## 配置
<a name="tensorflow-lite-object-detection-model-store-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="tensorflow-lite-object-detection-model-store-component-log-file"></a>

此组件不输出日志。

## 更改日志
<a name="tensorflow-lite-object-detection-model-store-component-changelog"></a>

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


|  版本  |  更改  | 
| --- | --- | 
|  2.1.12  |  对 Greengrass Nucleus 版本 2.12.5 发行版进行了版本更新。  | 
|  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  |  初始版本。  | 

# TensorFlow 精简版运行时
<a name="tensorflow-lite-component"></a>

 TensorFlow Lite 运行时组件 (`variant.TensorFlowLite`) 包含一个脚本，用于在设备上的虚拟环境中安装 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) 版本 2.5.0 及其依赖项。[TensorFlow Lite 图像分类](tensorflow-lite-image-classification-component.md)和 [TensorFlow Lite 对象检测](tensorflow-lite-object-detection-component.md)组件使用此运行时组件作为安装 TensorFlow Lite 的依赖项。

**注意**  
TensorFlow 精简版运行时组件 v2.5.6 及更高版本会重新安装 TensorFlow Lite 运行时及其依赖项的现有安装。重新安装有助于确保核心设备运行兼容版本的 TensorFlow Lite 及其依赖项。

要使用不同的运行时，您可以使用此组件的配方作为模板来[创建自定义机器学习组件](ml-customization.md)。

**Topics**
+ [版本](#tensorflow-lite-component-versions)
+ [Type](#tensorflow-lite-component-type)
+ [操作系统](#tensorflow-lite-component-os-support)
+ [要求](#tensorflow-lite-component-requirements)
+ [依赖项](#tensorflow-lite-component-dependencies)
+ [配置](#tensorflow-lite-component-configuration)
+ [使用量](#tensorflow-lite-component-usage)
+ [本地日志文件](#tensorflow-lite-component-log-file)
+ [更改日志](#tensorflow-lite-component-changelog)

## 版本
<a name="tensorflow-lite-component-versions"></a>

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

## Type
<a name="tensorflow-lite-component-type"></a>

<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)。

## 操作系统
<a name="tensorflow-lite-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="tensorflow-lite-component-requirements"></a>

此组件具有以下要求：<a name="ml-component-requirements"></a>
+ 在运行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上，[GNU C 库](https://www.gnu.org/software/libc/)（glibc）版本 2.27 或更高版本已安装在设备上。
+ 在 Armv7l 设备（例如 Raspberry Pi）上，OpenCV-Python 的依赖关系已安装在设备上。运行以下命令以安装依赖关系。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求：
  + NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy，因此你可以运行以下命令在设备 NumPy 上进行升级。

    ```
    pip3 install --upgrade numpy
    ```
  + 旧摄像机堆栈已在设备上启用。Raspberry Pi OS Bullseye 包含一个新摄像机堆栈，该堆栈默认处于启用状态且不兼容，因此您必须启用旧摄像机堆栈。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**启用旧摄像机堆栈**

    1. 运行以下命令以打开 Raspberry Pi 配置工具。

       ```
       sudo raspi-config
       ```

    1. 选择**接口选项**。

    1. 选择**旧摄像机**以启用旧摄像机堆栈。

    1. 重启 Raspberry Pi。

### 端点和端口
<a name="tensorflow-lite-component-endpoints"></a>

默认情况下，此组件使用安装程序脚本通过 `apt`、`yum`、`brew` 和 `pip` 命令来安装程序包，具体取决于核心设备使用的平台。此组件必须能够对各种程序包索引和存储库执行出站请求才能运行安装程序脚本。要允许此组件的出站流量通过代理或防火墙，您必须确定核心设备连接安装的程序包索引和存储库的端点。

在确定此组件的安装脚本所需的端点时，请考虑以下几点：
+ 端点取决于核心设备的平台。例如，运行 Ubuntu 的核心设备使用 `apt`，而不是 `yum` 或 `brew`。此外，使用相同程序包索引的设备可能具有不同的源列表，因此它们可能会从不同的存储库中检索软件包。
+ 使用相同程序包索引的多台设备之间的端点可能有所不同，因为每台设备都有自己的源列表，用于定义检索程序包的位置。
+ 端点可能会随时间而变化。每个软件包索引都提供您下载软件包的存储库，软件包的所有者可以更改软件包索引提供的内容 URLs 。 URLs 

有关此组件安装的依赖项以及如何禁用安装程序脚本的更多信息，请参阅[UseInstaller](#tensorflow-lite-component-config-useinstaller-term)配置参数。

有关基本操作所需的端点和端口的更多信息，请参阅[允许设备流量通过代理或防火墙](allow-device-traffic.md)。

## 依赖项
<a name="tensorflow-lite-component-dependencies"></a>

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

------
#### [ 2.5.14 and 2.5.15 ]

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


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

------
#### [ 2.5.13 ]

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


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

------
#### [ 2.5.12 ]

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


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

------
#### [ 2.5.11 ]

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


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

------
#### [ 2.5.10 ]

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


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

------
#### [ 2.5.9 ]

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


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

------
#### [ 2.5.8 ]

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


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

------
#### [ 2.5.5 - 2.5.7 ]

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


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

------
#### [ 2.5.3 and 2.5.4 ]

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


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

------
#### [ 2.5.2 ]

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


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

------
#### [ 2.5.1 ]

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


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

------
#### [ 2.5.0 ]

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


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

------

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

## 配置
<a name="tensorflow-lite-component-configuration"></a>

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

`MLRootPath`  
<a name="ml-config-mlrootpath-desc"></a>（可选）Linux 核心设备上推理组件读取图像和写入推理结果的文件夹路径。您可以将此值修改为设备上运行此组件的用户有权 read/write 访问的任何位置。  
<a name="ml-config-mlrootpath-default-tfl"></a>默认值：`/greengrass/v2/work/variant.TensorFlowLite/greengrass_ml`

`WindowsMLRootPath`  
此组件的 v1.6.6 及更高版本中提供了此功能。  
<a name="ml-config-windowsmlrootpath-desc"></a>（可选）Windows 核心设备上推理组件读取图像和写入推理结果的文件夹路径。您可以将此值修改为设备上运行此组件的用户有权 read/write 访问的任何位置。  
<a name="ml-config-windowsmlrootpath-default-dlr"></a>默认值：`C:\greengrass\v2\\work\\variant.DLR\\greengrass_ml`

  `UseInstaller`   
<a name="ml-config-useinstaller-desc-tfl"></a>（可选）字符串值，用于定义是否使用此组件中的安装程序脚本来安装 TensorFlow Lite 及其依赖项。支持的值为 `true` 和 `false`。  <a name="ml-config-useinstaller-libraries-tfl"></a>

`false`如果要使用自定义脚本进行 TensorFlow 精简版安装，或者想要在预构建的 Linux 映像中包含运行时依赖关系，请将此值设置为。要将此组件与 AWS提供的 TensorFlow Lite 推理组件一起使用，请安装以下库（包括所有依赖项），并将其提供给运行 ML 组件的系统用户（例如`ggc_user`）。
+ [Python](https://www.python.org/downloads/) 3.8 或更高版本，包括适用于您的 Python 版本的 `pip`
+ [TensorFlow 精简版 v2.](https://www.tensorflow.org/lite/guide/python) 5.0
+ [NumPy](https://numpy.org/install/)
+ [OpenCV-Python](https://pypi.org/project/opencv-python/)
+ [AWS IoT Device SDK 适用于 Python 的 v2](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [AWS 公共运行时 (CRT) Python](https://github.com/awslabs/aws-crt-python)
+ [Picamera](https://picamera.readthedocs.io/en/release-1.13/)（适用于 Raspberry Pi 设备）
+ [`awscam`模块](https://docs.aws.amazon.com/deeplens/latest/dg/deeplens-library-awscam-module.html)（用于 AWS DeepLens 设备）
+ libGL（适用于 Linux 设备）
<a name="ml-config-useinstaller-default"></a>默认值：`true`

## 使用量
<a name="tensorflow-lite-component-usage"></a>

使用此组件，将`UseInstaller`配置参数设置`true`为，在您的设备上安装 TensorFlow Lite 及其依赖项。该组件在您的设备上设置了一个虚拟环境，其中包括精简版所需的 TensorFlow OpenCV和 NumPy 库。

**注意**  <a name="ml-installer-component-usage-note"></a>
此组件中的安装程序脚本还会安装其他系统库的最新版本，这是在设备上配置虚拟环境和使用已安装的机器学习框架时所需要的。这可能会升级您设备上的现有系统库。查看下表，了解此组件为每个受支持的操作系统安装的库列表。如果要自定义此安装过程，请将 `UseInstaller` 配置参数设置为 `false`，然后开发自己的安装程序脚本。


| 平台 | 安装在设备系统上的库 | 安装在虚拟环境中的库 | 
| --- | --- | --- | 
| Armv7l | build-essential, cmake, ca-certificates, git | setuptools, wheel | 
| Amazon Linux 2 | mesa-libGL | 无 | 
| Ubuntu | wget | 无 | 

部署推理组件时，此运行时组件会首先验证您的设备是否已安装 TensorFlow Lite 及其依赖项。如果没有，则运行时组件会为您安装。

## 本地日志文件
<a name="tensorflow-lite-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/variant.TensorFlowLite.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\variant.TensorFlowLite.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/variant.TensorFlowLite.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\variant.TensorFlowLite.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="tensorflow-lite-component-changelog"></a>

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


|  版本  |  更改  | 
| --- | --- | 
|  2.5.15  |  对 Greengrass Nucleus 版本 2.12.5 发行版进行了版本更新。  | 
|  2.5.14  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.5.13  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.5.12  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.5.11  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.5.10  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.5.9  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.5.8  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.5.7  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/tensorflow-lite-component.html)  | 
|  2.5.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/tensorflow-lite-component.html)  | 
|  2.5.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/tensorflow-lite-component.html)  | 
|  2.5.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/tensorflow-lite-component.html)  | 
|  2.5.3  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.5.2  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.5.1  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.5.0  |  初始版本。  | 

# Modbus-RTU 协议适配器
<a name="modbus-rtu-protocol-adapter-component"></a>

Modbus-RTU 协议适配器组件 (`aws.greengrass.Modbus`) 从本地 Modbus RTU 设备轮询信息。

要使用此组件从本地 Modbus RTU 设备请求信息，请向该组件订阅的主题发布一条消息。在消息中，指定要发送到设备的 Modbus RTU 请求。然后，该组件发布一个包含 Modbus RTU 请求结果的响应。

**注意**  
该组件提供的功能与 V1 中的 Modbus RTU 协议适配器 AWS IoT Greengrass 连接器类似。有关更多信息，请参阅《AWS IoT Greengrass V1 开发人员指南》**中的 [Modbus RTU 协议适配器连接器](https://docs.aws.amazon.com/greengrass/latest/developerguide/modbus-protocol-adapter-connector.html)。

**Topics**
+ [版本](#modbus-rtu-protocol-adapter-component-versions)
+ [Type](#modbus-rtu-protocol-adapter-component-type)
+ [操作系统](#modbus-rtu-protocol-adapter-component-os-support)
+ [要求](#modbus-rtu-protocol-adapter-component-requirements)
+ [依赖项](#modbus-rtu-protocol-adapter-component-dependencies)
+ [配置](#modbus-rtu-protocol-adapter-component-configuration)
+ [输入数据](#modbus-rtu-protocol-adapter-component-input-data)
+ [输出数据](#modbus-rtu-protocol-adapter-component-output-data)
+ [Modbus RTU 请求和响应](#modbus-rtu-protocol-adapter-component-requests-responses)
+ [本地日志文件](#modbus-rtu-protocol-adapter-component-log-file)
+ [许可证](#modbus-rtu-protocol-adapter-component-licenses)
+ [更改日志](#modbus-rtu-protocol-adapter-component-changelog)

## 版本
<a name="modbus-rtu-protocol-adapter-component-versions"></a>

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

## Type
<a name="modbus-rtu-protocol-adapter-component-type"></a>

<a name="public-component-type-lambda"></a>此<a name="public-component-type-lambda-phrase"></a>组件是一个 Lambda 组件 (`aws.greengrass.lambda`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 使用 [Lambda 启动程序组件](lambda-launcher-component.md)运行此组件的 Lambda 函数。

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

## 操作系统
<a name="modbus-rtu-protocol-adapter-component-os-support"></a>

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

## 要求
<a name="modbus-rtu-protocol-adapter-component-requirements"></a>

此组件具有以下要求：
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+  AWS IoT Greengrass 核心设备和 Modbus 设备之间的物理连接。核心设备必须通过串行端口（例如 USB 端口）以物理方式连接到 Modbus RTU 网络。
+ <a name="connector-component-legacy-subscription-router-dependency"></a>要接收此组件的输出数据，在部署此组件时，必须合并[旧版订阅路由器组件](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) 的以下配置更新。此配置指定此组件发布响应的主题。

------
#### [ Legacy subscription router v2.1.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-modbus": {
        "id": "aws-greengrass-modbus",
        "source": "component:aws.greengrass.Modbus",
        "subject": "modbus/adapter/response",
        "target": "cloud"
      }
    }
  }
  ```

------
#### [ Legacy subscription router v2.0.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-modbus": {
        "id": "aws-greengrass-modbus",
        "source": "arn:aws:lambda:region:aws:function:aws-greengrass-modbus:version",
        "subject": "modbus/adapter/response",
        "target": "cloud"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*替换为您使用 AWS 区域 的。
  + *version*替换为该组件运行的 Lambda 函数的版本。要查找 Lambda 函数版本，您必须查看要部署的此组件版本配方。在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中打开此组件的详细信息页面，然后查找 **Lambda 函数**键值对。此键值对包含 Lambda 函数的名称和版本。

**重要**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
每次部署此组件时，都必须更新旧版订阅路由器上的 Lambda 函数版本。这样能够确保为部署的组件版本使用正确的 Lambda 函数版本。

------

  <a name="connector-component-create-deployments"></a>有关更多信息，请参阅 [创建部署](create-deployments.md)。
+ 支持 Modbus-RTU 协议适配器在 VPC 中运行。

## 依赖项
<a name="modbus-rtu-protocol-adapter-component-dependencies"></a>

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

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.16.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.15.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.14.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.4 and 2.1.5 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.8 and 2.1.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.7 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.5 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | >=1.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | >=1.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=1.0.0  | 硬性 | 

------

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

## 配置
<a name="modbus-rtu-protocol-adapter-component-configuration"></a>

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

**注意**  <a name="connector-component-lambda-parameters"></a>
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数，以便在您的设备上配置此组件。

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

`lambdaParams`  
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息：    
`EnvironmentVariables`  
包含 Lambda 函数的参数的对象。该对象包含以下信息：    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
核心设备上的物理 Modbus 串行端口的绝对路径，例如 `/dev/ttyS2`。  
要在容器中运行此组件，必须将此路径定义为该组件可以访问的系统设备（在 `containerParams.devices` 中）。默认情况下，此组件在容器中运行。  
此组件必须有权 read/write 访问该设备。  
`ModbusBaudRate`  
（可选）一个字符串值，指定与本地 Modbus TCP 设备进行串行通信的波特率。  
默认值：`9600`  
`ModbusByteSize`  
（可选）一个字符串值，指定与本地 Modbus TCP 设备进行串行通信时的字节大小。选择 `5`、`6`、`7` 或 `8` 位。  
默认值：`8`  
`ModbusParity`  
（可选）奇偶校验模式，用于验证与本地 Modbus TCP 设备进行串行通信时的数据完整性。  
+ `E`– 使用偶校验验证数据完整性。
+ `O`– 使用奇校验验证数据完整性。
+ `N`– 不验证数据完整性。
默认值：`N`  
`ModbusStopBits`  
（可选）一个字符串值，指定在与本地 Modbus TCP 设备进行串行通信时表示字节结束的位数。  
默认值：`1`

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
（可选）此组件的容器化模式。从以下选项中进行选择：  
+ `GreengrassContainer`— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。

  如果指定此选项，则必须指定系统设备（在 `containerParams.devices` 中）以允许容器访问 Modbus 设备。
+ `NoContainer` – 该组件不在隔离的运行时环境中运行。
默认值：`GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>（可选）包含此组件的容器参数的对象。如果您为 `containerMode` 指定 `GreengrassContainer`，则该组件使用这些参数。  
该对象包含以下信息：    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>（可选）要分配给组件的内存量（以千字节为单位）。  
默认为 512 MB（525,312 KB）。  
`devices`  
（可选）一个对象，指定组件可以在容器中访问的系统设备。  
要在容器中运行此组件，必须指定在 `ModbusLocalPort` 环境变量中配置的系统设备。
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`path`  
核心设备上系统设备的路径。此值必须与您为 `ModbusLocalPort` 配置的值相同。  
`permission`  
（可选）从容器访问系统设备的权限。此值必须为`rw`，表示该组件有权 read/write 访问系统设备。  
默认值：`rw`  
`addGroupOwner`  
（可选）是否将运行组件的系统组添加为系统设备的所有者。  
默认值：`true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（可选）包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是从 AWS IoT Core 还是本地 publish/subscribe 主题订阅 MQTT 主题。  
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`type`  
（可选）此组件用于订阅 publish/subscribe 消息的消息类型。从以下选项中进行选择：  
+ `PUB_SUB` – 订阅本地发布/订阅消息。如果选择此选项，主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。
+ `IOT_CORE`— 订阅 AWS IoT Core MQTT 消息。如果选择此选项，主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
默认值：`PUB_SUB`  
`topic`  
（可选）组件订阅以接收消息的主题。如果您为 `type` 指定 `IotCore`，则可以在本主题中使用 MQTT 通配符（`+` 和 `#`）。

**Example 示例：配置合并更新（容器模式）**  <a name="modbus-rtu-protocol-adapter-configuration-example-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "GreengrassContainer",
  "containerParams": {
    "devices": {
      "0": {
        "path": "/dev/ttyS2",
        "permission": "rw",
        "addGroupOwner": true
      }
    }
  }
}
```

**Example 示例：配置合并更新（无容器模式）**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "NoContainer"
}
```

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

`lambdaParams`  
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息：    
`EnvironmentVariables`  
包含 Lambda 函数的参数的对象。该对象包含以下信息：    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
核心设备上的物理 Modbus 串行端口的绝对路径，例如 `/dev/ttyS2`。  
要在容器中运行此组件，必须将此路径定义为该组件可以访问的系统设备（在 `containerParams.devices` 中）。默认情况下，此组件在容器中运行。  
此组件必须有权 read/write 访问该设备。

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
（可选）此组件的容器化模式。从以下选项中进行选择：  
+ `GreengrassContainer`— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。

  如果指定此选项，则必须指定系统设备（在 `containerParams.devices` 中）以允许容器访问 Modbus 设备。
+ `NoContainer` – 该组件不在隔离的运行时环境中运行。
默认值：`GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>（可选）包含此组件的容器参数的对象。如果您为 `containerMode` 指定 `GreengrassContainer`，则该组件使用这些参数。  
该对象包含以下信息：    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>（可选）要分配给组件的内存量（以千字节为单位）。  
默认为 512 MB（525,312 KB）。  
`devices`  
（可选）一个对象，指定组件可以在容器中访问的系统设备。  
要在容器中运行此组件，必须指定在 `ModbusLocalPort` 环境变量中配置的系统设备。
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`path`  
核心设备上系统设备的路径。此值必须与您为 `ModbusLocalPort` 配置的值相同。  
`permission`  
（可选）从容器访问系统设备的权限。此值必须为`rw`，表示该组件有权 read/write 访问系统设备。  
默认值：`rw`  
`addGroupOwner`  
（可选）是否将运行组件的系统组添加为系统设备的所有者。  
默认值：`true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（可选）包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是从 AWS IoT Core 还是本地 publish/subscribe 主题订阅 MQTT 主题。  
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`type`  
（可选）此组件用于订阅 publish/subscribe 消息的消息类型。从以下选项中进行选择：  
+ `PUB_SUB` – 订阅本地发布/订阅消息。如果选择此选项，主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。
+ `IOT_CORE`— 订阅 AWS IoT Core MQTT 消息。如果选择此选项，主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
默认值：`PUB_SUB`  
`topic`  
（可选）组件订阅以接收消息的主题。如果您为 `type` 指定 `IotCore`，则可以在本主题中使用 MQTT 通配符（`+` 和 `#`）。

**Example 示例：配置合并更新（容器模式）**  <a name="modbus-rtu-protocol-adapter-configuration-example-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "GreengrassContainer",
  "containerParams": {
    "devices": {
      "0": {
        "path": "/dev/ttyS2",
        "permission": "rw",
        "addGroupOwner": true
      }
    }
  }
}
```

**Example 示例：配置合并更新（无容器模式）**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "NoContainer"
}
```

------

## 输入数据
<a name="modbus-rtu-protocol-adapter-component-input-data"></a>

此组件接受以下主题中的 Modbus RTU 请求参数，并向设备发送 Modbus RTU 请求。<a name="connector-component-local-publish"></a>默认情况下，此组件订阅本地 publish/subscribe 消息。有关如何从您的自定义组件向此组件发布消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。

**默认主题（本地发布/订阅）：**`modbus/adapter/request`

<a name="connector-component-input-properties"></a>消息接受以下属性。输入消息必须采用 JSON 格式。

`request`  
要发送的 Modbus RTU 请求的参数。  
请求消息的形状取决于其所表示的 Modbus RTU 请求类型。所有请求都需要具有以下属性。  
类型：包含以下信息的 `object`：    
`operation`  
要运行的操作的名称。例如，指定 `ReadCoilsRequest` 在 Modbus RTU 设备上读取线圈。有关支持的操作的更多信息，请参阅[Modbus RTU 请求和响应](#modbus-rtu-protocol-adapter-component-requests-responses)。  
类型：`string`  
`device`  
请求的目标设备。  
此值必须为介于 `0` 和 `247` 之间的整数。  
类型：`integer`
要包含在请求中的其他参数取决于操作。此组件处理[循环冗余校验（CRC）](https://en.wikipedia.org/wiki/Cyclic_redundancy_check)，以验证您的数据请求。  
如果您的请求包含 `address` 属性，则必须将其值指定为整数。例如 `"address": 1`。

`id`  <a name="connector-component-input-property-id"></a>
请求的任意 ID。使用此属性将输入请求映射到输出响应。指定此属性时，组件会将响应对象中的 `id` 属性设置为该值。  
类型：`string`

**Example 示例输入：读取线圈请求**  

```
{
  "request": {
    "operation": "ReadCoilsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "MyRequest"
}
```

## 输出数据
<a name="modbus-rtu-protocol-adapter-component-output-data"></a>

 <a name="connector-component-output-data"></a>默认情况下，此组件会将响应作为输出数据发布至以下 MQTT 主题。您必须在[旧版订阅路由器组件](legacy-subscription-router-component.md)的配置中将主题指定为 `subject`。有关如何在自定义组件中订阅此主题消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。

**默认主题 (AWS IoT Core MQTT)：**`modbus/adapter/response`

响应消息的形状取决于请求操作和响应状态。有关示例，请参阅 [示例请求和响应](#modbus-rtu-protocol-adapter-component-examples)。

每个响应均包括以下属性：

`response`  
来自 Modbus RTU 设备的响应。  
类型：包含以下信息的 `object`：    
`status`  
请求的状态。状态可以是以下值之一：  
+ `Success` – 请求有效，组件已将请求发送至 Modbus RTU 网络且 Modbus RTU 网络返回了响应。
+ `Exception` – 请求有效，组件已将请求发送至 Modbus RTU 网络且 Modbus RTU 网络返回了异常。有关更多信息，请参阅 [响应状态：异常](#modbus-rtu-protocol-adapter-component-response-exception)。
+ `No Response` – 请求无效，组件在向 Modbus RTU 网络发送请求之前发现了错误。有关更多信息，请参阅 [响应状态：无响应](#modbus-rtu-protocol-adapter-component-response-noresponse)。  
`operation`  
组件请求的操作。  
`device`  
组件发送请求的设备。  
`payload`  
来自 Modbus RTU 设备的响应。如果 `status` 为 `No Response`，则该对象只包含一个 `error` 属性及错误的描述（例如 `[Input/Output] No Response received from the remote unit`）。

`id`  
请求的 ID，可以使用它来识别哪个响应与哪个请求相对应。

**注意**  
写入操作的响应只不过是对请求的回显。尽管写入响应不包含有意义的信息，但最好还是检查一下响应的状态以查看请求是成功还是失败。

**Example 示例输出：成功**  

```
{
  "response" : {
    "status" : "success",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 1,
      "bits": [1]
    }
  },
  "id" : "MyRequest"
}
```

**Example 示例输出：失败**  

```
{
  "response" : {
    "status" : "fail",
    "error_message": "Internal Error",
    "error": "Exception",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 129,
      "exception_code": 2
    }
  },
  "id" : "MyRequest"
}
```

有关更多示例，请参阅[示例请求和响应](#modbus-rtu-protocol-adapter-component-examples)。

## Modbus RTU 请求和响应
<a name="modbus-rtu-protocol-adapter-component-requests-responses"></a>

此连接器接受 Modbus RTU 请求参数作为[输入数据](#modbus-rtu-protocol-adapter-component-input-data)，并发布响应作为[输出数据](#modbus-rtu-protocol-adapter-component-output-data)。

支持以下常见操作。


| 请求中的操作名称 | 响应中的函数代码 | 
| --- | --- | 
| ReadCoilsRequest | 01 | 
| ReadDiscreteInputsRequest | 02 | 
| ReadHoldingRegistersRequest | 03 | 
| ReadInputRegistersRequest | 04 | 
| WriteSingleCoilRequest | 05 | 
| WriteSingleRegisterRequest | 06 | 
| WriteMultipleCoilsRequest | 15 | 
| WriteMultipleRegistersRequest | 16 | 
| MaskWriteRegisterRequest | 22 | 
| ReadWriteMultipleRegistersRequest | 23 | 

### 示例请求和响应
<a name="modbus-rtu-protocol-adapter-component-examples"></a>

以下是受支持操作的示例请求和响应。

读取线圈  
**请求示例：**  

```
{
  "request": {
    "operation": "ReadCoilsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 1,
      "bits": [1]
    }
  },
  "id" : "TestRequest"
}
```

读取离散输入  
**请求示例：**  

```
{
  "request": {
    "operation": "ReadDiscreteInputsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadDiscreteInputsRequest",
    "payload": {
      "function_code": 2,
      "bits": [1]
    }
  },
  "id" : "TestRequest"
}
```

读取保持寄存器  
**请求示例：**  

```
{
  "request": {
    "operation": "ReadHoldingRegistersRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadHoldingRegistersRequest",
    "payload": {
      "function_code": 3,
      "registers": [20,30]
    }
  },
  "id" : "TestRequest"
}
```

读取输入寄存器  
**请求示例：**  

```
{
  "request": {
    "operation": "ReadInputRegistersRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```

写入单线圈  
**请求示例：**  

```
{
  "request": {
    "operation": "WriteSingleCoilRequest",
    "device": 1,
    "address": 1,
    "value": 1
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "WriteSingleCoilRequest",
    "payload": {
      "function_code": 5,
      "address": 1,
      "value": true
    }
  },
  "id" : "TestRequest"
}
```

写入单寄存器  
**请求示例：**  

```
{
  "request": {
    "operation": "WriteSingleRegisterRequest",
    "device": 1,
    "address": 1,
    "value": 1
  },
  "id": "TestRequest"
}
```

写入多线圈  
**请求示例：**  

```
{
  "request": {
    "operation": "WriteMultipleCoilsRequest",
    "device": 1,
    "address": 1,
    "values": [1,0,0,1]
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "WriteMultipleCoilsRequest",
    "payload": {
      "function_code": 15,
      "address": 1,
      "count": 4
    }
  },
  "id" : "TestRequest"
}
```

写入多寄存器  
**请求示例：**  

```
{
  "request": {
    "operation": "WriteMultipleRegistersRequest",
    "device": 1,
    "address": 1,
    "values": [20,30,10]
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "WriteMultipleRegistersRequest",
    "payload": {
      "function_code": 23,
      "address": 1,
      "count": 3
    }
  },
  "id" : "TestRequest"
}
```

屏蔽写入寄存器  
**请求示例：**  

```
{
  "request": {
    "operation": "MaskWriteRegisterRequest",
    "device": 1,
    "address": 1,
    "and_mask": 175,
    "or_mask": 1
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "MaskWriteRegisterRequest",
    "payload": {
      "function_code": 22,
      "and_mask": 0,
      "or_mask": 8
    }
  },
  "id" : "TestRequest"
}
```

读取写入多寄存器  
**请求示例：**  

```
{
  "request": {
    "operation": "ReadWriteMultipleRegistersRequest",
    "device": 1,
    "read_address": 1,
    "read_count": 2,
    "write_address": 3,
    "write_registers": [20,30,40]
  },
  "id": "TestRequest"
}
```
**响应示例：**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadWriteMultipleRegistersRequest",
    "payload": {
      "function_code": 23,
      "registers": [10,20,10,20]
    }
  },
  "id" : "TestRequest"
}
```
响应包括组件读取的寄存器。

### 响应状态：异常
<a name="modbus-rtu-protocol-adapter-component-response-exception"></a>

当请求格式有效但请求未成功完成时，可能会发生异常。在此情况下，响应将包含以下信息：
+ `status` 设置为 `Exception`。
+ `function_code` 等于请求的函数代码 \$1 128。
+ `exception_code` 包含异常代码。有关更多信息，请参阅 Modbus 异常代码。

**示例**：

```
{
  "response": {
    "status": "fail",
    "error_message": "Internal Error",
    "error": "Exception",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 129,
      "exception_code": 2
    }
  },
  "id": "TestRequest"
}
```

### 响应状态：无响应
<a name="modbus-rtu-protocol-adapter-component-response-noresponse"></a>

该连接器对 Modbus 请求执行验证检查。例如，它会检查无效格式和缺失字段。如果验证失败，则连接器不会发送请求。而是会返回一个包含以下信息的响应：
+ `status` 设置为 `No Response`。
+ `error` 包含错误原因。
+ `error_message` 包含错误消息。

**示例：**

```
{
  "response": {
    "status": "fail",
    "error_message": "Invalid address field. Expected <type 'int'>, got <type 'str'>",
    "error": "No Response",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "error": "Invalid address field. Expected Expected <type 'int'>, got <type 'str'>"
    }
  },
  "id": "TestRequest"
}
```

如果请求目标是不存在的设备，或者 Modbus RTU 网络不起作用，您可能会获得采用“无响应”格式的 `ModbusIOException`。

```
{
  "response": {
    "status": "fail",
    "error_message": "[Input/Output] No Response received from the remote unit",
    "error": "No Response",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "error": "[Input/Output] No Response received from the remote unit"
    }
  },
  "id": "TestRequest"
}
```

## 本地日志文件
<a name="modbus-rtu-protocol-adapter-component-log-file"></a>

此组件使用以下日志文件。

```
/greengrass/v2/logs/aws.greengrass.Modbus.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径。

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.Modbus.log
  ```

## 许可证
<a name="modbus-rtu-protocol-adapter-component-licenses"></a>

此组件包含以下第三方软件/许可：
+ [pymodbus](https://github.com/riptideio/pymodbus/blob/master/README.rst)/BSD 许可证
+ [pyserial](https://github.com/pyserial/pyserial)/BSD 许可证

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="modbus-rtu-protocol-adapter-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.11  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.1.10  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.1.9  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.1.8  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.7  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.6  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.5  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html) | 
|  2.1.4  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.3  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html)  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.5  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.4  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

# MQTT 网桥
<a name="mqtt-bridge-component"></a>

MQTT 桥接组件 (`aws.greengrass.clientdevices.mqtt.Bridge`) 在客户端设备、本地 Greengrass 发布/订阅和之间中继 MQTT 消息。 AWS IoT Core您可以使用此组件在自定义组件中处理来自客户端设备的 MQTT 消息，并将客户端设备与 AWS 云同步。

**注意**  <a name="client-device-component-context"></a>
客户端设备是本地 IoT 设备，连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。

您可以使用此组件，在以下消息代理之间中继消息：
+ 本地 MQTT – 本地 MQTT 5 代理处理客户端设备与核心设备之间的消息。
+ 本地 publish/subscribe — 本地 Greengrass 消息代理处理核心设备上组件之间的消息。有关如何在 Greengrass 组件中与这些消息交互的更多信息，请参阅[发布/订阅本地消息](ipc-publish-subscribe.md)。
+ AWS IoT Core — AWS IoT Core MQTT 代理处理物联网设备和 AWS 云 目标之间的消息。有关如何在 Greengrass 组件中与这些消息交互的更多信息，请参阅[发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。

**Topics**
+ [版本](#mqtt-bridge-component-versions)
+ [Type](#mqtt-bridge-component-type)
+ [操作系统](#mqtt-bridge-component-os-support)
+ [要求](#mqtt-bridge-component-requirements)
+ [依赖项](#mqtt-bridge-component-dependencies)
+ [配置](#mqtt-bridge-component-configuration)
+ [本地日志文件](#mqtt-bridge-component-log-file)
+ [更改日志](#mqtt-bridge-component-changelog)

## 版本
<a name="mqtt-bridge-component-versions"></a>

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

## Type
<a name="mqtt-bridge-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="mqtt-bridge-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="mqtt-bridge-component-requirements"></a>

此组件具有以下要求：
+ 如果您将核心设备的 MQTT 代理组件配置为使用默认端口 8883 以外的端口，则必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为在代理运行的端口进行连接。
+ 支持在 VPC 中运行 MQTT 网桥组件。

## 依赖项
<a name="mqtt-bridge-component-dependencies"></a>

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

------
#### [ 2.3.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 硬性 | 

------
#### [ 2.3.0 and 2.3.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 2.2.5 and 2.2.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 2.2.3 and 2.2.4 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.4.0 | 硬性 | 

------
#### [ 2.2.0 – 2.2.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.3.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.2.0 | 硬性 | 

------
#### [ 2.0.0 to 2.1.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.1.0 | 硬性 | 

------

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

## 配置
<a name="mqtt-bridge-component-configuration"></a>

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

------
#### [ 2.3.0 – 2.3.2 ]

`mqttTopicMapping`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
您可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
要在 `Pubsub` 源代理中使用 MQTT 主题通配符，您必须使用 v2.6.0 或更高版本的 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)。  
`targetTopicPrefix`  
此组件中继消息时要添加到目标主题的前缀。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

mqtt5 RouteOptions  
（可选）提供用于配置主题映射的选项，以便将消息从源主题桥接到目标主题。  
该对象包含以下信息：    
*mqtt5RouteOptionsNameKey*  
用于主题映射的路由选项的名称。*mqtt5RouteOptionsNameKey*替换为`mqttTopicMapping`字段中*topicMappingNameKey*定义的匹配项。  
该对象包含以下信息：    
noLocal  
（可选）启用后，网桥不会转发有关网桥本身发布的主题的消息。使用此参数可防止循环，如下所示：  

```
{
    "mqtt5RouteOptions": {
        "toIoTCore": {
            "noLocal": true
        }
    },
    "mqttTopicMapping": {
        "toIoTCore": {
            "topic": "device",
            "source": "LocalMqtt",
            "target": "IotCore"
        },
        "toLocal": {
            "topic": "device",
            "source": "IotCore",
            "target": "LocalMqtt"
        }
    }
}
```
只有 `source` 为 `LocalMqtt` 的路由支持 `noLocal`。  
默认：false  
retainAsPublished  
（可选）启用后，网桥转发的消息与向该路由的代理发布的消息具有相同的 `retain` 标志。  
只有 `source` 为 `LocalMqtt` 的路由支持 `retainAsPublished`。  
默认：false

mqtt  
（可选）用于与本地代理通信的 MQTT 协议设置。    
version  
（可选）网桥用于与本地代理通信的 MQTT 协议版本。必须与在内核配置中选择的 MQTT 版本相同。  
请从以下内容中选择：  
+ `mqtt3`
+ `mqtt5`
当 `mqttTopicMapping` 对象的 `source` 或 `target` 字段设置为 `LocalMqtt` 时，您必须部署 MQTT 代理。如果选择 `mqtt5` 选项，您必须使用 [MQTT 5 代理（EMQX）](mqtt-broker-emqx-component.md)。  
默认值：`mqtt3`  
ackTimeoutSeconds  
（可选）在操作失败之前等待 PUBACK、SUBACK 或 UNSUBACK 包的时间间隔。  
默认值：60  
connAckTimeout女士  
（可选）在关闭连接之前等待 CONNACK 包的时间间隔。  
默认值：20000（20 秒）  
pingTimeoutMs  
（可选）网桥等待从本地代理接收 PINGACK 消息的时长（以毫秒为单位）。如果等待时间超过了超时时间，则网桥将关闭并重新打开 MQTT 连接。此值必须小于 `keepAliveTimeoutSeconds`。  
默认值：30000（30 秒）  
keepAliveTimeout秒  
（可选）网桥为保持 MQTT 连接处于活动状态而发送的每条 PING 消息之间的时间（以秒为单位）。此值必须大于 `pingTimeoutMs`。  
默认值：60  
maxReconnectDelay女士  
（可选）MQTT 重新连接的最长时间（以秒为单位）。  
默认值：30000（30 秒）  
minReconnectDelay女士  
（可选）MQTT 重新连接的最短时间（以秒为单位）。  
receiveMaximum  
（可选）网桥可以发送的未确认 QoS1 数据包的最大数量。  
默认值：100  
maximumPacketSize  
客户端将接受的 MQTT 包的最大字节数。  
默认值：null（无限制）  
sessionExpiryInterval  
（可选）您可以请求在网桥和本地代理之间持续会话的时长（以秒为单位）。  
默认值：4294967295（会话永不过期）

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`120`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
以下示例配置更新可指定以下内容：  
+ 将来自客户端设备的消息中继到与 AWS IoT Core 主题过滤器匹配`clients/+/hello/world`的主题。
+ 将与主题过滤器匹配的 publish/subscribe 主题的消息从客户端设备中继到`clients/+/detections`本地，并将`events/input/`前缀添加到目标主题。生成的目标主题与 `events/input/clients/+/detections` 主题筛选条件匹配。
+ 将来自客户端设备的消息中继到 AWS IoT Core 与主题过滤器匹配`clients/+/status`的主题，并在目标主题中添加`$aws/rules/StatusUpdateRule/`前缀。此示例使用[基本摄取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)，直接将这些消息直接中继到名为 `StatusUpdateRule` 的 [AWS IoT 规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)，以降低成本。

```
{
  "mqttTopicMapping": {
    "ClientDeviceHelloWorld": {
      "topic": "clients/+/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    },
    "ClientDeviceEvents": {
      "topic": "clients/+/detections",
      "targetTopicPrefix": "events/input/",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "ClientDeviceCloudStatusUpdate": {
      "topic": "clients/+/status",
      "targetTopicPrefix": "$aws/rules/StatusUpdateRule/",
      "source": "LocalMqtt",
      "target": "IotCore"
    }
  }
}
```

**Example 示例：配置 MQTT 5**  
以下示例配置更新以下内容：  
+ 允许网桥在本地代理中使用 MQTT 5 协议。
+ 将 MQTT 保留配置为 `ClientDeviceHelloWorld` 主题映射的已发布设置。

```
{
  "mqttTopicMapping": {
    "ClientDeviceHelloWorld": {
      "topic": "clients/+/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    }
  },
  "mqtt5RouteOptions": {
    "ClientDeviceHelloWorld": {
      "retainAsPublished": true
    }
  },
  "mqtt": {
    "version": "mqtt5"
  }
}
```

------
#### [ 2.2.6 ]

`mqttTopicMapping`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
您可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
要在 `Pubsub` 源代理中使用 MQTT 主题通配符，您必须使用 v2.6.0 或更高版本的 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)。  
`targetTopicPrefix`  
此组件中继消息时要添加到目标主题的前缀。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`120`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
以下示例配置更新可指定以下内容：  
+ 将来自客户端设备的消息中继到与 AWS IoT Core 主题过滤器匹配`clients/+/hello/world`的主题。
+ 将与主题过滤器匹配的 publish/subscribe 主题的消息从客户端设备中继到`clients/+/detections`本地，并将`events/input/`前缀添加到目标主题。生成的目标主题与 `events/input/clients/+/detections` 主题筛选条件匹配。
+ 将来自客户端设备的消息中继到 AWS IoT Core 与主题过滤器匹配`clients/+/status`的主题，并在目标主题中添加`$aws/rules/StatusUpdateRule/`前缀。此示例使用[基本摄取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)，直接将这些消息直接中继到名为 `StatusUpdateRule` 的 [AWS IoT 规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)，以降低成本。

```
{
  "mqttTopicMapping": {
    "ClientDeviceHelloWorld": {
      "topic": "clients/+/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    },
    "ClientDeviceEvents": {
      "topic": "clients/+/detections",
      "targetTopicPrefix": "events/input/",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "ClientDeviceCloudStatusUpdate": {
      "topic": "clients/+/status",
      "targetTopicPrefix": "$aws/rules/StatusUpdateRule/",
      "source": "LocalMqtt",
      "target": "IotCore"
    }
  }
}
```

------
#### [ 2.2.0 - 2.2.5 ]

`mqttTopicMapping`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
您可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
要在 `Pubsub` 源代理中使用 MQTT 主题通配符，您必须使用 v2.6.0 或更高版本的 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)。  
`targetTopicPrefix`  
此组件中继消息时要添加到目标主题的前缀。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-with-prefix"></a>
以下示例配置更新可指定以下内容：  
+ 将来自客户端设备的消息中继到与 AWS IoT Core 主题过滤器匹配`clients/+/hello/world`的主题。
+ 将与主题过滤器匹配的 publish/subscribe 主题的消息从客户端设备中继到`clients/+/detections`本地，并将`events/input/`前缀添加到目标主题。生成的目标主题与 `events/input/clients/+/detections` 主题筛选条件匹配。
+ 将来自客户端设备的消息中继到 AWS IoT Core 与主题过滤器匹配`clients/+/status`的主题，并在目标主题中添加`$aws/rules/StatusUpdateRule/`前缀。此示例使用[基本摄取](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)，直接将这些消息直接中继到名为 `StatusUpdateRule` 的 [AWS IoT 规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)，以降低成本。

```
{
  "mqttTopicMapping": {
    "ClientDeviceHelloWorld": {
      "topic": "clients/+/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    },
    "ClientDeviceEvents": {
      "topic": "clients/+/detections",
      "targetTopicPrefix": "events/input/",
      "source": "LocalMqtt",
      "target": "Pubsub"
    },
    "ClientDeviceCloudStatusUpdate": {
      "topic": "clients/+/status",
      "targetTopicPrefix": "$aws/rules/StatusUpdateRule/",
      "source": "LocalMqtt",
      "target": "IotCore"
    }
  }
}
```

------
#### [ 2.1.x ]

`mqttTopicMapping`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping"></a>
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
如果您指定 `LocalMqtt` 或 `IotCore` 源代理，则可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

`brokerUri`  <a name="mqtt-bridge-component-configuration-broker-uri"></a>
（可选）本地 MQTT 代理的 URI。如果您将 MQTT 代理配置为使用与默认端口 8883 不同的端口，则必须指定此参数。使用以下格式，并*port*替换为 MQTT 代理运行的端口：`ssl://localhost:port`。  
默认值：`ssl://localhost:8883`

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-no-prefix"></a>
以下示例配置更新指定将来自客户端设备的消息中继到`clients/MyClientDevice1/hello/world`和`clients/MyClientDevice2/hello/world`主题 AWS IoT Core 上。  

```
{
  "mqttTopicMapping": {
    "ClientDevice1HelloWorld": {
      "topic": "clients/MyClientDevice1/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    },
    "ClientDevice2HelloWorld": {
      "topic": "clients/MyClientDevice2/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    }
  }
}
```

------
#### [ 2.0.x ]

`mqttTopicMapping`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping"></a>
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-description"></a>要桥接的主题映射。此组件订阅有关源主题的消息，并将其收到的消息发布到目标主题。每个主题映射都定义了主题、源类型和目标类型。  
该对象包含以下信息：    
`topicMappingNameKey`  
<a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-name-key-description"></a>此主题映射的名称。*topicMappingNameKey*替换为可帮助您识别此主题映射的名称。  
该对象包含以下信息：    
`topic`  
用于在源代理和目标代理之间桥接的主题或主题筛选条件。  
如果您指定 `LocalMqtt` 或 `IotCore` 源代理，则可以使用 `+` 和 `#` MQTT 主题通配符，中继与主题筛选条件匹配的所有主题上的消息。有关更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MMQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。  
`source`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-source"></a>
源消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。  
`target`  <a name="mqtt-bridge-component-configuration-mqtt-topic-mapping-target"></a>
目标消息代理。从以下选项中进行选择：  <a name="mqtt-bridge-component-configuration-topic-types"></a>
+ `LocalMqtt` – 客户端设备通信的本地 MQTT 代理。
+ `Pubsub`— 本地的 Greengrass 消息代 publish/subscribe 理。
+ `IotCore`— AWS IoT Core MQTT 消息代理。
**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 AWS IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 AWS IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。
`source` 与 `target` 必须不同。

**Example 示例：配置合并更新**  <a name="mqtt-bridge-component-configuration-example-no-prefix"></a>
以下示例配置更新指定将来自客户端设备的消息中继到`clients/MyClientDevice1/hello/world`和`clients/MyClientDevice2/hello/world`主题 AWS IoT Core 上。  

```
{
  "mqttTopicMapping": {
    "ClientDevice1HelloWorld": {
      "topic": "clients/MyClientDevice1/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    },
    "ClientDevice2HelloWorld": {
      "topic": "clients/MyClientDevice2/hello/world",
      "source": "LocalMqtt",
      "target": "IotCore"
    }
  }
}
```

------

## 本地日志文件
<a name="mqtt-bridge-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="mqtt-bridge-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.3.2  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.5.0 发行版进行了版本更新。  | 
| 2.3.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
| 2.3.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.6  |  <a name="changelog-mqtt-bridge-2.2.6"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.5  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.4.0 发行版进行了版本更新。  | 
|  2.2.4  |  对 Greengrass [客户端设备身份验证](client-device-auth-component.md)版本 2.3.0 发行版进行了版本更新。  | 
|  2.2.3  |  此版本包含错误修复和改进。  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.2.0  |  <a name="changelog-mqtt-bridge-2.2.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-bridge-component.html)  | 
|  2.0.1  |  此版本包括错误修复和改进。  | 
|  2.0.0  |  初始版本。  | 

# MQTT 3.1.1 代理（Moquette）
<a name="mqtt-broker-moquette-component"></a>

Moquette MQTT 代理组件（`aws.greengrass.clientdevices.mqtt.Moquette`）处理客户端设备与 Greengrass 核心设备之间的 MQTT 消息。此组件提供 [Moquette MQTT 代理](https://github.com/moquette-io/moquette)的修改版本。部署此 MQTT 代理来运行轻量级 MQTT 代理。有关如何选择 MQTT 代理的更多信息，请参阅[选择 MQTT 代理](choose-local-mqtt-broker.md)。

此代理实施 MQTT 3.1.1 协议。此代理包括对 QoS 0、QoS 1、QoS 2 保留消息、最后遗嘱消息和持久会话的支持。

**注意**  <a name="client-device-component-context"></a>
客户端设备是本地 IoT 设备，连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。

**Topics**
+ [版本](#mqtt-broker-moquette-component-versions)
+ [Type](#mqtt-broker-moquette-component-type)
+ [操作系统](#mqtt-broker-moquette-component-os-support)
+ [要求](#mqtt-broker-moquette-component-requirements)
+ [依赖项](#mqtt-broker-moquette-component-dependencies)
+ [配置](#mqtt-broker-moquette-component-configuration)
+ [本地日志文件](#mqtt-broker-moquette-component-log-file)
+ [更改日志](#mqtt-broker-moquette-component-changelog)

## 版本
<a name="mqtt-broker-moquette-component-versions"></a>

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

## Type
<a name="mqtt-broker-moquette-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="mqtt-broker-moquette-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="mqtt-broker-moquette-component-requirements"></a>

此组件具有以下要求：
+ 核心设备必须能够接受 MQTT 代理运行端口的连接。默认情况下，此组件在端口 8883 运行 MQTT 代理。配置此组件时，您可以指定其他端口。

  <a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>如果您指定其它端口，并且使用 [MQTT 网桥组件](mqtt-bridge-component.md)将 MQTT 消息中继到其它代理，您必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为使用 MQTT 代理运行的端口。

  <a name="mqtt-broker-configuration-ip-detector-requirement"></a>如果您指定其它端口，并使用 [IP 检测器组件](ip-detector-component.md)管理 MQTT 代理端点，则必须使用 IP 检测器 v2.1.0 或更高版本。将其配置为报告 MQTT 代理运行的端口。
+ 支持 Moquette MQTT 代理组件在 VPC 中运行。

## 依赖项
<a name="mqtt-broker-moquette-component-dependencies"></a>

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

------
#### [ 2.3.7 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 硬性 | 

------
#### [ 2.3.2 – 2.3.6 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 2.3.0 and 2.3.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.4.0 | 硬性 | 

------
#### [ 2.2.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.3.0 | 硬性 | 

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

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.2.0 | 硬性 | 

------
#### [ 2.0.0 - 2.0.2 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.1.0 | 硬性 | 

------

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

## 配置
<a name="mqtt-broker-moquette-component-configuration"></a>

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

`moquette`  
（可选）要使用的 [Moquette MQTT 代理](https://github.com/moquette-io/moquette)配置。您可以在此组件中配置 Moqeutte 配置选项的子集。有关更多信息，请参阅 [Moquette 配置文件](https://github.com/moquette-io/moquette/blob/main/distribution/src/main/resources/moquette.conf)中的内联注释。  
该对象包含以下信息：    
`ssl_port`  
（可选）MQTT 代理运行的端口。  
<a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>如果您指定其它端口，并且使用 [MQTT 网桥组件](mqtt-bridge-component.md)将 MQTT 消息中继到其它代理，您必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为使用 MQTT 代理运行的端口。  
<a name="mqtt-broker-configuration-ip-detector-requirement"></a>如果您指定其它端口，并使用 [IP 检测器组件](ip-detector-component.md)管理 MQTT 代理端点，则必须使用 IP 检测器 v2.1.0 或更高版本。将其配置为报告 MQTT 代理运行的端口。
默认值：`8883`  
`host`  
（可选）MQTT 代理绑定的接口。例如，您可以更改此参数，使 MQTT 代理仅绑定到特定的本地网络。  
默认值：`0.0.0.0`（绑定到所有网络接口）

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`120`

**Example 示例：配置合并更新**  
以下示例配置指定在端口 443 运行 MQTT 代理。  

```
{
  "moquette": {
    "ssl_port": "443"
  }
}
```

## 本地日志文件
<a name="mqtt-broker-moquette-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="mqtt-broker-moquette-component-changelog"></a>

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.3.7  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.5.0 发行版进行了版本更新。  | 
|  2.3.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.3  |  <a name="changelog-mqtt-broker-moquette-2.3.3"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.2  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.4.0 发行版进行了版本更新。  | 
|  2.3.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.0  |  添加了对证书链的支持。  | 
|  2.2.0  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.0.1  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.0  |  初始版本。  | 

# MQTT 5 代理（EMQX）
<a name="mqtt-broker-emqx-component"></a>

EMQX MQTT 代理组件 (`aws.greengrass.clientdevices.mqtt.EMQX`) 处理客户端设备与 Greengrass 核心设备之间的 MQTT 消息。此组件提供 [EMQX MQTT 5.0 代理](https://www.emqx.com/en/mqtt/mqtt5)的修改版本。部署此 MQTT 代理，以便在客户端设备与核心设备的通信中使用 MQTT 5 功能。有关如何选择 MQTT 代理的更多信息，请参阅[选择 MQTT 代理](choose-local-mqtt-broker.md)。

此代理实施 MQTT 5.0 协议。它支持会话和消息过期间隔、用户属性、共享订阅、主题别名等功能。MQTT 5 向后兼容 MQTT 3.1.1，因此，如果您运行 [Moquette MQTT 3.1.1 代理](mqtt-broker-moquette-component.md)，您可以将其替换为 EMQX MQTT 5 代理，并且客户端设备可以继续照常连接和运行。

<a name="note-local-mqtt-broker-mqtt-5-features"></a>

**注意**  <a name="client-device-component-context"></a>
客户端设备是本地 IoT 设备，连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。

**Topics**
+ [版本](#mqtt-broker-emqx-component-versions)
+ [Type](#mqtt-broker-emqx-component-type)
+ [操作系统](#mqtt-broker-emqx-component-os-support)
+ [要求](#mqtt-broker-emqx-component-requirements)
+ [依赖项](#mqtt-broker-emqx-component-dependencies)
+ [配置](#mqtt-broker-emqx-component-configuration)
+ [本地日志文件](#mqtt-broker-emqx-component-log-file)
+ [许可证](#mqtt-broker-emqx-component-licenses)
+ [更改日志](#mqtt-broker-emqx-component-changelog)

## 版本
<a name="mqtt-broker-emqx-component-versions"></a>

此组件具有以下版本：
+ 2.0.x
+ 1.2.x
+ 1.1.x
+ 1.0.x

## Type
<a name="mqtt-broker-emqx-component-type"></a>

<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)。

## 操作系统
<a name="mqtt-broker-emqx-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="mqtt-broker-emqx-component-requirements"></a>

此组件具有以下要求：
+ 核心设备必须能够接受 MQTT 代理运行端口的连接。默认情况下，此组件在端口 8883 运行 MQTT 代理。配置此组件时，您可以指定其他端口。

  <a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>如果您指定其它端口，并且使用 [MQTT 网桥组件](mqtt-bridge-component.md)将 MQTT 消息中继到其它代理，您必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为使用 MQTT 代理运行的端口。

  <a name="mqtt-broker-configuration-ip-detector-requirement"></a>如果您指定其它端口，并使用 [IP 检测器组件](ip-detector-component.md)管理 MQTT 代理端点，则必须使用 IP 检测器 v2.1.0 或更高版本。将其配置为报告 MQTT 代理运行的端口。
+ 在 Linux 核心设备上，在核心设备上安装并配置 Docker：
  + <a name="docker-engine-requirement"></a>Greengrass 核心设备上安装的 [Docker Engine](https://docs.docker.com/engine/) 1.9.1 或更高版本。版本 20.10 是经验证可与 AWS IoT Greengrass 核心软件配合使用的最新版本。在部署运行 Docker 容器的组件之前，必须直接在核心设备上安装 Docker。
  + <a name="docker-daemon-requirement"></a>在部署此组件之前，Docker 进程守护程序已启动并在核心设备上运行。
  + 运行此组件的系统用户必须具有根权限或管理员权限。或者，您可以以 `docker` 组中系统用户的身份运行此组件，并将此组件的 `requiresPrivileges` 选项配置为 `false`，以在没有权限的情况下运行 EQMX MQTT 代理。
+ 支持在 VPC 中运行 EMQX MQTT 网桥组件。
+ `armv7` 平台不支持 EMQX MQTT 代理组件。

## 依赖项
<a name="mqtt-broker-emqx-component-dependencies"></a>

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

------
#### [ 2.0.2 – 2.0.3 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 软性 | 

------
#### [ 2.0.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 硬性 | 

------
#### [ 2.0.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 1.2.2 – 1.2.3 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 1.2.0 and 1.2.1 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.4.0 | 硬性 | 

------
#### [ 1.0.0 and 1.1.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.3.0 | 硬性 | 

------

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

## 配置
<a name="mqtt-broker-emqx-component-configuration"></a>

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

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

**重要**  
如果您使用版本 2 的 MQTT 5 代理（EMQX）组件，则必须更新您的配置文件。版本 1 配置文件不适用于版本 2。

emqxConfig  
 （可选）要使用的 [EMQX MQTT 代理](https://www.emqx.io/docs/en/v5.1/configuration/configuration.html)配置。您可以在此组件中设置 EMQX 配置选项。  
当您使用 EMQX 代理时，Greengrass 使用默认配置。除非您使用此字段对其进行修改，否则将使用此配置。  
修改以下配置设置会导致 EMQX 代理组件重新启动。其它配置更改无需重新启动组件即可生效。  
+ `emqxConfig/cluster`
+ `emqxConfig/node`
+ `emqxConfig/rpc`
`aws.greengrass.clientdevices.mqtt.EMQX` 允许您配置对安全敏感的选项。这些包括 TLS 设置、身份验证和授权提供程序。我们推荐默认配置，使用双向 TLS 身份验证和 Greengrass 客户端设备身份验证提供程序。

**Example 示例：默认配置**  
以下示例显示为 MQTT 5（EMQX）代理设置的默认值。您可以使用 `emqxConfig` 配置设置覆盖这些设置。  

```
{
  "authorization": {
    "no_match": "deny",
    "sources": []
  },
  "node": {
    "cookie": "<placeholder>"
  }, 
  "listeners": {
     "ssl": {
       "default": {
         "ssl_options": {
           "keyfile": "{work:path}\\data\\key.pem",
           "certfile": "{work:path}\\data\\cert.pem",
           "cacertfile": null,
           "verify": "verify_peer",
           "versions": ["tlsv1.3", "tlsv1.2"],
           "fail_if_no_peer_cert": true
         }
       }
     },
     "tcp": {
       "default": {
         "enabled": false
       }
     },
     "ws": {
       "default": {
         "enabled": false
       }
     },
     "wss": {
       "default": {
         "enabled": false
       }
     }
  },
  "plugins": {
    "states": [{"name_vsn": "gg-1.0.0", "enable": true}],
    "install_dir": "plugins"
  }
}
```

authMode  
（可选）为代理设置授权提供程序。可以是以下任一值：  
+ `enabled` –（默认）使用 Greengrass 身份验证和授权提供程序。
+ `bypass_on_failure` – 使用 Greengrass 身份验证提供程序，如果 Greengrass 拒绝身份验证或授权，则使用 EMQX 提供程序链中剩余的任何身份验证提供程序。
+ `bypass` – 禁用 Greengrass 提供程序。身份验证和授权由 EMQX 提供程序链处理。

`requiresPrivilege`  
（可选）在 Linux 核心设备上，您可以指定在没有根权限或管理员权限的情况下运行 EMQX MQTT 代理。如果将此选项设置为 `false`，则运行此组件的系统用户必须是 `docker` 组的成员。  
默认值：`true`

`startupTimeoutSeconds`  
（可选）EMQX MQTT 代理启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`90`

`ipcTimeoutSeconds`  
（可选）组件等待 Greengrass Nucleus 响应进程间通信（IPC）请求的最长时间（以秒为单位）。如果此组件在检查客户端设备是否获得授权时报告超时错误，请增加此数字。  
默认值：`5`

`crtLogLevel`  
（可选） AWS 公共运行时 (CRT) 库的日志级别。  
默认为 EMQX MQTT 代理日志级别（`emqx` 中的 `log.level`）。

`restartIdentifier`  
（可选）配置此选项可重新启动 EMQX MQTT 代理。当此配置值更改时，此组件会重新启动 MQTT 代理。您可以使用此选项强制客户端设备断开连接。

`dockerOptions`  
（可选）仅在 Linux 操作系统上配置此选项，以便向 Docker 命令行添加参数。例如，要映射其它端口，请使用 `-p` Docker 参数：  

```
"-p 1883:1883"
```

**Example 示例：将 v1.x 配置文件更新为 v2.x**  
以下示例显示了将 v1.x 配置文件更新到 2.x 版本所需的更改。  
版本 1.x 配置文件：  

```
{
    "emqx": {
        "listener.ssl.external": "443",
        "listener.ssl.external.max_connections": "1024000",
        "listener.ssl.external.max_conn_rate": "500",
        "listener.ssl.external.rate_limit": "50KB,5s",
        "listener.ssl.external.handshake_timeout": "15s",
        "log.level": "warning"
    },
    "mergeConfigurationFiles": {
        "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n"
    }
}
```
v2 的等效配置文件：  

```
{
    "emqxConfig": {
        "listeners": {
            "ssl": {
                "default": {
                   "bind": "8883",
                   "max_connections": "1024000",
                   "max_conn_rate": "500",
                   "ssl_options": {
                        "handshake_timeout": "15s"
                   }
                }
            }
        },
        "log": {
            "console": {
              "enable": true,
              "level": "warning"
            }
        }
    },
    "authMode": "enabled"
}
```
没有与 `listener.ssl.external.rate_limit` 配置条目对应的内容。已删除 `use_greengrass_managed_certificates` 配置选项。

**Example 示例：为代理设置新端口**  
以下示例将 MQTT 代理运行的端口从默认的 8883 更改为端口 1234。如果您使用的是 Linux，请包含 `dockerOptions` 字段。  

```
{
  "emqxConfig": {
    "listeners": {
      "ssl": {
        "default": {
          "bind": 1234
        }
      }
    }
  },
  "dockerOptions": "-p 1234:1234"
}
```

**Example 示例：调整 MQTT 代理的日志级别**  
以下示例将 MQTT 代理的日志级别更改为 `debug`。您可从以下日志级别中进行选择：  
+ `debug`
+ `info`
+ `notice`
+ `warning`
+ `error`
+ `critical`
+ `alert`
+ `emergency`
默认日志级别为 `warning`。  

```
{
  "emqxConfig": {
    "log": {
      "console": {
         "level": "debug"
      }
    }
  }
}
```

**Example 示例：启用 EMQX 控制面板**  
以下示例启用 EMQX 控制面板，以便您可以监控和管理您的代理。如果您使用的是 Linux，请包含 `dockerOptions` 字段。  

```
{
  "emqxConfig": {
    "dashboard": {
      "listeners": {
        "http": {
          "bind": 18083
        }
      }
    }
  },
  "dockerOptions": "-p 18083:18083"
}
```

------
#### [ 1.0.0 - 1.2.2 ]

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

`emqx`  
（可选）要使用的 [EMQX MQTT 代理](https://www.emqx.io/docs/en/v4.4/configuration/configuration.html)配置。您可以在此组件中配置 EMQX 配置选项的子集。  
该对象包含以下信息：    
`listener.ssl.external`  
（可选）MQTT 代理运行的端口。  
<a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>如果您指定其它端口，并且使用 [MQTT 网桥组件](mqtt-bridge-component.md)将 MQTT 消息中继到其它代理，您必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为使用 MQTT 代理运行的端口。  
<a name="mqtt-broker-configuration-ip-detector-requirement"></a>如果您指定其它端口，并使用 [IP 检测器组件](ip-detector-component.md)管理 MQTT 代理端点，则必须使用 IP 检测器 v2.1.0 或更高版本。将其配置为报告 MQTT 代理运行的端口。
默认值：`8883`  
`listener.ssl.external.max_connections`  
（可选）MQTT 代理支持的最大并行连接数。  
默认值：`1024000`  
`listener.ssl.external.max_conn_rate`  
（可选）MQTT 代理每秒可以接收的最大新连接数。  
默认值：`500`  
`listener.ssl.external.rate_limit`  
（可选）与 MQTT 代理的所有连接的带宽限制。按以下格式指定带宽及其持续时间，用逗号 (`,`) 分隔：`bandwidth,duration`。例如，您可以指定 `50KB,5s` 将 MQTT 代理限制为每 5 秒 50 千字节（KB）的数据。  
`listener.ssl.external.handshake_timeout`  
（可选）MQTT 代理等待完成对新连接的身份验证的时长。  
默认值：`15s`  
`mqtt.max_packet_size`  
（可选）MQTT 消息的最大大小。  
默认值：`268435455`（256MB 减去 1）  
`log.level`  
（可选）MQTT 代理的日志级别。从以下选项中进行选择：  
+ `debug`
+ `info`
+ `notice`
+ `warning`
+ `error`
+ `critical`
+ `alert`
+ `emergency`
默认日志级别为 `warning`。

`requiresPrivilege`  
（可选）在 Linux 核心设备上，您可以指定在没有根权限或管理员权限的情况下运行 EMQX MQTT 代理。如果将此选项设置为 `false`，则运行此组件的系统用户必须是 `docker` 组的成员。  
默认值：`true`

`startupTimeoutSeconds`  
（可选）EMQX MQTT 代理启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`90`

`ipcTimeoutSeconds`  
（可选）组件等待 Greengrass Nucleus 响应进程间通信（IPC）请求的最长时间（以秒为单位）。如果此组件在检查客户端设备是否获得授权时报告超时错误，请增加此数字。  
默认值：`5`

`crtLogLevel`  
（可选） AWS 公共运行时 (CRT) 库的日志级别。  
默认为 EMQX MQTT 代理日志级别（`emqx` 中的 `log.level`）。

`restartIdentifier`  
（可选）配置此选项可重新启动 EMQX MQTT 代理。当此配置值更改时，此组件会重新启动 MQTT 代理。您可以使用此选项强制客户端设备断开连接。

`dockerOptions`  
（可选）仅在 Linux 操作系统上配置此选项，以便向 Docker 命令行添加参数。例如，要映射其它端口，请使用 `-p` Docker 参数：  

```
"-p 1883:1883"
```

`mergeConfigurationFiles`  
（可选）配置此选项可添加或覆盖指定 EMQX 配置文件中的默认值。有关配置文件及其格式的信息，请参阅 *EMQX 4.0* 文档中的[配置](https://www.emqx.io/docs/en/v4.4/configuration/configuration.html)。您指定的值将附加到配置文件中。  
以下示例将更新 `etc/emqx.conf` 文件。  

```
"mergeConfigurationFiles": {
    "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s"
},
```
除 EMQX 支持的配置文件外，Greengrass 还支持一个文件，为 EMQX 配置 Greengrass 身份验证插件，名为 `etc/plugins/aws_greengrass_emqx_auth.conf`。有两个支持的选项，即 `auth_mode` 和 `use_greengrass_managed_certificates`。要使用其它身份验证提供程序，请将 `auth_mode` 选项设置为以下选项之一：  
+ `enabled` –（默认）使用 Greengrass 身份验证和授权提供程序。
+ `bypass_on_failure` – 使用 Greengrass 身份验证提供程序，如果 Greengrass 拒绝身份验证或授权，则使用 EMQX 提供程序链中剩余的任何身份验证提供程序。
+ `bypass` – 禁用 Greengrass 提供程序。然后，身份验证和授权由 EMQX 提供程序链处理。
如果 `use_greengrass_managed_certificates` 为 `true`，则此选项表示 Greengrass 管理代理 TLS 证书。如果为 `false`，则表示您通过其它来源提供证书。  
以下示例更新了 `etc/plugins/aws_greengrass_emqx_auth.conf` 配置文件中的默认值。  

```
"mergeConfigurationFiles": {
    "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n"
  },
```
`aws.greengrass.clientdevices.mqtt.EMQX` 允许您配置对安全敏感的选项。这些包括 TLS 设置、身份验证和授权提供程序。推荐的配置是默认配置，使用双向 TLS 身份验证和 Greengrass 客户端设备身份验证提供程序。

`replaceConfigurationFiles`  
（可选）配置此选项可替换指定的 EMQX 配置文件。您指定的值替换整个现有配置文件。您无法在此部分中指定 `etc/emqx.conf` 文件。您必须使用 `mergeConfigurationFile` 才能修改 `etc/emqx.conf`。

**Example 示例：配置合并更新**  
以下示例配置指定在端口 443 运行 MQTT 代理。  

```
{
  "emqx": {
    "listener.ssl.external": "443",
    "listener.ssl.external.max_connections": "1024000",
    "listener.ssl.external.max_conn_rate": "500",
    "listener.ssl.external.rate_limit": "50KB,5s",
    "listener.ssl.external.handshake_timeout": "15s",
    "log.level": "warning"
  },
  "requiresPrivilege": "true",
  "startupTimeoutSeconds": "90",
  "ipcTimeoutSeconds": "5"
}
```

------

## 本地日志文件
<a name="mqtt-broker-emqx-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log -Tail 10 -Wait
  ```

------

## 许可证
<a name="mqtt-broker-emqx-component-licenses"></a>

在 Windows 操作系统上，该软件包括根据 [Microsoft 软件许可条款 – Microsoft Visual Studio Community 2022](https://visualstudio.microsoft.com/license-terms/vs2022-ga-community) 分发的代码。下载此软件，即表示您同意该代码的许可条款。

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="mqtt-broker-emqx-component-changelog"></a>

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

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


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.0.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  2.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  2.0.1  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.5.0 发行版进行了版本更新。  | 
| 2.0.0 | 此版本的 MQTT 5 代理（EMQX）需要的配置参数与版本 1.x 不同。如果您为版本 1.x 使用非默认配置，您必须为 2.x 更新组件的配置。有关更多信息，请参阅 [配置](#mqtt-broker-emqx-component-configuration)。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) | 

------
#### [ v1.x ]


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  1.2.2  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.4.0 发行版进行了版本更新。  | 
|  1.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-emqx-component.html)  | 
|  1.2.0  |  添加了对证书链的支持。  | 
|  1.1.0  | <a name="changelog-emqx-1.1.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) | 
|  1.0.1  |  修复了在 TLS 握手期间导致某些 MQTT 客户端无法连接的问题。  | 
|  1.0.0  |  初始版本。  | 

------

# Nucleus 遥测发射器
<a name="nucleus-emitter-component"></a>

nucleus 遥测发射器组件 (`aws.greengrass.telemetry.NucleusEmitter`) 收集系统健康遥测数据，并将其持续发布到本地主题和 MQTT 主题。 AWS IoT Core 此组件使您能够在 Greengrass 核心设备上收集实时系统遥测数据。有关向亚马逊发布系统遥测数据的 Greengrass 遥测代理的信息，请参阅。 EventBridge [从 AWS IoT Greengrass 核心设备收集系统运行状况遥测数据](telemetry.md)

默认情况下，nucleus 遥测发射器组件每 60 秒将遥测数据发布到以下本地主题。 publish/subscribe 

```
$local/greengrass/telemetry
```

默认情况下，nucleus 遥测发射器组件不会发布到 AWS IoT Core MQTT 主题中。您可以将此组件配置为在部署时将其发布到 AWS IoT Core MQTT 主题。使用 MQTT 主题向发布数据需视[AWS IoT Core 定价](https://aws.amazon.com/iot-core/pricing/)而定。 AWS 云 

<a name="greengrass-software-catalog-influxdb-telemetry-publisher"></a>AWS IoT Greengrass 提供了多个[社区组件](greengrass-software-catalog.md)，可帮助您使用 InfluxDB 和 Grafana 在核心设备上本地分析和可视化遥测数据。这些组件使用来自 Nucleus 发射器组件的遥测数据。有关更多信息，请参阅 [InfluxDB 发布者组件](https://github.com/awslabs/aws-greengrass-labs-telemetry-influxdbpublisher)的自述文件。

**Topics**
+ [版本](#nucleus-emitter-component-versions)
+ [Type](#nucleus-emitter-component-type)
+ [操作系统](#nucleus-emitter-component-os-support)
+ [依赖项](#nucleus-emitter-component-dependencies)
+ [配置](#nucleus-emitter-component-configuration)
+ [输出数据](#nucleus-emitter-component-output-data)
+ [使用量](#nucleus-emitter-component-usage)
+ [本地日志文件](#nucleus-emitter-component-log-file)
+ [更改日志](#nucleus-emitter-component-changelog)

## 版本
<a name="nucleus-emitter-component-versions"></a>

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

## Type
<a name="nucleus-emitter-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

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

## 操作系统
<a name="nucleus-emitter-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 依赖项
<a name="nucleus-emitter-component-dependencies"></a>

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

------
#### [ 1.0.12 ]

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


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

------
#### [ 1.0.11 ]

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


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

------
#### [ 1.0.10 ]

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


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

------
#### [ 1.0.9 ]

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


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

------
#### [ 1.0.8 ]

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


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

------
#### [ 1.0.7 ]

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


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

------
#### [ 1.0.6 ]

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


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

------
#### [ 1.0.5 ]

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


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

------
#### [ 1.0.4 ]

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


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

------
#### [ 1.0.3 ]

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


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

------
#### [ 1.0.2 ]

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


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

------
#### [ 1.0.1 ]

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


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

------
#### [ 1.0.0 ]

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


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.4.0 <2.5.0  | 硬性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="nucleus-emitter-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`pubSubPublish`  
（可选）定义是否向 `$local/greengrass/telemetry` 主题发布遥测数据。支持的值为 `true` 和 `false`。  
默认值：`true`

`mqttTopic`  
（可选）此组件向其发布遥测数据的 AWS IoT Core MQTT 主题。  
将此值设置为要向其发布遥测数据的 AWS IoT Core MQTT 主题。当此值为空时，Nucleus 发射器不会将遥测数据发布到 AWS 云。  
使用 MQTT 主题向发布数据需视[AWS IoT Core 定价](https://aws.amazon.com/iot-core/pricing/)而定。 AWS 云 
默认值：`""`

`telemetryPublishIntervalMs`  
（可选）组件发布遥测数据的间隔时长（以毫秒为单位）。如果将此值设置为低于支持的最小值，则组件将改用最小值。  
较低的发布间隔会导致核心设备上的 CPU 使用率更高。我们建议您从默认发布间隔开始，然后根据设备的 CPU 使用率进行调整。
最低：`500`  
默认值：`60000`

**Example 示例：配置合并更新**  
以下示例显示了一个配置合并更新示例，该更新允许每 5 秒向`$local/greengrass/telemetry`主题和 `greengrass/myTelemetry` AWS IoT Core MQTT 主题发布遥测数据。  

```
{
  "pubSubPublish": "true",
  "mqttTopic": "greengrass/myTelemetry",
  "telemetryPublishIntervalMs": 5000
}
```

## 输出数据
<a name="nucleus-emitter-component-output-data"></a>

此组件将遥测指标作为 JSON 数组发布到以下主题。

**本地主题：**`$local/greengrass/telemetry`

您也可以选择将遥测指标发布到 AWS IoT Core MQTT 主题。有关主题的更多信息，请参阅《AWS IoT Core 开发人员指南》**中的 [MQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

**Example 示例数据**  

```
[
  {
    "A": "Average",
    "N": "CpuUsage",
    "NS": "SystemMetrics",
    "TS": 1627597331445,
    "U": "Percent",
    "V": 26.21981271562346
  },
  {
    "A": "Count",
    "N": "TotalNumberOfFDs",
    "NS": "SystemMetrics",
    "TS": 1627597331445,
    "U": "Count",
    "V": 7316
  },
  {
    "A": "Count",
    "N": "SystemMemUsage",
    "NS": "SystemMetrics",
    "TS": 1627597331445,
    "U": "Megabytes",
    "V": 10098
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsStarting",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 0
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsInstalled",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 0
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsStateless",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 0
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsStopping",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 0
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsBroken",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 0
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsRunning",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 7
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsErrored",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 0
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsNew",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 0
  },
  {
    "A": "Count",
    "N": "NumberOfComponentsFinished",
    "NS": "GreengrassComponents",
    "TS": 1627597331446,
    "U": "Count",
    "V": 2
  }
]
```<a name="telemetry-json-array-config"></a>

输出数组包含具有以下属性的指标列表：

`A`  
指标的聚合类型。  
对于 `CpuUsage` 指标，此属性设置为 `Average`，因为该指标的发布值是自上次发布事件以来的平均 CPU 使用率。  
对于所有其他指标，Nucleus 发射器不会聚合指标值，并且此属性设置为 `Count`。

`N`  
指标的名称。

`NS`  
指标命名空间。

`TS`  
表示数据在何时收集的时间戳。

`U`  
指标值的单位。

`V`  
 指标值。

Nucleus 发射器发布以下指标：


| Name | 描述 | 
| --- | --- | 
|  **系统**  | 
|  `SystemMemUsage`  |  Greengrass 核心设备上所有应用程序（包括操作系统）当前使用的内存量。  | 
|  `CpuUsage`  |  Greengrass 核心设备上所有应用程序（包括操作系统）当前使用的 CPU 量。  | 
|  `TotalNumberOfFDs`  |  Greengrass 核心设备操作系统存储的文件描述符的数量。一个文件描述符可以唯一地标识一个打开的文件。  | 
|  **Greengrass Nucleus**  | 
|  `NumberOfComponentsRunning`  |  Greengrass 核心设备上运行的组件的数量。  | 
|  `NumberOfComponentsErrored`  |  Greengrass 核心设备上处于错误状态的组件的数量。  | 
|  `NumberOfComponentsInstalled`  |  Greengrass 核心设备上安装的组件的数量。  | 
|  `NumberOfComponentsStarting`  |  Greengrass 核心设备上启动的组件的数量。  | 
|  `NumberOfComponentsNew`  |  Greengrass 核心设备上新组件的数量。  | 
|  `NumberOfComponentsStopping`  |  Greengrass 核心设备上停止组件的数量。  | 
|  `NumberOfComponentsFinished`  |  Greengrass 核心设备上完成组件的数量。  | 
|  `NumberOfComponentsBroken`  |  Greengrass 核心设备上损坏组件的数量。  | 
|  `NumberOfComponentsStateless`  |  Greengrass 核心设备上无状态组件的数量。  | 

## 使用量
<a name="nucleus-emitter-component-usage"></a>

要使用系统运行状况遥测数据，您可以创建自定义组件，这些组件可订阅 Nucleus 发射器向其发布遥测数据的主题，并根据需要对这些数据做出反应。由于 Nucleus 发射器组件提供了将遥测数据发布到本地主题的选项，因此您可以订阅该主题，并使用已发布的数据在核心设备上进行本地操作。然后，即使核心设备与云的连接有限，核心设备也可以对遥测数据做出反应。

例如，您可以配置一个组件，该组件侦听 `$local/greengrass/telemetry` 主题上的遥测数据，并将数据发送到流管理器组件，以将数据流式传输到 AWS 云。有关创建此类组件的更多信息，请参阅[发布/订阅本地消息](ipc-publish-subscribe.md)和[创建使用流管理器的自定义组件](use-stream-manager-in-custom-components.md)。

## 本地日志文件
<a name="nucleus-emitter-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="nucleus-emitter-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.0.12  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2016-09-01  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2016-09-01  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  1.0.9  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  1.0.8  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  1.0.7  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  1.0.6  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  1.0.5  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  1.0.4  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  1.0.3  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  1.0.2  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  1.0.1  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  1.0.0  |  初始版本。  | 

# PKCS\$111 提供程序
<a name="pkcs11-provider-component"></a>

PKCS \$111 提供程序组件 (`aws.greengrass.crypto.Pkcs11Provider`) 使您可以通过 [PKCS \$111 接口](https://en.wikipedia.org/wiki/PKCS_11)将 AWS IoT Greengrass Core 软件配置为使用硬件安全模块（HSM）。此组件使您能够安全地存储证书和私钥文件，这样它们就不会在软件中暴露或复制。有关更多信息，请参阅 [硬件安全性集成](hardware-security.md)。

要配置在 HSM 中存储其证书和私钥的 Greengrass 核心设备，您必须在安装 Core 软件时将此组件指定为配置插件。 AWS IoT Greengrass 有关更多信息，请参阅 [使用手动资源配置来安装 AWS IoT Greengrass Core 软件](manual-installation.md)。

AWS IoT Greengrass 将此组件作为 JAR 文件提供，您可以下载该文件以在安装过程中将其指定为预配插件。你可以通过以下 URL 下载该组件 JAR 文件的最新版本：[https://d2s8p88vqu9w66.cloudfront。 net/releases/Pkcs11Provider/aws.greengrass.crypto.pkcs11Provider](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar)-latest.jar。

**Topics**
+ [版本](#pkcs11-provider-component-versions)
+ [Type](#pkcs11-provider-component-type)
+ [操作系统](#pkcs11-provider-component-os-support)
+ [要求](#pkcs11-provider-component-requirements)
+ [依赖项](#pkcs11-provider-component-dependencies)
+ [配置](#pkcs11-provider-component-configuration)
+ [本地日志文件](#pkcs11-provider-component-log-file)
+ [更改日志](#pkcs11-provider-component-changelog)

## 版本
<a name="pkcs11-provider-component-versions"></a>

此组件具有以下版本：
+ 2.0.x

## Type
<a name="pkcs11-provider-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="pkcs11-provider-component-os-support"></a>

此组件只能安装在 Linux 核心设备上。

## 要求
<a name="pkcs11-provider-component-requirements"></a>

此组件具有以下要求：
+ <a name="hardware-security-module-requirements-key"></a>支持 [PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313) 签名方案和 RSA-2048 密钥大小（或更大）的 RSA 密钥或 ECC 密钥的硬件安全模块。
**注意**  <a name="hardware-security-module-requirements-key-notes"></a>
要使用带 ECC 密钥的硬件安全模块，必须使用 [Greengrass Nucleus](greengrass-nucleus-component.md) v2.5.6 或更高版本。  
要使用硬件安全模块和[密钥管理器](secret-manager-component.md)，必须使用带 RSA 密钥的硬件安全模块。
+ <a name="hardware-security-module-requirements-pkcs11-provider-library"></a>一个 PKCS \$111 提供程序库， AWS IoT Greengrass 核心软件可以在运行时加载该库（使用 libdl）来调用 PKCS \$111 函数。PKCS\$111 提供程序库必须实施以下 PKCS\$111 API 操作：
  + `C_Initialize`
  + `C_Finalize`
  + `C_GetSlotList`
  + `C_GetSlotInfo`
  + `C_GetTokenInfo`
  + `C_OpenSession`
  + `C_GetSessionInfo`
  + `C_CloseSession`
  + `C_Login`
  + `C_Logout`
  + `C_GetAttributeValue`
  + `C_FindObjectsInit`
  + `C_FindObjects`
  + `C_FindObjectsFinal`
  + `C_DecryptInit`
  + `C_Decrypt`
  + `C_DecryptUpdate`
  + `C_DecryptFinal`
  + `C_SignInit`
  + `C_Sign`
  + `C_SignUpdate`
  + `C_SignFinal`
  + `C_GetMechanismList`
  + `C_GetMechanismInfo`
  + `C_GetInfo`
  + `C_GetFunctionList`
+ <a name="hardware-security-module-requirements-slot-label"></a>硬件模块必须可按槽标签解析，如 PKCS\$111 规范所定义。
+ <a name="hardware-security-module-requirements-private-key-and-certificate"></a>如果 HSM 支持对象，则必须将私钥和证书存储在 HSM 中的同一个插槽中，并且它们必须使用相同的对象标签和对象 ID。 IDs
+ <a name="hardware-security-module-requirements-object-label"></a>证书和私有密钥必须由对象标签来解析。
+ <a name="hardware-security-module-requirements-private-key-permissions"></a>私有密钥必须具有以下权限：
  + `sign`
  + `decrypt`
+ <a name="hardware-security-module-requirements-secret-manager-permissions"></a>（可选）要使用[密钥管理器组件](secret-manager-component.md)，必须使用 2.1.0 或更高版本，并且私有密钥必须具有以下权限：
  + `unwrap`
  + `wrap`
+ <a name="hardware-security-module-requirements-environment-variable"></a>（可选）如果您使用 TPM2 库并将 Greengrass 核心作为服务运行，则必须提供一个包含 PKCS \$111 存储位置的环境变量。以下示例是具有所需环境变量的 systemd 服务文件：

  ```
  [Unit]
  Description=Greengrass Core
  After=network.target
  
  [Service]
  Type=simple
  PIDFile=/var/run/greengrass.pid
  Environment=TPM2_PKCS11_STORE=/path/to/store/directory
  RemainAfterExit=no
  Restart=on-failure
  RestartSec=10
  ExecStart=/bin/sh /greengrass/v2/alts/current/distro/bin/loader
  
  [Install]
  WantedBy=multi-user.target
  ```

## 依赖项
<a name="pkcs11-provider-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#pkcs11-provider-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.0.11 ]

下表列出了此组件的版本 2.0.11 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.17.0 | 软性 | 

------
#### [ 2.0.10 ]

下表列出了此组件的版本 2.0.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.16.0  | 软性 | 

------
#### [ 2.0.9 ]

下表列出了此组件的版本 2.0.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.15.0  | 软性 | 

------
#### [ 2.0.8 ]

下表列出了此组件的版本 2.0.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.14.0  | 软性 | 

------
#### [ 2.0.7 ]

下表列出了此组件的版本 2.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.13.0  | 软性 | 

------
#### [ 2.0.6 ]

下表列出了此组件的版本 2.0.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.12.0  | 软性 | 

------
#### [ 2.0.5 ]

下表列出了此组件的版本 2.0.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.11.0  | 软性 | 

------
#### [ 2.0.4 ]

下表列出了此组件的版本 2.0.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.10.0  | 软性 | 

------
#### [ 2.0.3 ]

下表列出了此组件的版本 2.0.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.9.0  | 软性 | 

------
#### [ 2.0.2 ]

下表列出了此组件的版本 2.0.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.8.0  | 软性 | 

------
#### [ 2.0.1 ]

下表列出了此组件的版本 2.0.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.5.3 <2.7.0  | 软性 | 

------
#### [ 2.0.0 ]

下表列出了此组件版本 2.0.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.5.3 <2.6.0  | 软性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="pkcs11-provider-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。<a name="pkcs11-provider-component-configuration-parameters"></a>

`name`  
PKCS\$111 配置的名称。

`library`  
 AWS IoT Greengrass 核心软件可以使用 libdl 加载的 PKCS \$111 实现库的绝对文件路径。

`slot`  
包含私有密钥和设备证书的槽的 ID。此值不同于槽索引或槽标签。

`userPin`  
用于访问该槽的用户 PIN。

**Example 示例：配置合并更新**  

```
{
  "name": "softhsm_pkcs11",
  "library": "/usr/lib/softhsm/libsofthsm2.so",
  "slot": 1,
  "userPin": "1234"
}
```

## 本地日志文件
<a name="pkcs11-provider-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="pkcs11-provider-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.0.11  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.0.10  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.0.9  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.0.8  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.0.7  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.0.6  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.0.5  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.0.4  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.0.3  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.0.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.0.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.0.0  |  初始版本。  | 

# 密钥管理器
<a name="secret-manager-component"></a>

密钥管理器组件 (`aws.greengrass.SecretManager`) 将密钥从 AWS Secrets Manager 部署到 Greengrass 核心设备。使用此组件在 Greengrass 核心设备的自定义组件中安全地使用凭证（如密码）。有关 Secrets Manager 的更多信息，请参阅 *AWS Secrets Manager 用户指南*中的[什么是 AWS Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。

要在您的自定义 Greengrass 组件中访问此组件的秘密，请使用中的操作。[GetSecretValue](ipc-secret-manager.md#ipc-operation-getsecretvalue) AWS IoT Device SDK有关更多信息，请参阅[使用 AWS IoT Device SDK 与 Greengrass 原子核、其他组件进行通信，以及 AWS IoT Core与 Greengrass 核、其他组件进行通信 AWS IoT Core](interprocess-communication.md)和[检索密钥值](ipc-secret-manager.md)。

此组件对核心设备上的密钥进行加密，在您使用凭证和密码前确保其安全。它使用核心设备的私钥来加密和解密密钥。

**Topics**
+ [版本](#secret-manager-component-versions)
+ [Type](#secret-manager-component-type)
+ [操作系统](#secret-manager-component-os-support)
+ [要求](#secret-manager-component-requirements)
+ [依赖项](#secret-manager-component-dependencies)
+ [配置](#secret-manager-component-configuration)
+ [本地日志文件](#secret-manager-component-log-file)
+ [更改日志](#secret-manager-component-changelog)

## 版本
<a name="secret-manager-component-versions"></a>

此组件具有以下版本：
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="secret-manager-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="secret-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="secret-manager-component-requirements"></a>

此组件具有以下要求：
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `secretsmanager:GetSecretValue` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "secretsmanager:GetSecretValue"
        ],
        "Effect": "Allow",
        "Resource": [
        "arn:aws:secretsmanager:us-east-1:123456789012:secret:MySecret"
        ]
      }
    ]
  }
  ```

------

  ```
  ```
**注意**  
如果您使用客户管理的密 AWS Key Management Service 钥来加密机密，则设备角色也必须允许该`kms:Decrypt`操作。

  有关密钥管理器 IAM 策略的更多信息，请参阅《AWS Secrets Manager 用户指南》**中的以下主题：
  + [的身份验证和访问控制 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html)
  + [可以在 IAM 策略或 AWS Secrets Manager密钥策略中使用的操作、资源和上下文键](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html)
+ 自定义组件必须定义一个授权策略，该策略允许 `aws.greengrass#GetSecretValue` 获取此组件存储的密钥。在此授权策略中，您可以限制组件对特定密钥的访问权限。有关更多信息，请参阅[密钥管理器 IPC 授权](ipc-secret-manager.md#ipc-secret-manager-authorization)。
+ （可选）如果您将核心设备的私钥和证书存储在[硬件安全模块](hardware-security.md)（HSM）中，则 HSM 必须支持 RSA 密钥，私钥必须具有 `unwrap` 权限，公钥则必须具有 `wrap` 权限。

### 端点和端口
<a name="secret-manager-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `secretsmanager.region.amazonaws.com`  | 443 | 是 |  将密钥下载至核心设备。  | 

## 依赖项
<a name="secret-manager-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#secret-manager-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.2.7 ]

下表列出了此组件版本 2.2.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.17.0 | 软性 | 

------
#### [ 2.2.6 ]

下表列出了此组件版本 2.2.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.16.0 | 软性 | 

------
#### [ 2.2.2 – 2.2.5 ]

下表列出了此组件版本 2.2.2 到 2.2.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.15.0 | 软性 | 

------
#### [ 2.2.0 ]

下表列出了此组件版本 2.2.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.13.0 <2.14.0 | 软性 | 

------
#### [ 2.1.7 – 2.1.8 ]

下表列出了此组件版本 2.1.7 和 2.1.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.13.0 | 软性 | 

------
#### [ 2.1.6 ]

下表列出了此组件的版本 2.1.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.12.0 | 软性 | 

------
#### [ 2.1.5 ]

下表列出了此组件的版本 2.1.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.11.0 | 软性 | 

------
#### [ 2.1.4 ]

下表列出了此组件的版本 2.1.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.10.0 | 软性 | 

------
#### [ 2.1.3 ]

下表列出了此组件的版本 2.1.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.9.0 | 软性 | 

------
#### [ 2.1.2 ]

下表列出了此组件的版本 2.1.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.8.0 | 软性 | 

------
#### [ 2.1.1 ]

下表列出了此组件的版本 2.1.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.7.0 | 软性 | 

------
#### [ 2.1.0 ]

下表列出了此组件版本 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.6.0 | 软性 | 

------
#### [ 2.0.9 ]

下表列出了此组件的版本 2.0.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.5.0  | 软性 | 

------
#### [ 2.0.8 ]

下表列出了此组件的版本 2.0.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.4.0  | 软性 | 

------
#### [ 2.0.7 ]

下表列出了此组件的版本 2.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.3.0  | 软性 | 

------
#### [ 2.0.6 ]

下表列出了此组件的版本 2.0.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.2.0  | 软性 | 

------
#### [ 2.0.4 and 2.0.5 ]

下表列出了此组件版本 2.0.4 和 2.0.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.3 <2.1.0  | 软性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="secret-manager-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`periodicRefreshIntervalMin`（可选）  
此组件将核心设备上配置的密钥与来自 AWS Secrets Manager 服务的最新密钥值同步的时间间隔（以分钟为单位）。如果未配置此时间间隔，密钥管理器将不会定期刷新配置的密钥。  

```
{
  "cloudSecrets": [
    {
      "arn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef"
    }
  ],
  "periodicRefreshIntervalMin" : 60
}
```

`cloudSecrets`  
要部署到核心设备的密钥管理器密钥列表。您可以指定标签来定义要部署的每个密钥的版本。如果未指定版本，则此组件将部署使用附加了暂存标签 `AWSCURRENT` 的版本。有关更多信息，请参阅《AWS Secrets Manager 用户指南》**中的[暂存标签](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_staging-label)。  
密钥管理器组件在本地缓存密钥。如果密钥管理器中的密钥值发生变化，此组件不会自动检索新值。要更新本地副本，请为密钥指定一个新标签，然后将此组件配置为检索由新标签标识的密钥。  
每个对象包含以下信息：    
`arn`  
要部署的密钥的 ARN。密钥的 ARN 可以是完整的 ARN，也可以是部分 ARN。我们建议您指定完整的 ARN 而不是部分 ARN。有关更多信息，请参阅[从部分 ARN 中查找密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/troubleshoot.html#ARN_secretnamehyphen)。以下是完整的 ARN 和部分 ARN 的示例：  
+ 完整的 ARN：`arn:aws:secretsmanager:us-east-2:111122223333:secret:SecretName-abcdef`
+ 部分 ARN：`arn:aws:secretsmanager:us-east-2:111122223333:secret:SecretName`  
`labels`  
（可选）用于标识要部署到核心设备的密钥版本的标签列表。  
每个标签必须是一个字符串。

**Example 示例：配置合并更新**  

```
{
  "cloudSecrets": [
    {
      "arn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef"
    }
  ]
}
```

## 本地日志文件
<a name="secret-manager-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="secret-manager-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.2.7  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.2.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.1.8  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.1.7  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.6  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.5  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.1.3  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.0.9  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.7  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.6  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secret-manager-component.html)  | 
|  2.0.4  |  初始版本。  | 

# 安全隧道
<a name="secure-tunneling-component"></a>

借助 `aws.greengrass.SecureTunneling` 组件，您可以与位于受限防火墙后面的 Greengrass 核心设备建立安全的双向通信。

例如，假设您的 Greengrass 核心设备位于防火墙后面，防火墙禁止所有传入连接。安全隧道使用 MQTT 将访问令牌传输到设备，然后使用 WebSockets 通过防火墙与设备建立 SSH 连接。使用此 AWS IoT 管理的隧道，您可以打开设备所需的 SSH 连接。*有关使用 AWS IoT 安全隧道连接远程设备的更多信息，请参阅《开发人员指南》中的[AWS IoT 安全隧道](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html)。AWS IoT *

此组件订阅`$aws/things/greengrass-core-device/tunnels/notify`主题上的 AWS IoT Core MQTT 消息代理以接收安全隧道通知。

**Topics**
+ [版本](#secure-tunneling-component-versions)
+ [Type](#secure-tunneling-component-type)
+ [操作系统](#secure-tunneling-component-os-support)
+ [要求](#secure-tunneling-component-requirements)
+ [依赖项](#secure-tunneling-component-dependencies)
+ [配置](#secure-tunneling-component-configuration)
+ [本地日志文件](#secure-tunneling-component-log-file)
+ [许可证](#secure-tunneling-component-licenses)
+ [使用量](#secure-tunneling-component-usage)
+ [另请参阅](#secure-tunneling-component-see-also)
+ [更改日志](#secure-tunneling-component-changelog)

## 版本
<a name="secure-tunneling-component-versions"></a>

此组件具有以下版本：
+ 1.1.x
+ 1.0.x

## Type
<a name="secure-tunneling-component-type"></a>

<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)。

## 操作系统
<a name="secure-tunneling-component-os-support"></a>

此组件只能安装在 Linux 核心设备上。

架构：
+ Armv71
+ Armv8 () AArch64
+ x86\$164

## 要求
<a name="secure-tunneling-component-requirements"></a>

此组件具有以下要求：
+ 安全隧道组件的可用磁盘空间不得低于 32 MB。此要求不包括运行在同一设备上的 Greengrass 核心软件或其它组件。
+ 安全隧道组件至少需要 16 MB 的可用内存。此要求不包括运行在同一设备上的 Greengrass 核心软件或其它组件。有关更多信息，请参阅 [使用 JVM 选项控制内存分配](configure-greengrass-core-v2.md#jvm-tuning)。
+ 安全隧道组件版本 1.0.12 及更高版本要求 GNU C 库（glibc）版本 2.25 或更高版本以及 Linux 内核 3.2 或更高版本。不支持超过长期支持终止使用日期的操作系统和库的版本。您应该使用具有长期支持的操作系统和库。
+ 操作系统和 Java 运行时都必须安装为 64 位。
+ [Python](https://www.python.org/) 3.5 或更高版本已安装在 Greengrass 核心设备上，并已添加到 PATH 环境变量中。
+ `libcrypto.so.1.1` 已安装在 Greengrass 核心设备上并已添加到 PATH 环境变量中。
+ 打开 Greengrass 核心设备 443 端口的出站流量。
+ 开启对用以与 Greengrass 核心设备通信的通信服务的支持。例如，要打开与设备的 SSH 连接，则必须在该设备上打开 SSH。

### 端点和端口
<a name="secure-tunneling-component-endpoints"></a>

除了基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 终端节点 | 端口 | 必需 | 描述 | 
| --- | --- | --- | --- | 
|  `data.tunneling.iot.region.amazonaws.com`  | 443 | 是 |  建立安全隧道。  | 

## 依赖项
<a name="secure-tunneling-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#secure-tunneling-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 1.0.19 – 1.1.3 ]

下表列出了此组件的 1.0.19 到 1.1.3 版本的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <3.0.0  | 软性 | 

------
#### [ 1.0.18 ]

下表列出了此组件版本 1.0.18 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.13.0  | 软性 | 

------
#### [ 1.0.16 – 1.0.17 ]

下表列出了此组件版本 1.0.16 至 1.0.17 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.12.0  | 软性 | 

------
#### [ 1.0.14 – 1.0.15 ]

下表列出了此组件版本 1.0.14 至 1.0.15 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.11.0  | 软性 | 

------
#### [ 1.0.11 – 1.0.13 ]

下表列出了此组件版本 1.0.11 至 1.0.13 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.10.0  | 软性 | 

------
#### [ 1.0.10 ]

下表列出了此组件版本 1.0.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.9.0  | 软性 | 

------
#### [ 1.0.9 ]

下表列出了此组件版本 1.0.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.8.0  | 软性 | 

------
#### [ 1.0.8 ]

下表列出了此组件版本 1.0.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.7.0  | 软性 | 

------
#### [ 1.0.5 - 1.0.7 ]

下表列出了此组件版本 1.0.5 到 1.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.6.0  | 软性 | 

------
#### [ 1.0.4 ]

下表列出了此组件的版本 1.0.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.5.0  | 软性 | 

------
#### [ 1.0.3 ]

下表列出了此组件版本 1.0.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.4.0  | 软性 | 

------
#### [ 1.0.2 ]

下表列出了此组件版本 1.0.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.3.0  | 软性 | 

------
#### [ 1.0.1 ]

下表列出了此组件版本 1.0.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.2.0  | 软性 | 

------
#### [ 1.0.0 ]

下表列出了此组件的版本 1.0.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.3 <2.1.0  | 软性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="secure-tunneling-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`OS_DIST_INFO`  
（可选）核心设备的操作系统。默认情况下，该组件会尝试自动识别核心设备上运行的操作系统。如果组件无法使用默认值启动，请使用此值来指定操作系统。有关此组件支持的操作系统类型的完整列表，请参阅[设备要求](greengrass-nucleus-component.md#greengrass-v2-requirements)。  
它可以是以下值之一：`auto`、`ubuntu`、`amzn2`、`raspberrypi`。  
默认值：`auto`

`accessControl`  
（可选）包含允许组件订阅安全隧道通知主题的[授权策略](interprocess-communication.md#ipc-authorization-policies)的对象。  
如果您的部署以事物组为目标，请勿修改此配置参数。如果您的部署以单个核心设备为目标，并且您想将其订阅限制为该设备的主题，请指定核心设备的事物名称。在设备授权策略的 `resources` 值中，将 MQTT 主题通配符替换为设备的事物名称。

```
{
  "aws.greengrass.ipc.mqttproxy": {
    "aws.iot.SecureTunneling:mqttproxy:1": {
      "policyDescription": "Access to tunnel notification pubsub topic",
      "operations": [
        "aws.greengrass#SubscribeToIoTCore"
      ],
      "resources": [
        "$aws/things/+/tunnels/notify"
      ]
    }
  }
}
```

**Example 示例：配置合并更新**  
以下示例配置指定允许此组件在运行 Ubuntu 的名为 **MyGreengrassCore** 的核心设备上打开安全隧道。  

```
{
  "OS_DIST_INFO": "ubuntu",
  "accessControl": {
    "aws.greengrass.ipc.mqttproxy": {
      "aws.iot.SecureTunneling:mqttproxy:1": {
        "policyDescription": "Access to tunnel notification pubsub topic",
        "operations": [
          "aws.greengrass#SubscribeToIoTCore"
        ],
        "resources": [
          "$aws/things/MyGreengrassCore/tunnels/notify"
        ]
      }
    }
  }
}
```

## 本地日志文件
<a name="secure-tunneling-component-log-file"></a>

此组件使用以下日志文件。

```
/greengrass/v2/logs/aws.greengrass.SecureTunneling.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径。

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.SecureTunneling.log
  ```

## 许可证
<a name="secure-tunneling-component-licenses"></a>

此组件包含以下第三方软件/许可：
+ [AWS IoT 设备客户端](https://github.com/awslabs/aws-iot-device-client) /Apache 许可证 2.0
+ [AWS IoT Device SDK for Java](https://github.com/aws/aws-greengrass-core-sdk-java/)/Apache 许可证 2.0
+ [gson](https://github.com/google/gson)/Apache 许可证 2.0
+ [log4j](https://logging.apache.org/log4j/2.x/)/Apache 许可证 2.0
+ [slf4j](http://www.slf4j.org/)/Apache 许可证 2.0

## 使用量
<a name="secure-tunneling-component-usage"></a>

要在设备上使用安全隧道组件，请执行以下操作：

1. 将安全隧道组件部署到您的设备上。

1. 打开 [AWS IoT 管理控制台](https://console.aws.amazon.com/iot)。从左侧菜单中选择**远程操作**，然后选择**安全隧道**。

1. 创建一个连接 Greengrass 设备的隧道。

1. 下载源访问令牌。

1. 使用带有源访问令牌的本地代理连接到您的目标。有关更多信息，请参阅《AWS IoT 开发人员指南》**中的[如何使用本地代理](https://docs.aws.amazon.com/iot/latest/developerguide/how-use-local-proxy.html)。

## 另请参阅
<a name="secure-tunneling-component-see-also"></a>
+ AWS IoT *《开发人员指南》AWS IoT 中的@@ [安全隧道](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html)*
+ 《AWS IoT 开发人员指南》**中的[如何使用本地代理](https://docs.aws.amazon.com/iot/latest/developerguide/how-use-local-proxy.html)

## 更改日志
<a name="secure-tunneling-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.1.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.1.2  |   此版本不再可用。此版本的改进将在此组件的更高版本中提供。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.0.19  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  如果您使用安全隧道本地代理作为隧道源客户端，将本地代理升级到版本 3.1.1 或更高版本之后，才能将组件更新到此版本。   | 
|  1.0.18  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  1.0.17  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.0.16  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2016-09-01  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.0.14  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  1.0.13  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.0.12  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  2016-09-01  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2016-09-01  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  1.0.9  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  1.0.8  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  1.0.7  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/secure-tunneling-component.html)  | 
|  1.0.6  |  此版本包含错误修复。  | 
|  1.0.5  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  1.0.4  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  1.0.3  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  1.0.2  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  1.0.1  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  1.0.0  |  初始版本。  | 

# 影子管理器
<a name="shadow-manager-component"></a>

影子管理器组件 (`aws.greengrass.ShadowManager`) 在核心设备上支持本地影子服务。本地影子服务允许组件使用进程间通信[与本地影子交互](ipc-local-shadows.md)。影子管理器组件管理本地卷影文档的存储，还处理本地卷影状态与 Dev AWS IoT ice Shadow 服务的同步。

有关 Greengrass 核心设备如何与影子交互的更多信息，请参阅[与设备影子交互](interact-with-shadows.md)。

**Topics**
+ [版本](#shadow-manager-component-versions)
+ [Type](#shadow-manager-component-type)
+ [操作系统](#shadow-manager-component-os-support)
+ [要求](#shadow-manager-component-requirements)
+ [依赖项](#shadow-manager-component-dependencies)
+ [配置](#shadow-manager-component-configuration)
+ [本地日志文件](#shadow-manager-component-log-file)
+ [更改日志](#shadow-manager-component-changelog)

## 版本
<a name="shadow-manager-component-versions"></a>

此组件具有以下版本：
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="shadow-manager-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="shadow-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="shadow-manager-component-requirements"></a>

此组件具有以下要求：
+ （可选）要将影子同步到 Device Shadow 服务，Greengrass 核心设备的策略必须允许以下影 AWS IoT 子策略操作： AWS IoT AWS IoT Core 
  + `iot:GetThingShadow`
  + `iot:UpdateThingShadow`
  + `iot:DeleteThingShadow`

  有关这些 AWS IoT Core 政策的更多信息，请参阅《*AWS IoT 开发人员指南*》中的[AWS IoT Core 策略操作](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html)。

  有关最低 AWS IoT 政策的更多信息，请参阅 [AWS IoT Greengrass V2 核心设备的最低 AWS IoT 政策](device-auth.md#greengrass-core-minimal-iot-policy)
+ 支持在 VPC 中运行影子管理器组件。

## 依赖项
<a name="shadow-manager-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#shadow-manager-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.3.13 ]

下表列出了此组件版本 2.3.13 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.17.0 | 软性 | 

------
#### [ 2.3.12 ]

下表列出了此组件版本 2.3.12 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.17.0 | 软性 | 

------
#### [ 2.3.11 ]

下表列出了此组件版本 2.3.11 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.16.0 | 软性 | 

------
#### [ 2.3.10 ]

下表列出了此组件版本 2.3.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.15.0 | 软性 | 

------
#### [ 2.3.9 ]

下表列出了此组件版本 2.3.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.14.0 | 软性 | 

------
#### [ 2.3.5 – 2.3.8 ]

下表列出了此组件版本 2.3.5 到 2.3.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.13.0 | 软性 | 

------
#### [ 2.3.3 and 2.3.4 ]

下表列出了此组件版本 2.3.3 和 2.3.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.12.0 | 软性 | 

------
#### [ 2.3.2 ]

下表列出了此组件版本 2.3.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.11.0 | 软性 | 

------
#### [ 2.3.0 and 2.3.1 ]

下表列出了此组件版本 2.3.0 和 2.3.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.5.0 <2.10.0 | 软性 | 

------
#### [ 2.2.3 and 2.2.4 ]

下表列出了此组件的版本 2.2.3 和 2.2.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <3.0.0 | 软性 | 

------
#### [ 2.2.2 ]

下表列出了此组件版本 2.2.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <2.9.0 | 软性 | 

------
#### [ 2.2.1 ]

下表列出了此组件版本 2.2.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <2.8.0 | 软性 | 

------
#### [ 2.1.1 and 2.2.0 ]

下表列出了此组件版本 2.1.1 和 2.2.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <2.7.0 | 软性 | 

------
#### [ 2.0.5 - 2.1.0 ]

下表列出了此组件版本 2.0.5 到 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <2.6.0 | 软性 | 

------
#### [ 2.0.3 and 2.0.4 ]

下表列出了此组件版本 2.0.3 和 2.0.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <2.5.0 | 软性 | 

------
#### [ 2.0.1 and 2.0.2 ]

下表列出了此组件版本 2.0.1 和 2.0.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <2.4.0 | 软性 | 

------
#### [ 2.0.0 ]

下表列出了此组件版本 2.0.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.2.0 <2.3.0 | 软性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="shadow-manager-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

------
#### [ 2.3.x ]

`strategy`  <a name="shadow-manager-component-configuration-strategy"></a>
（可选）此组件用于在 AWS IoT Core 和核心设备之间同步阴影的策略。  
该对象包含以下信息。    
`type`  
（可选）此组件在 AWS IoT Core 与核心设备之间同步影子时使用的策略的类型。从以下选项中进行选择：  
+ `realTime`— AWS IoT Core 每次阴影更新时都同步阴影。
+ `periodic`— 按照您使用 AWS IoT Core `delay`配置参数指定的固定间隔将阴影与同步。
默认值：`realTime`  
`delay`  
（可选）指定 `periodic` 同步策略时，此组件将影子与 AWS IoT Core同步的间隔（以秒为单位）。  
如果您指定 `periodic` 同步策略，则此参数是必需的。

`synchronize`  <a name="shadow-manager-component-configuration-synchronize"></a>
<a name="shadow-manager-component-configuration-strategy-description"></a>（可选）决定影子如何与 AWS 云同步的同步设置。  
您必须使用此属性创建配置更新，才能将影子与 AWS 云同步。
该对象包含以下信息。    
`coreThing`  <a name="shadow-manager-component-configuration-synchronize-core-thing"></a>
（可选）要同步的核心设备影子。该对象包含以下信息。    
`classic`  
（可选）默认情况下，影子管理器会将核心设备经典影子的本地状态与 AWS 云同步。如果您不想同步经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）要同步的已命名核心设备影子的列表。您必须指定影子的确切名称。  
该 AWS IoT Greengrass 服务使用`AWSManagedGreengrassV2Deployment`命名的影子来管理针对单个核心设备的部署。这个名为 shadow 的保留供 AWS IoT Greengrass 服务使用。请勿更新或删除该已命名影子。  
`shadowDocumentsMap`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents-map"></a>
（可选）要同步的其它设备影子。使用此配置参数可以更轻松地指定影子文档。我们建议您使用此参数，而不是 `shadowDocuments` 对象。  
如果指定 `shadowDocumentsMap` 对象，则不得指定 `shadowDocuments` 对象。
每个对象包含以下信息：    
*`thingName`*  
此影子配置*thingName*的影子配置。    
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
`namedShadows`  
您要同步的已命名影子的列表。您必须指定影子的确切名称。  
`shadowDocuments`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents"></a>
（可选）要同步的其它设备影子的列表。我们建议您改用 `shadowDocumentsMap` 参数。  
如果指定 `shadowDocuments` 对象，则不得指定 `shadowDocumentsMap` 对象。
此列表中的每个对象都包含以下信息。    
`thingName`  
要同步的影子所属设备的事物名称。  
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）您要同步的已命名设备影子的列表。您必须指定影子的确切名称。  
`direction`  
（可选）在本地影子服务与 AWS 云之间同步影子的方向。您可以配置此选项，以减少带宽以及与 AWS 云的连接。从以下选项中进行选择：  
+ `betweenDeviceAndCloud` – 在本地影子服务与 AWS 云之间同步影子。
+ `deviceToCloud`— 将卷影更新从本地影子服务发送到 AWS 云，并忽略来自的影子更新 AWS 云。
+ `cloudToDevice` – 接收来自 AWS 云的影子更新，不要将本地影子服务的影子更新发送到 AWS 云。
默认值：`BETWEEN_DEVICE_AND_CLOUD`

`rateLimits`  <a name="shadow-manager-component-configuration-rate-limits"></a>
（可选）确定影子服务请求速率限制的设置。  
该对象包含以下信息。    
`maxOutboundSyncUpdatesPerSecond`  
（可选）设备每秒传输的最大同步请求数。  
默认值：100 个请求/秒  
`maxTotalLocalRequestsRate`  
（可选）每秒发送到核心设备的最大本地 IPC 请求数。  
默认值：200 个请求/秒  
`maxLocalRequestsPerSecondPerThing`  
（可选）每秒为每个连接的 IoT 事物发送的最大本地 IPC 请求数。  
默认：每 requests/second 件事 20
这些速率限制参数定义本地影子服务的每秒最大请求数。Dev AWS IoT ice Shadow 服务每秒的最大请求数取决于您的 AWS 区域。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**

`shadowDocumentSizeLimitBytes`  <a name="shadow-manager-component-configuration-shadow-document-size-limit-bytes"></a>
（可选）本地影子的每个 JSON 状态文档允许的最大大小。  
如果增大此值，您还必须增加云影子的 JSON 状态文档的资源限制。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**  
默认值：8192 个字节  
最大值：30720 个字节

**Example 示例：配置合并更新**  
以下示例显示了配置合并更新示例，其中包含影子管理器组件的所有可用配置参数。  

```
{
   "strategy":{
      "type":"periodic",
      "delay":300
   },
   "synchronize":{
      "shadowDocumentsMap":{
         "MyDevice1":{
            "classic":false,
            "namedShadows":[
               "MyShadowA",
               "MyShadowB"
            ]
         },
         "MyDevice2":{
            "classic":true,
            "namedShadows":[]
         }
      },
      "direction":"betweenDeviceAndCloud"
   },
   "rateLimits":{
      "maxOutboundSyncUpdatesPerSecond":100,
      "maxTotalLocalRequestsRate":200,
      "maxLocalRequestsPerSecondPerThing":20
   },
   "shadowDocumentSizeLimitBytes":8192
}
```

------
#### [ 2.2.x ]

`strategy`  <a name="shadow-manager-component-configuration-strategy"></a>
（可选）此组件用于在 AWS IoT Core 和核心设备之间同步阴影的策略。  
该对象包含以下信息。    
`type`  
（可选）此组件在 AWS IoT Core 与核心设备之间同步影子时使用的策略的类型。从以下选项中进行选择：  
+ `realTime`— AWS IoT Core 每次阴影更新时都同步阴影。
+ `periodic`— 按照您使用 AWS IoT Core `delay`配置参数指定的固定间隔将阴影与同步。
默认值：`realTime`  
`delay`  
（可选）指定 `periodic` 同步策略时，此组件将影子与 AWS IoT Core同步的间隔（以秒为单位）。  
如果您指定 `periodic` 同步策略，则此参数是必需的。

`synchronize`  <a name="shadow-manager-component-configuration-synchronize"></a>
<a name="shadow-manager-component-configuration-strategy-description"></a>（可选）决定影子如何与 AWS 云同步的同步设置。  
您必须使用此属性创建配置更新，才能将影子与 AWS 云同步。
该对象包含以下信息。    
`coreThing`  <a name="shadow-manager-component-configuration-synchronize-core-thing"></a>
（可选）要同步的核心设备影子。该对象包含以下信息。    
`classic`  
（可选）默认情况下，影子管理器会将核心设备经典影子的本地状态与 AWS 云同步。如果您不想同步经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）要同步的已命名核心设备影子的列表。您必须指定影子的确切名称。  
该 AWS IoT Greengrass 服务使用`AWSManagedGreengrassV2Deployment`命名的影子来管理针对单个核心设备的部署。这个名为 shadow 的保留供 AWS IoT Greengrass 服务使用。请勿更新或删除该已命名影子。  
`shadowDocumentsMap`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents-map"></a>
（可选）要同步的其它设备影子。使用此配置参数可以更轻松地指定影子文档。我们建议您使用此参数，而不是 `shadowDocuments` 对象。  
如果指定 `shadowDocumentsMap` 对象，则不得指定 `shadowDocuments` 对象。
每个对象包含以下信息：    
*`thingName`*  
此影子配置*thingName*的影子配置。    
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
`namedShadows`  
您要同步的已命名影子的列表。您必须指定影子的确切名称。  
`shadowDocuments`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents"></a>
（可选）要同步的其它设备影子的列表。我们建议您改用 `shadowDocumentsMap` 参数。  
如果指定 `shadowDocuments` 对象，则不得指定 `shadowDocumentsMap` 对象。
此列表中的每个对象都包含以下信息。    
`thingName`  
要同步的影子所属设备的事物名称。  
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）您要同步的已命名设备影子的列表。您必须指定影子的确切名称。  
`direction`  
（可选）在本地影子服务与 AWS 云之间同步影子的方向。您可以配置此选项，以减少带宽以及与 AWS 云的连接。从以下选项中进行选择：  
+ `betweenDeviceAndCloud` – 在本地影子服务与 AWS 云之间同步影子。
+ `deviceToCloud`— 将卷影更新从本地影子服务发送到 AWS 云，并忽略来自的影子更新 AWS 云。
+ `cloudToDevice` – 接收来自 AWS 云的影子更新，不要将本地影子服务的影子更新发送到 AWS 云。
默认值：`BETWEEN_DEVICE_AND_CLOUD`

`rateLimits`  <a name="shadow-manager-component-configuration-rate-limits"></a>
（可选）确定影子服务请求速率限制的设置。  
该对象包含以下信息。    
`maxOutboundSyncUpdatesPerSecond`  
（可选）设备每秒传输的最大同步请求数。  
默认值：100 个请求/秒  
`maxTotalLocalRequestsRate`  
（可选）每秒发送到核心设备的最大本地 IPC 请求数。  
默认值：200 个请求/秒  
`maxLocalRequestsPerSecondPerThing`  
（可选）每秒为每个连接的 IoT 事物发送的最大本地 IPC 请求数。  
默认：每 requests/second 件事 20
这些速率限制参数定义本地影子服务的每秒最大请求数。Dev AWS IoT ice Shadow 服务每秒的最大请求数取决于您的 AWS 区域。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**

`shadowDocumentSizeLimitBytes`  <a name="shadow-manager-component-configuration-shadow-document-size-limit-bytes"></a>
（可选）本地影子的每个 JSON 状态文档允许的最大大小。  
如果增大此值，您还必须增加云影子的 JSON 状态文档的资源限制。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**  
默认值：8192 个字节  
最大值：30720 个字节

**Example 示例：配置合并更新**  
以下示例显示了配置合并更新示例，其中包含影子管理器组件的所有可用配置参数。  

```
{
   "strategy":{
      "type":"periodic",
      "delay":300
   },
   "synchronize":{
      "shadowDocumentsMap":{
         "MyDevice1":{
            "classic":false,
            "namedShadows":[
               "MyShadowA",
               "MyShadowB"
            ]
         },
         "MyDevice2":{
            "classic":true,
            "namedShadows":[]
         }
      },
      "direction":"betweenDeviceAndCloud"
   },
   "rateLimits":{
      "maxOutboundSyncUpdatesPerSecond":100,
      "maxTotalLocalRequestsRate":200,
      "maxLocalRequestsPerSecondPerThing":20
   },
   "shadowDocumentSizeLimitBytes":8192
}
```

------
#### [ 2.1.x ]

`strategy`  <a name="shadow-manager-component-configuration-strategy"></a>
（可选）此组件用于在 AWS IoT Core 和核心设备之间同步阴影的策略。  
该对象包含以下信息。    
`type`  
（可选）此组件在 AWS IoT Core 与核心设备之间同步影子时使用的策略的类型。从以下选项中进行选择：  
+ `realTime`— AWS IoT Core 每次阴影更新时都同步阴影。
+ `periodic`— 按照您使用 AWS IoT Core `delay`配置参数指定的固定间隔将阴影与同步。
默认值：`realTime`  
`delay`  
（可选）指定 `periodic` 同步策略时，此组件将影子与 AWS IoT Core同步的间隔（以秒为单位）。  
如果您指定 `periodic` 同步策略，则此参数是必需的。

`synchronize`  <a name="shadow-manager-component-configuration-synchronize"></a>
<a name="shadow-manager-component-configuration-strategy-description"></a>（可选）决定影子如何与 AWS 云同步的同步设置。  
您必须使用此属性创建配置更新，才能将影子与 AWS 云同步。
该对象包含以下信息。    
`coreThing`  <a name="shadow-manager-component-configuration-synchronize-core-thing"></a>
（可选）要同步的核心设备影子。该对象包含以下信息。    
`classic`  
（可选）默认情况下，影子管理器会将核心设备经典影子的本地状态与 AWS 云同步。如果您不想同步经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）要同步的已命名核心设备影子的列表。您必须指定影子的确切名称。  
该 AWS IoT Greengrass 服务使用`AWSManagedGreengrassV2Deployment`命名的影子来管理针对单个核心设备的部署。这个名为 shadow 的保留供 AWS IoT Greengrass 服务使用。请勿更新或删除该已命名影子。  
`shadowDocumentsMap`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents-map"></a>
（可选）要同步的其它设备影子。使用此配置参数可以更轻松地指定影子文档。我们建议您使用此参数，而不是 `shadowDocuments` 对象。  
如果指定 `shadowDocumentsMap` 对象，则不得指定 `shadowDocuments` 对象。
每个对象包含以下信息：    
*`thingName`*  
此影子配置*thingName*的影子配置。    
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
`namedShadows`  
您要同步的已命名影子的列表。您必须指定影子的确切名称。  
`shadowDocuments`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents"></a>
（可选）要同步的其它设备影子的列表。我们建议您改用 `shadowDocumentsMap` 参数。  
如果指定 `shadowDocuments` 对象，则不得指定 `shadowDocumentsMap` 对象。
此列表中的每个对象都包含以下信息。    
`thingName`  
要同步的影子所属设备的事物名称。  
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）您要同步的已命名设备影子的列表。您必须指定影子的确切名称。

`rateLimits`  <a name="shadow-manager-component-configuration-rate-limits"></a>
（可选）确定影子服务请求速率限制的设置。  
该对象包含以下信息。    
`maxOutboundSyncUpdatesPerSecond`  
（可选）设备每秒传输的最大同步请求数。  
默认值：100 个请求/秒  
`maxTotalLocalRequestsRate`  
（可选）每秒发送到核心设备的最大本地 IPC 请求数。  
默认值：200 个请求/秒  
`maxLocalRequestsPerSecondPerThing`  
（可选）每秒为每个连接的 IoT 事物发送的最大本地 IPC 请求数。  
默认：每 requests/second 件事 20
这些速率限制参数定义本地影子服务的每秒最大请求数。Dev AWS IoT ice Shadow 服务每秒的最大请求数取决于您的 AWS 区域。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**

`shadowDocumentSizeLimitBytes`  <a name="shadow-manager-component-configuration-shadow-document-size-limit-bytes"></a>
（可选）本地影子的每个 JSON 状态文档允许的最大大小。  
如果增大此值，您还必须增加云影子的 JSON 状态文档的资源限制。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**  
默认值：8192 个字节  
最大值：30720 个字节

**Example 示例：配置合并更新**  
以下示例显示了配置合并更新示例，其中包含影子管理器组件的所有可用配置参数。  

```
{
   "strategy":{
      "type":"periodic",
      "delay":300
   },
   "synchronize":{
      "shadowDocumentsMap":{
         "MyDevice1":{
            "classic":false,
            "namedShadows":[
               "MyShadowA",
               "MyShadowB"
            ]
         },
         "MyDevice2":{
            "classic":true,
            "namedShadows":[]
         }
      },
      "direction":"betweenDeviceAndCloud"
   },
   "rateLimits":{
      "maxOutboundSyncUpdatesPerSecond":100,
      "maxTotalLocalRequestsRate":200,
      "maxLocalRequestsPerSecondPerThing":20
   },
   "shadowDocumentSizeLimitBytes":8192
}
```

------
#### [ 2.0.x ]

`synchronize`  <a name="shadow-manager-component-configuration-synchronize"></a>
<a name="shadow-manager-component-configuration-strategy-description"></a>（可选）决定影子如何与 AWS 云同步的同步设置。  
您必须使用此属性创建配置更新，才能将影子与 AWS 云同步。
该对象包含以下信息。    
`coreThing`  <a name="shadow-manager-component-configuration-synchronize-core-thing"></a>
（可选）要同步的核心设备影子。该对象包含以下信息。    
`classic`  
（可选）默认情况下，影子管理器会将核心设备经典影子的本地状态与 AWS 云同步。如果您不想同步经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）要同步的已命名核心设备影子的列表。您必须指定影子的确切名称。  
该 AWS IoT Greengrass 服务使用`AWSManagedGreengrassV2Deployment`命名的影子来管理针对单个核心设备的部署。这个名为 shadow 的保留供 AWS IoT Greengrass 服务使用。请勿更新或删除该已命名影子。  
`shadowDocumentsMap`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents-map"></a>
（可选）要同步的其它设备影子。使用此配置参数可以更轻松地指定影子文档。我们建议您使用此参数，而不是 `shadowDocuments` 对象。  
如果指定 `shadowDocumentsMap` 对象，则不得指定 `shadowDocuments` 对象。
每个对象包含以下信息：    
*`thingName`*  
此影子配置*thingName*的影子配置。    
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
`namedShadows`  
您要同步的已命名影子的列表。您必须指定影子的确切名称。  
`shadowDocuments`  <a name="shadow-manager-component-configuration-synchronize-shadow-documents"></a>
（可选）要同步的其它设备影子的列表。我们建议您改用 `shadowDocumentsMap` 参数。  
如果指定 `shadowDocuments` 对象，则不得指定 `shadowDocumentsMap` 对象。
此列表中的每个对象都包含以下信息。    
`thingName`  
要同步的影子所属设备的事物名称。  
`classic`  
（可选）如果您不想同步 `thingName` 设备的经典设备影子，请将其设置为 `false`。  
默认值：`true`  
`namedShadows`  
（可选）您要同步的已命名设备影子的列表。您必须指定影子的确切名称。

`rateLimits`  <a name="shadow-manager-component-configuration-rate-limits"></a>
（可选）确定影子服务请求速率限制的设置。  
该对象包含以下信息。    
`maxOutboundSyncUpdatesPerSecond`  
（可选）设备每秒传输的最大同步请求数。  
默认值：100 个请求/秒  
`maxTotalLocalRequestsRate`  
（可选）每秒发送到核心设备的最大本地 IPC 请求数。  
默认值：200 个请求/秒  
`maxLocalRequestsPerSecondPerThing`  
（可选）每秒为每个连接的 IoT 事物发送的最大本地 IPC 请求数。  
默认：每 requests/second 件事 20
这些速率限制参数定义本地影子服务的每秒最大请求数。Dev AWS IoT ice Shadow 服务每秒的最大请求数取决于您的 AWS 区域。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**

`shadowDocumentSizeLimitBytes`  <a name="shadow-manager-component-configuration-shadow-document-size-limit-bytes"></a>
（可选）本地影子的每个 JSON 状态文档允许的最大大小。  
如果增大此值，您还必须增加云影子的 JSON 状态文档的资源限制。有关更多信息，请参阅《Amazon Web Services 一般参考》中 [AWS IoT 设备影子服务 API](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#device-shadow-limits) 的限制。**  
默认值：8192 个字节  
最大值：30720 个字节

**Example 示例：配置合并更新**  
以下示例显示了配置合并更新示例，其中包含影子管理器组件的所有可用配置参数。  

```
{
  "synchronize": {
    "coreThing": {
      "classic": true,
      "namedShadows": [
        "MyCoreShadowA",
        "MyCoreShadowB"
      ]
    },
    "shadowDocuments": [
      {
        "thingName": "MyDevice1",
        "classic": false,
        "namedShadows": [
          "MyShadowA",
          "MyShadowB"
        ]
      },
      {
        "thingName": "MyDevice2",
        "classic": true,
        "namedShadows": []
      }
    ]
  },
  "rateLimits": {       
    "maxOutboundSyncUpdatesPerSecond": 100,
    "maxTotalLocalRequestsRate": 200,
    "maxLocalRequestsPerSecondPerThing": 20
  },
  "shadowDocumentSizeLimitBytes": 8192
}
```

------

## 本地日志文件
<a name="shadow-manager-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="shadow-manager-component-changelog"></a>

下表介绍每个组件版本的更改。


|  版本  |  更改  | 
| --- | --- | 
|  2.3.13  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.3.12  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.3.11  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.3.10  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.3.9  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.3.8  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.3.7  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.3.6  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.3.5  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.3.4  |  <a name="changelog-shadow-manager-2.3.4"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html)  | 
|  2.3.3  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.3.2  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.3.1  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.3.0  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.2.4  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html) | 
|  2.2.3  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.2.2  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.2.1  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.2.0  |  <a name="changelog-shadow-manager-2.2.0"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html)  | 
|  2.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html)  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html)  | 
|  2.0.6  |  此版本包含错误修复和改进。  | 
|  2.0.5  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html)  | 
|  2.0.3  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/shadow-manager-component.html)  | 
|  2.0.1  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.0  |  初始版本。  | 

# Amazon SNS
<a name="sns-component"></a>

Amazon SNS 组件 (`aws.greengrass.SNS`) 将消息发布到 Amazon Simple Notification Service（Amazon SNS）主题。您可以使用此组件将事件从 Greengrass 核心设备发送到 Web 服务器、电子邮件地址和其它消息订阅用户。有关更多信息，请参阅*《Amazon Simple Notification Service 开发者指南》*中的[什么是 Amazon SNS？](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)。

要使用此组件发布到 Amazon SNS 主题，请向该组件订阅的主题发布一条消息。默认情况下，此组件订阅 `sns/message`[local publish/subscribe](ipc-publish-subscribe.md) 主题。部署此组件时，您可以指定其他主题，包括 AWS IoT Core MQTT 主题。

在自定义组件中，您可能需要实施筛选或格式化逻辑，以处理来自其它来源的消息，然后再将其发布到此组件。这使您能够将消息处理逻辑集中于单个组件。

**注意**  
此组件提供的功能与 V1 中的 Amazon SNS 连接器类似。 AWS IoT Greengrass 有关更多信息，请参阅《AWS IoT Greengrass V1 开发人员指南》中的 [Amazon SNS 连接器](https://docs.aws.amazon.com/greengrass/latest/developerguide/sns-connector.html)。**

**Topics**
+ [版本](#sns-component-versions)
+ [Type](#sns-component-type)
+ [操作系统](#sns-component-os-support)
+ [要求](#sns-component-requirements)
+ [依赖项](#sns-component-dependencies)
+ [配置](#sns-component-configuration)
+ [输入数据](#sns-component-input-data)
+ [输出数据](#sns-component-output-data)
+ [本地日志文件](#sns-component-log-file)
+ [许可证](#sns-component-licenses)
+ [更改日志](#sns-component-changelog)

## 版本
<a name="sns-component-versions"></a>

此组件具有以下版本：
+ 2.1.x
+ 2.0.x

## Type
<a name="sns-component-type"></a>

<a name="public-component-type-lambda"></a>此<a name="public-component-type-lambda-phrase"></a>组件是一个 Lambda 组件 (`aws.greengrass.lambda`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 使用 [Lambda 启动程序组件](lambda-launcher-component.md)运行此组件的 Lambda 函数。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="sns-component-os-support"></a>

此组件只能安装在 Linux 核心设备上。

## 要求
<a name="sns-component-requirements"></a>

此组件具有以下要求：
+ <a name="core-device-lambda-function-requirements"></a>您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数，则设备必须满足相关要求。有关更多信息，请参阅 [Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) 版本 3.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ Amazon SNS 主题。有关更多信息，请参阅 *Amazon Simple Notification Service 开发人员指南*中的[创建 Amazon SNS 主题](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)。
+ [Greengrass 设备角色](device-service-role.md)必须允许执行 `sns:Publish` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "sns:Publish"
        ],
        "Effect": "Allow",
        "Resource": [
          "arn:aws:sns:us-east-1:123456789012:topic-name"
        ]
      }
    ]
  }
  ```

------

  您可以动态覆盖该组件输入消息负载中的默认主题。如果您的应用程序使用此功能，则 IAM 策略必须包括所有目标主题作为资源。您可以授予对资源的具体或条件访问权限（例如，通过使用通配符 `*` 命名方案）。
+ <a name="connector-component-legacy-subscription-router-dependency"></a>要接收此组件的输出数据，在部署此组件时，必须合并[旧版订阅路由器组件](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) 的以下配置更新。此配置指定此组件发布响应的主题。

------
#### [ Legacy subscription router v2.1.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-sns": {
        "id": "aws-greengrass-sns",
        "source": "component:aws.greengrass.SNS",
        "subject": "sns/message/status",
        "target": "cloud"
      }
    }
  }
  ```

------
#### [ Legacy subscription router v2.0.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-sns": {
        "id": "aws-greengrass-sns",
        "source": "arn:aws:lambda:region:aws:function:aws-greengrass-sns:version",
        "subject": "sns/message/status",
        "target": "cloud"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*替换为 AWS 区域 你使用的。
  + *version*替换为该组件运行的 Lambda 函数的版本。要查找 Lambda 函数版本，您必须查看要部署的此组件版本配方。在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中打开此组件的详细信息页面，然后查找 **Lambda 函数**键值对。此键值对包含 Lambda 函数的名称和版本。

**重要**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
每次部署此组件时，都必须更新旧版订阅路由器上的 Lambda 函数版本。这样能够确保为部署的组件版本使用正确的 Lambda 函数版本。

------

  <a name="connector-component-create-deployments"></a>有关更多信息，请参阅 [创建部署](create-deployments.md)。
+ 支持在 VPC 中运行 Amazon SNS 组件。要在 VPC 中部署此组件，需要满足以下条件。
  + Amazon SNS 组件必须连接至 VPC 端点为 `com.amazonaws.us-east-1.sns` 的 `sns.region.amazonaws.com`。

### 端点和端口
<a name="sns-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `sns.region.amazonaws.com`  | 443 | 是 |  向 Amazon SNS 发布消息。  | 

## 依赖项
<a name="sns-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#sns-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.1.10 ]

下表列出了此组件的版本 2.1.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.16.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.9 ]

下表列出了此组件的版本 2.1.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.15.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.8 ]

下表列出了此组件的版本 2.1.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.14.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.7 ]

下表列出了此组件的版本 2.1.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.13.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.6 ]

下表列出了此组件的版本 2.1.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.12.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.5 ]

下表列出了此组件的版本 2.1.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.11.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.4 ]

下表列出了此组件的版本 2.1.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.10.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.3 ]

下表列出了此组件的版本 2.1.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.9.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.2 ]

下表列出了此组件的版本 2.1.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.8.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.1.1 ]

下表列出了此组件的版本 2.1.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.7.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.8 - 2.1.0 ]

下表列出了此组件版本 2.0.8 和 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.6.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.7 ]

下表列出了此组件的版本 2.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.5.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.6 ]

下表列出了此组件的版本 2.0.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.4.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.5 ]

下表列出了此组件的版本 2.0.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.3.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.4 ]

下表列出了此组件的版本 2.0.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.0 <2.2.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | ^2.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | ^2.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | ^2.0.0  | 硬性 | 

------
#### [ 2.0.3 ]

下表列出了此组件的版本 2.0.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.0.3 <2.1.0  | 硬性 | 
| [Lambda 启动程序](lambda-launcher-component.md) | >=1.0.0  | 硬性 | 
| [Lambda 运行时](lambda-runtimes-component.md) | >=1.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) | >=1.0.0  | 硬性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="sns-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

**注意**  <a name="connector-component-lambda-parameters"></a>
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数，以便在您的设备上配置此组件。

`lambdaParams`  
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息：    
`EnvironmentVariables`  
包含 Lambda 函数的参数的对象。该对象包含以下信息：    
`DEFAULT_SNS_ARN`  
此组件发布消息的默认 Amazon SNS 主题的 ARN。您可以用输入消息有效载荷中的 `sns_topic_arn` 属性覆盖目标主题。

`containerMode`  <a name="connector-component-container-mode-parameter"></a>
（可选）此组件的容器化模式。从以下选项中进行选择：  <a name="lambda-function-component-container-mode-parameter"></a>
+ `NoContainer` – 该组件不在隔离的运行时环境中运行。
+ `GreengrassContainer`— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
默认值：`GreengrassContainer`

`containerParams`  
<a name="connector-component-container-params-description"></a>（可选）包含此组件的容器参数的对象。如果您为 `containerMode` 指定 `GreengrassContainer`，则该组件使用这些参数。  
该对象包含以下信息：    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>（可选）要分配给组件的内存量（以千字节为单位）。  
默认为 512 MB（525,312 KB）。

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（可选）包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是从 AWS IoT Core 还是本地 publish/subscribe 主题订阅 MQTT 主题。  
该对象包含以下信息：    
`0` – 这是字符串形式的数组索引。  
包含以下信息的对象：    
`type`  
（可选）此组件用于订阅 publish/subscribe 消息的消息类型。从以下选项中进行选择：  
+ `PUB_SUB` – 订阅本地发布/订阅消息。如果选择此选项，主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。
+ `IOT_CORE`— 订阅 AWS IoT Core MQTT 消息。如果选择此选项，主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。
默认值：`PUB_SUB`  
`topic`  
（可选）组件订阅以接收消息的主题。如果您为 `type` 指定 `IotCore`，则可以在本主题中使用 MQTT 通配符（`+` 和 `#`）。

**Example 示例：配置合并更新（容器模式）**  

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "DEFAULT_SNS_ARN": "arn:aws:sns:us-west-2:123456789012:mytopic"
    }
  },
  "containerMode": "GreengrassContainer"
}
```

**Example 示例：配置合并更新（无容器模式）**  

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "DEFAULT_SNS_ARN": "arn:aws:sns:us-west-2:123456789012:mytopic"
    }
  },
  "containerMode": "NoContainer"
}
```

## 输入数据
<a name="sns-component-input-data"></a>

此组件接受有关以下主题的消息，并将信息按原样发布到目标 Amazon SNS 主题。<a name="connector-component-local-publish"></a>默认情况下，此组件订阅本地 publish/subscribe 消息。有关如何从您的自定义组件向此组件发布消息的更多信息，请参阅 [发布/订阅本地消息](ipc-publish-subscribe.md)。

**默认主题（本地发布/订阅）：**`sns/message`

<a name="connector-component-input-properties"></a>消息接受以下属性。输入消息必须采用 JSON 格式。

`request`  
有关要发送到 Amazon SNS 主题的消息的信息。  
类型：包含以下信息的 `object`：    
`message`  
字符串类型的消息的内容。  
要发送 JSON 对象，请将其序列化为字符串，然后为 `message_structure` 属性指定 `json`。  
类型：`string`  
`subject`  
（可选）消息主题。  
类型：`string`  
主题可以是 ASCII 文本，最多 100 个字符。必须以字母、数字或标点符号开头。不得包含换行符或控制字符。  
`sns_topic_arn`  
（可选）此组件发布消息的 Amazon SNS 主题的 ARN。指定此属性以覆盖默认 Amazon SNS 主题。  
类型：`string`  
`message_structure`  
（可选）消息结构。指定 `json` 发送在 `content` 属性中序列化为字符串的 JSON 消息。  
类型：`string`  
有效值：`json`

`id`  <a name="connector-component-input-property-id"></a>
请求的任意 ID。使用此属性将输入请求映射到输出响应。指定此属性时，组件会将响应对象中的 `id` 属性设置为该值。  
类型：`string`

**注意**  
消息大小最大可以为 256KB。

**Example 示例输入：字符串消息**  

```
{
  "request": {
    "subject": "Message subject",
    "message": "Message data",
    "sns_topic_arn": "arn:aws:sns:region:account-id:topic2-name"
  },
  "id": "request123"
}
```

**Example 示例输入：JSON 消息**  

```
{
  "request": {
    "subject": "Message subject",
    "message": "{ \"default\": \"Message data\" }",
    "message_structure": "json"
  },
  "id": "request123"
}
```

## 输出数据
<a name="sns-component-output-data"></a>

 <a name="connector-component-output-data"></a>默认情况下，此组件会将响应作为输出数据发布至以下 MQTT 主题。您必须在[旧版订阅路由器组件](legacy-subscription-router-component.md)的配置中将主题指定为 `subject`。有关如何在自定义组件中订阅此主题消息的更多信息，请参阅 [发布/订阅 AWS IoT Core MQTT 消息](ipc-iot-core-mqtt.md)。

**默认主题 (AWS IoT Core MQTT)：**`sns/message/status`

**Example 示例输出：成功**  

```
{
  "response": {
    "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a",
    "status": "success"
  },
  "id": "request123"
}
```

**Example 示例输出：失败**  

```
{
  "response" : {
    "error": "InvalidInputException",
    "error_message": "SNS Topic Arn is invalid",
    "status": "fail"
  },
  "id": "request123"
}
```

## 本地日志文件
<a name="sns-component-log-file"></a>

此组件使用以下日志文件。

```
/greengrass/v2/logs/aws.greengrass.SNS.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径。

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.SNS.log
  ```

## 许可证
<a name="sns-component-licenses"></a>

此组件包含以下第三方软件/许可：<a name="boto-3-licenses"></a>
+ [适用于 Python (Boto3) 的 AWS SDK](https://pypi.org/project/boto3/)/Apache 许可证 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache 许可证 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF 许可证
+ [docutils](https://pypi.org/project/docutils/)/BSD 许可证，GNU 通用公共许可证 (GPL)，Python 软件基金会许可证，公共领域
+ [jmespath](https://pypi.org/project/jmespath/)/MIT 许可证
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache 许可证 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT 许可证

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="sns-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.10  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.1.9  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.1.8  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.1.7  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.6  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.5  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.4  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.1.3  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.2  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.1.1  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/sns-component.html)  | 
|  2.0.8  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.7  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.5  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.4  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.3  |  初始版本。  | 

# 流管理器
<a name="stream-manager-component"></a>

流管理器组件 (`aws.greengrass.StreamManager`) 使您能够处理要 AWS 云 从 Greengrass 核心设备传输到的数据流。

有关如何在自定义组件中配置和使用流管理器的更多信息，请参阅[管理 Greengrass 核心设备上的数据流](manage-data-streams.md)。

**Topics**
+ [版本](#stream-manager-component-versions)
+ [Type](#stream-manager-component-type)
+ [操作系统](#stream-manager-component-os-support)
+ [要求](#stream-manager-component-requirements)
+ [依赖项](#stream-manager-component-dependencies)
+ [配置](#stream-manager-component-configuration)
+ [本地日志文件](#stream-manager-component-log-file)
+ [更改日志](#stream-manager-component-changelog)

## 版本
<a name="stream-manager-component-versions"></a>

此组件具有以下版本：
+ 2.2.x
+ 2.1.x
+ 2.0.x

**注意**  <a name="stream-manager-upgrade-note"></a>
如果您使用流管理器将数据导出到云端，则无法将流管理器组件 2.0.7 版本升级到 v2.0.8 到 v2.0.11 之间的版本。如果您是首次部署流管理器，我们强烈建议您部署最新版本的流管理器组件。

## Type
<a name="stream-manager-component-type"></a>

<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)。

## 操作系统
<a name="stream-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="stream-manager-component-requirements"></a>

此组件具有以下要求：
+ [令牌交换角色](device-service-role.md)必须允许访问您在直播管理器中使用的 AWS 云 目的地。有关更多信息，请参阅:<a name="export-destinations-links"></a>
  + [AWS IoT Analytics 频道](stream-export-configurations.md#export-to-iot-analytics)
  + [Amazon Kinesis data streams](stream-export-configurations.md#export-to-kinesis)
  + [AWS IoT SiteWise 资产属性](stream-export-configurations.md#export-to-iot-sitewise)
  + [Amazon S3 对象](stream-export-configurations.md#export-to-s3)
+ 支持在 VPC 中运行流管理器组件。要在 VPC 中部署此组件，需要满足以下条件。
  + 流管理器组件必须连接到您向其发布数据的 AWS 服务。
    + Amazon S3：`com.amazonaws.region.s3`
    + Amazon Kinesis Data Streams：`com.amazonaws.region.kinesis-streams`
    + AWS IoT SiteWise: `com.amazonaws.region.iotsitewise.data`
  + 如果您将数据发布到 `us-east-1` 区域的 Amazon S3，则默认情况下，此组件将尝试使用 S3 全局端点；但是，此端点无法通过 Amazon S3 VPC 接口端点使用。有关更多信息，请参阅 [Amazon S3 AWS PrivateLink 的限制和限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#privatelink-limitations)。要解决此问题，您可从以下选项中进行选择。
    + 通过在 `JVM_ARGS` 中设置 `-Daws.s3UseUsEast1RegionalEndpoint=regional`，将流管理器组件配置为使用 `us-east-1` 区域中的区域 S3 端点。
    + 创建 Amazon S3 网关 VPC 端点，而不是 Amazon S3 接口 VPC 端点。S3 网关端点支持访问 S3 全局端点。有关更多信息，请参阅[创建网关端点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3)。

### 端点和端口
<a name="stream-manager-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 终端节点 | 端口 | 必需 | 描述 | 
| --- | --- | --- | --- | 
|  `iotanalytics.region.amazonaws.com`  | 443 | 否 |  如果您向发布数据，则为必填项 AWS IoT Analytics。  | 
|  `kinesis.region.amazonaws.com`  | 443 | 否 |  如果您将数据发布到 Firehose，则为必需。  | 
|  `data.iotsitewise.region.amazonaws.com`  | 443 | 否 |  如果您向发布数据，则为必填项 AWS IoT SiteWise。  | 
|  `*.s3.amazonaws.com`  | 443 | 否 |  如果您将数据发布到 S3 存储桶，则为必需。 您可以将 `*` 替换为发布数据的每个存储桶的名称。  | 

## 依赖项
<a name="stream-manager-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#stream-manager-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.1.3 – 2.2.1 ]

下表列出了此组件版本 2.1.3 到 2.2.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <3.0.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.1.11 – 2.1.12 ]

下表列出了此组件版本 2.1.11 至 2.1.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.13.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.1.9 – 2.1.10 ]

下表列出了此组件版本 2.1.9 到 2.1.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.12.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.1.5 – 2.1.8 ]

下表列出了此组件版本 2.1.5 到 2.1.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.11.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.1.2 – 2.1.4 ]

下表列出了此组件版本 2.1.2 到 2.1.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.10.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.1.1 ]

下表列出了此组件的版本 2.1.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.9.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.1.0 ]

下表列出了此组件版本 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.8.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.0.15 ]

下表列出了此组件版本 2.0.15 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.7.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.0.13 and 2.0.14 ]

下表列出了此组件版本 2.0.13 和 2.0.14 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.6.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.0.11 and 2.0.12 ]

下表列出了此组件版本 2.0.11 和 2.0.12 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.5.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.0.10 ]

下表列出了此组件的版本 2.0.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.4.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.0.9 ]

下表列出了此组件的版本 2.0.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.3.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.0.8 ]

下表列出了此组件的版本 2.0.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.0 <2.2.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------
#### [ 2.0.7 ]

下表列出了此组件的版本 2.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) |  >=2.0.3 <2.1.0  | 软性 | 
| [令牌交换服务](token-exchange-service-component.md) |  >=0.0.0  | 硬性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="stream-manager-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`STREAM_MANAGER_STORE_ROOT_DIR`  
（可选）用于存储流的本地目录的绝对路径。此值必须以正斜杠开头（例如， `/data`）。  
<a name="stream-manager-store-root-dir-parameter-folder-requirements"></a>您必须指定现有文件夹，并且[运行流管理器组件的系统用户](configure-greengrass-core-v2.md#configure-component-user)必须拥有向此文件夹执行读取和写入的权限。例如，您可以运行以下命令来创建和配置文件夹 `/var/greengrass/streams`，并将其指定为流管理器根文件夹。这些命令允许默认系统用户 `ggc_user` 向该文件夹执行读取和写入。  

```
sudo mkdir /var/greengrass/streams
sudo chown ggc_user /var/greengrass/streams
sudo chmod 700 /var/greengrass/streams
```
默认值：`/greengrass/v2/work/aws.greengrass.StreamManager`

`STREAM_MANAGER_SERVER_PORT`  
（可选）用于与流管理器通信的本地端口号。  
您可以指定 `0` 来使用随机可用端口。  
默认值：`8088`

`STREAM_MANAGER_AUTHENTICATE_CLIENT`  
（可选）您可以强制要求客户端先进行身份验证，再与流管理器交互。流管理器 SDK 控制客户端与流管理器之间的交互。此参数用于确定哪些客户端可以调用流管理器 SDK 来处理流。有关更多信息，请参阅[流管理器客户端身份验证](manage-data-streams.md#stream-manager-security-client-authentication)。  
如果您指定 `true`，则流管理器 SDK 仅允许 Greengrass 组件作为客户端。  
如果您指定 `false`，则流管理器 SDK 允许核心设备上的所有进程成为客户端。  
默认值：`true`

`STREAM_MANAGER_EXPORTER_MAX_BANDWIDTH`  
（可选）流管理器在导出数据时可使用的平均最大带宽（以千位/秒为单位）。  
默认值：无限制

`STREAM_MANAGER_EXPORTER_THREAD_POOL_SIZE`  
（可选）流管理器在导出数据时可使用的最大活动线程数。  
最佳大小取决于您的硬件、流的量和计划的导出流数量。如果导出速度较慢，您可以调整此设置以找出适合您的硬件和业务案例的最佳大小。核心设备硬件的 CPU 和内存是限制因素。首先，您可以尝试将此值设置为等于设备上的处理器核心数。  
请注意，不要设置大于硬件可以支持的大小。每个流都会消耗硬件资源，因此请尝试限制受约束设备上的导出流的数量。  
默认值：5 个线程

`STREAM_MANAGER_EXPORTER_S3_DESTINATION_MULTIPART_UPLOAD_MIN_PART_SIZE_BYTES`  
（可选）向 Amazon S3 分段上传时每个分段的大小上限（以字节为单位）。流管理器使用此设置和输入文件的大小来确定如何对多部分 PUT 请求中的数据进行批处理。  
流管理器使用流 `sizeThresholdForMultipartUploadBytes` 属性来确定是以单段上传方式还是以分段上传方式导出到 Amazon S3。 AWS IoT Greengrass 组件可以在创建导出到 Amazon S3 的流时设置此阈值。
默认值：`5242880`（5MB） 这也是最小值。

`LOG_LEVEL`  
（组件）组件的日志记录级别。从以下日志级别中选择，此处按级别顺序列出：  
+ `TRACE`
+ `DEBUG`
+ `INFO`
+ `WARN`
+ `ERROR`
默认值：`INFO`

`JVM_ARGS`  
（可选）在启动时传递给流管理器的自定义 Java 虚拟机参数。通过空格分隔多个参数。  
仅当您必须覆盖 JVM 使用的默认设置时才使用此参数。例如，如果计划导出大量的流，则可能需要增加默认堆大小。

`startupTimeoutSeconds`  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `ERRORED`。  
默认值：`120`

**Example 示例：配置合并更新**  
以下示例配置指定使用非默认端口。  

```
{
  "STREAM_MANAGER_SERVER_PORT": "18088"
}
```

## 本地日志文件
<a name="stream-manager-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.greengrass.StreamManager.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.greengrass.StreamManager.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.StreamManager.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.greengrass.StreamManager.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="stream-manager-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.2.1  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html) | 
|  2.2.0  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html) | 
|  2.1.13  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html) | 
|  2.1.12  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html) | 
|  2.1.11  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.1.10  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.1.9  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.1.8  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.1.7  |  <a name="changelog-stream-manager-2.1.7"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.1.6  |  <a name="changelog-stream-manager-2.1.6"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.1.5  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.1.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.1.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.1.1  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.0.15  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.0.14  |  此版本包含错误修复和改进。  | 
|  2.0.13  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
| 2.0.12 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/stream-manager-component.html)  | 
|  2.0.11  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.10  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.9  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.8  |  对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。  | 
|  2.0.7  |  初始版本。  | 

# 系统日志转发服务器
<a name="system-log-forwarder-component"></a>

系统日志转发器 (`aws.greengrass.SystemLogForwarder`) CloudWatch 使用 CloudWatch HTTPS API 将活动系统日志直接上传到亚马逊。

**重要**  
此组件仅转发运行时生成的 systemd-journald 日志。有关 systemd-journald 日志的更多信息，请参阅 [systemd-journald](https://www.freedesktop.org/software/systemd/man/latest/systemd-journald.service.html) 和 [journalctl](https://www.freedesktop.org/software/systemd/man/latest/journalctl.html#)。

**注意**  
此组件需要特定的权限才能创建和管理 CloudWatch 日志组和流。

**Topics**
+ [版本](#system-log-forwarder-component-versions)
+ [Type](#system-log-forwarder-component-type)
+ [操作系统](#system-log-forwarder-component-os-support)
+ [要求](#system-log-forwarder-component-requirements)
+ [端点和端口](#system-log-forwarder-component-endpoints)
+ [依赖项](#system-log-forwarder-component-dependencies)
+ [配置](#system-log-forwarder-component-configuration)
+ [更改日志](#system-log-forwarder-component-changelog)

## 版本
<a name="system-log-forwarder-component-versions"></a>

此组件具有以下版本：
+ 2.1.x
+ 2.0.x

## Type
<a name="system-log-forwarder-component-type"></a>

<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)。

## 操作系统
<a name="system-log-forwarder-component-os-support"></a>

该组件必须安装在基于 systemd 的 Linux 系统上。

## 要求
<a name="system-log-forwarder-component-requirements"></a>

此组件具有以下要求：

该组件需要访问权限才能在中创建日志和流组， CloudWatch 以及执行 PutLogEvents HTTP 调用的权限。至少须在 Greengrass 设备的角色别名中添加以下策略权限：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
      "Effect": "Allow",
      "Action": ["logs:CreateLogGroup"],
      "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:greengrass/systemLogs:*"
    },
    {
      "Effect": "Allow",
      "Action": ["logs:CreateLogStream", "logs:PutLogEvents"],
      "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:greengrass/systemLogs:log-stream:${credentials-iot:ThingName}"
    }
  ]
}
```

------

**注意**  
有关更多信息，请参阅系统日志转发服务器的 [Github](https://github.com/aws-greengrass/aws-greengrass-system-log-forwarder) 页面。

## 端点和端口
<a name="system-log-forwarder-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `logs.region.amazonaws.com`  | 443 | 否 |  如果将日志写入日 CloudWatch 志，则为必填项。  | 

## 依赖项
<a name="system-log-forwarder-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#system-log-forwarder-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.1.x ]

下表列出了此组件版本 2.1.x 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [令牌交换服务](token-exchange-service-component.md) | >=2.0.0 | 硬性 | 
| [Greengrass Nucleus Lite](greengrass-nucleus-lite-component.md) | >=2.3.0 | 软性 | 

------
#### [ 2.0.x ]

下表列出了此组件的版本 2.0.x 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [令牌交换服务](token-exchange-service-component.md) | >=2.0.0 | 硬性 | 

------

## 配置
<a name="system-log-forwarder-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

------
#### [ 2.0.x-2.1.x ]

`maxUploadIntervalSec`  
系统日志转发服务器尝试上传日志的最大时限。由于日志转发服务器会在内存填满时上传日志，因此其上传频率仍可能超过配置的最大频率。

`maxRetriesCount`  
系统日志转发服务器尝试重新尝试瞬时 HTTP 错误的次数。

`bufferCapacity`  
内存中日志存储环形缓冲区的大小。

`logGroup`  
中的登录路径 CloudWatch。

`logStream`  
 CloudWatch 日志流。

`filters`  
核心设备筛选器配置地图。    
`services`  
服务名筛选器列表，系统日志转发服务器将使用该列表来确定上传哪些日志。只有当日志来源的服务至少与该列表中的一个筛选器匹配时，才会上传日志。此列表中的筛选器可以是服务名称必须与之完全匹配的字符串，也可以是以 \$1 结尾的字符串，这意味着其前缀必须匹配。  
默认值：`[ggl.*]`  
只有当日志来源的服务至少与该列表中的一个筛选器匹配时，才会上传日志。
使用值“\$1”将包括所有可用的服务。

**Example 示例配置：**  
以下示例将按照 Greengrass Nucleus Lite 中包含的所有服务来筛选日志。  

```
{
    "maxUploadIntervalSec": 300,
    "maxRetriesCount": 3,
    "bufferCapacity": 1048576,
    "logGroup": "greengrass/systemLogs",
    "logStream": "deviceName",
    "filters": {
        "services": ["ggl.*"]
    }
}
```

------

## 更改日志
<a name="system-log-forwarder-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/system-log-forwarder-component.html)  | 
|  2.0.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/system-log-forwarder-component.html)  | 
|  2.0.0  |  初始版本。  | 

# Systems Manager Agent
<a name="systems-manager-agent-component"></a>

 AWS Systems Manager 代理组件 (`aws.greengrass.SystemsManagerAgent`) 会安装 Systems Manager 代理，因此您可以使用 Systems Manager 管理核心设备。Systems Manager 是一项可用于查看和控制基础设施的 AWS 服务 AWS，包括亚马逊 EC2 实例、本地服务器和虚拟机 (VMs) 以及边缘设备。Systems Manager 允许您查看操作数据、自动执行操作任务以及维护安全与合规性。有关更多信息，请参阅[什么是 AWS Systems Manager？](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) 以及《*AWS Systems Manager 用户指南》*中的 “[关于 Systems Manager 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/prereqs-ssm-agent.html)”。

<a name="about-systems-manager-capabilities"></a>Systems Manager 的工具和功能称为*功能*。Greengrass 核心设备支持 Systems Manager 的所有功能。有关这些功能以及如何使用 Systems Manager 管理核心设备的更多信息，请参阅《AWS Systems Manager 用户指南》**中的 [Systems Manager 功能](https://docs.aws.amazon.com/systems-manager/latest/userguide/features.html)。

**Topics**
+ [版本](#systems-manager-agent-component-versions)
+ [Type](#systems-manager-agent-component-type)
+ [操作系统](#systems-manager-agent-component-os-support)
+ [要求](#systems-manager-agent-component-requirements)
+ [依赖项](#systems-manager-agent-component-dependencies)
+ [配置](#systems-manager-agent-component-configuration)
+ [本地日志文件](#systems-manager-agent-component-log-file)
+ [另请参阅](#systems-manager-agent-component-see-also)
+ [更改日志](#systems-manager-agent-component-changelog)

## 版本
<a name="systems-manager-agent-component-versions"></a>

此组件具有以下版本：
+ 1.3.x
+ 1.2.x
+ 1.1.x
+ 1.0.x

## Type
<a name="systems-manager-agent-component-type"></a>

<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)。

## 操作系统
<a name="systems-manager-agent-component-os-support"></a>

此组件只能安装在 Linux 核心设备上。

## 要求
<a name="systems-manager-agent-component-requirements"></a>

此组件具有以下要求：
+ 一款在 64 位 Linux 平台上运行的 Greengrass 核心设备：Armv8 () 或 x86\$164。AArch64
+ 您必须拥有 Systems Manager 可以担任的 AWS Identity and Access Management (IAM) 服务角色。此角色必须包含 [Amazon SSMManaged InstanceCore](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore) 托管策略或定义等效权限的自定义策略。有关更多信息，请参阅《AWS Systems Manager 用户指南》[https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-edge-devices.html#systems-manager-setting-up-edge-devices-service-role](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-edge-devices.html#systems-manager-setting-up-edge-devices-service-role)中的*为边缘设备创建 IAM 服务角色*。

  部署此组件时，您必须为 `SSMRegistrationRole` 配置参数指定此角色的名称。
+ [Greengrass 设备](device-service-role.md)角色必须允许 `ssm:AddTagsToResource` 和 `ssm:RegisterManagedInstance` 操作。设备角色还必须允许针对满足先前要求的 IAM 服务角色的 `iam:PassRole` 操作。以下示例 IAM 策略授予这些权限。

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "iam:PassRole"
        ],
        "Effect": "Allow",
        "Resource": [
          "arn:aws:iam::account-id:role/SSMServiceRole"
        ]
      },
      {
        "Action": [
          "ssm:AddTagsToResource",
          "ssm:RegisterManagedInstance"
        ],
        "Effect": "Allow",
        "Resource": "*"
      }
    ]
  }
  ```

### 端点和端口
<a name="systems-manager-agent-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 终端节点 | 端口 | 必需 | 描述 | 
| --- | --- | --- | --- | 
|  `ec2messages.region.amazonaws.com`  | 443 | 是 |  在 AWS 云中与 Systems Manager 服务通信。  | 
|  `ssm.region.amazonaws.com`  | 443 | 是 |  将核心设备注册为 Systems Manager 托管节点。  | 
|  `ssmmessages.region.amazonaws.com`  | 443 | 是 |  在 AWS 云中与 Systems Manager 的一项功能 Session Manager 通信。  | 

有关更多信息，请参阅《AWS Systems Manager 用户指南》**中的[参考：ec2messages、ssmmessages 和其它 API 调用](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-messageAPIs.html)。

## 依赖项
<a name="systems-manager-agent-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#systems-manager-agent-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

下表列出了此组件的 1.0.0 到 1.3.0 版本的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [令牌交换服务](token-exchange-service-component.md) |  >=2.0.0 <3.0.0 | 硬性 | 

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="systems-manager-agent-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`SSMRegistrationRole`  
Systems Manager 可以担任的 IAM 服务角色，其中包括[亚马逊SSMManagedInstanceCore](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore)托管策略或定义等效权限的自定义策略。有关更多信息，请参阅《AWS Systems Manager 用户指南》[https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-edge-devices-service-role.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-edge-devices-service-role.html)中的*为边缘设备创建 IAM 服务角色*。

`SSMOverrideExistingRegistration`  
（可选）如果核心设备已经运行通过混合激活注册的 Systems Manager Agent，您可以覆盖该设备的现有 Systems Manager Agent 注册。将此选项设置为 `true`，使用此组件提供的 Systems Manager Agent 将核心设备注册为托管节点。  
此选项仅适用于通过混合激活注册的设备。如果核心设备在安装了 Systems Manager 代理并配置了 EC2 实例配置文件角色的亚马逊实例上运行，则亚马逊 EC2 实例的现有托管节点 ID 以开头`i-`。当您安装 Systems Manager Agent 组件时，Systems Manager Agent 会注册一个新的托管节点，该节点的 ID 以 `mi-`（而不是 `i-`）开头。然后，您可以使用 ID 以 `mi-` 开头的托管节点通过 Systems Manager 管理核心设备。
默认值：`false`

`SSMResourceTags`  
（可选）要添加到此组件为核心设备创建的 Systems Manager 托管节点的标签。您可以使用这些标签通过 Systems Manager 管理核心设备组。例如，您可以在所有带您指定的标签的设备上运行命令。  
指定一个列表，其中每个标签都是带 `Key` 和 `Value` 的对象。例如，`SSMResourceTags` 的以下值指示此组件在核心设备的托管节点上将 **Owner** 标签设置为 **richard-roe**。  

```
[
  {
    "Key": "Owner",
    "Value": "richard-roe"
  }
]
```
如果托管节点已经存在并且 `SSMOverrideExistingRegistration` 为 `false`，则此组件将忽略这些标签。

**Example 示例：配置合并更新**  
以下示例配置指定使用名为 `SSMServiceRole` 的服务角色，以允许核心设备注册 Systems Manager 并与其通信。  

```
{
  "SSMRegistrationRole": "SSMServiceRole",
  "SSMOverrideExistingRegistration": false,
  "SSMResourceTags": [
    {
      "Key": "Owner",
      "Value": "richard-roe"
    },
    {
      "Key": "Team",
      "Value": "solar"
    }
  ]
}
```

## 本地日志文件
<a name="systems-manager-agent-component-log-file"></a>

Systems Manager Agent 软件将日志写入 Greengrass 根文件夹之外的文件夹。有关更多信息，请参阅《AWS Systems Manager 用户指南》**中的[查看 Systems Manager Agent 日志](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-agent-logs.html)。

Systems Manager Agent 组件使用 Shell 脚本安装、启动和停止 Systems Manager Agent。您可以在以下日志文件中找到这些脚本的输出。

```
/greengrass/v2/logs/aws.greengrass.SystemsManagerAgent.log
```

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。`/greengrass/v2`替换为 AWS IoT Greengrass 根文件夹的路径。

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.SystemsManagerAgent.log
  ```

## 另请参阅
<a name="systems-manager-agent-component-see-also"></a>
+ [通过 AWS Systems Manager 管理 Greengrass 核心设备](manage-with-systems-manager.md)
+ *AWS Systems Manager 用户指南* 中的[什么是 AWS Systems Manager？](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)
+ 《AWS Systems Manager 用户指南》**中的[关于 Systems Manager Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/prereqs-ssm-agent.html)

## 更改日志
<a name="systems-manager-agent-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.3.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/systems-manager-agent-component.html)  | 
|  1.2.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/systems-manager-agent-component.html)  | 
|  1.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/systems-manager-agent-component.html)  | 
|  1.1.0  |  此版本包含错误修复和改进。  | 
|  1.0.0  |  初始版本。  | 

# 令牌交换服务
<a name="token-exchange-service-component"></a>

令牌交换服务组件 (`aws.greengrass.TokenExchangeService`) 提供了可用于与自定义组件中的 AWS 服务进行交互的 AWS 凭证。

令牌交换服务作为本地服务器运行。此本地服务器使用您在 [Greengras](greengrass-nucleus-component.md) s 核心核心组件中配置的 AWS IoT 角色别名连接到 AWS IoT 凭证提供程序。该组件提供了两个环境变量，`AWS_CONTAINER_CREDENTIALS_FULL_URI` 和 `AWS_CONTAINER_AUTHORIZATION_TOKEN`。`AWS_CONTAINER_CREDENTIALS_FULL_URI` 定义此本地服务器的 URI。当组件创建 S AWS DK 客户端时，该客户端会识别此 URI 环境变量，并使用中的令牌`AWS_CONTAINER_AUTHORIZATION_TOKEN`连接到令牌交换服务并检索 AWS 凭证。这允许 Greengrass 核心设备调用 AWS 服务操作。有关自定义组件中此组件用法的更多信息，请参阅 [与 AWS 服务交互](interact-with-aws-services.md)。

**重要**  <a name="token-exchange-service-aws-sdk-requirement"></a>
2016 年 7 月 13 日新增了 AWS SDKs 对以这种方式获取 AWS 证书的支持。您的组件必须使用在该日期或之后创建的 AWS SDK 版本。有关更多信息，请参阅《*亚马逊弹性容器服务开发者指南》中的[使用支持的 AWS 软件](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#task-iam-roles-minimum-sdk)开发*工具包。

**注意**  
使用 AWS 默认凭证链的组件可能会发现和使用其他凭证来源（如果存在）。在亚马逊弹性容器服务 (Amazon ECS) 中，亚马逊弹性容器服务 (Amazon ECS) 容器`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`凭证将`AWS_CONTAINER_CREDENTIALS_FULL_URI`优先于亚马逊弹性容器服务 (Amazon ECS)，这意味着令牌交换服务凭证可能无法在亚马逊弹性容器服务 (Amazon ECS) 中使用。有关更多信息，请参阅[标准化凭证](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)提供商 

**Topics**
+ [版本](#token-exchange-service-component-versions)
+ [Type](#token-exchange-service-component-type)
+ [操作系统](#token-exchange-service-component-os-support)
+ [依赖项](#token-exchange-service-component-dependencies)
+ [配置](#token-exchange-service-component-configuration)
+ [本地日志文件](#token-exchange-service-component-log-file)
+ [更改日志](#token-exchange-service-component-changelog)

## 版本
<a name="token-exchange-service-component-versions"></a>

此组件具有以下版本：
+ 2.0.x

## Type
<a name="token-exchange-service-component-type"></a>

<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)。

## 操作系统
<a name="token-exchange-service-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 依赖项
<a name="token-exchange-service-component-dependencies"></a>

此组件没有任何依赖关系。

## 配置
<a name="token-exchange-service-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`port`  
用于令牌交换服务连接的端口。端口配置变更后，令牌交换服务会重新启动。

`credentialRetryInSec`  
指定令牌交换服务遇到凭证请求错误时的重试间隔（以秒为单位）。    
`clientError`  
客户端错误的重试间隔（4xx HTTP 状态代码），以秒为单位。  
默认值：`120`  
有效值：`10` 到 `42900`  
`serverError`  
服务器错误的重试间隔（5xx HTTP 状态码），以秒为单位。  
默认值：`60`  
有效值：`10` 到 `42900`  
`unknownError`  
未知错误（连接错误和 4xx 和 5xx 范围之外的 HTTP 状态代码）的重试间隔（以秒为单位）。  
默认值：`300`  
有效值：`10` 到 `42900`

**Example 示例：配置合并更新**  

```
{
   "port": 2020,
   "credentialRetryInSec": {
    "clientError": 30,
    "serverError": 45,
    "unknownError": 60
   }
}
```

## 本地日志文件
<a name="token-exchange-service-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="token-exchange-service-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.0.3  |  初始版本。  | 

# 物联网 SiteWise OPC UA 采集器
<a name="iotsitewise-opcua-collector-component"></a>

IoT SiteWise OPC UA 收集器组件 (`aws.iot.SiteWiseEdgeCollectorOpcua`) 使 AWS IoT SiteWise 网关能够从本地 OPC UA 服务器收集数据。

使用此组件， AWS IoT SiteWise 网关可以连接到多个 OPC UA 服务器。有关 AWS IoT SiteWise 网关的更多信息，请参阅[《*AWS IoT SiteWise 用户指南》*中的在边缘使用 AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateways-ggv2.html)。

**Topics**
+ [版本](#iotsitewise-opcua-collector-component-versions)
+ [Type](#iotsitewise-opcua-collector-component-type)
+ [操作系统](#iotsitewise-opcua-collector-component-os-support)
+ [要求](#iotsitewise-opcua-collector-component-requirements)
+ [依赖项](#iotsitewise-opcua-collector-component-dependencies)
+ [配置](#iotsitewise-opcua-collector-component-configuration)
+ [输入数据](#iotsitewise-opcua-collector-component-input-data)
+ [输出数据](#iotsitewise-opcua-collector-component-output-data)
+ [本地日志文件](#iotsitewise-opcua-collector-component-log-file)
+ [许可证](#iotsitewise-opcua-collector-component-licenses)
+ [更改日志](#iotsitewise-opcua-collector-component-changelog)
+ [另请参阅](#iotsitewise-opcua-collector-component-see-also)

## 版本
<a name="iotsitewise-opcua-collector-component-versions"></a>

此组件具有以下版本：
+ 3.1.x
+ 3.0.x
+ 2.6.x
+ 2.5.x
+ 2.4.x
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="iotsitewise-opcua-collector-component-type"></a>

<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)。

## 操作系统
<a name="iotsitewise-opcua-collector-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="iotsitewise-opcua-collector-component-requirements"></a>

此组件具有以下要求：
+ Greengrass 核心设备必须在以下其中一个平台上运行：
  + 操作系统：Ubuntu 20.04 或更高版本

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Red Hat Enterprise Linux (RHEL) 8

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Amazon Linux 2

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Debian 11

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Windows Server 2019 或更高版本

    架构：x86\$164 () AMD64
+ Greengrass 核心设备必须允许与 OPC UA 服务器进行出站网络连接。

## 依赖项
<a name="iotsitewise-opcua-collector-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#iotsitewise-opcua-collector-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

下表列出了此组件所有版本的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.3.0 <3.0.0 | 硬性 | 
| [流管理器](stream-manager-component.md) | >2.0.10 <3.0.0 | 硬性 | 
| [密钥管理器](secret-manager-component.md) | >=2.0.8 <3.0.0 | 硬性 | 

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="iotsitewise-opcua-collector-component-configuration"></a>

此组件没有任何配置参数。

您可以使用 AWS IoT SiteWise 控制台或 API 来配置 IoT SiteWise OPC UA 收集器组件。有关更多信息，请参阅《AWS IoT SiteWise 用户指南》中的[第 4 步：添加数据来源 – 可选](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-gateway-ggv2.html#add-data-sources-console)。**

## 输入数据
<a name="iotsitewise-opcua-collector-component-input-data"></a>

此组件仅接受以下格式的数据，所有其他格式的数据都将被忽略并丢弃。下表将 OPC UA 数据类型映射到其 SiteWise 等效类型。


|  **SiteWise 数据类型**  |  **OPC UA 数据类型**  |  **描述**  | 
| --- | --- | --- | 
|  `STRING`  |  `String` `Guid` `XmlElement`  |  最大长度为 1024 个字节的字符串。  | 
|  `INTEGER`  |  `SByte` `Byte` `Int16` `UInt16` `Int32` `UInt32`\$1 `Int64`\$1  |  有符号的 32 位整数，其范围为 `-2,147,483,648 to 2,147,483,647`。  | 
|  `DOUBLE`  |  `UInt32`\$1 `Int64`\$1 `Float` `Double`  |  浮点数，其范围为 `–10^100 to 10^100` 并采用 `IEEE 754` 双精度。  | 
|  `BOOLEAN`  |  `Boolean`  |  `true` 或 `false`。  | 

\$1 对于 OPC UA 数据类型`UInt32`和`Int64`，`INTEGER`如果能够表示其值，则其 SiteWise 数据类型将为，否则将 SiteWise `DOUBLE`是。

## 输出数据
<a name="iotsitewise-opcua-collector-component-output-data"></a>



此组件将`BatchPutAssetPropertyValue`消息写入 AWS IoT Greengrass 流管理器。有关更多信息，请参阅《AWS IoT SiteWise API Reference》**中的 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)。

## 本地日志文件
<a name="iotsitewise-opcua-collector-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.iot.SiteWiseEdgeCollectorOpcua.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.iot.SiteWiseEdgeCollectorOpcua.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.iot.SiteWiseEdgeCollectorOpcua.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.iot.SiteWiseEdgeCollectorOpcua.log -Tail 10 -Wait
  ```

------

## 许可证
<a name="iotsitewise-opcua-collector-component-licenses"></a>

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="iotsitewise-opcua-collector-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
| 3.1.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
| 3.0.3 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
| 3.0.2 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
| 3.0.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
| 3.0.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
| 2.6.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
| 2.5.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
| 2.5.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
|  2.4.2  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html) | 
|  2.4.1  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html) | 
|  2.4.0  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
|  2.3.0  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html) | 
|  2.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
|  2.1.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
|  2.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)  | 
|  2.0.3  |  错误修复和改进。  | 
|  2.0.2  |  关于与边缘同步的资产优先级的错误修复和改进。  | 
|  2.0.1  |  初始版本。  | 

## 另请参阅
<a name="iotsitewise-opcua-collector-component-see-also"></a>
+ [什么是 AWS IoT SiteWise？](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) 在《*AWS IoT SiteWise 用户指南》*中。

# 物联网 SiteWise OPC UA 数据源模拟器
<a name="iotsitewise-opcua-data-source-simulator-component"></a>

IoT SiteWise OPC UA 数据源模拟器组件 (`aws.iot.SiteWiseEdgeOpcuaDataSourceSimulator`) 启动生成示例数据的本地 OPC UA 服务器。使用此 OPC UA 服务器模拟网关上[物联网 SiteWise OPC UA 收集器组件](iotsitewise-opcua-collector-component.md)读取的数据源。 AWS IoT SiteWise 然后，您可以使用此示例数据探索 AWS IoT SiteWise 要素。有关 AWS IoT SiteWise 网关的更多信息，请参阅[《*AWS IoT SiteWise 用户指南》*中的在边缘使用 AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateways-ggv2.html)。

**Topics**
+ [版本](#iotsitewise-opcua-data-source-simulator-component-versions)
+ [Type](#iotsitewise-opcua-data-source-simulator-component-type)
+ [操作系统](#iotsitewise-opcua-data-source-simulator-component-os-support)
+ [要求](#iotsitewise-opcua-data-source-simulator-component-requirements)
+ [依赖项](#iotsitewise-opcua-data-source-simulator-component-dependencies)
+ [配置](#iotsitewise-opcua-data-source-simulator-component-configuration)
+ [本地日志文件](#iotsitewise-opcua-data-source-simulator-component-log-file)
+ [更改日志](#iotsitewise-opcua-data-source-simulator-component-changelog)
+ [另请参阅](#iotsitewise-opcua-data-source-simulator-component-see-also)

## 版本
<a name="iotsitewise-opcua-data-source-simulator-component-versions"></a>

此组件具有以下版本：
+ 1.0.x

## Type
<a name="iotsitewise-opcua-data-source-simulator-component-type"></a>

<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)。

## 操作系统
<a name="iotsitewise-opcua-data-source-simulator-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="iotsitewise-opcua-data-source-simulator-component-requirements"></a>

此组件具有以下要求：
+ Greengrass 核心设备必须能够使用本地主机上的端口 4840。此组件的本地 OPC UA 服务器在此端口上运行。

## 依赖项
<a name="iotsitewise-opcua-data-source-simulator-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#iotsitewise-opcua-data-source-simulator-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

下表列出了此组件所有版本的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.3.0 <3.0.0 | 硬性 | 

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="iotsitewise-opcua-data-source-simulator-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="iotsitewise-opcua-data-source-simulator-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.iot.SiteWiseEdgeOpcuaDataSourceSimulator.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.iot.SiteWiseEdgeOpcuaDataSourceSimulator.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.iot.SiteWiseEdgeOpcuaDataSourceSimulator.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.iot.SiteWiseEdgeOpcuaDataSourceSimulator.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="iotsitewise-opcua-data-source-simulator-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  1.0.0  |  初始版本。 添加对 Windows Server 2016 或更高版本的支持  | 

## 另请参阅
<a name="iotsitewise-opcua-data-source-simulator-component-see-also"></a>
+ [什么是 AWS IoT SiteWise？](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) 在《*AWS IoT SiteWise 用户指南》*中。

# 物联网 SiteWise 发行商
<a name="iotsitewise-publisher-component"></a>

物联网 SiteWise 发布者组件 (`aws.iot.SiteWiseEdgePublisher`) 使 AWS IoT SiteWise 网关能够将数据从边缘导出到 AWS 云。

有关 AWS IoT SiteWise 网关的更多信息，请参阅[《*AWS IoT SiteWise 用户指南》*中的在边缘使用 AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateways-ggv2.html)。

**Topics**
+ [版本](#iotsitewise-publisher-component-versions)
+ [Type](#iotsitewise-publisher-component-type)
+ [操作系统](#iotsitewise-publisher-component-os-support)
+ [要求](#iotsitewise-publisher-component-requirements)
+ [依赖项](#iotsitewise-publisher-component-dependencies)
+ [配置](#iotsitewise-publisher-component-configuration)
+ [输入数据](#iotsitewise-publisher-component-input-data)
+ [本地日志文件](#iotsitewise-publisher-component-log-file)
+ [问题排查和调试](#iotsitewise-publisher-component-debug)
+ [许可证](#iotsitewise-publisher-component-licenses)
+ [更改日志](#iotsitewise-publisher-component-changelog)
+ [另请参阅](#iotsitewise-publisher-component-see-also)

## 版本
<a name="iotsitewise-publisher-component-versions"></a>

此组件具有以下版本：
+ 4.1.x
+ 4.0.x
+ 3.2.x
+ 3.1.x
+ 3.0.x
+ 2.4.x
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="iotsitewise-publisher-component-type"></a>

<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)。

## 操作系统
<a name="iotsitewise-publisher-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="iotsitewise-publisher-component-requirements"></a>

此组件具有以下要求：
+ Greengrass 核心设备必须在以下其中一个平台上运行：
  + 操作系统：Ubuntu 18.04 或更高版本

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Red Hat Enterprise Linux（RHEL）8

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Amazon Linux 2

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Debian 11

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + 操作系统：Windows Server 2019 或更高版本

    架构：x86\$164 () AMD64
+ Greengrass 核心设备必须连接到互联网。
+ Greengrass 核心设备必须获得授权才能执行 `iotsitewise:BatchPutAssetPropertyValue` 操作。有关更多信息，请参阅[授权核心设备与 AWS 服务交互](https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html)。  
**Example 权限策略**  

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "iotsitewise:BatchPutAssetPropertyValue",
              "Resource": "*"
          }
      ]
  }
  ```

------

### 端点和端口
<a name="iotsitewise-publisher-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口： | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `data.iotsitewise.region.amazonaws.com`  | 443 | 是 |  将数据发布到 AWS IoT SiteWise。  | 

## 依赖项
<a name="iotsitewise-publisher-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#iotsitewise-publisher-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

下表列出了此组件的版本 2.0.x 至 2.2.x 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.3.0<3.0.0 | 硬性 | 
| [流管理器](stream-manager-component.md) | >=2.0.10<3.0.0 | 硬性 | 

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="iotsitewise-publisher-component-configuration"></a>

此组件没有任何配置参数。

您可以使用 AWS IoT SiteWise 控制台或 API 来配置 IoT SiteWise 发布者组件。有关更多信息，请参阅《AWS IoT SiteWise 用户指南》**中的[第 3 步：配置发布者 – 可选](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-gateway-ggv2.html#configure-publisher)。

## 输入数据
<a name="iotsitewise-publisher-component-input-data"></a>



此组件从 AWS IoT Greengrass 流管理器读取`PutAssetPropertyValueEntry`消息。有关更多信息，请参阅《AWS IoT SiteWise API Reference》**中的 [PutAssetPropertyValueEntry](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetPropertyValueEntry.html)。

## 本地日志文件
<a name="iotsitewise-publisher-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.iot.SiteWiseEdgePublisher.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.iot.SiteWiseEdgePublisher.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.iot.SiteWiseEdgePublisher.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.iot.SiteWiseEdgePublisher.log -Tail 10 -Wait
  ```

------

## 问题排查和调试
<a name="iotsitewise-publisher-component-debug"></a>

此组件包括一个新的事件日志，可帮助客户识别和修复问题。日志文件与本地日志文件是分开的，位于以下位置。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

```
/greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/logs/IotSiteWisePublisherEvents.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\work\aws.iot.SiteWiseEdgePublisher\logs\IotSiteWisePublisherEvents.log
```

------

此日志包含详细信息和问题排查说明。问题排查信息与诊断信息一起提供，并附有如何解决问题的说明，有时还会提供指向更多信息的链接。诊断信息包含以下内容：
+ 严重性级别
+ Timestamp
+ 其他事件特定信息

**Example 示例日志**  

```
accountBeingThrottled:
  Summary: Data upload speed slowed due to quota limits
  Level: WARN
  Timestamp: '2023-06-09T21:30:24.654Z'
  Description: The IoT SiteWise Publisher is limited to the "Rate of data points ingested"
    quota for a customers account. See the associated documentation and associated
    metric for the number of requests that were limited for more information. Note
    that this may be temporary and not require any change, although if the issue continues
    you may need to request an increase for the mentioned quota.
  FurtherInformation:
  - https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html
  - https://docs.aws.amazon.com/iot-sitewise/latest/userguide/troubleshooting-gateway.html#gateway-issue-data-streams
  AssociatedMetrics:
  - Name: TotalErrorCount
    Description: The total number of errors of this type that occurred.
    Value: 327724.0
  AssociatedData:
  - Name: AggregatePropertyAliases
    Description: The aggregated property aliases of the throttled data.
    FileLocation: /greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/./logs/data/AggregatePropertyAliases_1686346224654.log
```

## 许可证
<a name="iotsitewise-publisher-component-licenses"></a>

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="iotsitewise-publisher-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
| 4.1.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
| 4.1.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
| 4.1.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
| 4.1.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
| 4.1.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  4.0.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  4.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  4.0.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  4.0.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  3.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  3.1.4  |   版本 3.1.4 已于 2025 年 2 月 20 日停用。此版本的改进将在此组件的更高版本中提供。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  3.1.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  3.1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  3.1.1  |   版本 3.1.1 已于 2024 年 3 月 12 日停用。此版本的改进将在此组件的更高版本中提供。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  3.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  3.0.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.4.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.4.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.3.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.3.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.3.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.2.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.2.1  |   此版本不支持 HTTP 代理配置。版本 2.2.2 及更高版本重新引入了对此功能的支持。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.2.0  |   此版本不支持 HTTP 代理配置。版本 2.2.2 及更高版本重新引入了对此功能的支持。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.1.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.1.3  |   此版本不再可用，但美国东部（俄亥俄州）、加拿大（中部）和 AWS GovCloud （美国东部）地区除外。此组件版本需要 Java 版本 11 或更高版本才能运行。此版本的改进将在此组件的更高版本中提供。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.1.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.1.1  |  错误修复和改进。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)  | 
|  2.0.2  |  错误修复和改进。  | 
|  2.0.1  |  初始版本。  | 

## 另请参阅
<a name="iotsitewise-publisher-component-see-also"></a>
+ [什么是 AWS IoT SiteWise？](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) 在《*AWS IoT SiteWise 用户指南》*中。

# 物联网 SiteWise 处理器
<a name="iotsitewise-processor-component"></a>

物联网 SiteWise 处理器组件 (`aws.iot.SiteWiseEdgeProcessor`) 使 AWS IoT SiteWise 经典流、V2 网关能够在边缘处理数据。

通过此组件， AWS IoT SiteWise 网关可以使用资产模型和资产来处理网关设备上的数据。有关 AWS IoT SiteWise 网关的更多信息，请参阅[《*AWS IoT SiteWise 用户指南》*中的在边缘使用 AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateways-ggv2.html)。

**注意**  
从 2025 年 11 月 7 日起，数据处理包（DPP）功能将不再对新客户开放。如果您想要使用 DPP，请在该日期前注册。现有客户可以继续正常使用该服务。有关更多信息，请参阅《AWS IoT SiteWise 用户指南》**中的[数据处理包可用性变更](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html)。

**Topics**
+ [版本](#iotsitewise-processor-component-versions)
+ [Type](#iotsitewise-processor-component-type)
+ [操作系统](#iotsitewise-processor-component-os-support)
+ [要求](#iotsitewise-processor-component-requirements)
+ [依赖项](#iotsitewise-processor-component-dependencies)
+ [配置](#iotsitewise-processor-component-configuration)
+ [本地日志文件](#iotsitewise-processor-component-log-file)
+ [许可证](#iotsitewise-processor-component-licenses)
+ [更改日志](#iotsitewise-processor-component-changelog)
+ [另请参阅](#iotsitewise-processor-component-see-also)

## 版本
<a name="iotsitewise-processor-component-versions"></a>

此组件具有以下版本：
+ 3.5.x
+ 3.4.x
+ 3.3.x
+ 3.2.x
+ 3.1.x
+ 3.0.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="iotsitewise-processor-component-type"></a>

<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)。

## 操作系统
<a name="iotsitewise-processor-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="iotsitewise-processor-component-requirements"></a>

此组件具有以下要求：
+ Greengrass 核心设备必须在以下其中一个平台上运行：
  + 操作系统：Ubuntu 20.04 或更高版本

    架构：x86\$164 () AMD64
  + 操作系统：Red Hat Enterprise Linux（RHEL）8

    架构：x86\$164 () AMD64
  + 操作系统：Amazon Linux 2

    架构：x86\$164 () AMD64
  + 操作系统：Windows Server 2019 或更高版本

    架构：x86\$164 () AMD64
  + 操作系统：Debian 11（Bullseye）或更高版本

    架构：x86\$164 () AMD64
+ Greengrass 核心设备必须允许端口 443 的入站流量。
+ Greengrass 核心设备必须允许端口 443 和 8883 的出站流量。
+ 以下端口已保留供以下用户使用 AWS IoT SiteWise：80、443、3001、4569、4572、8000、8081、8082、8084、8085、8086、8445、9000、9500、11080 和 50010。使用预留端口通信可能导致连接终止。
**注意**  
仅此组件的 2.0.15 及更高版本需要端口 8087。
+ [Greengrass 设备角色必须拥有允许您在设备](https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html)上使用网关的 AWS IoT SiteWise 权限。 AWS IoT Greengrass V2 有关更多信息，请参阅《AWS IoT SiteWise 用户指南》**中的[要求](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-gateway-ggv2.html#gateway-requirements)。

### 端点和端口
<a name="iotsitewise-processor-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `model.iotsitewise.region.amazonaws.com`  | 443 | 是 |  获取有关您的 AWS IoT SiteWise 资产和资产模型的信息。  | 
|  `edge.iotsitewise.region.amazonaws.com`  | 443 | 是 |  获取有关核心设备 AWS IoT SiteWise 网关配置的信息。  | 
|  `ecr.region.amazonaws.com`  | 443 | 是 |  从亚马逊弹性容器注册表下载 AWS IoT SiteWise Edge 网关 Docker 镜像。  | 
|  `iot.region.amazonaws.com`  | 443 | 是 |  获取您 AWS 账户的设备端点。  | 
|  `sts.region.amazonaws.com`  | 443 | 是 |  获取你的身份证 AWS 账户。  | 
|  `monitor.iotsitewise.region.amazonaws.com`  | 443 | 否 |  如果您访问核心设备上的 AWS IoT SiteWise Monitor 门户，则为必填项。  | 

## 依赖项
<a name="iotsitewise-processor-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#iotsitewise-processor-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

下表列出了此组件的版本 2.0.x 至 2.1.x 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [令牌交换服务](token-exchange-service-component.md) | >=2.0.3 <3.0.0 | 硬性 | 
| [流管理器](stream-manager-component.md) | >=2.0.10 <3.0.0 | 硬性 | 
| [Greengrass CLI](greengrass-cli-component.md) | >=2.3.0 <3.0.0 | 硬性 | 

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="iotsitewise-processor-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="iotsitewise-processor-component-log-file"></a>

此组件使用以下日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/aws.iot.SiteWiseEdgeProcessor.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\aws.iot.SiteWiseEdgeProcessor.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/aws.iot.SiteWiseEdgeProcessor.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\aws.iot.SiteWiseEdgeProcessor.log -Tail 10 -Wait
  ```

------

## 许可证
<a name="iotsitewise-processor-component-licenses"></a>

此组件包含以下第三方软件/许可：

### 第三方许可证
<a name="w2ab1c24b8d120c25b5b1b1"></a>
+ Apache-2.0
+ MIT
+ BSD-2-Clause
+ BSD-3-Clause
+ CDDL-1.0
+ CDDL-1.1
+ ISC
+ Zlib
+ GPL-3.0-with-GCC-exception
+ 公共域
+ Python-2.0
+ Unicode-DFS-2015
+ BSD-1-Clause
+ OpenSSL
+ EPL-1.0
+ EPL-2.0
+ GPL-2.0-with-classpath-exception
+ MPL-2.0
+ CC0-1.0
+ JSON

<a name="component-core-software-license"></a>此组件在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发行。

## 更改日志
<a name="iotsitewise-processor-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
| 3.5.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 3.4.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 3.3.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 3.3.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html) | 
|  3.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  3.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  3.1.3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  3.1.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  3.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  3.0.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.2.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.37 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.35 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.34 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.33 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.32 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.31 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.29 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.28 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.24 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
| 2.1.23 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.1.21  |   从 2.0.x 版本升级到 2.1.x 版会导致本地数据丢失。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.0.16  |  此版本包含错误修复和改进。  | 
|  2.0.15  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.0.14  |  此版本包含错误修复和改进。  | 
|  2.0.13  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.0.9  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.0.7  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.0.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.0.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)  | 
|  2.0.2  |  初始版本。  | 

## 另请参阅
<a name="iotsitewise-processor-component-see-also"></a>
+ [什么是 AWS IoT SiteWise？](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) 在《*AWS IoT SiteWise 用户指南》*中。