쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

수명 주기 이벤트

포커스 모드
수명 주기 이벤트 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS IoT 는 MQTT 주제에 대한 수명 주기 이벤트를 게시할 수 있습니다. 이러한 이벤트는 기본적으로 사용할 수 있으며 비활성화할 수 없습니다.

참고

수명 주기 메시지는 틀린 순서로 전송될 수 있습니다. 중복 메시지를 수신할 수도 있습니다.

thingName는 클라이언트가 독점 사물 기능을 사용하여 연결하는 경우에만 포함됩니다.

연결/연결 해제 이벤트

참고

AWS IoT Device Management 플릿 인덱싱을 사용하면 사물을 검색하고, 집계 쿼리를 실행하고, 사물 연결/연결 해제 이벤트를 기반으로 동적 그룹을 생성할 수 있습니다. 자세한 내용은 플릿 인덱싱을 참조하세요.

AWS IoT 는 클라이언트가 연결 또는 연결 해제될 때 다음 MQTT 주제에 메시지를 게시합니다.

  • $aws/events/presence/connected/clientId – 클라이언트가 메시지 브로커에 연결됩니다.

  • $aws/events/presence/disconnected/clientId – 클라이언트가 메시지 브로커에서 연결 해제됩니다.

다음은 $aws/events/presence/connected/clientId 주제에 게시된 연결/연결 해제 메시지에 포함된 JSON 요소의 목록입니다.

clientId

연결 또는 연결 해제하는 클라이언트의 클라이언트 ID입니다.

참고

# 또는 +IDs가 포함된 클라이언트는 수명 주기 이벤트를 수신하지 않습니다.

thingName

IoT 사물의 이름입니다. thingName는 클라이언트가 독점 사물 기능을 사용하여 연결하는 경우에만 포함됩니다.

clientInitiatedDisconnect

클라이언트가 연결 해제를 시작했으면 True, 그렇지 않으면 false입니다. 연결 해제 메시지에서만 찾을 수 있습니다.

disconnectReason

클라이언트가 연결을 해제하는 이유입니다. 연결 해제 메시지에서만 찾을 수 있습니다. 다음 표에는 유효한 값과 연결 해제가 발생할 때 브로커가 마지막 유언 및 증명(LWT) 메시지를 보낼지 여부가 나와 있습니다.

연결 해제 이유 설명 브로커가 LWT 메시지를 보냅니다.
AUTH_ERROR 클라이언트가 인증에 실패했거나 권한 부여가 실패했습니다. 예. 이 오류가 발생하기 전에 디바이스의 연결이 활성 상태였던 경우
CLIENT_INITIATED_DISCONNECT 클라이언트는 연결을 해제할 것을 나타냅니다. 클라이언트가 WebSocket 연결을 사용하는 Close frame 경우 클라이언트는 MQTT DISCONNECT 제어 패킷 또는를 전송하여이 작업을 수행할 수 있습니다. 아니요.
CLIENT_ERROR 클라이언트가 연결 해제를 초래하는 잘못된 동작을 수행했습니다. 예를 들어 클라이언트가 동일한 연결에서 두 개 이상의 MQTT CONNECT 패킷을 전송하거나 클라이언트가 페이로드 한도를 초과하는 페이로드로 게시하려고 시도하는 경우 클라이언트 연결이 해제됩니다. 예.
CONNECTION_LOST 클라이언트-서버 연결이 차단되었습니다. 이는 네트워크 지연 시간이 길거나 인터넷 연결이 끊긴 경우에 발생할 수 있습니다. 예.
DUPLICATE_CLIENTID 클라이언트가 이미 사용 중인 클라이언트 ID를 사용하고 있습니다. 이 경우 이미 연결된 클라이언트는 이 연결 해제 이유로 연결이 해제됩니다. 예.
FORBIDDEN_ACCESS 클라이언트가 연결이 금지되어 있습니다. 예를 들어 IP 주소가 거부된 클라이언트는 연결에 실패합니다. 예. 이 오류가 발생하기 전에 디바이스의 연결이 활성 상태였던 경우
MQTT_KEEP_ALIVE_TIMEOUT 클라이언트의 연결 유지 시간의 1.5배 동안 클라이언트-서버 통신이 없으면 클라이언트의 연결이 해제됩니다. 예.
SERVER_ERROR 예기치 않은 서버 문제로 인해 연결이 해제되었습니다. 예.
SERVER_INITIATED_DISCONNECT 서버가 운영상 이유로 의도적으로 클라이언트의 연결을 해제합니다. 예.
THROTTLED 클라이언트가 조절 제한을 초과하여 연결이 해제되었습니다. 예.
WEBSOCKET_TTL_EXPIRATION 가 값 time-to-live보다 오래 연결되었기 때문에 클라이언트 연결이 끊어 WebSocket 졌습니다. 예.
CUSTOMAUTH_TTL_EXPIRATION 클라이언트가 사용자 지정 권한 부여자의 값보다 time-to-live 더 오래 연결되었기 때문에 연결이 끊어졌습니다. 예.
eventType

