Rubriques MQTT de Device Shadow - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Rubriques MQTT de Device Shadow

Le service Device Shadow utilise des rubriques MQTT réservées pour permettre à des appareils et à des applications d'obtenir, de mettre à jour ou de supprimer les informations d'état d'un appareil (shadow).

La publication et l'abonnement à des rubriques shadow nécessite une autorisation basée sur les rubriques. AWS IoT se réserve le droit d'ajouter de nouvelles rubriques à la structure de rubriques existante. C'est pourquoi nous vous recommandons d'éviter les abonnements de caractère générique aux rubriques shadow. Par exemple, évitez de vous abonner à des filtres de sujets, $aws/things/thingName/shadow/# car le nombre de sujets correspondant à ce filtre de sujet peut augmenter à mesure que de nouveaux AWS IoT sujets secondaires seront introduits. Pour consulter des messages publiés dans ces rubriques, consultez Interaction avec les shadows.

Les shadows peuvent être nommés ou non (classique). Les rubriques utilisées par chacun d'eux ne diffèrent que par le préfixe de rubrique. Ce tableau indique le préfixe de rubrique utilisé par chaque type de shadow.

Valeur ShadowTopicPrefix Type de shadow
$aws/things/thingName/shadow Shadow non nommé (classique)
$aws/things/thingName/shadow/name/shadowName Shadow nommé

Pour créer une rubrique complète, sélectionnez le ShadowTopicPrefix pour le type de shadow auquel vous souhaitez faire référence, remplacez thingName, et shadowName le cas échéant, par leurs valeurs correspondantes, puis ajoutez cela au stub de rubrique comme indiqué dans les sections suivantes.

Voici les rubriques MQTT utilisés pour interagir avec les shadows.

/get

Publier un message vide dans cette rubrique pour obtenir le shadow d'appareil :

ShadowTopicPrefix/get

AWS IoT répond en publiant à l'un /get/accepted ou à l'autre/get/rejected.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un document d'ombre de réponse dans cette rubrique lors du renvoi de l'ombre de l'appareil :

ShadowTopicPrefix/get/accepted

Pour de plus amples informations, veuillez consulter Documents d'état de la réponse.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un document de réponse aux erreurs dans cette rubrique lorsqu'il ne parvient pas à renvoyer l'ombre de l'appareil :

ShadowTopicPrefix/get/rejected

Pour de plus amples informations, veuillez consulter Document de réponse d'erreur.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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

Publier un document d'état de la demande dans cette rubrique pour mettre à jour l'objet d'appareil :

ShadowTopicPrefix/update

Le corps du message contient un document d'état de demande partiel.

Un client tentant de mettre à jour l'état d'un appareil enverrait un document d'état de demande JSON avec la propriété desired comme la suivante :

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

Un appareil mettant à jour son shadow enverrait un document d'état de demande JSON avec la propriété reported, comme ceci :

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

AWS IoT répond en publiant à l'un /update/accepted ou à l'autre/update/rejected.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un document d'état de réponse dans cette rubrique lorsqu'il accepte une modification de l'ombre du périphérique, et le document d'état de la demande contient des valeurs desired et des reported états différents :

ShadowTopicPrefix/update/delta

Le tampon de messages contient un /documents d'état de la réponse delta.

Détails du corps de message

  • Un message publié dans update/delta comprend uniquement les attributs « souhaité » qui diffèrent entre les sections desired et reported. Il contient tous ces attributs, indépendamment qu'ils aient été contenus dans le message de mise à jour actuel ou qu'ils aient déjà été stockés dans AWS IoT. Les attributs qui ne diffèrent pas entre les sections desired et reported ne sont pas inclus.

  • Si un attribut figure dans la section reported, mais qu'il n'a aucun équivalent dans la section desired, il n'est pas inclus.

  • Si un attribut figure dans la section desired, mais qu'il n'a aucun équivalent dans la section reported, il n'est pas inclus.

  • Si un attribut est supprimé de la section reported, mais qu'il existe toujours dans la section desired, il est inclus.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un document d'état de réponse dans cette rubrique lorsqu'il accepte une modification de l'ombre de l'appareil :

ShadowTopicPrefix/update/accepted

Le tampon de messages contient un /document d'état de la réponse accepté.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un document d'état sur cette rubrique chaque fois qu'une mise à jour du shadow est effectuée avec succès :

ShadowTopicPrefix/update/documents

Le corps du message contient un /documents d'état de la réponse documents.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un document de réponse aux erreurs dans cette rubrique lorsqu'il rejette une modification concernant l'ombre de l'appareil :

ShadowTopicPrefix/update/rejected

Le corps du message contient un Document de réponse d'erreur.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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

Pour supprimer un shadow d'appareil, publiez un message vide dans la rubrique delete :

ShadowTopicPrefix/delete

Le contenu du message est ignoré.

Notez que la suppression d'une ombre ne rétablit pas son numéro de version à 0.

AWS IoT répond en publiant à l'un /delete/accepted ou à l'autre/delete/rejected.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un message dans cette rubrique lorsque l'ombre d'un appareil est supprimée :

ShadowTopicPrefix/delete/accepted

Exemple de stratégie

Voici un exemple de document de stratégie requise :

{ "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 publie un document de réponse aux erreurs dans cette rubrique lorsqu'il ne parvient pas à supprimer l'ombre de l'appareil :

ShadowTopicPrefix/delete/rejected

Le corps du message contient un Document de réponse d'erreur.

Exemple de stratégie

Voici un exemple de document de stratégie requise :

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