AWS IoT Jobs API 작업 - AWS IoT Core

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

AWS IoT Jobs API 작업

AWS IoT 작업 API는 다음 범주 중 하나에 사용할 수 있습니다.

  • 작업 관리 및 제어와 같은 관리 작업. 이것은 제어 영역입니다.

  • 이러한 작업을 수행하는 디바이스. 이것은 데이터 영역으로, 데이터를 전송하고 수신하도록 허용합니다.

작업을 관리하고 제어할 때는 HTTPS 프로토콜 API를 사용합니다. 디바이스는 MQTT 또는 HTTPS 프로토콜 API 중에서 하나를 사용할 수 있습니다. 제어 영역 API는 일반적으로 작업을 생성하거나 추적할 때 적은 용량의 호출에 맞게 설계되었습니다. 그래서 단일 요청일 때 연결을 개시하고, 응답이 수신되면 연결을 종료합니다. 데이터 영역 HTTPS 및 MQTT API는 긴 폴링을 허용합니다. 이 API 작업들은 수백만 개의 디바이스까지 확장되는 대용량 트래픽에 맞게 설계되었습니다.

AWS IoT 작업 HTTPS API마다 AWS Command Line Interface(AWS CLI)에서 API를 호출할 수 있는 명령이 있습니다. 이러한 명령들은 소문자이며, API 이름을 구성하는 단어들 사이에 하이픈(-)을 사용합니다. 예를 들어 CLI에서 다음과 같이 입력하면 CreateJob API를 호출할 수 있습니다.

aws iot create-job ...

작업 중 오류가 발생하면 오류에 대한 정보가 포함된 오류 응답을 받습니다.

AWS IoT 작업 서비스 작업에서 발생한 오류에 대한 정보가 포함됩니다.

다음 예는 이 작업의 구문을 보여줍니다.

{ "code": "ErrorCode", "message": "string", "clientToken": "string", "timestamp": timestamp, "executionState": JobExecutionState }

다음은 이 ErrorResponse에 대한 설명입니다.

code

ErrorCode는 다음과 같이 설정할 수 있습니다.

InvalidTopic

요청이 API 작업으로 매핑되어 있지 않은 AWS IoT 작업 네임스페이스의 주제로 전송되었습니다.

InvalidJson

요청 내용이 유효한 UTF-8-인코딩 JSON으로 해석되지 않았습니다.

InvalidRequest

요청 내용이 잘못되었습니다. 예를 들어 UpdateJobExecution 요청에 잘못된 상태 세부 정보가 포함되어 있으면 이 코드가 반환됩니다. 메시지에는 오류에 대한 세부 정보가 포함됩니다.

InvalidStateTransition

업데이트가 작업 실행의 현재 상태 때문에 유효하지 않은 상태로 작업 실행을 변경하려고 했습니다. 예를 들어, SUCCEEDED 상태의 요청을 IN_PROGRESS로 변경하려고 합니다. 이때는 오류 메시지 본문에 executionState 필드도 포함됩니다.

ResourceNotFound

요청 주제에서 지정한 JobExecution이 존재하지 않습니다.

VersionMismatch

요청에서 지정한 예상 버전이 AWS IoT 작업 서비스의 작업 실행 버전과 일치하지 않습니다. 이때는 오류 메시지 본문에 executionState 필드도 포함됩니다.

InternalError

요청을 처리하는 도중 내부 오류가 발생했습니다.

RequestThrottled

요청에 병목 현상이 발생했습니다.

TerminalStateReached

종료 상태의 작업에서 작업을 설명하는 명령을 실행했을 때 발생합니다.

message

오류 메시지 문자열입니다.

clientToken

요청과 응답의 연관성을 나타내는 임의 문자열입니다.

timestamp

epoch 이후 경과 시간(초)입니다.

executionState

JobExecutionState 객체입니다. 이 필드는 code 필드에 InvalidStateTransition 또는 VersionMismatch 값이 있을 때만 포함됩니다. 이 두 가지 경우에는 DescribeJobExecution 요청을 별도로 실행하여 현재 작업 실행 상태에 대한 데이터를 가져올 필요가 없습니다.