투케이2K

200. (TWOK/WORK) [업무 이슈] AWS Iot Core named shadow 생성 및 구독 할당량 제한으로 인한 네트워크 단선 이후 named shadow 삭제 이슈 본문

투케이2K 업무정리

200. (TWOK/WORK) [업무 이슈] AWS Iot Core named shadow 생성 및 구독 할당량 제한으로 인한 네트워크 단선 이후 named shadow 삭제 이슈

투케이2K 2026. 1. 14. 21:04
728x90

[제 목]

타이틀 : 투케이 / 2k / 업무 정리

제목 : [업무 이슈] AWS Iot Core named shadow 생성 및 구독 할당량 제한으로 인한 네트워크 단선 이후 named shadow 삭제 이슈

 

[내 용]

------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------

- 제 목 : [업무 이슈] AWS Iot Core named shadow 생성 및 구독 할당량 제한으로 인한 네트워크 단선 이후 named shadow 삭제 이슈


- 테스트 환경 : AWS / Iot / MQTT / Shadow


- 사전) Aws Iot Core 간단 설명 : 

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

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

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


- 사전) MQTT (Message Queuing Telemetry Transport) 설명 : 

  >> MQTT 는 경량 메시지 프로토콜로, 주로 IoT(사물인터넷) 환경에서 사용됩니다

  >> MQTT 목적 : 제한된 네트워크 환경(저속, 불안정)에서 효율적으로 메시지를 주고받기 위해 설계

  >> MQTT 기반 : TCP/IP 위에서 동작

  >> MQTT 패턴 : Publish/Subscribe 모델을 사용

    - Publisher : 메시지를 발행하는 클라이언트

    - Subscriber : 특정 주제(topic)를 구독하는 클라이언트

    - Broker: 메시지를 중개하는 서버 (예: Mosquitto)

  >> MQTT 주요 특징 : 

    - 경량성 : 헤더가 매우 작음(2바이트부터 시작)

    - QoS (Quality of Service) : 
      $ QoS 0: 최대 한 번 전달(보장 없음)
      $ QoS 1: 최소 한 번 전달(중복 가능)
      $ QoS 2: 정확히 한 번 전달(가장 안전)

    - 지속 연결 : KeepAlive로 연결 상태 유지

    - Last Will and Testament (LWT) : 클라이언트 비정상 종료 시 브로커가 메시지 발행

    - 토픽 기반 라우팅 : 계층적 구조(/home/temperature 등)

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------

1. AWS Iot Core 사용 되지 않는 named shadow 토픽 삭제 없이 지속 named shadow 토픽 구독 시 AWS 구독 할당량 제한으로 인해 서비스 연결이 되지 않는 이슈


2. ✅ AWS Service Quotas 확인 시 AWS 어카운트 계정에 제공 되는 구독 할당량은 50개 제한 확인

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------

1. AWS Iot Core 특정 사물 (thing) 에 생성 된 named shadow 토픽 개수 확인


2. 토픽 개수 50 개 이후 named shadow 추가 생성 후 구독 요청 시 서비스 연결에 실패하는 증상 확인

  >> AWS 토픽 구독은 각 named shadow 당 와일드 카드 방식을 사용해 구독 수행

  >> ex : $aws/things/{thingName}/shadow/name/common/update/#

------------------------------------------------------------------------------






------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------

방어 로직 [1] : 네트워크 연결이 된 상태 인 경우 AWS MQTT 메시지로 DELETE Shadow 명령을 전달 받으면 동적으로 named shadow 삭제 수행 로직 추가

  >> [Aws Iot Core] Aws Iot Core Thing 사물 Shadow 삭제 요청 DeleteThingShadow API 설명 정리 : https://blog.naver.com/kkh0977/224106416775?trackingCode=blog_bloghome_searchlist


방어 로직 [2] : 네트워크 단선 이후 재연결 된 경우 > named shadow 삭제 수행 로직 추가

  >> 네트워크 단선 된 이후 재연결 시 DELETE Shadow 전문을 /get 으로 읽은 후 desired 부분에 특정 삭제 명령이 들어와 있는 경우 해당 named shadow 삭제 수행

  >> 부모 기기에 매핑 되는 Zigbee 하위 기기인 경우는 네트워크 단선 된 이후 Zigbee 단에서 페어링이 떨어져 나간 경우 자동으로 named shadow 삭제 수행

  >> 특정 기기 리셋 (공장 초기화) 이후 동일한 Mac 정보 장비 재등록 시 이전에 등록 된 named shadow 가 있으면 삭제 수행

  >> 특정 기기 Mac 정보 장비 등록 시 이미 등록 된 장비가 있으면 알림 팝업창 표시 및 사용자 확인 버튼 클릭 시 named shadow 삭제 수행

    - 팝업창 알림 : 이미 등록 된 Mac 장비가 있습니다. 해당 장비를 삭제하시겠습니까? [예], [아니오]

------------------------------------------------------------------------------





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

[Aws Iot Core] Aws Iot Core Shadow (디바이스 섀도우) 에 대한 구독 할당량 확인 방법 - Service Quotas

https://kkh0977.tistory.com/8550

https://blog.naver.com/kkh0977/224138329845


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

https://kkh0977.tistory.com/7439

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


[Aws Iot Core] Fleet provisioning 플릿 프로비저닝 수행 방법 정리 - 클레임 인증서 , 신뢰할 수 있는 사용자

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


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

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


[MQTT (Message Queueing Telemetry Transport) 통신 설명]

https://kkh0977.tistory.com/3631

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


[간단 소스] 자바스크립트 mqtt.min.js 라이브러리 사용해 AWS MQTT5 사용자속성 userProperties 메시지 전송 및 구독 확인

https://kkh0977.tistory.com/8433

https://blog.naver.com/kkh0977/224091537312

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