투케이2K

4. (Aws/Amazon) [Aws Iot Core] Fleet provisioning 플릿 프로비저닝 설명 및 동작 프로세스 정리 본문

Aws (Amazon)

4. (Aws/Amazon) [Aws Iot Core] Fleet provisioning 플릿 프로비저닝 설명 및 동작 프로세스 정리

투케이2K 2024. 12. 13. 08:44

[개발 환경 설정]

개발 환경 : Aws / Amazon Web Services

 

[방법 설명]

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

- 인프라 : Aws / Amazon Web Services

- 기술 구분 : Aws Iot Core / Fleet 프로비저닝

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






// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------

1. Aws Iot 플릿 프로비저닝 은 Amazon 루트 인증 기관 (CA) 에서 서명한 클라이언트 인증서를 사용해
  디바이스 인증서와 개인 키를 생성하여 디바이스에 안전하게 연결하며, 통신을 수행할 수 있는 방법입니다.



2. 플릿 프로비저닝을 사용하는 방법 종류 

  >> 클레임에 의한 프로비저닝 : 클레임 인증서 및 프라이빗 키 사용해 고유한 디바이스 인증서로 교환하는 방법
  >> 신뢰할 수 있는 사용자에 의한 프로비저닝 : AWS IoT 기능 및 API 작업에 대한 액세스 권한을 부여하는 신뢰할 수 있는 사용자에 대한 계정을 제공 및 유지 관리하는 것



3. 사전 프로비저닝 후크를 사용하여 프로비저닝 템플릿을 생성 하는 방법 : 

  >> 정의된 입력 및 출력이 있는 Lambda 함수를 만듭니다. (사전 프로비저닝 후크를 생성하려면 allowProvisioning 및 parameterOverrides가 필요)
  >> AWS IoT 리소스 기반 정책을 사용하여 Lambda를 호출하므로 Lambda 함수를 호출할 권한을 AWS IoT 부여해야 합니다 (권한 조작을 방지하기 위해 Lambda 작업에 연결된 정책의 전역 조건 컨텍스트 키에 source-arn 또는 source-account가 포함되어야 합니다.)
  >> create-provisioning-template 또는 update-provisioning-template 명령을 사용하여 사전 프로비저닝 후크를 템플릿에 추가합니다.



4. 안드로이드) 플릿 프로비저닝 수행 로직 예시 : 

  >> [1] : 앱 내부 저장소 (키스토어) 에 클레임 인증서 및 Private Key 저장 실시

  >> [2] : 키스토어에 저장 된 클레임 인증서 불러오기

  >> [3] : 엔드포인트 정보 및 키스토어 저장 된 정보를 사용해 인증서 유효성 검증 및 Connect 연결 수행

  >> [4] : aws connection 이 완료 된 경우 Certificates Create Rejected 구독 수행 실시

  >> [5] : Rejected 구독이 완료 된 경우 Certificates Create Accepted 구독 수행 실시

  >> [6] : Accepted 구독 완료 시 디바이스 접속 및 제어에 필요한 임시 인증서 발급 요청 Certificates Create Publish 수행

  >> [7] : publish 명령 성공 시 Accepted 구독 >> onMessageArrived 부분에서 새롭게 내려온 인증서 정보 저장 수행

     - 참고 : certificateId , certificatePem , privateKey , certificateOwnershipToken

  >> [8] : 사전 전달받은 템플릿 명칭 사용해 템플릿 등록 확인 Provisioning Templates Rejected 구독 수행 실시

  >> [9] : Rejected 구독 완료 시 Provisioning Templates Accepted 구독 수행 실시

  >> [10] : Accepted 구독 완료 시 템플릿에 기기 등록 요청 Provisioning Templates Pushlish 수행 실시

     - 참고 : publish 수행 시 데이터 포맷 certificateOwnershipToken , parameters 필요 (json 형식으로 parameters 분에 데이터 추가 커스텀 가능)

  >> [11] : publish 명령 성공 시 Accepted 구독 된 곳에 >> onMessageArrived 부분에서 등록 된 기기 ThingName 정보 확인 및 데이터 저장 실시

  >> [12] : 기존에 연결 된 Aws 프로비저닝 연결 종료 수행

  >> [13] : 상위 로직에서 내려받은 임시 인증서 정보를 앱 내부 저장소 (키스토어) 에 저장 수행

  >> [14] : 키스토어에 저장 된 임시 인증서 불러오기

  >> [15] : 임시 인증서와 전달 받은 ThingName 사용해 디바이스 연결 수행 실시

  >> [16] : 디바이스 연결 수행 완료 시 필요한 Shadow 추가 구독 및 publish 명령 전달 실시

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






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

[Aws 공식 사이트]

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/provision-wo-cert.html


[안드로이드 aws fleet provisioning 플릿 프로비저닝 - 클레임 인증서 , 템플릿 등록 동작 수행 로직 정리]

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


[aws 플릿 프로비저닝 템플릿 Rejected , Accepted 구독 에러 - 연결 유실 , template name error]

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


[AWS 프로비저닝 (Fleet Provisioning) 수행 후 shadow 쉐도우 구독 시 연결 유실 이슈]

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


[Aws IoT Core MQTT 디바이스 통신 프로토콜 및 port 종류 확인]

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

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

 

반응형
Comments