BLOG

무선 업데이트를 위한 장치 작업 사용하기
작성일: 2018-04-30

펌웨어 업데이트든 보안 패치이든, 장치의 구성 파일에 대한 업데이트이든, 공장 초기화이든 모든 제품은 고객의 손에 들어온 후에 유지 관리가 필요합니다. 그리고 fleet을 관리하기 위해, fleet에 있는 어떤 장치가 업데이트를 성공하거나 실패했는지 알 필요가 있습니다. AWS IoT Device Management를 사용하면 수백, 수천 또는 수백만개의 장치를 관리할 수 있도록 Job 서비스를 통해 관리 작업을 손쉽게 배치하고 추적할 수 있습니다. 작업을 사용하여 한번에 여러 장치에 원격 작업을 보내고, 장치에 대한 작업 배포를 제어하고, 각 장치에 대한 작업 실행의 현재 및 기록 상태를 추적할 수 있습니다.

 

작업은 다음과 같은 다양한 방법으로 장치를 관리하는 데 사용될 수 있습니다.

 

  • 펌웨어, 소프트웨어 또는 장치의 보안 인증서와 같은 기타 파일을 업데이트하기
  • 장치 재시작 또는 진단 수행과 같은 관리 태스크를 수행하기
  • 장치를 공장 설정 또는 기타 알려진 양호한 상태로 복원하기

 

이 블로그 포스트는 장치 설정, AWS IoT와 통신하도록 구성, 작업 생성, 이벤트를 처리하는 작업 추적 등 장치의 예제 작업의 생성 및 배포 과정을 안내합니다.

 

AWS loT Core가 AWS IoT Device Management와 함께 작동하는 방법에 대한 개요는 AWS IoT Core Features작업 설명서를 참조하십시오.

 

 

장치 설정

 

장치 운영 체제가 설정되고 네트워크에 연결된 후 다음을 수행합니다.

 

  1. 여기에 있는 AWS IoT Raspberry Pi 자습서의 단계를 따릅니다. 이 단계가 Raspberry Pi에 대해 작성되었지만 다른 Linux 기반 디바이스에도 사용할 수 있습니다. 자습서를 마치면,” MyRaspberryPi”라는 AWS 계정에 IoT 관련 정보가 등록되어 있으며, 장치에 다운로드 할 보안 인증서도 구성해야 합니다.
  2. 여기의 지침에 따라 기기에 AWS IoT Device SDK for JavaScript를 설치하고 사용하십시오. 이 블로그 게시물에 언급된 인증서는 이전 단계에서 설정된 인증서입니다.

 

이제 장치가 작업 서비스를 포함하여 AWS IoT와 통신하도록 구성되었습니다.

 

 

장치에서 예제 실행

AWS IoT Device SDK for JavaScript에 포함된 예로는 jobs-example.js가 있습니다. 인증서의 경로와 개체 구성에 사용한 파일의 이름을 대체하여 다음 명령을 사용하여 이 예제를 실행합니다.

 

$ node examples/jobs-example.js –f ./certs –F config.json

 

이제 장치에서 작업을 처리하고 AWS IoT Core 메시지를 보내고 받을 준비가 되었습니다.

 

작업 문서 생성

 

작업 문서는 작업을 실행하는 데 필요한 모든 정보를 제공하는 유효한 형식의 JSON 문서입니다. 작업 문서에 장치와 관련된 것으로 간주되는 모든 내용이 포함될 수 있지만, 관례에 따라 AWS IoT Device SDK for JavaScript는 “operation”속성을 사용하여 작업 문서를 특정 핸들러로 라우팅합니다.  jobs-example.js 프로그램에는 ““customJob” 작업의 샘플 핸들러가 있으므로 “example-Job.json”이라는 작업 문서 JSON 파일을 생성하겠습니다. 이 블로그 포스트의 경우, “example-job.json”이 다음을 포함해야 합니다.

 

{

    “operation”:”customJob”,

    “otherInfo”:”someValue”

}

 

기타 작업 문서의 예는 JavaScript Readme용 AWS IoT SDK의 jobs-agent example를 참조하십시오.

 

 

작업 생성

이제 지정한 모든 장치에 작업 문서를 전송하는 작업을 생성할 수 있습니다. AWS IoT 콘솔, SDK 또는 AWS CLI를 사용하여 작업을 생성할 수 있습니다.
다음은 AWS CLI를 통해 작업을 생성하는 방법에 대한 예입니다.

 

$ aws iot create-job \

–job-id “example-job-01” \

–targets “arn:aws:iot:::thing/MyRaspberryPi” \

