View a markdown version of this page

Exemples de politiques de messagerie directe - 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.

Exemples de politiques de messagerie directe

L'utilisation de la messagerie directe nécessite des politiques spécifiques. La messagerie directe utilise l'API SendDirectMessage HTTP pour transmettre les messages d'un expéditeur à un seul destinataire identifié par son ID client MQTT. Cette section présente des exemples de politiques qui autorisent les utilisations courantes de la messagerie directe.

Politique d'envoi d'un message direct à un client spécifique sur des sujets spécifiques

Pour qu'un expéditeur puisse envoyer des messages directs, il doit être iot:SendDirectMessage autorisé à utiliser l'ID du client cible comme ressource. La clé de iot:Topic condition (facultative) limite les sujets sur lesquels l'expéditeur peut envoyer des messages.

  • Pour SigV4-authenticated les serveurs principaux, ajoutez-le à une politique IAM.

  • Pour les appareils X.509-authenticated IoT, ajoutez-le à une AWS IoT Core politique.

  • Pour les clients personnalisés authentifiés par un autorisateur, la fonction Lambda doit renvoyer un document de politique autorisant la ressource cliente cible avec iot:SendDirectMessage la clé de condition iot:Topic

La politique suivante permet device1 au client d'envoyer des messages directs au client myDevice sur les sujets commands/reboot etcommands/update.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/myDevice", "Condition": { "StringEquals": { "iot:Topic": ["commands/reboot", "commands/update"] } } } ] }

Politique relative à la réception de messages directs

La politique du bénéficiaire doit être favorable iot:Receive sur le sujet. Le destinataire n'a pas besoin d'iot:Subscribeautorisation : il AWS IoT Core envoie des messages directs sans avoir besoin d'un abonnement thématique. Le récepteur peut s'authentifier à l'aide d'un certificat X.509 client (AWS IoT Core politique) ou de SIGv4 (politique IAM). Dans les deux cas, l'iot:Receiveautorisation est requise pour le sujet de réception.

La politique suivante permet au client destinataire myDevice de recevoir des messages directs sur les sujets commands/reboot etcommands/update.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/reboot" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/update" } ] }

La politique suivante utilise un caractère générique pour permettre au destinataire de recevoir des messages directs sur n'importe quel sujet sous le commands/ préfixe.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/*" } ] }
Note

Le récepteur doit établir une connexion MQTT AWS IoT Core avant de recevoir un message direct. Les messages directs ne sont pas mis en file d'attente pour les appareils hors ligne.

Politique d'envoi d'un message direct à tout client sur des sujets spécifiques

La politique suivante permet à l'expéditeur d'envoyer des messages directs à n'importe quel client, mais uniquement sur des sujets correspondant au commands/* préfixe. Ceci est utile pour les services de gestion de flotte qui doivent accéder à n'importe quel appareil, mais uniquement pour des sujets de commande spécifiques.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "commands/*" } } } ] }
Note

La clé de iot:Topic condition prend en charge la correspondance entre les caractères génériques et l'opérateur de StringLike condition.

Politique visant à envoyer un message direct à n'importe quel client sur n'importe quel sujet

La politique suivante permet à l'expéditeur d'envoyer des messages directs à n'importe quel client sur n'importe quel sujet. Cela convient aux cas d'utilisation administratifs ou de gestion de flotte dans lesquels un service principal nécessite un accès illimité.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "*" } } } ] }