

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

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

# Device Defender 连接器
<a name="device-defender-connector"></a>

Device Defender [连接器](connectors.md)向管理员通知 Greengrass 核心设备状态的变化。这有助于识别可能指示受损设备的异常行为。

此连接器从核心设备上的`/proc`目录中读取系统指标，然后将指标发布到 Amazon IoT Device Defender。有关指标报告的详细信息，请参阅*Amazon IoT 开发人员指南*中的[设备指标文档规范](https://docs.amazonaws.cn/iot/latest/developerguide/device-defender-detect.html#DetectMetricsMessagesSpec)。

此连接器具有以下版本。


| 版本 | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/DeviceDefender/versions/1` | 

有关版本更改的信息，请参阅[更改日志](#device-defender-connector-changelog)。

## 要求
<a name="device-defender-connector-req"></a>

此连接器具有以下要求：

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>Amazon IoT Greengrass 核心软件 v1.9.3 或更高版本。
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) 版本 3.7 或 3.8 已安装在核心设备上，并已添加到 PATH 环境变量中。
**注意**  <a name="use-runtime-py3.8"></a>
要使用 Python 3.8，请运行以下命令来创建从默认 Python 3.7 安装文件夹到已安装的 Python 3.8 二进制文件的符号链接。  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
这会将设备配置为满足 Amazon IoT Greengrass的 Python 要求。
+ <a name="conn-device-defender-req-itdd-config"></a>Amazon IoT Device Defender 配置为使用 “检测” 功能来跟踪违规行为。有关更多信息，请参阅 *Amazon IoT 开发人员指南*中的[检测](https://docs.amazonaws.cn/iot/latest/developerguide/device-defender-detect.html)。
+ <a name="conn-device-defender-req-proc-dir-resource"></a>Greengrass 组中指向 `/proc` 目录的一个[本地卷资源](access-local-resources.md)。该资源必须使用以下属性：
  + 源路径：`/proc`
  + 目标路径：`/host_proc`（或一个与[有效模式](#param-ProcDestinationPath)匹配的值）
  + AutoAddGroupOwner: `true`
+ <a name="conn-device-defender-req-psutil-v3"></a>安装在 Greengrass 核心上的 [psutil](https://pypi.org/project/psutil/) 库。版本 5.7.0 是经验证可与连接器一起使用的最新版本。
+ <a name="conn-device-defender-req-cbor-v3"></a>安装在 Greengrass 核心上的 [cbor](https://pypi.org/project/cbor/) 库。版本 1.0.0 是经验证可与连接器一起使用的最新版本。

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>Amazon IoT Greengrass 核心软件 v1.7 或更高版本。
+ [Python](https://www.python.org/) 版本 2.7 已安装在核心设备上，并已添加到 PATH 环境变量中。
+ <a name="conn-device-defender-req-itdd-config"></a>Amazon IoT Device Defender 配置为使用 “检测” 功能来跟踪违规行为。有关更多信息，请参阅 *Amazon IoT 开发人员指南*中的[检测](https://docs.amazonaws.cn/iot/latest/developerguide/device-defender-detect.html)。
+ <a name="conn-device-defender-req-proc-dir-resource"></a>Greengrass 组中指向 `/proc` 目录的一个[本地卷资源](access-local-resources.md)。该资源必须使用以下属性：
  + 源路径：`/proc`
  + 目标路径：`/host_proc`（或一个与[有效模式](#param-ProcDestinationPath)匹配的值）
  + AutoAddGroupOwner: `true`
+ <a name="conn-device-defender-req-psutil"></a>安装在 Greengrass 核心上的 [psutil](https://pypi.org/project/psutil/) 库。
+ <a name="conn-device-defender-req-cbor"></a>安装在 Greengrass 核心上的 [cbor](https://pypi.org/project/cbor/) 库。

------

## 连接器参数
<a name="device-defender-connector-param"></a>

该连接器提供以下参数：

`SampleIntervalSeconds`  
收集和报告指标的每个周期之间的秒数。最小值为 300 秒 (5 分钟)。  
 Amazon IoT 控制台中的显示名称：**指标报告间隔**  
必需：`true`  
类型：`string`  
有效模式：`^[0-9]*(?:3[0-9][0-9]|[4-9][0-9]{2}|[1-9][0-9]{3,})$`

`ProcDestinationPath-ResourceId`  
`/proc` 卷资源的 ID。  
此连接器被授予对该资源的只读访问权限。
 Amazon IoT 控制台中的显示名称：**/proc 目录的资源**  
必需：`true`  
类型：`string`  
有效模式：`[a-zA-Z0-9_-]+`

`ProcDestinationPath`  <a name="param-ProcDestinationPath"></a>
`/proc` 卷资源的目标路径。  
 Amazon IoT 控制台中的显示名称：**/proc 资源的目标路径**  
必需：`true`  
类型：`string`  
有效模式：`\/[a-zA-Z0-9_-]+`

### 创建连接器示例 (Amazon CLI)
<a name="device-defender-connector-create"></a>

以下 CLI 命令创建一个 `ConnectorDefinition`，其初始版本包含 Device Defender 连接器。

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyDeviceDefenderConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/DeviceDefender/versions/3",
            "Parameters": {
                "SampleIntervalSeconds": "600",
                "ProcDestinationPath": "/host_proc",
                "ProcDestinationPath-ResourceId": "my-proc-resource"
            }
        }
    ]
}'
```

**注意**  
此连接器中的 Lambda 函数的生命周期[很长](lambda-functions.md#lambda-lifecycle)。

在 Amazon IoT Greengrass 控制台中，您可以从群组的 “连接器” 页面添加**连接器**。有关更多信息，请参阅 [Greengrass 连接器入门（控制台）](connectors-console.md)。

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

该连接器不接受 MQTT 消息作为输入数据。

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

此连接器将安全指标 Amazon IoT Device Defender 作为输出数据发布到。

<a name="topic-filter"></a>**订阅中的主题筛选条件**  
`$aws/things/+/defender/metrics/json`  
这是 Amazon IoT Device Defender 预期的主题语法。连接器将 `+` 通配符替换为设备名称（例如，`$aws/things/thing-name/defender/metrics/json`）。

**示例输出**  
有关指标报告的详细信息，请参阅*Amazon IoT 开发人员指南*中的[设备指标文档规范](https://docs.amazonaws.cn/iot/latest/developerguide/device-defender-detect.html#DetectMetricsMessagesSpec)。  

```
{
    "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
            }
        }
    }
}
```

## 许可证
<a name="device-defender-connector-license"></a>

该连接器在 [Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)下发布。

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

下表介绍每个版本连接器的更改。


| 版本 | 更改 | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>已将 Lambda 运行时升级到 Python 3.7，这会更改运行时要求。 | 
| 2 | 进行了修复，以减少过多的日志记录。 | 
| 1 | 首次发布。  | 

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

## 另请参阅
<a name="device-defender-connector-see-also"></a>
+ [使用 Greengrass 连接器与服务和协议集成](connectors.md)
+ [Greengrass 连接器入门（控制台）](connectors-console.md)
+ [Greengrass 连接器入门 (CLI)](connectors-cli.md)
+ 《*Amazon IoT 开发人员指南》*中的 [Device Defender](https://docs.amazonaws.cn/iot/latest/developerguide/device-defender.html)