

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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)
+ [類型](#device-defender-component-type)
+ [作業系統](#device-defender-component-os-support)
+ [要求](#device-defender-component-requirements)
+ [相依性](#device-defender-component-dependencies)
+ [Configuration](#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)。

## 類型
<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 核](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 核](greengrass-nucleus-component.md)會使用 Lambda [啟動器元件執行此元件的 Lambda](lambda-launcher-component.md) 函數。

------

<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>安裝在核心裝置上並新增至 PATH 環境變數的 [Python](https://www.python.org/) 3.7 版。
+ AWS IoT Device Defender 設定為使用 Detect 功能來監控違規。如需詳細資訊，請參閱《 *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>安裝在核心裝置上並新增至 PATH 環境變數的 [Python](https://www.python.org/) 3.7 版。
+ AWS IoT Device Defender 設定為使用 Detect 功能來監控違規。如需詳細資訊，請參閱《 *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>
  + 以您使用 AWS 區域 的 取代*區域*。
  + ** 以此元件執行的 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 核](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 核](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 核](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 核](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 核](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 核](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 核](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 核](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 核](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 核](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 核](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 核](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)。

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

此元件提供下列組態參數，您可以在部署元件時自訂這些參數。

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

`PublishRetryCount`  
將重試發佈的次數。此功能可在 3.1.1 版中使用。  
最小值為 0。  
上限為 72。  
預設：5

`SampleIntervalSeconds`  
（選用） 元件收集和報告指標的每個週期之間的秒數。  
最低值為 300 秒 (5 分鐘)。  
預設：300 秒

 `UseInstaller`   
（選用） 布林值，定義是否使用此元件中的安裝程式指令碼來安裝此元件的相依性。  
`false` 如果您想要使用自訂指令碼來安裝相依性，或想要在預先建置的 Linux 映像中包含執行時間相依性，請將此值設定為 。若要使用此元件，您必須安裝下列程式庫，包括任何相依性，並將其提供給預設的 Greengrass 系統使用者。  
+ [AWS IoT Device SDK 適用於 Python 的 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` – 元件不會在隔離的執行時間環境中執行。

  如果您指定此選項，則必須`/proc`為`PROCFS_PATH`環境變數參數指定 。
預設：`GreengrassContainer`

`containerParams`  
<a name="connector-component-container-params-description"></a>（選用） 包含此元件容器參數的物件。如果您`GreengrassContainer`為 指定 ，元件會使用這些參數`containerMode`。  
此物件包含下列資訊：    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>（選用） 要配置給元件的記憶體量 （以 KB 為單位）。  
預設為 50，000 KB。

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
（選用） 物件，其中包含元件訂閱接收訊息的主題。您可以指定每個主題，以及元件是從 或 AWS IoT Core 本機發佈/訂閱主題訂閱 MQTT 主題。  
此物件包含下列資訊：    
`0` – 這是做為字串的陣列索引。  
包含下列資訊的物件：    
`type`  
（選用） 此元件用來訂閱訊息的發佈/訂閱訊息類型。您可以從以下選項中選擇：  
+ `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`  
（選用） 元件訂閱接收訊息的主題。如果您`IotCore`為 指定 `type`，則可以在本主題中使用 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 核心軟體授權合約](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_tw/greengrass/v2/developerguide/device-defender-component.html)  | 
|  3.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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  |  初始版本。  | 

------