이벤트의 유형입니다. 유효한 값은 connected 또는 disconnected입니다.

ipAddress

연결 클라이언트의 IP 주소입니다. 또는 IPv4 IPv6 형식일 수 있습니다. 연결 메시지에서만 찾을 수 있습니다.

principalIdentifier

인증에 사용되는 자격 증명입니다. TLS 상호 인증 인증서의 경우 인증서 ID입니다. 다른 연결에서는 IAM 자격 증명입니다.

sessionIdentifier

세션 수명 동안 AWS IoT 존재하는의 전역 고유 식별자입니다.

타임스탬프

이벤트 발생 시점의 근사치

versionNumber

수명 주기 이벤트의 버전 번호입니다. 이것은 각 클라이언트 ID 연결에 대해 단조 증가하는 긴 정수 값입니다. 버전 번호는 구독자가 수명 주기 이벤트의 순서를 추론하는 데 사용할 수 있습니다.

참고

클라이언트 연결의 연결 및 연결 해제 메시지는 버전 번호가 동일합니다.

버전 번호는 값을 건너뛸 수 있으며 각 이벤트마다 항상 1씩 증가한다는 보장이 없습니다.

클라이언트가 약 1시간 동안 연결되지 않으면 버전 번호가 0으로 재설정됩니다. 영구 세션의 경우 클라이언트가 영구 세션에 대해 구성된 time-to-live (TTL)보다 오래 연결이 끊어지면 버전 번호가 0으로 재설정됩니다.

연결 메시지의 구조는 다음과 같습니다.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002230757, "eventType": "connected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "ipAddress": "192.0.2.0", "versionNumber": 0 }

연결 해제 메시지의 구조는 다음과 같습니다.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002340451, "eventType": "disconnected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "clientInitiatedDisconnect": true, "disconnectReason": "CLIENT_INITIATED_DISCONNECT", "versionNumber": 0 }

클라이언트 연결 해제 처리

가장 좋은 방법은 Last Will 및 Testament(LWT) 메시지를 포함하여 수명 주기 이벤트에 대해 항상 대기 상태를 구현하는 것입니다. 연결 해제 메시지가 수신되면 코드가 조치를 취하기 전에 일정 기간을 기다리고 디바이스가 여전히 오프라인 상태인지 확인해야 합니다. 이를 위한 한 가지 방법은 SQS 지연 대기열을 사용하는 것입니다. 클라이언트가 LWT 또는 수명 주기 이벤트를 수신하면 메시지를 대기열에 넣을 수 있습니다(예: 5초). 해당 메시지를 사용할 수 있게 되고 (Lambda 또는 다른 서비스에서) 처리하면, 추가 조치를 취하기 전에 디바이스가 여전히 오프라인 상태인지 여부를 먼저 확인할 수 있습니다.

