

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

# 建立和管理命令
<a name="create-manage-remote-command-cli"></a>

**重要**  
存取特定 AWS IoT FleetWise 功能目前已封鎖。如需詳細資訊，請參閱[AWS AWS IoT FleetWise 中的區域和功能可用性](fleetwise-regions.md)。

您可以設定可重複使用的遠端動作，或傳送一次性的立即指示至您的裝置。使用此功能時，您可以指定裝置可以近乎即時執行的指示。命令可讓您為目標車輛設定可重複使用的遠端動作。建立命令之後，您可以啟動以特定車輛為目標的命令執行。

本主題說明如何使用 AWS IoT Core API 或 建立和管理命令資源 AWS CLI。它說明如何在命令資源上執行下列動作。

**Topics**
+ [建立命令資源](#create-remote-command-cli)
+ [擷取命令的相關資訊](#get-remote-command-cli)
+ [列出您帳戶中的命令](#list-remote-command-cli)
+ [更新或取代命令資源](#update-remote-command-cli)
+ [刪除命令資源](#delete-remote-command-cli)

## 建立命令資源
<a name="create-remote-command-cli"></a>

您可以使用[https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html) AWS IoT Core 控制平面 API 操作或 AWS IoT FleetWise 主控台來建立命令。

### 建立命令 （主控台）
<a name="create-command-console"></a>

您可以使用 AWS IoT FleetWise 主控台來建立命令。

**建立命令**

1. 開啟 [AWS IoT FleetWise 主控台](https://console.aws.amazon.com/iotfleetwise)。

1. 在導覽窗格中，選擇**命令**。

1. 選擇**建立命令**。

1. 指定唯一的命令 ID，協助您識別要在車輛上執行的命令。

1. （選用） 指定選用的顯示名稱和描述。

1. （選用） 選取致動器和預設參數值。參數指定目標車輛在收到命令時可執行的動作。如果您未新增參數，則需要在執行命令時提供參數。

1. 選擇授予許可以產生命令承載的 IAM 角色。請參閱[控制存取](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html#generate-command-payload)。

1. 選擇**建立命令**。

### 建立命令 (AWS CLI)
<a name="create-remote-command-example"></a>

下列範例示範如何使用 參數建立命令。

#### 建立命令時的考量事項
<a name="create-remote-command-considerations"></a>

當您在 中建立命令時 AWS IoT FleetWise：
+ 您必須指定 `roleArn`，授予在您的車輛上建立和執行命令的許可。如需範例政策的詳細資訊，包括啟用 KMS 金鑰的時間，請參閱 [授予使用 產生命令承載的 AWS IoT Device Management 許可 AWS IoT FleetWise](controlling-access.md#generate-command-payload)。
+ 您必須指定 `AWS-IoT-FleetWise`做為命名空間。
+ 您可以略過 `mandatory-parameters` 欄位，並在執行時間指定它們。或者，您可以使用參數建立命令，並選擇性地為其指定預設值。如果您指定了預設值，則在執行時間，您可以使用這些值，或透過指定您自己的值來覆寫這些值。如需這些其他範例，請參閱 [命令使用案例](remote-command-use-cases.md)。
+ 您可以為 `mandatory-parameters` 欄位指定最多三個名稱/值對。不過，在車輛上執行 命令時，只接受一個名稱值對，而 `name` 欄位必須使用完整名稱與`$actuatorPath.`字首。
+ 將 *command-id* 取代為命令的唯一識別符。您可以使用 UUID、英數字元、"-" 和 "\$1"。
+ 將 *role-arn* 取代為授予您建立和執行命令許可的 IAM 角色，例如 `"arn:aws:iam:accountId:role/FwCommandExecutionRole"`。
+ （選用） 以易於使用的命令名稱取代 *display-name*，並以有意義的命令描述取代*描述*。
+ 將`mandatory-parameters`物件*的名稱*和*值*取代為所建立命令的必要資訊。`name` 欄位是訊號目錄中定義為字`$actuatorPath.`首的完整名稱。例如， `name` 可以是 *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode*，`value`也可以是指示轉向模式狀態的布林值，例如 *\$1"B"： false\$1*。

```
aws iot create-command --command-id command-id \ 
    --role-arn role-arn \
    --description description \
    --display-name display-name \     
    --namespace "AWS-IoT-FleetWise" \
    --mandatory-parameters '[
        {
            "name": name, 
            "value": value
        }
   ]'
```

`CreateCommand` API 操作會傳回回應，其中包含 命令的 ID 和 ARN (Amazon Resource Name)。

```
{
    "commandId": "HandsOffSteeringMode",
    "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/HandsOffSteeringMode"
}
```

## 擷取命令的相關資訊
<a name="get-remote-command-cli"></a>

您可以使用[https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommand.html) AWS IoT Core 控制平面 API 操作來擷取命令資源的相關資訊。

若要取得命令資源的相關資訊，請執行下列命令。將 *command-id* 取代為建立命令時使用的識別符。

```
aws iot get-command --command-id command-id
```

`GetCommand` API 操作會傳回包含下列資訊的回應。
+ 命令的 ID 和 ARN (Amazon Resource Name)。
+ 命令建立和上次更新的日期和時間。
+ 命令狀態，指出它是否可以在車輛上執行。
+ 您在建立命令時指定的任何參數。

```
{
    "commandId": "HandsOffSteeringMode",
    "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/HandsOffSteeringMode"",
    "namespace": "AWS-IoT-FleetWise",
    "mandatoryParameters":[
        {
            "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode",
            "value": {"B": false }
        }
    ],
    "createdAt": "2024-03-23T11:24:14.919000-07:00",
    "lastUpdatedAt": "2024-03-23T11:24:14.919000-07:00",
    "deprecated": false,
    "pendingDeletion": false
}
```

## 列出您帳戶中的命令
<a name="list-remote-command-cli"></a>

您可以使用[https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommands.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommands.html) AWS IoT Core 控制平面 API 操作來列出您建立之帳戶中的所有命令。

若要列出您帳戶中的命令，請執行下列命令。根據預設，API 會傳回為兩個命名空間建立的命令。若要篩選清單以僅顯示為 建立的命令 AWS IoT FleetWise，請執行下列命令。

**注意**  
您也可以依遞增或遞減順序排序清單，或篩選清單，僅顯示具有特定命令參數名稱的命令。

```
aws iot list-commands --namespace "AWS-IoT-FleetWise"
```

`ListCommands` API 操作會傳回包含下列資訊的回應。
+ 命令的 ID 和 ARN (Amazon Resource Name)。
+ 命令建立和上次更新的日期和時間。
+ 命令狀態，指出命令是否可以在車輛上執行。

## 更新或取代命令資源
<a name="update-remote-command-cli"></a>

您可以使用[https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCommand.html) AWS IoT Core 控制平面 API 操作或 AWS IoT FleetWise 主控台來更新命令資源。您可以更新命令的顯示名稱和描述。如果命令目前未使用，您也可以將其棄用。

**注意**  
您無法修改執行 命令時要使用的命名空間資訊或參數。

### 更新命令 （主控台）
<a name="update-command-console"></a>

**更新命令**  
若要從主控台更新命令，請前往 AWS IoT FleetWise 主控台的[命令](https://console.aws.amazon.com/iotfleetwise/home#/commands)頁面，並執行下列步驟。

1. 選擇您要更新的命令，然後選擇**編輯**。

1. 編輯命令詳細資訊，然後選擇**儲存變更**。

**棄用命令**  
若要從主控台棄用命令，請前往 AWS IoT FleetWise 主控台的[命令](https://console.aws.amazon.com/iotfleetwise/home#/commands)頁面，並執行下列步驟。

1. 選擇您要棄用的命令，然後選擇**棄用**。

1. 確認棄用，然後選擇**棄用**。

### 更新命令 (AWS CLI)
<a name="update-command-cli"></a>

**更新命令**  
若要更新命令資源，請執行下列命令。將 *command-id* 取代為您要更新的命令識別符，並提供更新的 *display-name* 和*描述*。

```
aws iot update-command \ 
    --command-id command-id \ 
    --display-name display-name \ 
    --description description
```

`UpdateCommand` API 操作會傳回下列回應。

```
{
    "commandId": "HandsOffSteeringMode",
    "deprecated": false,
    "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
}
```

**棄用命令**  
當您打算不再為裝置繼續使用命令或命令已過期時，會棄用命令。下列範例示範如何棄用命令。

```
aws iot update-command \ 
    --command-id command-id \ 
    --deprecated
```

`UpdateCommand` API 操作會傳回回應，其中包含 命令的 ID 和 ARN (Amazon Resource Name)。

```
{
    "commandId": "HandsOffSteeringMode",
    "deprecated": true,
    "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
}
```

一旦命令已棄用，現有的命令執行將繼續在車輛上執行，直到變成終端機為止。若要執行任何新的命令執行，您必須使用 `UpdateCommand` API 還原命令，使其變成可用。如需有關棄用和還原命令及其考量事項的其他資訊，請參閱《 *AWS IoT Core 開發人員指南*》中的[棄用命令資源](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-deprecate)。

## 刪除命令資源
<a name="delete-remote-command-cli"></a>

您可以使用[https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteCommand.html) AWS IoT Core 控制平面 API 操作或 AWS IoT FleetWise 主控台來刪除命令資源。

**注意**  
刪除動作為永久性動作，且無法還原。命令將從您的帳戶永久移除。

### 刪除命令 （主控台）
<a name="delete-command-console"></a>

若要從主控台刪除命令，請前往 AWS IoT FleetWise 主控台的[命令](https://console.aws.amazon.com/iotfleetwise/home#/commands)頁面，並執行下列步驟。

1. 選擇您要刪除的命令，然後選擇**刪除**。

1. 確認您想要刪除命令，然後選擇**刪除**。

### 刪除命令 (AWS CLI)
<a name="delete-command-cli"></a>

若要刪除命令資源，請執行下列命令。以您要刪除之命令的識別符取代 *command-id*。下列範例顯示如何刪除命令資源。

```
aws iot delete-command --command-id command-id
```

如果刪除請求成功：
+ 如果命令已棄用超過最大逾時 24 小時的持續時間，則會立即刪除命令，而且您會看到 HTTP `statusCode` 為 204。
+ 如果命令未棄用，或已棄用超過最大逾時的持續時間，則命令將處於 `pending deletion` 狀態，您會看到 HTTP `statusCode` 為 202。在 24 小時的逾時上限之後，命令將自動從您的帳戶中移除。