디바이스 섀도우 MQTT 주제 - AWS IoT Core

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

디바이스 섀도우 MQTT 주제

디바이스 섀도우 서비스는 예약된 MQTT 주제를 사용하여 디바이스 및 앱이 디바이스(섀도우)의 상태 정보를 가져오거나 업데이트하거나 삭제할 수 있도록 합니다.

섀도우 주제에 대해 게시 또는 구독하려면 주제 기반 인증이 필요합니다. AWS IoT 은(는) 기존 주제 구조에 새 주제를 추가할 권리를 보유합니다. 그러므로 섀도우 주제에 대한 와일드 카드 구독은 삼가도록 권장합니다. 예를 들어가 새로운 섀도우 주제를 AWS IoT 도입함에 따라이 주제 필터와 일치하는 주제 수가 증가할 수 $aws/things/thingName/shadow/# 있으므로와 같은 주제 필터를 구독하지 마세요. 이러한 주제에 게시되는 메시지의 예는 섀도우와의 상호 작용 섹션을 참조하세요.

섀도우는 명명되거나 명명되지 않을(클래식) 수 있습니다. 각 섀도우에 사용되는 주제는 주제 접두사만 다릅니다. 이 표에서는 각 섀도우 유형에서 사용하는 주제 접두사를 보여줍니다.

ShadowTopicPrefix 섀도우 유형
$aws/things/thingName/shadow 명명되지 않은(클래식) 섀도우
$aws/things/thingName/shadow/name/shadowName 명명된 섀도우

전체 주제를 생성하려면 참조할 섀도우 유형에 대해 ShadowTopicPrefix를 선택하고 thingNameshadowName(해당하는 경우)을 해당 값으로 바꾸고 다음 섹션에 표시된 대로 주제 스텁을 추가합니다.

다음은 그림자와 상호 작용하는 데 사용되는 MQTT 주제입니다.

/get

디바이스 섀도우를 가져오려면 이 주제에 빈 메시지를 게시합니다.

ShadowTopicPrefix/get

AWS IoT 는 /get/accepted 또는에 게시하여 응답합니다/get/rejected.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get" ] } ] }

/get/accepted

AWS IoT 는 디바이스의 섀도우를 반환할 때이 주제에 응답 섀도우 문서를 게시합니다.

ShadowTopicPrefix/get/accepted

자세한 내용은 응답 상태 문서 단원을 참조하십시오.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get/accepted" ] } ] }

/get/rejected

AWS IoT 는 디바이스의 섀도우를 반환할 수 없을 때 오류 응답 문서를이 주제에 게시합니다.

ShadowTopicPrefix/get/rejected

자세한 내용은 오류 응답 문서 단원을 참조하십시오.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/get/rejected" ] }, { "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/get/rejected" ] } ] }

/update

디바이스 섀도우를 업데이트하려면 이 주제에 요청 상태 문서를 게시합니다.

ShadowTopicPrefix/update

메시지 본문에 부분 요청 상태 문서가 포함되어 있습니다.

디바이스의 상태를 업데이트하려는 클라이언트는 다음과 같은 desired 속성이 포함된 JSON 요청 상태 문서를 보냅니다.

{ "state": { "desired": { "color": "red", "power": "on" } } }

섀도우를 업데이트하는 디바이스는 다음과 같은 reported 속성이 포함된 JSON 요청 상태 문서를 전송합니다.

{ "state": { "reported": { "color": "red", "power": "on" } } }

AWS IoT 는 /update/accepted 또는에 게시하여 응답합니다/update/rejected.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update" ] } ] }

/update/delta

AWS IoT 는 디바이스의 섀도우에 대한 변경을 수락할 때 응답 상태 문서를이 주제에 게시하고 요청 상태 문서에는 desiredreported 상태에 대한 다양한 값이 포함됩니다.

ShadowTopicPrefix/update/delta

메시지 버퍼에 /delta response state document가 포함되어 있습니다.

메시지 본문 세부 정보

  • update/delta에 게시되는 메시지에는 desiredreported 섹션이 서로 다른 경우에만 원하는 속성이 포함됩니다. 이 메시지는 이러한 속성이 현재 업데이트 메시지에 포함되어 있든지, 또는 이미 AWS IoT에 저장되어 있든지 상관없이 모두 포함합니다. desiredreported 섹션이 서로 다르지 않은 속성은 포함하지 않습니다.

  • 속성이 reported 섹션에는 있지만 desired 섹션에는 동일한 속성이 없는 경우 이 속성은 포함되지 않습니다.

  • 속성이 desired 섹션에는 있지만 reported 섹션에는 동일한 속성이 없는 경우 이 속성은 포함됩니다.

  • 속성이 reported 섹션에서 삭제되었지만 desired 섹션에는 계속 존재하는 경우 이 속성은 포함됩니다.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/delta" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/delta" ] } ] }

/update/accepted

AWS IoT 는 디바이스의 섀도우에 대한 변경 사항을 수락하면이 주제에 응답 상태 문서를 게시합니다.

ShadowTopicPrefix/update/accepted

메시지 버퍼에 /accepted response state document가 포함되어 있습니다.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/accepted" ] } ] }

/update/documents

AWS IoT 는 섀도우에 대한 업데이트가 성공적으로 수행될 때마다 상태 문서를이 주제에 게시합니다.

ShadowTopicPrefix/update/documents

메시지 본문에 /documents response state document가 포함되어 있습니다.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/documents" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/documents" ] } ] }

/update/rejected

AWS IoT 는 디바이스의 섀도우에 대한 변경을 거부할 때 오류 응답 문서를이 주제에 게시합니다.

ShadowTopicPrefix/update/rejected

메시지 본문에 오류 응답 문서가 포함되어 있습니다.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/update/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/update/rejected" ] } ] }

/delete

디바이스 섀도우를 삭제하려면 삭제 주제에 빈 메시지를 게시합니다.

ShadowTopicPrefix/delete

메시지의 내용은 무시됩니다.

섀도우를 삭제해도 버전 번호가 0으로 재설정되지는 않습니다.

AWS IoT 는 /delete/accepted 또는에 게시하여 응답합니다/delete/rejected.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete" ] } ] }

/delete/accepted

AWS IoT 는 디바이스의 섀도우가 삭제될 때이 주제에 메시지를 게시합니다.

ShadowTopicPrefix/delete/accepted

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/delete/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete/accepted" ] } ] }

/delete/rejected

AWS IoT 는 디바이스의 섀도우를 삭제할 수 없을 때이 주제에 오류 응답 문서를 게시합니다.

ShadowTopicPrefix/delete/rejected

메시지 본문에 오류 응답 문서가 포함되어 있습니다.

예제 정책

다음은 필요한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingName/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingName/shadow/delete/rejected" ] } ] }