기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
상위 수준 명령 워크플로
다음 단계에서는 디바이스와 명령 간의 AWS IoT Device Management 명령 워크플로에 대한 개요를 제공합니다. 명령 HTTP API 작업을 사용하면 Sigv4 자격 증명을 사용하여 요청에 서명됩니다.
워크플로우 개요
명령 생성 및 관리
디바이스에 대한 명령을 생성하고 관리하려면 다음 단계를 수행합니다.
-
명령 리소스 생성
디바이스에 명령을 전송하려면 먼저 AWS IoT 콘솔의 Command Hub
에서 명령 리소스를 생성하거나 CreateCommand
제어 영역 API 작업을 사용합니다. -
페이로드 지정
명령을 생성할 때 명령에 대한 페이로드를 제공해야 합니다. 페이로드 콘텐츠는 원하는 모든 형식을 사용할 수 있습니다. 디바이스가 페이로드를 올바르게 해석하도록 하려면 페이로드 콘텐츠 유형도 지정하는 것이 좋습니다.
-
(선택 사항) 생성된 명령 관리
명령을 생성한 후 명령의 표시 이름 및 설명을 업데이트할 수 있습니다. 더 이상 사용하지 않으려는 경우 명령을 더 이상 사용되지 않는 것으로 표시하거나 계정에서 명령을 완전히 제거할 수도 있습니다. 페이로드 정보를 수정하려면 새 명령을 생성하고 새 페이로드 파일을 업로드해야 합니다.
명령의 대상 디바이스를 선택하고 MQTT 주제를 구독합니다.
명령 워크플로를 준비하려면 대상 디바이스를 선택하고 명령을 수신하고 응답 메시지를 게시할 예약된 MQTT 주제를 지정합니다 AWS IoT .
-
명령의 대상 디바이스 선택
명령 워크플로를 준비하려면 명령을 수신할 대상 디바이스를 선택하고 지정된 작업을 수행합니다. 대상 디바이스는 AWS IoT 레지스트리에 등록한 AWS IoT 사물이거나 디바이스가 등록되지 않은 경우 MQTT 클라이언트 ID를 사용하여 지정할 수 있습니다 AWS IoT. 자세한 내용은 대상 디바이스 고려 사항 단원을 참조하십시오.
-
IoT 디바이스 정책 구성
디바이스가 명령 실행을 수신하고 업데이트를 게시하려면 먼저 이러한 작업을 수행할 수 있는 권한을 부여하는 IAM 정책을 사용해야 합니다. 디바이스가 AWS IoT 사물로 등록되어 있는지 또는 MQTT 클라이언트 ID로 지정되어 있는지에 따라 사용할 수 있는 샘플 정책의 예는 섹션을 참조하세요샘플 IAM 정책.
-
MQTT 연결 설정
디바이스가 명령 기능을 사용할 수 있도록 준비하려면 디바이스가 먼저 메시지 브로커에 연결하고 요청 및 응답 주제를 구독해야 합니다. 디바이스가 메시지 브로커에 연결하고 MQTT 연결을 AWS IoT Core 설정하는
iot:Connect
작업을 수행하도록 허용해야 합니다. 에 대한 데이터 영역 엔드포인트를 찾으려면 아래와 같이DescribeEndpoint
API 또는describe-endpoint
CLI 명령을 AWS 계정사용합니다.aws iot describe-endpoint --endpoint-type iot:Data-ATS
이 명령을 실행하면 아래와 같이 계정별 데이터 영역 엔드포인트가 반환됩니다.
account-specific-prefix
.iot.region
.amazonaws.com -
주제 명령을 위한 Susbcribe
연결이 설정되면 디바이스는 명령 요청 주제를 구독할 수 있습니다. 명령을 생성하고 대상 디바이스에서 명령 실행을 시작하면 메시지 브로커가 페이로드 메시지를 요청 주제에 게시합니다. 그러면 디바이스가 페이로드 메시지를 수신하고 명령을 처리할 수 있습니다.
(선택 사항) 디바이스가 이러한 명령 응답 주제(
accepted
또는rejected
)를 구독하여 클라우드 서비스가 디바이스의 응답을 수락 또는 거부했는지 여부를 나타내는 메시지를 수신할 수도 있습니다.대체 예시:
-
대상 디바이스가 IoT 사물로 등록되었는지 또는 MQTT 클라이언트로 지정되었는지 여부에<device>
client
따라thing
또는를 사용합니다. -
대상 디바이스의 고유 식별자를 사용합니다. 이 ID는 고유한 MQTT 클라이언트 ID 또는 사물 이름일 수 있습니다.<DeviceID>
참고
페이로드 유형이 JSON 또는가 아닌 경우 명령 요청 주제에 CBOR
<PayloadFormat>
필드가 없을 수 있습니다. 페이로드 형식을 가져오려면 MQTT 5를 사용하여 MQTT 메시지 헤더에서 형식 정보를 가져오는 것이 좋습니다. 자세한 내용은 명령 주제 단원을 참조하십시오.$aws/commands/
<devices>
/<DeviceID>
/executions/+/request/<PayloadFormat>
$aws/commands/<devices>
/<DeviceID>
/executions/+/response/<PayloadFormat>
/accepted $aws/commands/<devices>
/<DeviceID>
/executions/+/response/<PayloadFormat>
/rejected -
대상 디바이스에 대한 명령 실행 시작 및 모니터링
명령을 생성하고 명령의 대상을 지정한 후 다음 단계를 수행하여 대상 디바이스에서 실행을 시작할 수 있습니다.
-
대상 디바이스에서 명령 실행 시작
콘솔의 Command Hub
에서 대상 디바이스에서 명령 실행을 AWS IoT 시작하거나 계정별 iot:Jobs
엔드포인트와 API 함께StartCommandExecution
데이터 영역을 사용합니다. 는 디바이스가 구독한 위에서 언급한 명령 요청 주제에 API 페이로드 메시지를 게시합니다.참고
클라우드에서 명령을 전송할 때 디바이스가 오프라인 상태이고 MQTT 영구 세션을 사용하는 경우 명령은 메시지 브로커에서 대기합니다. 제한 시간 이전에 디바이스가 다시 온라인 상태로 전환되고 명령 요청 주제를 구독한 경우 디바이스는 명령을 처리하고 명령 응답 주제에 결과를 게시할 수 있습니다. 제한 시간 전에 디바이스가 다시 온라인 상태가 되지 않으면 명령 실행이 시간 초과되고 페이로드 메시지가 만료되어 메시지 브로커가 폐기할 수 있습니다.
-
명령 실행 결과 업데이트
이제 디바이스는 페이로드 메시지를 수신하고 명령을 처리하고 지정된 작업을 수행한 다음를 사용하여 명령 실행 결과를 다음 명령 응답 주제에 게시할 수 있습니다
UpdateCommandExecution
API. 디바이스가 수락 및 거부된 명령 응답 주제를 구독한 경우 클라우드 서비스에서 응답을 수락 또는 거부했는지 여부를 나타내는 메시지가 표시됩니다.요청 주제에서 지정한 방법에 따라는 사물 또는 클라이언트일
<devices>
수 있으며는 IoT 사물 이름 또는 MQTT 클라이언트 ID일<DeviceID>
수 있습니다.참고
는 명령 응답 주제CBOR에서만 JSON 또는 일
<PayloadFormat>
수 있습니다.$aws/commands/
<devices>
/<DeviceID>
/executions/<ExecutionId>
/response/<PayloadFormat>
-
(선택 사항) 명령 실행 결과 검색
명령 실행 결과를 검색하려면 AWS IoT 콘솔에서 명령 기록을 보거나
GetCommandExecution
제어 영역 API 작업을 사용할 수 있습니다. 최신 정보를 가져오려면 디바이스가 명령 실행 결과를 명령 응답 주제에 게시했어야 합니다. 마지막으로 업데이트된 시간, 실행 결과, 실행이 완료된 시간 등 실행 데이터에 대한 추가 정보를 얻을 수도 있습니다.
(선택 사항) 명령 이벤트에 대한 알림 활성화
명령 실행 상태가 변경될 때 알림을 수신하도록 명령을 구독할 수 있습니다. 다음 단계에서는 명령 이벤트를 구독한 다음 처리하는 방법을 보여줍니다.
-
주제 규칙 생성
명령 이벤트 주제를 구독하고 명령 실행 상태가 변경될 때 알림을 받을 수 있습니다. 또한 주제 규칙을 생성하여 디바이스에서 처리한 데이터를 AWS Lambda Amazon SQS및 AWS Step Functions와 같은 규칙에서 지원하는 다른 AWS IoT 서비스로 라우팅할 수 있습니다. AWS IoT 콘솔 또는
CreateTopicRule
AWS IoT Core 컨트롤 플레인 API 작업을 사용하여 주제 규칙을 생성할 수 있습니다. 자세한 내용은 AWS IoT 규칙 생성 단원을 참조하십시오.이 예제에서
를 알림을 수신하려는 명령의 식별자<CommandID>
로 바꾸고를 명령 실행의 상태로 바꿉니다.<CommandExecutionStatus>
$aws/events/commandExecution/
<CommandID>
/<CommandExecutionStatus>
참고
모든 명령 및 명령 실행 상태에 대한 알림을 받으려면 와일드카드 문자를 사용하고 다음 주제를 구독하면 됩니다.
$aws/events/commandExecution/+/#
-
명령 이벤트 수신 및 처리
이전 단계에서 명령 이벤트를 구독하기 위한 주제 규칙을 생성한 경우 이러한 서비스 외에도 수신하는 명령 푸시 알림을 관리하고 애플리케이션을 빌드할 수 있습니다.
다음 코드는 수신할 명령 이벤트 알림에 대한 샘플 페이로드를 보여줍니다.
{ "executionId": "
2bd65c51-4cfd-49e4-9310-d5cbfdbc8554
", "status":"FAILED", "statusReason": { "reasonCode": "DEVICE_TOO_BUSY", "reasonDescription": "" }, "eventType": "COMMAND_EXECUTION", "commandArn":"arn:aws:iot:us-east-1
:123456789012
:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086
", "targetArn":"arn:aws:iot:us-east-1
:123456789012
:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd
", "timestamp":1717708862107
}