본문 바로가기

AWS

AWS IoT Core에서 Topic 제약 없이 사용하는 방법

728x90

숫자만으로 Topic 사용이 가능할까?

=> Yes, 가능하다!

 

- Cloud9(이젠 볼 수 없는)에서 메시지를 잘 주고 받는 것을 확인할 수 있다

- AWS IoT MQTT Client 콘솔에서도 메시지가 정상적으로 도착하는 것을 확인할 수 있다.

 

 

-(dash)가 들어간 Topic 사용 가능할까?

=> Yes

 

 

_(underbar)가 들어간 Topic 사용 가능할까?

=> Yes

 

.이 들어간 Topic 사용 가능할까?

=> Yes

 

한글이 들어간 Topic 사용 가능할까?

=> 놀랍게도 된다.. Yes

 

 

AWS Best Practice IoT MQTT Topic

그럼에도 AWS에서 권장하는 Best Practice MQTT Topic은 다음을 참고 하면 된다.

- 계층적 구조로 /(슬래시)를 사용하여 구분한다

- 뒤로 갈수록 특정 지어질 수 있도록 짓는다

 

 

원격 측정 시에는 보통 다음과 같이 사용한다.

dt/<application>/<context>/<thing-name>/<dt-type>

 

예를 들어 자동차 회사의 제네시스라는 차량의 G-001 모델이름의 상태 값이라고 하면..

dt/hdcar/genesis/G-001/st 라고 한다.

 

 

명령에 대해서 지을 때에는 다음과 같이 사용한다.

- 요청할 때

cmd/<application>/<context>/<destination-id>/<req-type>

 

- 응답할 때

 cmd/<application>/<context>/<destination-id>/<res-type>

 

예를 들어 자동차 회사의 제네시스라는 차량의 G-001 모델이름의 요청 값이라고 하면..

dt/hdcar/genesis/G-001/req 라고 사용할 수 있는 것이다.

 

테스트한 것처럼 점(.), 언더바(_), 대시(-), 한글, 슬래시 없이 사용 모두 가능하지만,

AWS IoT Core Policy에서 사용하려면 머리가 복잡할 수 있다.

 

 

AWS IoT Core Topic 제한

  • Publish 요청을 보낼 때 AWS IoT Core에 전달되는 토픽은 UTF-8 인코딩 문자 256바이트를 넘을 수 없다. (Basic Ingest 토픽($AWS/rules/rule-name/)에 대한 처음 3개의 필수 세그먼트 제외)
  • Publish 또는 Subscribe 요청의 토픽은 최대 7개의 슬래시(/)를 가질 수 있다. (Basic Ingest 토픽의 필수 세그먼트($AWS/rules/rule-name/)의 처음 3개 슬래시는 제외)

 

 

다음처럼 AWS의 Best Practice를 따르는 게 가장 좋다.

https://docs.aws.amazon.com/whitepapers/latest/designing-mqtt-topics-aws-iot-core/mqtt-design-best-practices.html

 

MQTT design best practices - Designing MQTT Topics for AWS IoT Core

MQTT design best practices General best practices Although there are numerous combinations of IoT communication patterns that share common approaches, there are several best practices that apply to any message pattern irrespective of how a device is publis

docs.aws.amazon.com

 

 

끗!

728x90