{
"version": "1.0",
"steps": [
{
"action": {
"name": "Run-Command_01",
"type": "runCommand",
"input": {
"command": "${aws:iot:parameter:command}"
},
"runAsUser": "${aws:iot:parameter:runAsUser}"
}
},
{
"action": {
"name": "Run-Command_02",
"type": "runCommand",
"input": {
"command": "${aws:iot:parameter:command}"
},
"runAsUser": "${aws:iot:parameter:runAsUser}"
}
}
]
}
QUEUED
작업은 취소, IN_PROGRESS
작업은 계속 실행QUEUED
, IN_PROGRESS
작업 모두 취소FAILED
, REJECTED
, TIMED_OUT
, 모두)과 임계값 비율, 최소 디바이스 수를 설정IN_PROGRESS
상태일 때 알림IN_PROGRESS
상태이면 작업 배포 진행 상황을 모니터링IN_PROGRESS
상태인 경우 작업 상태를 TIMED_OUT
으로 하며 작업은 실패함IN_PROGRESS
상태인 경우 작업 상태를 TIMED_OUT
으로 하며 작업은 실패함SCHEDULED
상태로 생성 됨IN_PROGRESS
가 되고 모든 디바이스에 롤아웃 되기 시작함IN_PROGRESS
상태가 되며, 디바이스에 롤아웃 됨SUCCEEDED
, FAILED
, TIMED_OUT
, REMOVED
또는 CANCELED
와 같은 종료 상태가 되면 작업 상태가 COMPLETED
로 변경CANCELED
로 변경DELETION_IN_PROGRESS
로 변경QUEUED
가 됨IN_PROGRESS
로 변경됨CANCELED
로 변경됨REMOVED
로 변경됨IN_PROGRESS
로 변경SUCCEEDED
상태로 UpdateJobExecution API를 호출FAILED
상태로 UpdateJobExecution API를 호출IN_PROGRESS
인 경우, 디바이스가 작업 단계를 완료하지 못하거나 진행 중인 타이머의 제한 시간 내에 원격 작업을 완료하지 못할 경우 AWS IoT Core는 작업 실행 상태를 TIMED_OUT으로 설정REJECTED
REJECTED
상태로 UpdateJobExecution API를 호출REMOVED
REMOVED
로 설정CANCELED
CANCELED
로 설정디바이스 시작 시, 디바이스는 아래의 topic을 구독해서, 디바이스에 생성된 작업의 정보를 가져옴
$aws/things/{thing-name}/jobs/notify
{
"timestamp" : 10011,
"jobs" : {
"IN_PROGRESS" : [ {
"jobId" : "other-job",
"queuedAt" : 10003,
"lastUpdatedAt" : 10009,
"executionNumber" : 1,
"versionNumber" : 1
} ],
"QUEUED" : [ {
"jobId" : "this-job",
"queuedAt" : 10011,
"lastUpdatedAt" : 10011,
"executionNumber" : 1,
"versionNumber" : 0
} ]
}
}
$aws/things/{thing-name}/jobs/notify-next
{
"timestamp": 1517186269,
"execution": {
"jobId": "job2",
"status": "QUEUED",
"queuedAt": 1517017191,
"lastUpdatedAt": 1517017191,
"versionNumber": 1,
"executionNumber": 1,
"jobDocument": {
"operation": "test"
}
}
}
$aws/things/{thing-name}/jobs/{request-name}/accepted
$aws/things/{thing-name}/jobs/get/accepted
주제에 대한 성공 메시지를 게시$aws/things/{thing-name}/jobs/{request-name}/rejected
$aws/things/{thing-name}/jobs/get/rejected
주제에 실패 메시지를 게시$aws/things/{thing-name}/jobs/get
{ "clientToken": "string" } // 요청과 응답을 일치 시키기 위한 항목
AWS IoT Core는 $aws/things/{thing-name}/jobs/get/accepted
에 응답을 게시
(요청 거절일 경우 $aws/things/{thing-name}/jobs/get/rejected
에 게시)
{
"inProgressJobs" : [
{
"jobId": "string",
"queuedAt": timestamp,
"startedAt": timestamp,
"lastUpdatedAt": timestamp,
"versionNumber": "number",
"executionNumber": long
}
],
"queuedJobs" : [
{
"jobId": "string",
"queuedAt": timestamp,
"startedAt": timestamp,
"lastUpdatedAt": timestamp,
"versionNumber": "number",
"executionNumber": long
}
],
"timestamp" : "timestamp",
"clientToken" : "string"
}
$aws/things/{thing-name}/jobs/{job-id}/get
{
"executionNumber": long, // (option) 디바이스에서 작업 실행을 식별하기 위한 숫자, 지정하지 않으면 최신 작업 실행이 반환
"includeJobDocument": boolean, // (option) 작업 문서 포함 여부, 기본값 true
"clientToken": "string"
}
AWS IoT Core는 $aws/things/{thing-name}/jobs/{job-id}/get/accepted
에 응답을 게시
(요청 거절일 경우 $aws/things/{thing-name}/jobs/{job-id}/get/rejected
에 게시)
{
"execution" : {
"jobId" : "string",
"thingName" : "string",
"jobDocument" : "string",
"status": "QUEUED|IN_PROGRESS|FAILED|SUCCEEDED|CANCELED|TIMED_OUT|REJECTED|REMOVED",
"statusDetails": {
"string": "string"
},
"queuedAt" : "timestamp",
"startedAt" : "timestamp",
"lastUpdatedAt" : "timestamp",
"versionNumber" : "number",
"executionNumber": long
},
"timestamp": "timestamp",
"clientToken": "string"
}
$aws/things/{thing-name}/jobs/$next/get
IN_PROGRESS
, QUEUED
) 작업을 가져올 수 있음$aws/things/{thing-name}/jobs/get/accepted
에 응답을 게시 (요청 거절일 경우 $aws/things/{thing-name}/jobs/get/rejected
에 게시)$aws/things/{thing-name}/jobs/{job-id}/update
{
"status": "job-execution-state", // IN_PROGRESS, FAILED, SUCCEEDED, REJECTED
"statusDetails": {
"string": "string" // 작업 실행 상태를 설명하는 이름-값 페어의 모음
...
},
"expectedVersion": "number", // 예상되는 현재 작업 실행 버전
"executionNumber": long, // (option) 디바이스에서 작업 실행을 식별하기 위한 숫자
"includeJobExecutionState": boolean, // (option) true로 설정하면 응답에 JobExecutionState 필드가 포함. 기본값은 false
"includeJobDocument": boolean, // (option) true로 설정하면 응답에 JobDocument 필드가 포함. 기본값은 false
"stepTimeoutInMinutes": long, // 디바이스가 이 작업 실행을 마쳐야 하는 시간을 지정
"clientToken": "string"
}
AWS IoT Core는 $aws/things/{thing-name}/jobs/{job-id}/get/accepted
에 응답을 게시
(요청 거절일 경우 $aws/things/{thing-name}/jobs/{job-id}/get/rejected
에 게시)
$aws/things/{thing-name}/jobs/{job-id}/update
FAILED
혹은 SUCCEEDED
로 해서 메시지를 게시$aws/things/{thing-name}/jobs/{job-id}/get/accepted
에 응답을 게시$aws/things/{thing-name}/jobs/{job-id}/get/rejected
에 게시)