翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Device Shadow MQTTトピック
Device Shadow サービスは、予約済みMQTTトピックを使用して、デバイスとアプリケーションがデバイス (シャドウ) の状態情報を取得、更新、または削除できるようにします。
Shadow トピックへのパブリッシュとサブスクライブにはトピックベースの権限付与が必要です。 AWS IoT
には、既存のトピック構造に新しいトピックを追加する権限があります。この理由から、Shadow トピックへのサブスクリプションにワイルドカードを使用しないことをお勧めします。例えば、 が新しいシャドウトピック AWS IoT を導入$aws/things/thingName/shadow/#
すると、このトピックフィルターに一致するトピックの数が増える可能性があるため、 のようなトピックフィルターへのサブスクライブは避けてください。これらのトピックでパブリッシュされたメッセージの例については、「シャドウとの相互作用」を参照してください。
シャドウは、名前付き、または名前のないもの (クラシック) にすることができます。それぞれで使用されるトピックは、トピックのプレフィックスでのみ異なります。この表は、各シャドウタイプで使用されるトピックのプレフィックスを示しています。
ShadowTopicPrefix value |
シャドウタイプ |
---|---|
$aws/things/ |
名前のない (クラシック) シャドウ |
$aws/things/ |
名前付きシャドウ |
完全なトピックを作成するには、次のセクションに示すように、参照するシャドウのタイプの
を選択し、ShadowTopicPrefix
と、thingName
(該当する場合) を対応する値に置き換え、トピックスタブにそれを追加します。shadowName
シャドウの操作に使用される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 レスポンス状態ドキュメント が含まれています
メッセージ本文の詳細
-
update/delta
にパブリッシュされたメッセージには、desired
セクションとreported
セクションとで異なる属性のみが含まれます。それら属性が、現在の更新メッセージに含まれていたか、 AWS IoTにすでに保存されていたかには関係ありません。desired
セクションとreported
セクションとで同じ属性は含まれません。 -
属性が
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 レスポンス状態ドキュメント が含まれています
ポリシーの例
以下に示しているのは、必要なポリシーの例です。
{ "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 レスポンス状態ドキュメント
ポリシーの例
以下に示しているのは、必要なポリシーの例です。
{ "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" ] } ] }