기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 작업 생성 및 관리 AWS CLI
이 단원에서는 작업을 생성하고 관리하는 방법을 설명합니다.
작업 생성
AWS IoT 작업을 생성하려면 CreateJob 명령을 사용합니다. 생성된 작업은 지정한 대상(사물 또는 사물 그룹)에서 실행될 때까지 대기합니다. AWS IoT 작업을 생성하려면 요청 본문에 포함하거나 Amazon S3 문서에 대한 링크로 포함할 수 있는 작업 문서가 필요합니다. 작업에 미리 서명된 Amazon S3를 사용하여 파일 다운로드가 포함된 경우IAM, 파일을 다운로드할 수 있는 권한이 있고 역할을 수임할 수 있는 권한을 AWS IoT 작업 서비스에 부여하는 Amazon 리소스 이름(ARN) 역할이 URLs필요합니다.
API 명령 또는를 사용하여 날짜 및 시간을 입력할 때 구문에 대한 자세한 내용은 타임스탬프를 AWS CLI참조하세요.
작업을 사용한 코드 서명
에 코드 서명을 사용하는 경우 코드 서명 작업을 시작하고 작업 문서에 출력을 포함해야 AWS IoT합니다. 이렇게 하면 코드 서명 프로필을 사용하여 서명된 코드 파일 경로로 대체되기 전까지 자리 표시자로 필요한 작업 문서의 코드 서명 자리 표시자가 대체됩니다. 코드 서명 자리 표시자는 다음과 같이 표시됩니다.
${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}
start-signing-job 명령을 사용하여 코드 서명 작업을 생성합니다.는 작업 ID를 start-signing-job
반환합니다. 서명이 저장되는 Amazon S3 위치를 가져오려면 describe-signing-job 명령을 사용합니다. 그런 다음 Amazon S3에서 서명을 다운로드할 수 있습니다. 코드 서명 작업에 대한 자세한 내용은 AWS IoT의 코드 서명 단원을 참조하세요.
작업 문서에는 코드 파일의 미리 서명된 URL 자리 표시자와 start-signing-job 명령을 사용하여 Amazon S3 버킷에 배치된 JSON 서명 출력이 포함되어야 합니다.
{ "presign": "${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/bucket/image}", }
작업 문서로 작업 생성
다음 명령은 Amazon S3 버킷(job-document.json
)에 저장된 작업 문서()jobBucket
와 Amazon S3()에서 파일을 다운로드할 수 있는 권한이 있는 역할을 사용하여 작업을 생성하는 방법을 보여줍니다S3DownloadRole
.
aws iot create-job \ --job-id 010 \ --targets
arn:aws:iot:us-east-1:123456789012:thing/thingOne
\ --document-sourcehttps://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json
\ --timeout-config inProgressTimeoutInMinutes=100
\ --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\":50
, \"incrementFactor\":2
, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\":1000
, \"numberOfSucceededThings\":1000
}}, \"maximumPerMinute\":1000
}" \ --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL
\", \"failureType\": \"FAILED
\", \"minNumberOfExecutedThings\":100
, \"thresholdPercentage\":20
}, { \"action\": \"CANCEL
\", \"failureType\": \"TIMED_OUT
\", \"minNumberOfExecutedThings\":200
, \"thresholdPercentage\":50
}]}" \ --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole
\", \"expiresInSec\":3600}"
작업은에서 실행됩니다thingOne
.
선택 사항인 timeout-config
파라미터는 각 디바이스가 작업 실행을 완료한 시간을 지정합니다. 타이머는 작업 실행 상태가 IN_PROGRESS
에 설정되면 시작합니다. 시간이 만료되기 전에 작업 실행 상태가 다른 터미널 상태로 설정되어 있지 않으면 TIMED_OUT
으로 자동으로 설정됩니다.
진행 중 타이머는 업데이트될 수 없으며 이 작업에 대한 모든 작업 실행에 적용됩니다. 작업 실행이이 간격보다 오래 IN_PROGRESS
상태로 유지될 때마다 실패하고 터미널 TIMED_OUT
상태로 전환됩니다. AWS IoT 또한는 MQTT 알림을 게시합니다.
작업 롤아웃 및 중단에 대한 구성 생성에 대한 자세한 내용은 작업 롤아웃 및 중단 구성을 참조하세요.
참고
Amazon S3 파일로 지정되는 작업 문서는 작업을 생성할 때 가져오게 됩니다. 작업 문서를 생성한 후 작업 문서의 원본으로 사용한 Amazon S3 파일의 내용을 변경해도 작업 대상으로 전송되는 내용은 변경되지 않습니다.
작업 업데이트
작업은 업데이트하려면 UpdateJob 명령을 사용합니다. 작업의 description
, presignedUrlConfig
, jobExecutionsRolloutConfig
, abortConfig
및 timeoutConfig
필드를 업데이트할 수 있습니다.
aws iot update-job \ --job-id 010 \ --description "updated description" \ --timeout-config inProgressTimeoutInMinutes=
100
\ --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\":50
, \"incrementFactor\":2
, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\":1000
, \"numberOfSucceededThings\":1000
}, \"maximumPerMinute\":1000
}}" \ --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL
\", \"failureType\": \"FAILED
\", \"minNumberOfExecutedThings\":100
, \"thresholdPercentage\":20
}, { \"action\": \"CANCEL
\", \"failureType\": \"TIMED_OUT
\", \"minNumberOfExecutedThings\":200
, \"thresholdPercentage\":50
}]}" \ --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole
\", \"expiresInSec\":3600}"
자세한 내용은 작업 롤아웃 및 중단 구성을 참조하세요.
작업 취소
작업을 취소하려면 CancelJob 명령을 사용합니다. 작업을 취소하면 작업에 대한 새 작업 실행 AWS IoT 이 롤아웃되지 않습니다. 또한 QUEUED
상태인 모든 작업 실행을 취소합니다. 디바이스가 이미 작업을 완료했기 때문에 터미널 상태의 모든 작업 실행을 그대로 AWS IoT 유지합니다. 작업 실행이 IN_PROGRESS
상태인 경우에도 사용자가 선택적 --force
파라미터를 사용하지 않는 한 IoT가 해당 작업 실행을 그대로 둡니다.
다음 명령은 ID가 010인 작업을 취소하는 방법을 보여줍니다.
aws iot cancel-job --job-id 010
이 명령은 다음 출력을 표시합니다.
{ "jobArn": "string", "jobId": "string", "description": "string" }
작업을 취소하면 QUEUED
상태인 작업 실행이 취소됩니다. 선택적 --force
파라미터를 지정하는 경우에만 IN_PROGRESS
상태의 작업 실행이 취소됩니다. 종료 상태인 작업 실행은 취소되지 않습니다.
주의
(--force
파라미터를 설정하여) IN_PROGRESS
상태의 작업을 취소하면 진행 중인 모든 작업 실행이 취소되고 해당 작업을 실행하고 있는 디바이스가 작업의 실행 상태를 업데이트할 수 없게 됩니다. 주의를 기울여 취소된 작업을 실행하는 각 디바이스가 유효한 상태로 복구될 수 있는지 확인하세요.
취소된 작업 또는 작업 실행 중 하나의 상태는 최종적으로 일관됩니다.는 해당 작업에 대한 새 작업 실행 및 QUEUED
작업 실행 예약을 가능한 한 빨리 디바이스로 AWS IoT 중지합니다. 작업 실행 상태가 CANCELED
로 바뀌려면 디바이스 수와 기타 요인에 따라 시간이 걸릴 수 있습니다.
AbortConfig
객체로 정의한 기준을 충족했기 때문에 작업이 취소된 경우 서비스에서는 comment
및 reasonCode
필드에 대해 자동으로 채워지는 값을 추가합니다. 작업을 사용자가 취소한 경우 reasonCode
에 대한 값을 직접 생성할 수 있습니다.
작업 실행 취소
디바이스의 작업 실행을 취소하려면 CancelJobExecution 명령을 사용합니다. 이 명령은 QUEUED
상태인 작업 실행을 취소합니다. 진행 중인 작업 실행을 취소하려면 --force
파라미터를 사용해야 합니다.
다음 명령은 myThing
에서 실행 중인 작업 010에서 작업 실행을 취소하는 방법을 보여줍니다.
aws iot cancel-job-execution --job-id 010 --thing-name myThing
명령이 아무런 출력도 표시하지 않습니다.
QUEUED
상태인 작업 실행이 취소됩니다. 선택적 --force
파라미터를 지정하는 경우에만 IN_PROGRESS
상태의 작업 실행이 취소됩니다. 최종 상태인 작업 실행은 취소할 수 없습니다.
주의
IN_PROGRESS
상태인 작업 실행을 취소하면 디바이스가 그 작업 실행의 상태를 업데이트할 수 없습니다. 주의를 기울여 디바이스가 유효한 상태로 복구될 수 있는지 확인하세요.
작업 실행이 최종 상태이거나 작업 실행이 IN_PROGRESS
상태이고 --force
파라미터를 true
로 설정하지 않은 경우 이 명령에서 InvalidStateTransitionException
이 발생합니다.
취소된 작업 실행의 상태가 최종적으로 일관됩니다. 작업 실행 상태가 CANCELED
로 바뀌려면 기타 요인에 따라 시간이 걸릴 수 있습니다.
작업 삭제
작업과 해당 작업 실행을 삭제하려면 DeleteJob 명령을 사용합니다. 기본적으로 최종 상태(SUCCEEDED
또는 CANCELED
)인 작업만 삭제할 수 있습니다. 그렇지 않으면 예외가 발생합니다. force
파라미터가 true
로 설정되어 있는 경우에만 IN_PROGRESS
상태인 작업을 삭제할 수 있습니다.
작업을 삭제하려면 다음 명령을 실행합니다.
aws iot delete-job --job-id 010 --force|--no-force
명령이 아무런 출력도 표시하지 않습니다.
주의
IN_PROGRESS
상태인 작업을 삭제하면 해당 작업을 배포 중인 디바이스에서 작업 정보에 액세스할 수 없거나 작업 실행 상태를 업데이트할 수 없습니다. 주의를 기울여 삭제된 작업을 배포하는 각 디바이스가 유효한 상태로 복구될 수 있는지 확인하세요.
작업을 삭제하려면 해당 작업에 대해 생성된 작업 실행의 수와 기타 요인에 따라 시간이 걸릴 수 있습니다. 작업이 삭제되는 동안 그 작업의 상태는 DELETION_IN_PROGRESS
로 표시됩니다. 이미 DELETION_IN_PROGRESS
상태의 작업을 삭제하거나 취소하려고 하면 오류가 발생합니다.
동시에 10개 작업만 DELETION_IN_PROGRESS
상태일 수 있습니다. 그렇지 않으면 LimitExceededException
이 발생합니다.
작업 문서 가져오기
작업에 대한 작업 문서를 검색하려면 GetJobDocument 명령을 사용합니다. 이 작업 문서는 원격 작업의 설명이므로 디바이스에서 실행됩니다.
작업 문서를 가져오려면 다음 명령을 실행합니다.
aws iot get-job-document --job-id 010
위의 명령은 아래와 같이 지정한 작업의 작업 문서를 반환합니다.
{ "document": "{\n\t\"operation\":\"install\",\n\t\"url\":\"http://amazon.com/firmWareUpate-01\",\n\t\"data\":\"${aws:iot:s3-presigned-url:https://s3.amazonaws.com/amzn-s3-demo-bucket/datafile}\"\n}" }
참고
이 명령을 사용하여 작업 문서를 검색할 때 자리 표시URLs자는 미리 서명된 Amazon S3 로 대체되지 않습니다URLs. 디바이스가 GetPendingJobExecutions API 작업을 호출하면 자리 표시자는 URLs 작업 문서에서 미리 서명된 Amazon S3로 대체URLs됩니다.
작업 목록 조회
의 모든 작업 목록을 가져오려면 ListJobs 명령을 AWS 계정사용합니다. 작업 데이터 및 작업 실행 데이터는 제한된 시간동안 보존됩니다. 다음 명령을 실행하여의 모든 작업을 나열합니다. AWS 계정
aws iot list-jobs
위 명령은 아래와 같이 계정의 모든 작업을 작업 상태에 따라 정렬하여 반환합니다.
{ "jobs": [ { "status": "IN_PROGRESS", "lastUpdatedAt": 1486687079.743, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/013", "createdAt": 1486687079.743, "targetSelection": "SNAPSHOT", "jobId": "013" }, { "status": "SUCCEEDED", "lastUpdatedAt": 1486685868.444, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/012", "createdAt": 1486685868.444, "completedAt": 148668789.690, "targetSelection": "SNAPSHOT", "jobId": "012" }, { "status": "CANCELED", "lastUpdatedAt": 1486678850.575, "jobArn": "arn:aws:iot:us-east-1:123456789012:job/011", "createdAt": 1486678850.575, "targetSelection": "SNAPSHOT", "jobId": "011" } ] }
작업 설명
작업의 상태를 가져오려면 DescribeJob 명령을 실행합니다. 다음 명령은 작업을 설명하는 방법을 보여줍니다.
$ aws iot describe-job --job-id 010
위의 명령은 특정 작업의 상태를 반환합니다. 다음 예를 참조하세요.
{ "documentSource": "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json", "job": { "status": "IN_PROGRESS", "jobArn": "arn:aws:iot:us-east-1:123456789012:job/010", "targets": [ "arn:aws:iot:us-east-1:123456789012:thing/myThing" ], "jobProcessDetails": { "numberOfCanceledThings": 0, "numberOfFailedThings": 0, "numberOfInProgressThings": 0, "numberOfQueuedThings": 0, "numberOfRejectedThings": 0, "numberOfRemovedThings": 0, "numberOfSucceededThings": 0, "numberOfTimedOutThings": 0, "processingTargets": [ arn:aws:iot:us-east-1:123456789012:thing/thingOne, arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupOne, arn:aws:iot:us-east-1:123456789012:thing/thingTwo, arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupTwo ] }, "presignedUrlConfig": { "expiresInSec": 60, "roleArn": "arn:aws:iam::123456789012:role/S3DownloadRole" }, "jobId": "010", "lastUpdatedAt": 1486593195.006, "createdAt": 1486593195.006, "targetSelection": "SNAPSHOT", "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": integer, "incrementFactor": integer, "rateIncreaseCriteria": { "numberOfNotifiedThings": integer, // Set one or the other "numberOfSucceededThings": integer // of these two values. }, "maximumPerMinute": integer } }, "abortConfig": { "criteriaList": [ { "action": "string", "failureType": "string", "minNumberOfExecutedThings": integer, "thresholdPercentage": integer } ] }, "timeoutConfig": { "inProgressTimeoutInMinutes": number } } }
작업 실행 목록 조회
특정 디바이스에서 실행되는 작업이 작업 실행 객체로 표현됩니다. 임의 작업에 대한 모든 작업 실행을 나열할 때는 ListJobExecutionsForJob 명령을 실행합니다. 다음 예에서는 작업에 대한 실행을 나열하는 방법을 보여 줍니다.
aws iot list-job-executions-for-job --job-id 010
위의 명령은 아래와 같이 작업 실행 목록을 반환합니다.
{ "executionSummaries": [ { "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", "jobExecutionSummary": { "status": "QUEUED", "lastUpdatedAt": 1486593196.378, "queuedAt": 1486593196.378, "executionNumber": 1234567890 } }, { "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingTwo", "jobExecutionSummary": { "status": "IN_PROGRESS", "lastUpdatedAt": 1486593345.659, "queuedAt": 1486593196.378, "startedAt": 1486593345.659, "executionNumber": 4567890123 } } ] }
사물에 대한 작업 실행 목록 조회
임의 사물에 대한 모든 작업 실행을 나열할 때는 ListJobExecutionsForThing 명령을 실행합니다. 다음 예에서는 사물에 대한 작업 실행을 나열하는 방법을 보여 줍니다.
aws iot list-job-executions-for-thing --thing-name thingOne
위의 명령은 아래와 같이 지정된 사물에서 실행 중이거나 실행된 작업 실행 목록을 반환합니다.
{ "executionSummaries": [ { "jobExecutionSummary": { "status": "QUEUED", "lastUpdatedAt": 1486687082.071, "queuedAt": 1486687082.071, "executionNumber": 9876543210 }, "jobId": "013" }, { "jobExecutionSummary": { "status": "IN_PROGRESS", "startAt": 1486685870.729, "lastUpdatedAt": 1486685870.729, "queuedAt": 1486685870.729, "executionNumber": 1357924680 }, "jobId": "012" }, { "jobExecutionSummary": { "status": "SUCCEEDED", "startAt": 1486678853.415, "lastUpdatedAt": 1486678853.415, "queuedAt": 1486678853.415, "executionNumber": 4357680912 }, "jobId": "011" }, { "jobExecutionSummary": { "status": "CANCELED", "startAt": 1486593196.378, "lastUpdatedAt": 1486593196.378, "queuedAt": 1486593196.378, "executionNumber": 2143174250 }, "jobId": "010" } ] }
작업 실행 설명
작업 실행의 상태를 가져올 때는 DescribeJobExecution 명령을 실행합니다. 원하는 작업 실행을 찾으려면 작업 ID와 사물 이름, 그리고 필요한 경우 실행 번호를 지정해야 합니다. 다음은 작업 실행을 설명하는 방법을 보여줍니다.
aws iot describe-job-execution --job-id 017 --thing-name thingOne
위의 명령은 JobExecution
을 반환합니다. 다음 예를 참조하세요.
{ "execution": { "jobId": "017", "executionNumber": 4516820379, "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", "versionNumber": 123, "createdAt": 1489084805.285, "lastUpdatedAt": 1489086279.937, "startedAt": 1489086279.937, "status": "IN_PROGRESS", "approximateSecondsBeforeTimedOut": 100, "statusDetails": { "status": "IN_PROGRESS", "detailsMap": { "percentComplete": "10" } } } }
작업 실행 삭제
작업 실행을 삭제하려면 DeleteJobExecution 명령을 실행합니다. 작업 실행을 찾으려면 작업 ID, 사물 이름 및 실행 번호를 지정해야 합니다. 다음은 작업 실행을 삭제하는 방법을 보여줍니다.
aws iot delete-job-execution --job-id 017 --thing-name thingOne --execution-number 1234567890 --force|--no-force
명령이 아무런 출력도 표시하지 않습니다.
기본적으로 작업 실행의 상태는 QUEUED
또는 터미널 상태(SUCCEEDED
, FAILED
, REJECTED
, TIMED_OUT
, REMOVED
또는 CANCELED
)여야 합니다. 그렇지 않으면 오류가 발생합니다. IN_PROGRESS
상태인 작업을 삭제하기 위해 force
파라미터를 true
로 설정할 수 있습니다.
주의
IN_PROGRESS
상태인 작업 실행을 삭제하면 해당 작업을 실행 중인 디바이스에서 작업 정보에 액세스할 수 없거나 작업 실행 상태를 업데이트할 수 없습니다. 주의를 기울여 디바이스가 유효한 상태로 복구될 수 있는지 확인하세요.