투케이2K

83. (Aws/Amazon) [Aws Iot Core] 원격 작업 무선 업데이트 (OTA) job 개념 학습 및 펌웨어 업데이트 프로세스 정리 본문

Aws (Amazon)

83. (Aws/Amazon) [Aws Iot Core] 원격 작업 무선 업데이트 (OTA) job 개념 학습 및 펌웨어 업데이트 프로세스 정리

투케이2K 2025. 7. 8. 20:17
728x90
반응형

[개발 환경 설정]

개발 환경 : Aws / Amazon Web Services

 

[설명 정리]

// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------

- 인프라 : Aws / Amazon Web Services


- 기술 구분 : Aws / Iot / OTA / job


- 사전) Aws Iot Core 설명 : 

  >> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.

  >> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.

  >> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다. 
  
    - HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설 명]
// --------------------------------------------------------------------------------------

1. AWS 원격 작업 이란 작업자 또는 기술자의 물리적 존재 없이 원격으로 수행할 수 있는 업데이트 작업입니다

  >> 무선 업데이트 (OTA) 를 사용하여 수행


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

  >> 주목적 : 소프트웨어 및 펌웨어 업데이트를 디바이스 기기에게 알리는데 사용 (기기에게 작업 문서 전송)

  >> 작업 문서 : AWS IoT Job 생성 시 대상이 되는 디바이스로 전송 되는 문서 (펌웨어 다운로드 URL 정보 등 포함)


3. AWS IoT 원격 작업 job 생성 및 디바이스 펌웨어 업데이트 프로세스 정리 : 

  -----------------------------------------------------------
  >> 사전 준비 : 
  -----------------------------------------------------------

    - 디바이스 등록 : AWS IoT Core 에 디바이스 (Thing) 를 등록하고 인증서 및 정책을 설정합니다

      # 디바이스 프로비저닝 수행 템플릿 등록 요청 시 Lambda Hook 검증 함수에서 jobs 를 구독하고 publish 할 수 있는 권한을 부여해야함

      # 예시 리전 : ap-northeast-1

      # 예시 어카운트 ID : 123456789012

      # 예시 ThingName : TWOK_0000000001

      {
        "Version": "2025-07-01",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iot:Connect",
            "Resource": "*"
          },
          {
            "Effect": "Allow",
            "Action": [
              "iot:Publish",
              "iot:Receive"
            ],
            "Resource": [
              "arn:aws:iot:ap-northeast-1:123456789012:topic/$aws/things/TWOK_0000000001/shadow/name/*",
              "arn:aws:iot:ap-northeast-1:123456789012:topic/$aws/things/TWOK_0000000001/jobs/*"
            ]
          },
          {
            "Effect": "Allow",
            "Action": [
              "iot:Subscribe"
            ],
            "Resource": [
              "arn:aws:iot:ap-northeast-1:123456789012:topicfilter/$aws/things/TWOK_0000000001/shadow/name/*",
              "arn:aws:iot:ap-northeast-1:123456789012:topicfilter/$aws/things/TWOK_0000000001/jobs/*"
            ]
          }
        ]
      }


    - 펌웨어 파일 준비 : S3 버킷에 새로운 펌웨어 파일을 업로드합니다 

      # 디바이스로부터 전달 받은 펌웨어 파일 무결성 검증을 수행할 수 있는 MD5 정보도 같이 전달 받습니다


    - 디바이스 측 로직 구현 : 디바이스는 AWS MQTT 를 통해 Job 을 수신하고, S3 에서 펌웨어를 다운로드하여 업데이트하는 로직을 포함해야 합니다

      # MQTT를 통해 Job 알림 수신 ($aws/things/thingName/jobs/notify-next)

      # Job Document 다운로드 및 파싱
      # S3 에서 펌웨어 다운로드 수행
      # 펌웨어 검증 및 설치 (MD5 파일 무결성 검증)
      # 재부팅 후 상태 보고 ($aws/things/thingName/jobs/jobId/update)


  -----------------------------------------------------------
  >> Job Document 작성 (특정 기기에게 전송 예제) : 디바이스 기기에서 전달 되는 문서로 펌웨어 파일 다운로드 경로 및 파일 무결성 검증 MD5 등 정보가 포함 됨
  -----------------------------------------------------------

    {
      "operation": "UPDATE",
      "description": "Request Update Firmware",
      "target": [
        {          
          "deviceThingList": [
            "TWOK_0000000001"
          ],
          "version": "1.0.4",
          "firmwareUrl": "https://..", ----------> 펌웨어 파일 다운로드 S3 URL 주소 
          "firmwareFileMd5": "de.." -------------> 펌웨어 파일 무결성 검증 MD5 정보 (사전 디바이스로부터 전달 받고 내려 보낸다 > 기기는 MD5 정보로 파일 무결성 검증)
        }
      ],
      "timeoutInSeconds": 60,
      "jobExecutionsRolloutConfig": {
        "maximumPerMinutes": 10
      }
    }


  -----------------------------------------------------------
  >> Job Document 문서를 .json 파일로 저장 한 이후 AWS S3 에 업로드 수행 실시
  -----------------------------------------------------------


  -----------------------------------------------------------
  >> AWS IOT Core 콘솔에서 [원격 작업] > [작업] 생성 수행
  -----------------------------------------------------------

    - 작업 생성

    - 사용자 지정 작업 생성

    - 작업 속성 이름 지정 (설명 입력 및 태그는 선택 사항)

    - 이작업을 실행할 사물 선택 (특정 사물 Thing 지정)

    - 작업 문서에서 파일 선택 > S3 에 올려놓은 Job Document 문서 .json 파일 선택

    - 원격 작업 업데이트 수행 게시 publish 수행

      # 사전 디바이스 기기에서 펌웨어 업데이트 Job 알림 수신을 구독하고 있어야함


  -----------------------------------------------------------
  >> 디바이스 기기에서 펌웨어 업데이트 Job 알림 수신 완료 후 펌웨어 업데이트 로직 처리 수행
  -----------------------------------------------------------

    - MQTT를 통해 Job 알림 수신 ($aws/things/thingName/jobs/notify-next)

    - Job Document 다운로드 및 파싱

    - S3 에서 펌웨어 다운로드 수행

    - 펌웨어 검증 및 설치 (MD5 파일 무결성 검증)

    - 재부팅 후 상태 보고 ($aws/things/thingName/jobs/jobId/update)

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Aws Iot Core] Fleet provisioning 플릿 프로비저닝 설명 및 동작 프로세스 정리

https://blog.naver.com/kkh0977/223691943757?trackingCode=blog_bloghome_searchlist


[원격 작업이란 무엇인가요?]

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/jobs-what-is-remote-operation.html


[작업 관련 주요 개념 설명]

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/key-concepts-jobs.html


[작업 알림]

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/jobs-comm-notifications.html


[AWS IoT Device Shadow 섀도우 서비스 설명 정리 - 실시간 디바이스 상태 확인 및 제어]

https://blog.naver.com/kkh0977/223695582654?trackingCode=blog_bloghome_searchlist


[안드로이드 aws shadow mqtt 수행 publish , subscribe 결과 확인 - get, update, delete]

https://blog.naver.com/kkh0977/223560924808?trackingCode=blog_bloghome_searchlist


[Aws 프로비저닝 수행 및 섀도우 Shadow 토픽 Topic 구독 시 와일드 카드 (wild card) 설명 정리]

https://blog.naver.com/kkh0977/223825295723?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments