디바이스와 작업 - AWS IoT Core

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

디바이스와 작업

장치는 MQTT, HTTP 서명 버전 4 또는 HTTP TLS를 사용하여 AWS IoT 잡과 통신할 수 있습니다. 디바이스가 AWS IoT 잡스와 통신할 때 사용할 엔드포인트를 결정하려면 명령을 실행하세요. DescribeEndpoint 예를 들면 다음 명령을 실행하는 경우

aws iot describe-endpoint --endpoint-type iot:Data-ATS

다음과 같은 결과가 출력됩니다.

{ "endpointAddress": "a1b2c3d4e5f6g7-ats.iot.us-west-2.amazonaws.com" }

장치는 MQTT 프로토콜을 사용하여 AWS IoT 잡스와 통신할 수 있습니다. 장치는 MQTT 주제를 구독하여 새 작업에 대한 알림을 받고 작업 서비스로부터 응답을 받습니다. AWS IoT 또한 MQTT 주제에 게시하여 작업 시작 상태에 대한 쿼리를 실행하거나 업데이트하기도 합니다. 또한 디바이스마다 자체적으로 일반 MQTT 주제가 있습니다. MQTT 주제 게시 및 구독에 대한 자세한 내용은 디바이스 통신 프로토콜 단원을 참조하세요.

이 통신 방법을 사용하면 단말기가 장치별 인증서와 개인 키를 사용하여 작업을 인증합니다. AWS IoT

디바이스는 다음 주제를 구독할 수 있습니다. thing-name은 디바이스와 연결된 사물의 이름입니다.

  • $aws/things/thing-name/jobs/notify

    보류 중인 작업 시작 목록에서 작업 시작이 추가되거나 제거될 때 알림을 받으려면 이 주제를 구독합니다.

  • $aws/things/thing-name/jobs/notify-next

    보류 중인 다음 작업 실행이 변경될 때 알림을 받으려면 이 주제를 구독합니다.

  • $aws/things/thing-name/jobs/request-name/accepted

    AWS IoT Jobs 서비스는 MQTT 주제에 대한 성공 및 실패 메시지를 게시합니다. 이 주제는 요청에 사용된 주제에 accepted 또는 rejected를 추가해 구성합니다. 다음은 요청의 이름 (예:) request-name 이며 주제는 다음과 Get 같을 수 있습니다. $aws/things/myThing/jobs/get AWS IoT 그러면 Jobs는 해당 $aws/things/myThing/jobs/get/accepted 주제에 대한 성공 메시지를 게시합니다.

  • $aws/things/thing-name/jobs/request-name/rejected

    여기서 request-nameGet과 같은 요청의 이름입니다. 요청이 실패하면 AWS IoT Jobs는 해당 주제에 대한 실패 메시지를 게시합니다. $aws/things/myThing/jobs/get/rejected

다음 HTTPS API 작업을 사용할 수도 있습니다.

  • UpdateJobExecution API를 호출하여 작업 실행 상태를 업데이트할 수 있습니다.

  • DescribeJobExecution API를 호출하여 작업 실행 상태에 대한 쿼리를 실행할 수 있습니다.

  • GetPendingJobExecutions API를 호출하여 대기 중인 작업 실행 목록을 가져올 수 있습니다.

  • jobId$next로 사용하여 DescribeJobExecution API를 호출하여 다음 보류 중인 작업 실행을 가져올 수 있습니다.

  • StartNextPendingJobExecution API를 호출하여 다음 대기 중인 작업 실행을 가져와 시작할 수 있습니다.

장치는 포트 443에서 HTTP 서명 버전 4를 사용하여 AWS IoT 잡과 통신할 수 있습니다. 이는 AWS SDK와 CLI에 의해 사용되는 방법입니다. 이러한 도구에 대한 자세한 내용은 AWS CLI 명령 참조: iot-jobs-data 또는 AWS SDK 및 도구를 참조하고 원하는 언어에 대한 IotJobsDataPlane 섹션을 참조하십시오.

이 통신 방법을 사용하면 디바이스에서 IAM 자격 증명을 사용하여 작업을 인증합니다. AWS IoT

이 방법을 사용하는 경우 다음 명령을 사용할 수 있습니다.

  • DescribeJobExecution

    aws iot-jobs-data describe-job-execution ...

  • GetPendingJobExecutions

    aws iot-jobs-data get-pending-job-executions ...

  • StartNextPendingJobExecution

    aws iot-jobs-data start-next-pending-job-execution ...

  • UpdateJobExecution

    aws iot-jobs-data update-job-execution ...

디바이스는 이 프로토콜을 지원하는 타사 소프트웨어 클라이언트를 사용하여 포트 8443에서 HTTP TLS를 사용하여 AWS IoT 잡과 통신할 수 있습니다.

디바이스는 이 방법으로 X.509 인증서 기반 인증을 사용합니다(예: 디바이스별 인증서 및 프라이빗 키).

이 방법을 사용하는 경우 다음 명령을 사용할 수 있습니다.

  • DescribeJobExecution

  • GetPendingJobExecutions

  • StartNextPendingJobExecution

  • UpdateJobExecution

작업 서비스와 작업할 수 있도록 디바이스를 프로그래밍

이 섹션의 예제에서는 MQTT를 사용하여 디바이스가 AWS IoT 작업 서비스와 작업하는 방식을 보여줍니다. 또는 해당 API 또는 CLI 명령을 사용할 수 있습니다. 여기 예제에서는 MyThing 디바이스가 다음 MQTT 주제를 구독한다고 가정합니다.

  • $aws/things/MyThing/jobs/notify(또는 $aws/things/MyThing/jobs/notify-next)

  • $aws/things/MyThing/jobs/get/accepted

  • $aws/things/MyThing/jobs/get/rejected

  • $aws/things/MyThing/jobs/jobId/get/accepted

  • $aws/things/MyThing/jobs/jobId/get/rejected

코드 서명 AWS IoT 용을 사용하는 경우 장치 코드가 코드 파일의 서명을 확인해야 합니다. 이 서명은 작업 문서의 codesign 속성에 있습니다. 코드 파일 서명 확인에 대한 자세한 내용은 디바이스 에이전트 샘플을 참조하세요.