투케이2K

174. (TWOK/WORK) [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 시 동일 버전 펌웨어 버전 체크 및 업데이트 진행 미완료 표시 - publish status 본문

투케이2K 업무정리

174. (TWOK/WORK) [업무 이슈] AWS Job 디바이스 펌웨어 업데이트 시 동일 버전 펌웨어 버전 체크 및 업데이트 진행 미완료 표시 - publish status

투케이2K 2025. 8. 1. 13:43
728x90

[제 목]

[업무 이슈] 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
반응형
Comments