–document file:///example-job.json \

–description “My First test job” \

–target-selection SNAPSHOT

 

작업 문서를 S3에 저장하려면 ‘–document’ 매개변수 대신 ‘-document-source’ 매개 변수를 사용하여 작업 문서에 대한 S3 URL을 지정할 수 있습니다.

 

또는 AWS IoT 콘솔을 통해 작업을 생성하려면 다음과 같은 단계를 따릅니다.

 

작업 문서를 S3버켓에 업로드합니다. S3에 문서를 업로드하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service Console Guide파일 및 폴더를 S3버켓에 업로드하는 방법을 참조하십시오.

 

AWS IoT 콘솔에서 관리를 선택하고 작업을 선택합니다.

 

 

작업 선택 페이지에서 사용자 정의 작업 생성을 선택하십시오.

 

 

작업 생성 페이지에서 고유한 작업 ID를 입력합니다. 업데이트할 장치 선택에서 다음과 같이 이전에 생성한 항목을 선택합니다.

 

 

아래로 스크롤 하여 S3 버켓에 업로드한 “example-job.json” 파일을 선택하십시오. 작업 유형 아래에서 선택한 장치/그룹(스냅 샷)에 배포한 후에 작업이 완료됨을 선택합니다. 다른 선택 항목인 지속적인 작업은 장치가 그룹에 추가될 때 장치 그룹에 작업을 배포하는 데 사용됩니다. 여기에 표시된 것처럼 작업 실행 원격 설치 구성을 변경하지 않고 그대로 두십시오.

 

 

생성을 선택하면, 새로 생성한 작업이 표시됩니다.

 

 

장치에서 작업 실행

 

작업이 생성되면 작업 서비스에서 장치에 보류 중인 작업에 대한 통지를 보냅니다. 장치에 작성된 NextJobExecutionChanged API를 통해 작업 세부 정보 및 문서를 받게 됩니다. jobs-example.js 프로그램은 장치에서 작업을 실행할 것이고, 이후 UpdateJobExecution API를 사용하여 완료 상태를 표시할 것입니다. 과정 중에, IoT 고객에게 다음의 결과를 보여줘야 합니다.

 

$ node examples/jobs-example.js -f ./certs -F config.json

connect

startJobNotifications completed for thing: MyRaspberryPi

customJob operation handler invoked, jobId: example-job-01

 

작업 페이지를 새로 고치면 작업이 성공적으로 완료되었음을 확인할 수 있습니다.

 

 

작업 및 작업 실행 이벤트를 통한 작업 진행 상황 추적

 

작업 및 작업 실행 이벤트를 사용하여 작업 진행률을 추적할 수도 있습니다. 이렇게 하면 작업이 완료되었거나 작업 실행 상태가 변경되었음을 사용자, 시스템 관리자 또는 시스템의 다른 부분에 알려 줄 수 있습니다. 예를 들어, 사용자에게 장치의 펌웨어 업데이트에 대해 알리거나 시스템 관리자에게 조사 및 해결해야 할 필요가 있는 문제를 알릴 수 있습니다.

 

작업이 완료되거나 취소되면 작업 이벤트가 다음 항목에 전송됩니다.

 

$aws/events/job/example-job-01/completed

$aws/events/job/example-job-01/canceled

 

작업 실행 이벤트는 작업 실행이 최종 상태에 도달할 때 다음 항목에 전송됩니다.

 

$aws/events/jobExecution/example-job-01/succeeded

$aws/events/jobExecution/example-job-01/failed

$aws/events/jobExecution/example-job-01/rejected

$aws/events/jobExecution/example-job-01/canceled

$aws/events/jobExecution/example-job-01/removed

 

MyRaspberryPi에 대한 작업이 성공하면 작업실행 성공 이벤트를 받아야 합니다. AWS IoT Test 페이지로 이동하여 다음 항목에 기입하면 이 이벤트를 볼 수 있습니다.

 

$aws/events/jobExecution/example-job-01/succeeded

 

 

장치에 대한 작업 실행이 완료되면 다음 메시지가 표시되어야 합니다.

 

 

전체 작업 example-job-01이 완료된 후에는 다음 항목을 작성한 후 작업이 완료된 이벤트도 받아야 합니다.

 

$aws/events/job/example-job-01/completed

 

 

결론

 

이 솔루션을 구현하는 데 질문이 있거나 문제가 있는 경우 AWS IoT Device Management 포럼에서 스레드에 참여하세요.

 

원문 URL: https://aws.amazon.com/ko/blogs/iot/using-device-jobs-for-over-the-air-updates/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.