Notice
Recent Posts
Recent Comments
Link
투케이2K
181. (Aws/Amazon) [Aws Iot Core] MQTT 구독 연결 및 해제 이벤트 감지 토픽 설명 - $aws/events/subscriptions/subscribed 본문
Aws (Amazon)
181. (Aws/Amazon) [Aws Iot Core] MQTT 구독 연결 및 해제 이벤트 감지 토픽 설명 - $aws/events/subscriptions/subscribed
투케이2K 2026. 2. 9. 19:58728x90
반응형
[개발 환경 설정]
개발 환경 : Aws / Amazon Web Services

[설명 정리]
// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------
- 인프라 : Aws / Amazon Web Services
- 기술 구분 : Aws / Aws Iot Core / MQTT / Events / Subscribe / UnSubscribe
- 사전) 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 에서는 /subscriptions 토픽을 사용해 MQTT 구독 연결 상태 변화를 자동으로 감지할 수 있습니다
>> 구독 연결 이벤트 : $aws/events/subscriptions/subscribed/<clientId>
>> 구독 해제 이벤트 : $aws/events/subscriptions/unsubscribed/<clientId>
>> clientId 설명 참고사항 : <clientId> 는 Aws Iot Core 에 등록 된 Thing 사물이 아니라 MQTT 세션 연결에 사용 된 clientId 입니다
>> ✅ 해당 이벤트 감지 설정을 위한 참고 사항 :
- ClientId 기준 → ThingName과 동일하게 설정 권장
- 특정 클라이언트가 아닌 전체 클라이언트 구독 상태를 확인하고 싶은 경우 토픽에 # (와일드 카드) 사용
2. 구독 연결 이벤트 감지 설명 : $aws/events/subscriptions/subscribed
>> 특정 디바이스가 AWS IoT Core MQTT Topic 을 Subscribe 했을 때 이벤트가 트리거 됩니다
>> 메시지 예시 :
{
"clientId": "myDevice01",
"timestamp": 1707458292000,
"topicFilters": [
"device/+/telemetry"
]
}
>> 모든 client의 subscribe 이벤트 수신용 와일드카드 :
- $aws/events/subscriptions/subscribed/#
3. 구독 해제 이벤트 감지 설명 : $aws/events/subscriptions/unsubscribed
>> 특정 디바이스가 AWS IoT Core MQTT Topic 을 UnSubscribe 했을 때 이벤트가 트리거 됩니다
>> 메시지 예시 :
{
"clientId": "myDevice01",
"timestamp": 1707458350000,
"topicFilters": [
"device/+/telemetry"
]
}
>> 모든 client의 unsubscribe 이벤트 수신용 와일드카드 :
- $aws/events/subscriptions/unsubscribed/#
4. ✅ 이벤트 메시지를 받기 위한 IAM Policy (장치 측) 정리 :
>> AWS IoT 문서에 따르면 이벤트 메시지를 받으려면 장치는 iot:Subscribe, iot:Receive 권한이 있어야 하며 $aws/events/* 토픽을 구독해야 합니다.
>> 정책 예시 :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["iot:Subscribe", "iot:Receive"],
"Resource": [
"arn:aws:iot:region:account-id:topicfilter/$aws/events/*"
]
}
]
}
5. ✅ 해당 토픽 사용 실제 시나리오 예시 정리 :
>> 기기가 어떤 Topic을 새로 Subscribe 했는지 추적 : $aws/events/subscriptions/subscribed/#
>> 비정상 종료 등으로 갑자기 unsubscribe 되는 상황 탐지 : $aws/events/subscriptions/unsubscribed/#
>> Fleet 관리 : 특정 clientId의 subscription 변화 모니터링 : $aws/events/subscriptions/subscribed/{clientId}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[Aws Iot Core] MQTT 세션 연결 및 해제 이벤트 감지 토픽 설명 - $aws/events/presence/connected
https://kkh0977.tistory.com/8569
https://blog.naver.com/kkh0977/224149233152
[MQTT (Message Queueing Telemetry Transport) 통신 설명]
https://kkh0977.tistory.com/3631
https://blog.naver.com/kkh0977/222971771381?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
[android] Aws Iot Core MQTT 연결 수행 후 Timer 타이머 사용해 주기적 connect 연결 상태 변경 및 해제 감지 로직
https://blog.naver.com/kkh0977/224043610334?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
728x90
반응형
'Aws (Amazon)' 카테고리의 다른 글
Comments