연결 시도 실패 이벤트

AWS IoT 는 클라이언트가 연결할 권한이 없거나 마지막 유언장과 증명이 구성되고 클라이언트가 해당 마지막 유언MQTT장 주제에 게시할 권한이 없는 경우 다음 주제에 메시지를 게시합니다.

$aws/events/presence/connect_failed/clientId

다음은 $aws/events/presence/connect_failed/clientId 주제에 게시된 연결 권한 부여 메시지에 포함된 JSON 요소의 목록입니다.

clientId

연결을 시도했거나 연결하지 못한 클라이언트의 클라이언트 ID입니다.

참고

# 또는 +IDs가 포함된 클라이언트는 수명 주기 이벤트를 수신하지 않습니다.

thingName

IoT 사물의 이름입니다. thingName는 클라이언트가 독점 사물 기능을 사용하여 연결하는 경우에만 포함됩니다.

타임스탬프

이벤트 발생 시점의 근사치

eventType

이벤트의 유형입니다. 유효한 값은 입니다connect_failed.

connectFailureReason

연결이 실패하는 이유입니다. 유효한 값은 입니다AUTHORIZATION_FAILED.

principalIdentifier

인증에 사용되는 자격 증명입니다. TLS 상호 인증 인증서의 경우 인증서 ID입니다. 다른 연결에서는 IAM 자격 증명입니다.

sessionIdentifier

세션 수명 동안 AWS IoT 존재하는의 전역 고유 식별자입니다.

ipAddress

연결 클라이언트의 IP 주소입니다. 또는 IPv4 IPv6 형식일 수 있습니다. 연결 메시지에서만 찾을 수 있습니다.

연결 실패 메시지의 구조는 다음과 같습니다.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "connect_failed", "connectFailureReason": "AUTHORIZATION_FAILED", "principalIdentifier": "12345678901234567890123456789012", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "ipAddress" : "192.0.2.0" }

구독/구독 취소 이벤트

AWS IoT 는 클라이언트가 MQTT 주제를 구독하거나 구독 취소하면 다음 MQTT 주제에 메시지를 게시합니다.

$aws/events/subscriptions/subscribed/clientId

or

$aws/events/subscriptions/unsubscribed/clientId

여기서 clientId는 메시지 브로커에 AWS IoT 연결하는 MQTT 클라이언트 ID입니다.

이 주제에 게시된 메시지는 구조가 다음과 같습니다.

{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "subscribed" | "unsubscribed", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "topics" : ["foo/bar","device/data","dog/cat"] }

다음은 $aws/events/subscriptions/subscribed/clientId$aws/events/subscriptions/unsubscribed/clientId 주제에 게시된 구독 및 구독 취소 메시지에 포함된 JSON 요소의 목록입니다.

clientId

구독 또는 구독 취소하는 클라이언트의 클라이언트 ID입니다.

참고

# 또는 +IDs가 포함된 클라이언트는 수명 주기 이벤트를 수신하지 않습니다.

thingName

IoT 사물의 이름입니다. thingName는 클라이언트가 독점 사물 기능을 사용하여 연결하는 경우에만 포함됩니다.

eventType

이벤트의 유형입니다. 유효한 값은 subscribed 또는 unsubscribed입니다.

principalIdentifier

인증에 사용되는 자격 증명입니다. TLS 상호 인증 인증서의 경우 인증서 ID입니다. 다른 연결에서는 IAM 자격 증명입니다.

sessionIdentifier

세션 수명 동안 AWS IoT 존재하는의 전역 고유 식별자입니다.

타임스탬프

이벤트 발생 시점의 근사치

topics

클라이언트가 구독한 MQTT 주제의 배열입니다.

참고

수명 주기 메시지는 틀린 순서로 전송될 수 있습니다. 중복 메시지를 수신할 수도 있습니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.