디바이스 섀도우 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 디바이스의 섀도우에 대한 변경을 수락하고 요청 상태 문서에 다른 값과 상태가 포함되어 있는 경우 이 주제에 대한 desired 응답 상태 문서를 게시합니다. reported

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" ] } ] }