Jobs - AWS IoT 코어

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

Jobs

AWS IoT 작업 서비스는 AWS IoT에 연결되는 하나 이상의 디바이스로 전송된 후 실행되는 원격 작업 세트를 정의하는 데 사용할 수 있습니다.

작은 정보

작업 문서 예제는 SDK의 AWS IoTjobs-agent.jsJavaScript 예제를 참조하십시오.

작업 관련 주요 개념

작업

작업은 AWS IoT에 연결되는 하나 이상의 디바이스로 전송 및 실행되는 원격 작업입니다. 예를 들어 디바이스에게 애플리케이션 또는 펌웨어 업데이트를 다운로드 후 설치하거나, 재부팅하거나, 인증서를 교체하거나, 혹은 원격 문제 해결 작업을 실행하도록 지시하는 작업을 정의할 수 있습니다.

작업 문서

작업을 생성하려면 먼저 디바이스에서 수행할 원격 작업을 설명하는 작업 문서를 생성해야 합니다.

작업 문서는 UTF-8 인코딩 JSON 문서이며, 여기에는 디바이스가 작업을 실행하는 데 필요한 정보가 포함되어야 합니다. 작업 문서에는 디바이스가 업데이트 또는 기타 데이터를 다운로드할 수 있는 URLs가 하나 이상 포함되어 있습니다. 작업 문서는 Amazon S3 버킷에 저장되거나, 혹은 작업 생성 명령에 인라인으로 포함될 수도 있습니다.

target

작업을 생성할 때 작업을 수행해야 하는 디바이스를 포함하는 대상 목록을 지정합니다. 여기서 대상은 사물 또는 사물 그룹 또는 두 가지 모두가 될 수 있습니다. AWS IoT 작업 서비스는 각 대상에게 작업이 가능하다고 알리는 메시지를 전송합니다.

작업 실행

작업 실행은 대상 디바이스의 작업 인스턴스입니다. 대상은 작업 문서를 다운로드하여 작업 실행을 시작합니다. 그런 다음 문서에 지정된 작업을 수행하고 작업 진행 상황을 AWS IoT에 보고합니다. 실행 번호는 특정 대상에서 작업 실행의 고유 식별자입니다. 작업 서비스는 대상에서 작업 실행의 진행 상황을 추적하고 모든 대상에서 작업 실행의 진행 상황을 추적하는 명령을 제공합니다.

스냅샷 작업

기본적으로 작업은 생성할 때 지정하는 모든 대상으로 전송됩니다. 이러한 대상들이 작업을 마치면(또는 작업을 완료할 수 없다고 보고하면) 작업은 완료됩니다.

연속 작업

연속 작업은 생성할 때 지정하는 모든 대상으로 전송됩니다. 이 작업은 계속 실행되고 대상 그룹에 새로 추가되는 모든 디바이스(사물)로 전송됩니다. 예를 들면 연속 작업은 그룹에 추가된 디바이스를 온보드하거나 업그레이드할 때 사용됩니다. 작업을 생성할 때 옵션으로 제공되는 파라미터를 설정하면 작업을 연속으로 실행할 수 있습니다.

롤아웃

대상에게 대기 중인 작업 실행을 얼마나 빨리 알릴지 지정할 수 있습니다. 이로써 단계별 롤아웃을 생성하여 업데이트, 재부팅 및 기타 작업을 더욱 효과적으로 관리할 수 있습니다.

다음 필드를 CreateJob 요청에 추가하여 분당 알려줄 최대 작업 대상 수를 지정할 수 있습니다. 다음 예제는 정적 롤아웃 속도를 설정합니다.

"jobExecutionRolloutConfig": { "maximumPerMinute": "integer" }

또한 exponentialRate 필드를 사용하여 가변 롤아웃 속도를 설정할 수도 있습니다. 다음 예제에서는 기하 급수적으로 증가하는 롤아웃을 생성합니다.

"jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": integer, "incrementFactor": integer, "rateIncreaseCriteria": { "numberOfNotifiedThings": integer, // Set one or the other "numberOfSucceededThings": integer // of these two values. }, "maximumPerMinute": integer } }

작업 롤아웃 구성에 대한 자세한 내용은 작업 롤아웃 및 중단 구성을 참조하십시오.

중단

지정된 특정 기준을 충족하지 않으면 롤아웃을 중단할 조건 집합을 생성할 수 있습니다. 자세한 내용은 작업 롤아웃 및 중단 구성을 참조하십시오.

미리 서명된 URLs

디바이스가 작업 문서 자체에 포함된 데이터에 안전하게 액세스할 수 있도록 하기 위해 미리 서명된 Amazon S3 URLs를 사용할 수 있습니다. 데이터를 Amazon S3 버킷에 배치하고 자리 표시자 링크를 작업 문서의 데이터에 추가할 수 있습니다. 작업 서비스가 작업 문서에 대한 요청을 수신하면 작업 문서를 구문 분석하여 자리 표시자 링크를 찾은 다음 미리 서명된 Amazon S3 URLs로 바꿉니다.

자리 표시자 링크는 다음과 같은 형식을 따릅니다.

${aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key}

여기서 각 항목은 다음과 같습니다.bucket 는 버킷 이름이며 key 는 연결할 버킷의 객체입니다.

에서 미리 서명된 베이징 및 닝샤 리전는 리소스 소유자에게 ICP 라이선스가 있는 경우에만 작동합니다.URLs 자세한 내용은 중국에서 AWS 서비스 시작하기 설명서의 Amazon Simple Storage Service를 참조하십시오.

시간 초과

작업 시간 초과 기능을 통해 작업 실행이 예상치 않게 장시간 동안 IN_PROGRESS 상태에 멈출 때마다 알림을 받을 수 있습니다. 타이머에는 진행 중 타이머와 단계 타이머 두 가지 유형이 있습니다.

작업을 생성할 때 선택적 inProgressTimeoutInMinutesTimeoutConfig 객체의 속성에 대한 값을 설정할 수 있습니다. 진행 중 타이머는 업데이트될 수 없으며 이 작업에 대한 모든 작업 실행에 적용됩니다. 작업 실행이 이 간격보다 오랫동안 IN_PROGRESS 상태를 유지할 때마다 작업 실행은 실패하며 터미널 TIMED_OUT 상태로 전환합니다. AWS IoT에서도 MQTT 알림을 게시합니다.

또한 stepTimeoutInMinutes를 호출할 때 UpdateJobExecution의 값을 설정하여 작업 실행에 대한 단계 타이머를 설정할 수 있습니다. 단계 타이머는 업데이트하는 작업 실행에만 적용됩니다. 작업 실행을 업데이트할 때마다 이 타이머에 대해 새 값을 설정할 수 있습니다. StartNextPendingJobExecution를 호출할 때 단계 타이머를 생성할 수도 있습니다. 작업 실행이 단계 타이머 간격보다 오랫동안 IN_PROGRESS 상태를 유지하는 경우 작업이 실패하고 터미널 TIMED_OUT 상태로 전환합니다. 단계 타이머는 작업을 생성할 때 설정한 진행 중 타이머에는 영향을 주지 않습니다.

다음 다이어그램과 설명은 진행 중 시간 초과 및 단계 시간 초과가 서로 상호 작용하는 방식을 보여줍니다.

작업 생성: CreateJob는 만료 시간이 20분인 진행 중 타이머를 설정합니다. 이 타이머는 모든 작업 실행에 적용되며 업데이트할 수 없습니다.

오후 12시: 작업 실행이 시작되고 IN_PROGRESS 상태로 전환됩니다. 진행 중 타이머가 실행을 시작합니다.

오후 12시 5분: UpdateJobExecution은 7분 값으로 단계 타이머를 생성합니다. 새 단계 타이머가 생성되지 않은 경우 작업 실행은 오후 12시 12분에 시간 초과됩니다.

오후 12시 10분: UpdateJobExecution는 5분 값으로 새 단계 타이머를 생성합니다. 이전 단계 타이머가 폐기됩니다. 새 단계 타이머가 생성되지 않은 경우 작업 실행은 오후 12시 15분에 시간 초과됩니다.

오후 12시 13분: UpdateJobExecution는 9분 값으로 새 단계 타이머를 생성합니다. 작업 실행은 진행 중 타이머가 12시 20분에 만료하기 때문에 12시 20분에 시간 초과됩니다. 단계 타이머는 진행 중 타이머가 생성한 절대 한계를 초과할 수 없습니다.

또한 UpdateJobExecution는 -1 값으로 새 단계 타이머를 생성함으로써 이미 생성된 단계 타이머를 폐기할 수 없습니다.