

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
<a name="direct-messaging-policy-examples"></a>

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.

**Topics**
+ [Politique d'envoi d'un message direct à un client spécifique sur des sujets spécifiques](#dm-policy-send-specific)
+ [Politique de réception de messages directs](#dm-policy-receive)
+ [Politique d'envoi d'un message direct à n'importe quel client sur des sujets spécifiques](#dm-policy-send-any-client)
+ [Politique d'envoi d'un message direct à n'importe quel client sur n'importe quel sujet](#dm-policy-send-any-client-any-topic)

## Politique d'envoi d'un message direct à un client spécifique sur des sujets spécifiques
<a name="dm-policy-send-specific"></a>

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: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` et`commands/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
<a name="dm-policy-receive"></a>

La politique du destinataire doit accorder une autorisation `iot:Receive` sur le sujet. Le destinataire n'a pas besoin d'`iot:Subscribe`autorisation : 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:Receive`autorisation est requise pour le sujet destinataire.

La politique suivante permet au client destinataire `myDevice` de recevoir des messages directs sur les sujets `commands/reboot` et`commands/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
<a name="dm-policy-send-any-client"></a>

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
<a name="dm-policy-send-any-client-any-topic"></a>

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": "*"
                }
            }
        }
    ]
}
```