

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 예: 명령을 사용하여 차량 조향 모드 제어(AWS CLI)
<a name="remote-command-tutorial"></a>

**중요**  
특정 AWS IoT FleetWise 기능에 대한 액세스는 현재 게이트됩니다. 자세한 내용은 [AWS AWS IoT FleetWise의 리전 및 기능 가용성](fleetwise-regions.md) 단원을 참조하십시오.

다음 예제에서는를 사용하여 명령 기능을 사용하는 방법을 보여줍니다 AWS CLI. 이 예제에서는 AWS IoT FleetWise 차량을 대상 디바이스로 사용하여 조향 모드를 원격으로 제어하는 명령을 보내는 방법을 보여줍니다.

**Topics**
+ [차량 조향 모드 개요 예제](#iot-remote-command-tutorial-overview)
+ [사전 조건](#iot-remote-command-tutorial-prereq)
+ [원격 명령을 사용하기 위한 IAM 정책](#remote-command-policy)
+ [AWS IoT 명령 실행(AWS CLI)](#iot-remote-command-tutorial-run)
+ [정리](#remote-command-tutorial-clean)

## 차량 조향 모드 개요 예제
<a name="iot-remote-command-tutorial-overview"></a>

이 예제에서는 다음을 수행합니다.

1. 를 사용하여 작업에 대한 명령 리소스를 생성`create-command` AWS CLI 하여 차량의 조향 모드를 변경합니다.

1. 를 사용하여 명령이 생성되거나 마지막으로 업데이트된 시간과 같은 명령에 대한 정보를 검색합니다`get-command` AWS CLI.

1. 조향 모드가 필수 파라미터`start-command-execution` AWS CLI 인를 사용하여 차량으로 명령을 전송하면 디바이스에서 실행됩니다.

1. 를 사용하여 명령 실행 결과를 가져옵니다`get-command-execution` AWS CLI. 실행이 완료되는 시기를 확인하고 실행 결과와 명령 실행을 완료하는 데 걸린 시간과 같은 추가 세부 정보를 검색할 수 있습니다.

1. 더 이상 사용하지 않으려는 명령과 명령 실행을 제거하여 정리 활동을 수행합니다.

## 사전 조건
<a name="iot-remote-command-tutorial-prereq"></a>

이 예제를 실행하기 전에:
+  AWS IoT FleetWise 차량을 AWS IoT 레지스트리에 AWS IoT 사물로 프로비저닝합니다. 또한 사물에 인증서를 추가하고 활성화한 다음 사물에 정책을 연결해야 합니다. 그러면 디바이스가 클라우드에 연결하고 명령을 실행할 수 있습니다. 자세한 내용은 [차량 프로비저닝](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html)을 참조하세요.
+ 에 표시된 대로 명령을 사용하기 위한 API 작업을 수행할 수 있는 권한을 부여하는 IAM 사용자 및 IAM 정책을 생성합니다[원격 명령을 사용하기 위한 IAM 정책](#remote-command-policy).

## 원격 명령을 사용하기 위한 IAM 정책
<a name="remote-command-policy"></a>

다음 표에는 명령 기능에 대한 모든 컨트롤 플레인 및 데이터 플레인 API 작업에 대한 액세스 권한을 부여하는 샘플 IAM 정책이 나와 있습니다. 애플리케이션 사용자는 표에 표시된 대로 모든 원격 명령 API 작업을 수행할 수 있는 권한을 갖게 됩니다.


**API 작업**  

| API 작업 | 컨트롤/데이터 영역 | 프로토콜 | 설명 | Resource | 
| --- | --- | --- | --- | --- | 
| CreateCommand | 컨트롤 플레인 | HTTP | 명령 리소스를 생성합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | 컨트롤 플레인 | HTTP | 명령에 대한 정보를 검색합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | 컨트롤 플레인 | HTTP | 명령 또는에 대한 정보를 업데이트하여 사용 중단합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | 컨트롤 플레인 | HTTP | 계정의 명령을 나열합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | 컨트롤 플레인 | HTTP | 명령을 삭제합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | 데이터 영역 | HTTP | 명령 실행을 시작합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | 데이터 영역 | MQTT | 명령 실행 업데이트 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | 컨트롤 플레인 | HTTP | 명령 실행에 대한 정보를 검색합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | 컨트롤 플레인 | HTTP | 계정의 명령 실행을 나열합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | 컨트롤 플레인 | HTTP | 명령 실행을 삭제합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

대체 예시:
+ `us-east-1`와 AWS 리전같은를 사용합니다`ap-south-1`.
+ `111122223333` 대신 AWS 계정 번호(예: `57EXAMPLE833`)로 대체합니다.
+ `command-id`또는와 같은 고유한 명령 식별자가 `command-id2` 있는 `command-id1`, `LockDoor` 및 `TurnOffAC`.
+ `thing-name`와 같은 AWS IoT 사물 이름을 사용합니다`my_car`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iot:CreateCommand",
                "iot:GetCommand",
                "iot:ListCommands",
                "iot:UpdateCommand",
                "iot:DeleteCommand"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id1",
                "arn:aws:iot:us-east-1:111122223333:command/command-id2"
            ]
        },
        {
            "Action": [
                "iot:GetCommandExecution",
                "iot:ListCommandExecutions",
                "iot:DeleteCommandExecution"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        },
        {
            "Action": "iot:StartCommandExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        }
    ]
}
```

------

## AWS IoT 명령 실행(AWS CLI)
<a name="iot-remote-command-tutorial-run"></a>

다음은 AWS CLI 를 사용하여 명령 작업을 수행하고 차량 조향 모드를 변경하는 방법을 보여줍니다.

1. 

**조향 모드 작업을 위한 명령 리소스 생성**

   `create-command` CLI를 사용하여 디바이스로 전송할 명령을 생성합니다. 이 예제에서는 다음을 지정합니다.
   + `command-id` 문자: *`TurnOffSteeringMode`*
   + `role-arn` `"arn:aws:iam:accountId:role/FwCommandExecutionRole"`은 차량에서 명령을 생성하고 실행할 수 있는 권한을 부여하는 IAM 역할이므로를 제공해야 `role-arn` 합니다. 자세한 내용은 [를 사용하여 명령에 대한 페이로드를 생성할 수 있는 AWS IoT Device Management 권한 부여 AWS IoT FleetWise](controlling-access.md#generate-command-payload) 단원을 참조하십시오.
   + `display-name` "*`Turn off steering mode`*"로 표시
   + `namespace` 여야 합니다. `AWS-IoT-FleetWise` 
   + `mandatory-parameters` 이름-값 페어로, "*\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode*"`name`로, defaultValue를 로 사용 `{ "S": "true" }`
**참고**  
필수 파라미터를 지정하지 않고도 명령을 생성할 수도 있습니다. 그런 다음 `start-command-execution` CLI를 사용하여 명령을 실행할 때 사용할 파라미터를 지정해야 합니다. 예제는 [명령 사용 시나리오](remote-command-use-cases.md) 섹션을 참조하세요.
**중요**  
`AWS-IoT-FleetWise` 네임스페이스를 사용할 때는의 일부로 지정된 `Name` 필드가 `$actuatorPath.` 접두사를 `mandatory-parameters` 사용하고 `Value` 필드가 문자열 데이터 형식을 사용해야 합니다.

   ```
   aws iot create-command \ 
       --command-id TurnOffSteeringMode \ 
       --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
       --display-name "Turn off steering mode" \ 
       --namespace AWS-IoT-FleetWise \
       --mandatory-parameters '[
         {
           "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
           "defaultValue": { "S": "true" }
         }
       ]'
   ```

   다음 출력은 CLI의 샘플 응답을 보여줍니다. 여기서 `ap-south-1` 및 `123456789012`는 AWS 리전 및 AWS 계정 ID의 예입니다.

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

   이 명령 사용에 대한 추가 예제는 섹션을 참조하세요[명령 리소스 생성](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**명령에 대한 정보 검색**

   다음 명령을 실행하여 명령에 대한 정보를 검색합니다. 여기서 `command-id`는 위에서 `create-command` 작업 출력의 명령 ID입니다.
**참고**  
명령을 두 개 이상 생성하는 경우 `ListCommands` API를 사용하여 계정의 모든 명령을 나열한 다음 `GetCommand` API를 사용하여 특정 명령에 대한 추가 정보를 얻을 수 있습니다. 자세한 내용은 [계정의 명령 나열](create-manage-remote-command-cli.md#list-remote-command-cli) 단원을 참조하십시오.

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

   이 명령을 실행하면 다음 응답이 생성됩니다. 명령이 생성된 시간과 마지막으로 업데이트된 시간, 지정한 파라미터, 디바이스에서 명령을 실행할 수 있는지 여부가 표시됩니다.

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "namespace": "AWS-IoT-FleetWise",
       "mandatoryParameters":[
           {
               "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
               "defaultValue": {"S": "true" }
           }
       ],
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "lastUpdatedAt": "2024-03-23T00:50:10.095000-07:00",
       "deprecated": false
   }
   ```

   이 명령 사용에 대한 추가 예제는 섹션을 참조하세요[명령에 대한 정보 검색](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**명령 실행 시작**

   다음 명령을 실행하여 명령 실행을 시작합니다. 여기서 `command-arn`는 위에서 `get-command` 작업 출력의 명령 ARN입니다. `target-arn`는 명령을 실행하는 대상 디바이스의 ARN입니다. 예: *`myVehicle`*.

   이 예제에서는 명령을 생성할 때 파라미터의 기본값을 제공했으므로 `start-command-execution` CLI는 명령을 실행할 때 이러한 값을 사용할 수 있습니다. CLI를 사용할 때 파라미터에 대해 다른 값을 지정하여 기본값을 재정의하도록 선택할 수도 있습니다.

   ```
   aws iot-data start-command-execution \    
       --command-arn arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode \
       --target-arn arn:aws:iot:ap-south-1:123456789012:thing/myVehicle
   ```

   이 명령을 실행하면 명령 실행 ID가 반환됩니다. 이 ID를 사용하여 명령 실행 상태, 세부 정보 및 명령 실행 기록을 쿼리할 수 있습니다.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542"
   }
   ```

   CLI 사용에 대한 추가 예제는 섹션을 참조하세요[명령 전송(AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-cli).

1. 

**명령 실행에 대한 정보 검색**

   다음 명령을 실행하여 대상 디바이스에서 실행한 명령에 대한 정보를 검색합니다. 위에서 `start-command-execution` 작업의 출력으로 `execution-id`얻은와 대상 디바이스의 `target-arn`ARN인를 지정합니다.
**참고**  
최신 상태 정보를 얻으려면 디바이스가 MQTT API를 사용하는 명령에 대한 `UpdateCommandExecution` MQTT 예약 응답 주제에 업데이트된 상태 정보를 게시했어야 합니다. 자세한 내용은 [명령 실행 결과 업데이트](send-monitor-remote-command-cli.md#update-remote-command-execution-cli) 단원을 참조하십시오.
둘 이상의 명령 실행을 시작하는 경우 `ListCommandExecutions` API를 사용하여 계정의 모든 명령 실행을 나열한 다음 `GetCommandExecution` API를 사용하여 특정 실행에 대한 추가 정보를 얻을 수 있습니다. 자세한 내용은 [계정의 명령 실행 나열](send-monitor-remote-command-cli.md#list-remote-command-execution-cli) 단원을 참조하십시오.

   ```
   aws iot get-command-execution \    
       --execution-id <"07e4b780-7eca-4ffd-b772-b76358da5542"> \ 
       --target-arn arn:aws:iot:us-east-1:<account>:thing/myVehicle
   ```

   이 명령을 실행하면 명령 실행, 실행 상태, 실행이 시작된 시간 및 완료된 시간에 대한 정보가 반환됩니다. 예를 들어 다음 응답은 대상 디바이스에서 명령 실행이 성공했고 조향 모드가 꺼졌음을 보여줍니다.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "targetArn": "arn:aws:iot:ap-south-1:123456789012:thing/myVehicle",
       "result": "SUCCEEDED",
        "statusReason": {
           "reasonCode": "65536",
           "reasonDescription": "SUCCESS"
       },
       "result": {
           "KeyName": {
               "S": "",
               "B": true,
               "BIN": null
           }
       },
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "completedAt": "2024-03-23T00:50:10.095000-07:00",
       "parameters": '{
            "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode":
            { "S": "true" }
       }' 
   }
   ```

## 정리
<a name="remote-command-tutorial-clean"></a>

이제 명령을 생성하여 디바이스에서 실행했으므로이 명령을 더 이상 사용하지 않으려는 경우 삭제할 수 있습니다. 진행 중인 보류 중인 명령 실행은 삭제 요청의 영향을 받지 않고 계속 실행됩니다.

**참고**  
또는 오래된 경우 명령을 사용 중지할 수 있으며 나중에 대상 디바이스에서 실행하기 위해 명령을 사용해야 할 수도 있습니다.

1. 

**(선택 사항) 명령 리소스 사용 중단**

   다음 명령을 실행하여 명령을 사용 중지합니다. 여기서 `command-id`는 위에서 `get-command` 작업 출력의 명령 ID입니다.

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

   이 명령을 실행하면 명령이 더 이상 사용되지 않음을 보여주는 출력이 반환됩니다. CLI를 사용하여 명령을 복원할 수도 있습니다.
**참고**  
`update-command` CLI를 사용하여 명령의 표시 이름과 설명을 업데이트할 수도 있습니다. 자세한 내용은 [명령 리소스 업데이트 또는 사용 중단](create-manage-remote-command-cli.md#update-remote-command-cli) 섹션을 참조하세요.

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

1. 

**명령 삭제**

   다음 명령을 실행하여에 지정된 명령을 삭제합니다`command-id`.
**참고**  
삭제 작업은 영구적이며 실행 취소할 수 없습니다.

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

   삭제 요청이 성공하면 사용 중단 명령을 표시했는지 여부와 사용 중단 시기에 따라 HTTP가 `statusCode`202 또는 204로 표시됩니다. 자세한 내용과 예제는 [명령 리소스 삭제](create-manage-remote-command-cli.md#delete-remote-command-cli) 섹션을 참조하세요.

   `get-command` CLI를 사용하여 명령이 계정에서 제거되었는지 확인할 수 있습니다.

1. 

**(선택 사항) 명령 실행 삭제**

   기본적으로 모든 명령 실행은 생성한 날짜로부터 6개월 이내에 삭제됩니다. `GetCommandExecution` API의 `timeToLive` 파라미터를 사용하여이 정보를 볼 수 있습니다.

   또는 실행 상태가 , `FAILED`또는 중 하나인 경우와 같이 명령 실행이 터미널이 `SUCCEEDED`된 `REJECTED`경우 명령 실행을 삭제할 수 있습니다. 다음 명령을 실행하여 실행을 삭제합니다. 여기서 `execution-id`는 위에서 `get-command-execution` 작업 출력의 실행 ID입니다.

   ```
   aws iot delete-command-execution \ 
               --execution-id "07e4b780-7eca-4ffd-b772-b76358da5542"
   ```

   `get-command-execution` CLI를 사용하여 명령 실행이 계정에서 제거되었는지 확인할 수 있습니다.