기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
상위 수준 명령 워크플로
이 워크플로는 디바이스가 AWS IoT Device Management명령과 상호 작용하는 방식을 보여줍니다. 모든 HTTP API 요청은 서명에 Sigv4 자격 증명을 사용합니다.
명령 생성 및 관리
디바이스에 대한 명령을 생성하고 관리하려면 다음 단계를 수행합니다.
-
명령 리소스 생성
Command Hub에서
또는 CreateCommandAPI를 사용하여 명령을 생성합니다. -
페이로드 지정
모든 형식으로 페이로드를 제공합니다. 올바른 디바이스 해석을 위해 콘텐츠 유형을 지정합니다.
페이로드 템플릿이 있는 동적 명령의 경우 제공된 파라미터를 사용하여 런타임에 최종 페이로드가 생성됩니다. 템플릿은 JSON 형식만 지원하지만 생성된 페이로드는 JSON 또는 CBOR로 전송할 수 있습니다.
-
(선택 사항) 생성된 명령 관리
생성 후 표시 이름과 설명을 업데이트합니다. 더 이상 필요하지 않은 경우 명령을 더 이상 사용되지 않는 것으로 표시하거나 영구적으로 삭제합니다. 페이로드 정보를 수정하려면 새 명령을 생성합니다.
명령의 대상 디바이스 선택 및 MQTT 주제 구독
대상 디바이스를 선택하고 명령을 수신하고 응답을 게시하기 위한 MQTT 주제를 구성합니다.
-
명령의 대상 디바이스 선택
명령을 수신하고 실행할 대상 디바이스를 선택합니다. 등록된 디바이스에는 사물 이름을 사용하고 등록되지 않은 디바이스에는 클라이언트 ID를 사용합니다. 자세한 내용은 대상 디바이스 고려 사항 단원을 참조하십시오.
-
AWS IoT디바이스 정책 구성
실행을 수신하고 업데이트를 게시할 수 있는 권한을 부여하는 IAM 정책을 구성합니다. 정책 예제는 섹션을 참조샘플 IAM 정책하세요.
-
MQTT 연결 설정
디바이스를 메시지 브로커에 연결하고 요청 및 응답 주제를 구독합니다. 디바이스에는
iot:Connect권한이 필요합니다.DescribeEndpointAPI 또는describe-endpointCLI 명령을 사용하여 데이터 영역 엔드포인트를 찾습니다.aws iot describe-endpoint --endpoint-type iot:Data-ATS이 명령을 실행하면 아래와 같이 계정별 데이터 플레인 엔드포인트가 반환됩니다.
account-specific-prefix.iot.region.amazonaws.com -
명령 주제 구독
명령 요청 주제를 구독합니다. 실행을 시작하면 메시지 브로커가이 주제에 페이로드를 게시합니다. 디바이스는 명령을 수신하고 처리합니다.
(선택 사항) 응답 주제(
accepted또는rejected)를 구독하여 클라우드 서비스가 디바이스 응답을 수락 또는 거부했는지 여부를 확인합니다.대체 예시:
-
대신, 대상 디바이스가 IoT 사물로 등록되었는지 아니면 MQTT 클라이언트로 지정되었는지에 따라<device>thing또는client를 사용합니다. -
대신 대상 디바이스의 고유 식별자를 사용합니다. 이 ID는 고유한 MQTT 클라이언트 ID 또는 사물 이름일 수 있습니다.<DeviceID>
참고
페이로드 유형이 JSON 또는 CBOR이 아닌 경우, 명령 요청 주제에
<PayloadFormat>필드가 표시되지 않을 수 있습니다. 페이로드 형식을 가져오려면 MQTT5를 사용하여 MQTT 메시지 헤더에서 형식 정보를 가져오는 것이 좋습니다. 자세한 내용은 명령 주제 단원을 참조하십시오.$aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/accepted/<PayloadFormat>$aws/commands/<devices>/<DeviceID>/executions/+/response/rejected/<PayloadFormat> -
대상 디바이스에 대한 명령 실행 시작 및 모니터링
명령을 생성하고 명령의 대상을 지정한 후, 다음 단계를 수행하여 대상 디바이스에서 실행을 시작할 수 있습니다.
-
대상 디바이스에서 명령 실행 시작
Command Hub
에서 실행을 시작하거나 계정별 엔드포인트와 함께 StartCommandExecutionAPI를 사용합니다.iot:Data-ATS듀얼 스택(IPv4/IPv6) 또는iot:JobsIPv4에만 사용합니다.API는 명령 요청 주제에 페이로드를 게시합니다.
참고
디바이스가 오프라인 상태이고 MQTT 영구 세션을 사용하는 경우 명령은 메시지 브로커에서 대기합니다. 제한 시간 전에 디바이스가 다시 연결되면 명령을 처리하고 결과를 게시할 수 있습니다. 제한 시간이 만료되면 실행 시간이 초과되고 페이로드가 삭제됩니다.
-
명령 실행 결과 업데이트
디바이스는 페이로드를 수신하고, 명령을 처리하고, 지정된 작업을 수행하고,
UpdateCommandExecutionMQTT 기반 API를 사용하여 명령 응답 주제에 결과를 게시합니다. 수락 및 거부된 주제를 구독하면 클라우드 서비스가 응답을 수락 또는 거부했는지 확인하는 메시지가 디바이스에 표시됩니다.요청 주제에서 지정한 내용에 따라
<devices>는 사물 또는 클라이언트일 수 있으며<DeviceID>는 AWS IoT사물 이름 또는 MQTT 클라이언트 ID일 수 있습니다.참고
<PayloadFormat>은 명령 응답 주제에서 JSON 또는 CBOR만 가능합니다.$aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat> -
(선택 사항) 명령 실행 결과 검색
AWS IoT콘솔에서 또는를 사용하여 실행 결과를 검색합니다
GetCommandExecution. 최신 정보를 보려면 디바이스가 명령 응답 주제에 결과를 게시해야 합니다. 마지막 업데이트 시간, 결과 및 완료 시간을 포함한 추가 세부 정보를 봅니다.
(선택 사항) 명령 이벤트에 대한 알림 활성화
실행 상태가 변경될 때 알림을 받으려면 명령 이벤트를 구독합니다.
-
주제 규칙 생성
상태 변경 알림에 대한 명령 이벤트 주제를 구독합니다. AWS IoT콘솔 또는를 사용하여 디바이스 데이터를AWS Lambda Amazon SQS 및 AWSStep Functions와 같은 다른 AWS IoT서비스로 라우팅하는 주제 규칙을 생성합니다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}