Notice
Recent Posts
Recent Comments
Link
투케이2K
175. (TWOK/WORK) [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 파일 순차 업데이트 미동작 이슈 - IN_PROGRESS, QUEUED 배열 펌웨어 처리 본문
투케이2K 업무정리
175. (TWOK/WORK) [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 파일 순차 업데이트 미동작 이슈 - IN_PROGRESS, QUEUED 배열 펌웨어 처리
투케이2K 2025. 8. 1. 13:50728x90
[제 목]
[업무 이슈] AWS Job 디바이스 펌웨어 업데이트 파일 순차 업데이트 미동작 이슈 - IN_PROGRESS, QUEUED 배열 펌웨어 처리
[내 용]
------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------
- 제목 : [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 파일 순차 업데이트 미동작 이슈 - IN_PROGRESS, QUEUED 배열 펌웨어 처리
- 테스트 환경 : Aws 콘솔 대시 보드 / Aws 콘솔 수동 Job 생성
- 사전) Aws Iot Core 간단 설명 :
>> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.
>> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.
>> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다.
- HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.
- 사전) AWS Iot Core Job 간단 설명 :
>> AWS 원격 작업 이란 작업자 또는 기술자의 물리적 존재 없이 원격으로 수행할 수 있는 업데이트 작업입니다 (무선 업데이트 (OTA) 수행)
>> AWS IoT 작업 서비스는 AWS IoT 에 연결 되는 하나 이상의 디바이스로 전송 된 후 실행 되는 원격 작업 세트를 정의하는데 사용됩니다
- 주목적 : 소프트웨어 및 펌웨어 업데이트를 디바이스 기기에게 알리는데 사용 (기기에게 작업 문서 전송)
- 작업 문서 : AWS IoT Job 생성 시 대상이 되는 디바이스로 전송 되는 문서 (펌웨어 다운로드 URL 정보 등 포함)
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------
1. AWS Iot Core 에서 수동 Job 을 생성 후 디바이스 기기로 펌웨어 업데이트 명령을 연속적으로 반복 테스트 내릴 시
디바이스가 순차적으로 내려온 명령 대로 펌웨어 파일 업데이트 하지 않고 QUEUED 배열에 담긴 마지막 펌웨어만 업데이트하는 이슈 확인
2. 참고) AWS 수동 job 생성 및 특정 사물 notify 펌웨어 업데이트 요청 방법 :
>> 펌웨어 파일 S3 에 업로드 수행 및 파일 다운로드 Get PresignedUrl 생성 (또는 public 으로 접근 가능한 URL 이 있으면 해당 경로에 파일 업로드)
>> Job Document 작성 (특정 기기에게 전송 예제) 및 S3 에 .json 파일 업로드 수행
>> AWS IOT Core 콘솔에서 [원격 작업] > [작업] 생성 수행
>> 디바이스 기기에서 펌웨어 업데이트 Job 알림 수신 완료 후 펌웨어 업데이트 로직 처리 수행
- Job Document 에서 S3 펌웨어 다운로드 URL 에서 펌웨어 파일 다운로드 수행
- 펌웨어 파일 다운로드 진행 상태 publish 보고 수행
# Publish 요청 주소 : $aws/things/{thingName}/jobs/{JobId}/update
# Publish 토픽 예시 :
{
"status": "IN_PROGRESS",
"statusDetails": {
"detail": "Firmware update in progress"
}
}
- 펌웨어 업데이트 완료 및 기기 재부팅 수행
- 펌웨어 파일 다운로드 완료 상태 publish 보고 수행
# Publish 요청 주소 : $aws/things/{thingName}/jobs/{JobId}/update
# Publish 토픽 예시 :
{
"status": "SUCCEEDED",
"statusDetails": {
"detail": "Firmware update completed successfully"
}
}
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------
1. 사전) 펌웨어 업데이트 할 Bin 파일과 Job Document 파일은 S3 에 올라가 있는 상태
2. [A 펌웨어 업데이트 작업 생성 ]AWS IOT Core 콘솔 대시 보드에서 원격 작업 Job 생성 수행
>> 특정 사물 (ThingName) 지정 후 펌웨어 업데이트 요청 명령 게시 수행
>> 디바이스는 구독하고 있는 $aws/things/{thingName}/jobs/notify 토픽에서 펌웨어 업데이트 요청 명령이 내려 온 것 확인
>> 디바이스는 펌웨어 업데이트 상태 및 준비 IN_PROGRESS, QUEUED 배열 확인 수행
>> 디바이스는 새롭게 업데이트 할 펌웨어 파일이 IN_PROGRESS 에 저장 되어 있는 것 확인
2. [B 펌웨어 업데이트 작업 생성 ]AWS IOT Core 콘솔 대시 보드에서 원격 작업 Job 생성 수행
>> 특정 사물 (ThingName) 지정 후 펌웨어 업데이트 요청 명령 게시 수행
>> 디바이스는 구독하고 있는 $aws/things/{thingName}/jobs/notify 토픽에서 펌웨어 업데이트 요청 명령이 내려 온 것 확인
>> 디바이스는 펌웨어 업데이트 상태 및 준비 IN_PROGRESS, QUEUED 배열 확인 수행
>> 디바이스는 B 명령으로 내려 온 것이 QUEUED 에 저장 되어 있는 것 확인
3. 디바이스는 IN_PROGRESS 에 있는 펌웨어 파일을 먼저 업데이트 하는 작업을 진행해야 하지만, 중간에 QUEUED 에 펌웨어 업데이트 작업이 담겨 내려오면
이전에 진행 중이 던 IN_PROGRESS 펌웨어 업데이트 작업을 완료하지 않고, QUEUED 에 담긴 펌웨어 업데이트 작업을 새롭게 시작하는 이슈 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------
1. 디바이스에게 펌웨어 업데이트 로직을 IN_PROGRESS 에 있는 작업 먼저 처리 후 순차적으로 QUEUED 에 담긴 작업을 처리하도록 로직 변경 요청
>> 중간에 펌웨어 업데이트 요청 명령이 내려 오더라도 IN_PROGRESS, QUEUED 배열 각각 확인 후 진행 중 이던 작업을 먼저 완료 처리하도록 요청
2. 디바이스 로직 변경 후 테스트 및 확인 사항 :
>> AWS 에서 수동 Job 생성 후 [A] 펌웨어 업데이트 명령 전송
>> 디바이스는 구독하고 있는 토픽에서 펌웨어 업데이트 명령이 내려 온 것 확인
>> 디바이스는 펌웨어 업데이트 진행 중 상태 보고 수행 후 펌웨어 업데이트 로직 수행
>> AWS 에서 수동 Job 생성 후 [B] 펌웨어 업데이트 명령 전송
>> 디바이스는 구독하고 있는 토픽에서 펌웨어 업데이트 명령이 내려 온 것 확인
>> 디바이스는 IN_PROGRESS 배열에 이미 진행 중인 작업이 있는 것 확인 후 QUEUED 에 저장 된 B 작업을 A 작업 완료 된 이후에 처리 하기 위해 별도 메모리에 저장 수행
>> 디바이스는 [A] 펌웨어 업데이트 작업 완료 후 QUEUED 에 담긴 [B] 펌웨어 업데이트 작업 순차 처리 수행 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------
[AWS 원격 펌웨어 업데이트 OTA 수동 job 생성 및 특정 사물 notify 펌웨어 업데이트 요청 방법 정리]
https://blog.naver.com/kkh0977/223944636139?trackingCode=blog_bloghome_searchlist
[AWS 원격 펌웨어 업데이트 job 알림 수신 jobs/notify 토픽과 jobs/notify-next 토픽 차이점 정리]
https://blog.naver.com/kkh0977/223954213087
------------------------------------------------------------------------------
728x90
반응형
'투케이2K 업무정리' 카테고리의 다른 글
Comments
