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.
Dans cette section :
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é avec 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 authentifiés par un autorisateur personnalisé, la fonction Lambda doit renvoyer un document de politique accordant la ressource au client cible avec
iot:SendDirectMessagela clé de conditioniot: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 de réception de messages directs
La politique du destinataire doit accorder une autorisation iot:Receive sur le sujet. Le destinataire n'a pas besoin d'iot:Subscribeautorisation : il AWS IoT Core envoie des messages directs sans qu'il soit nécessaire de s'abonner à un sujet. Le récepteur peut s'authentifier à l'aide d'un certificat X.509 client (AWS IoT Core politique) ou de SigV4 (stratégie IAM). Dans les deux cas, l'iot:Receiveautorisation est requise pour le sujet destinataire.
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 avec 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 à n'importe quel 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. Cela 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 par caractères génériques avec l'opérateur de StringLike condition.
Politique d'envoi d'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 liés à l'administration ou à la gestion de flotte où 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": "*" } } } ] }