Notice
Recent Posts
Recent Comments
Link
투케이2K
174. (TWOK/WORK) [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 시 동일 버전 펌웨어 버전 체크 및 업데이트 진행 미완료 표시 - publish status 본문
투케이2K 업무정리
174. (TWOK/WORK) [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 시 동일 버전 펌웨어 버전 체크 및 업데이트 진행 미완료 표시 - publish status
투케이2K 2025. 8. 1. 13:43728x90
[제 목]
[업무 이슈] AWS Job 디바이스 펌웨어 업데이트 시 동일 버전 펌웨어 버전 체크 및 업데이트 진행 미완료 표시 - publish status
[내 용]
------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------
- 제목 : [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 시 동일 버전 펌웨어 버전 체크 및 업데이트 진행 미완료 표시 - publish status
- 테스트 환경 : 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 을 생성 후 디바이스 기기로 펌웨어 업데이트 명령을 내릴 시
동일한 펌웨어 버전 인 경우 펌웨어 업데이트 상태를 완료 처리 하지 않는 이슈 확인 (publish status 미보고 이슈)
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. AWS IOT Core 콘솔 대시 보드에서 원격 작업 Job 생성 수행
3. 특정 사물 (ThingName) 지정 후 펌웨어 업데이트 요청 명령 게시 수행
4. 디바이스는 구독하고 있는 $aws/things/{thingName}/jobs/notify 토픽에서 펌웨어 업데이트 요청 명령이 내려 온 것 확인
>> 펌웨어 업데이트 상태 및 준비 IN_PROGRESS, QUEUED 배열 확인 후 QUEUED 에 새롭게 펌웨어 업데이트 요청이 들어 온 것 확인
5. 디바이스는 QUEUED 에서 펌웨어 업데이트 JOB_ID 확인 후 Job Document 확인 수행
6. 디바이스는 Job Document 에서 펌웨어 업데이트 버전 확인 후 현재 기기에 설치 된 펌웨어 버전과 동일한 버전 확인
7. 디바이스 로직 처리 단에서 동일한 펌웨어 버전인 경우 continue 건너뛰기 처리하는 것 확인
8. 디바이스는 이후 특별한 이벤트 동작 보고를 하지 않고 로직 처리를 종료하는 것 확인
>> 동일한 펌웨어 버전인 경우 $aws/things/{thingName}/jobs/{JobId}/update 토픽에 IN_PROGRESS 및 SUCCEEDED 상태를 즉시 보고해줘야하는데 누락 된 것 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------
1. 디바이스 펌웨어 업데이트 로직 처리에서 동일한 펌웨어 버전 인 경우 실제 기기를 업데이트 하지 않고 AWS 에 펌웨어 업데이트 진행 및 완료 보고를 즉시 수행하도록 로직 변경 요청
2. 디바이스가 AWS 펌웨어 업데이트 상태 보고 토픽 및 publish 메시지 페이로드 예시 :
>> 펌웨어 파일 다운로드 진행 상태 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"
}
}
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------
[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
