

支援終止通知：2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後，您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊，請造訪[從 遷移 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 設定測試執行器的設定
<a name="set-config-custom"></a>

若要執行自訂測試套件，測試執行器必須根據他們想要執行的測試套件來設定其設定。根據位於 `<device-tester-extract-location>/configs/` 資料夾中的 JSON 組態檔案範本來指定設定。如有需要，測試執行器也必須設定 IDT 用來連線至 AWS 雲端的 AWS 登入資料。

身為測試寫入器，您需要設定這些檔案來[偵錯您的測試套件](run-tests-custom.md)。您必須提供測試執行器的說明，以便他們可以視需要設定下列設定來執行您的測試套件。

## 設定 device.json
<a name="device-config-custom"></a>

`device.json` 檔案包含執行測試之裝置的相關資訊 （例如 IP 地址、登入資訊、作業系統和 CPU 架構）。

測試執行器可以使用位於 `<device-tester-extract-location>/configs/` 資料夾中的下列範本`device.json`檔案提供此資訊。

```
[
    {
        "id": "<pool-id>",
        "sku": "<pool-sku>",
        "features": [
            {
                "name": "<feature-name>",             
                "value": "<feature-value>",                
                "configs": [
                    {
                        "name": "<config-name>",                    
                        "value": "<config-value>"
                    }
                ],
            }
        ],     
        "devices": [
            {
                "id": "<device-id>",              
                "connectivity": {
                    "protocol": "ssh | uart | docker",                   
                    // ssh
                    "ip": "<ip-address>",
                    "port": <port-number>,
                    "auth": {
                        "method": "pki | password",
                        "credentials": {
                            "user": "<user-name>", 
                            // pki
                            "privKeyPath": "/path/to/private/key",
                                         
                            // password
                            "password": "<password>",
                        }
                    },
                    
                    // uart
                    "serialPort": "<serial-port>",
                    
                    // docker
                    "containerId": "<container-id>",
                    "containerUser": "<container-user-name>",
                }
            }
        ]
    }
]
```

如下所述，包含值的所有欄位皆為必要：

`id`  
使用者定義的英數字元 ID，可唯一識別裝置的集合，稱為「裝置集區」**。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件，集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。

`sku`  
可唯一識別測試裝置的英數字元值。SKU 用於追蹤合格裝置。  
如果您想要在 AWS Partner Device Catalog 中列出您的電路板，您在此處指定的 SKU 必須符合您在列出程序中使用的 SKU。

`features`  
選用。包含裝置支援功能的陣列。裝置功能是您在測試套件中設定的使用者定義值。您必須提供測試執行器有關要包含在 `device.json` 檔案中的功能名稱和值的資訊。例如，如果您想要測試可做為其他裝置的 MQTT 伺服器的裝置，則可以設定測試邏輯來驗證名為 之功能的特定支援層級`MQTT_QOS`。測試執行器提供此功能名稱，並將功能值設定為其裝置支援的 QOS 層級。您可以使用`devicePool.features`查詢從 [IDT 內容](idt-context.md)擷取提供的資訊，或使用`pool.features`查詢從[狀態機器內容](idt-state-machine.md#state-machine-context)擷取提供的資訊。    
`features.name`  
功能的名稱。  
`features.value`  
支援的功能值。  
`features.configs`  
如有需要，此功能的組態設定。    
`features.config.name`  
組態設定的名稱。  
`features.config.value`  
支援的設定值。

`devices`  
要測試之集區中的裝置陣列。至少需要一個裝置。  <a name="device-array-fields"></a>  
`devices.id`  
使用者定義的唯一識別符，用於識別要測試的裝置。  
`connectivity.protocol`  
用來與此裝置通訊的通訊協定。集區中的每個裝置都必須使用相同的通訊協定。  
目前，實體裝置`ssh`和 以及 `uart` Docker 容器唯一支援的值為 `docker` 和 。  
`connectivity.ip`  
要測試之裝置的 IP 位址。  
<a name="connectivity-protocol-ssh-only"></a>只有當 `connectivity.protocol` 設為 `ssh` 時，才會套用此屬性。  
`connectivity.port`  
選用。用於 SSH 連線的連接埠號碼。  
預設值為 22。  
<a name="connectivity-protocol-ssh-only"></a>只有當 `connectivity.protocol` 設為 `ssh` 時，才會套用此屬性。  
`connectivity.auth`  
連線的驗證資訊。  
<a name="connectivity-protocol-ssh-only"></a>只有當 `connectivity.protocol` 設為 `ssh` 時，才會套用此屬性。    
`connectivity.auth.method`  
用來透過指定的連線通訊協定存取裝置的驗證方法。  
支援的值如下：  
+ `pki`
+ `password`  
`connectivity.auth.credentials`  
用於驗證的燈入資料。    
`connectivity.auth.credentials.password`  
用於登入要測試裝置的密碼。  
只有當 `connectivity.auth.method` 設為 `password` 時，才會套用此值。  
`connectivity.auth.credentials.privKeyPath`  
用來登入待測裝置之私有金鑰的完整路徑。  
只有當 `connectivity.auth.method` 設為 `pki` 時，才會套用此值。  
`connectivity.auth.credentials.user`  
登入要測試之裝置的使用者名稱。  
`connectivity.serialPort`  
選用。裝置所連接的序列連接埠。  
只有當 `connectivity.protocol` 設為 `uart` 時，才會套用此屬性。  
`connectivity.containerId`  
要測試之 Docker 容器的容器 ID 或名稱。  
<a name="connectivity-protocol-docker-only"></a>只有當 `connectivity.protocol` 設為 `docker` 時，才會套用此屬性。  
`connectivity.containerUser`  
選用。容器內使用者的名稱。預設值是 Dockerfile 中提供的使用者。  
預設值為 22。  
<a name="connectivity-protocol-docker-only"></a>只有當 `connectivity.protocol` 設為 `docker` 時，才會套用此屬性。
若要檢查測試執行器是否為測試設定不正確的裝置連線，您可以從`pool.Devices[0].Connectivity.Protocol`狀態機器內容擷取，並將其與 `Choice` 狀態中的預期值進行比較。如果使用不正確的通訊協定，請使用 `LogMessage` 狀態列印訊息並轉換為 `Fail` 狀態。  
或者，您可以使用錯誤處理程式碼來報告不正確裝置類型的測試失敗。

## （選用） 設定 userdata.json
<a name="userdata-config-custom"></a>

`userdata.json` 檔案包含測試套件所需的任何其他資訊，但未在`device.json`檔案中指定。此檔案的格式取決於測試套件中定義的[`userdata_scheme.json`檔案](idt-json-config.md#userdata-schema-json)。如果您是測試寫入器，請務必將此資訊提供給將執行您所寫入測試套件的使用者。

## （選用） 設定 resource.json
<a name="resource-config-custom"></a>

`resource.json` 檔案包含將用作資源裝置的任何裝置的相關資訊。資源裝置是測試待測裝置特定功能所需的裝置。例如，若要測試裝置的藍牙功能，您可以使用資源裝置來測試裝置是否可以成功連線到該裝置。資源裝置是選用的，您可以視需要要求任意數量的資源裝置。身為測試寫入器，您可以使用 [test.json 檔案](idt-json-config.md#test-json)來定義測試所需的資源裝置功能。然後，測試執行器會使用 `resource.json` 檔案來提供具有所需功能的資源裝置集區。請務必將此資訊提供給將執行您撰寫之測試套件的使用者。

測試執行器可以使用位於 `<device-tester-extract-location>/configs/` 資料夾中的下列範本`resource.json`檔案提供此資訊。

```
[
    {
        "id": "<pool-id>",
        "features": [
            {
                "name": "<feature-name>",             
                "version": "<feature-value>",                
                "jobSlots": <job-slots>
            }
        ],     
        "devices": [
            {
                "id": "<device-id>",              
                "connectivity": {
                    "protocol": "ssh | uart | docker",                   
                    // ssh
                    "ip": "<ip-address>",
                    "port": <port-number>,
                    "auth": {
                        "method": "pki | password",
                        "credentials": {
                            "user": "<user-name>", 
                            // pki
                            "privKeyPath": "/path/to/private/key",
                                         
                            // password
                            "password": "<password>",
                        }
                    },
                    
                    // uart
                    "serialPort": "<serial-port>",
                    
                    // docker
                    "containerId": "<container-id>",
                    "containerUser": "<container-user-name>",
                }
            }
        ]
    }
]
```

如下所述，包含值的所有欄位皆為必要：

`id`  
使用者定義的英數字元 ID，可唯一識別裝置的集合，稱為「裝置集區」**。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件，集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。

`features`  
選用。包含裝置支援功能的陣列。此欄位所需的資訊是在測試套件的 [test.json 檔案中](idt-json-config.md#test-json)定義，並決定要執行哪些測試，以及如何執行這些測試。如果測試套件不需要任何功能，則不需要此欄位。    
`features.name`  
功能的名稱。  
`features.version`  
功能版本。  
`features.jobSlots`  
設定 以指示有多少測試可以同時使用裝置。預設值為 `1`。

`devices`  <a name="device-array"></a>
要測試之集區中的裝置陣列。至少需要一個裝置。  <a name="device-array-fields"></a>  
`devices.id`  
使用者定義的唯一識別符，用於識別要測試的裝置。  
`connectivity.protocol`  
用來與此裝置通訊的通訊協定。集區中的每個裝置都必須使用相同的通訊協定。  
目前，實體裝置`ssh`和 以及 `uart` Docker 容器唯一支援的值為 `docker` 和 。  
`connectivity.ip`  
要測試之裝置的 IP 位址。  
<a name="connectivity-protocol-ssh-only"></a>只有當 `connectivity.protocol` 設為 `ssh` 時，才會套用此屬性。  
`connectivity.port`  
選用。用於 SSH 連線的連接埠號碼。  
預設值為 22。  
<a name="connectivity-protocol-ssh-only"></a>只有當 `connectivity.protocol` 設為 `ssh` 時，才會套用此屬性。  
`connectivity.auth`  
連線的驗證資訊。  
<a name="connectivity-protocol-ssh-only"></a>只有當 `connectivity.protocol` 設為 `ssh` 時，才會套用此屬性。    
`connectivity.auth.method`  
用來透過指定的連線通訊協定存取裝置的驗證方法。  
支援的值如下：  
+ `pki`
+ `password`  
`connectivity.auth.credentials`  
用於驗證的燈入資料。    
`connectivity.auth.credentials.password`  
用於登入要測試裝置的密碼。  
只有當 `connectivity.auth.method` 設為 `password` 時，才會套用此值。  
`connectivity.auth.credentials.privKeyPath`  
用來登入待測裝置之私有金鑰的完整路徑。  
只有當 `connectivity.auth.method` 設為 `pki` 時，才會套用此值。  
`connectivity.auth.credentials.user`  
登入要測試之裝置的使用者名稱。  
`connectivity.serialPort`  
選用。裝置所連接的序列連接埠。  
只有當 `connectivity.protocol` 設為 `uart` 時，才會套用此屬性。  
`connectivity.containerId`  
要測試之 Docker 容器的容器 ID 或名稱。  
<a name="connectivity-protocol-docker-only"></a>只有當 `connectivity.protocol` 設為 `docker` 時，才會套用此屬性。  
`connectivity.containerUser`  
選用。容器內使用者的名稱。預設值是 Dockerfile 中提供的使用者。  
預設值為 22。  
<a name="connectivity-protocol-docker-only"></a>只有當 `connectivity.protocol` 設為 `docker` 時，才會套用此屬性。

## （選用） 設定 config.json
<a name="config-json-custom"></a>

`config.json` 檔案包含 IDT 的組態資訊。一般而言，測試執行器不需要修改此檔案，除了提供其 IDT AWS 使用者登入資料，以及選擇性 AWS 的區域。如果 AWS 提供具有必要許可的登入資料 AWS IoT ，則 Device Tester 會收集用量指標並將其提交至其中 AWS。這是選擇加入功能，用於改善 IDT 功能。如需詳細資訊，請參閱[IDT 用量指標](idt-usage-metrics.md)。

測試執行器可以透過下列其中一種方式設定其 AWS 登入資料：
+ **憑證檔案**

  IDT 會使用與 AWS CLI相同的登入資料檔案。如需詳細資訊，請參閱[組態與登入資料檔案](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html)。

  登入資料檔案的位置會有所不同，取決於您使用的作業系統：
  + macOS, Linux: `~/.aws/credentials`
  + Windows：`C:\Users\UserName\.aws\credentials`
+ **環境變數**

  環境變數是由作業系統維護且由系統命令使用的變數。在 SSH 工作階段期間定義的變數在該工作階段關閉後無法使用。IDT 可以使用 `AWS_ACCESS_KEY_ID`和 `AWS_SECRET_ACCESS_KEY` 環境變數來存放 AWS 登入資料

  若要在 Linux、macOS 或 Unix 上設定這些變數，請使用 **export**：

  ```
  export AWS_ACCESS_KEY_ID=<your_access_key_id>
  export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
  ```

  若要在 Windows 上設定這些變數，請使用 **set**：

  ```
  set AWS_ACCESS_KEY_ID=<your_access_key_id>
  set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
  ```

若要設定 IDT 的 AWS 登入資料，測試執行器會編輯位於 `<device-tester-extract-location>/configs/` 資料夾之 `config.json` 檔案中的 `auth`區段。

```
{
    "log": {
        "location": "logs"
    },
    "configFiles": {
        "root": "configs",
        "device": "configs/device.json"
    },
    "testPath": "tests",
    "reportPath": "results",
    "awsRegion": "<region>",
    "auth": {
        "method": "file | environment",
        "credentials": {
            "profile": "<profile-name>"
        }
    }
}
]
```

如下所述，包含值的所有欄位皆為必要：

**注意**  
此檔案中的所有路徑都是相對於 *<device-tester-extract-location>* 定義。

`log.location`  
*<device-tester-extract-location>* 中日誌資料夾的路徑。

`configFiles.root`  
包含組態檔案之資料夾的路徑。

`configFiles.device`  
`device.json` 檔案的路徑。

`testPath`  
包含測試套件的資料夾路徑。

`reportPath`  
IDT 執行測試套件後，將包含測試結果的資料夾路徑。

`awsRegion`  
選用。測試套件將使用 AWS 的區域。如果未設定，則測試套件將使用每個測試套件中指定的預設區域。

`auth.method`  
IDT 用來擷取 AWS 登入資料的方法。支援的值是從登入資料檔案`file`擷取登入資料，以及使用環境變數`environment`擷取登入資料。

`auth.credentials.profile`  
從登入資料檔案使用的登入資料設定檔。只有當 `auth.method` 設為 `file` 時，才會套用此屬性。