

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Exemplos de políticas de mensagens diretas
<a name="direct-messaging-policy-examples"></a>

O uso de mensagens diretas requer políticas específicas. As mensagens diretas usam a API SendDirectMessage HTTP para entregar mensagens de um remetente para um único destinatário identificado pelo ID do cliente MQTT. Esta seção apresenta exemplos de políticas que permitem o uso comum de mensagens diretas.

**Topics**
+ [Política para enviar uma mensagem direta a um cliente específico sobre tópicos específicos](#dm-policy-send-specific)
+ [Política para receber mensagens diretas](#dm-policy-receive)
+ [Política para enviar uma mensagem direta a qualquer cliente sobre tópicos específicos](#dm-policy-send-any-client)
+ [Política para enviar uma mensagem direta a qualquer cliente sobre qualquer assunto](#dm-policy-send-any-client-any-topic)

## Política para enviar uma mensagem direta a um cliente específico sobre tópicos específicos
<a name="dm-policy-send-specific"></a>

Para que um remetente envie mensagens diretas, ele deve ter `iot:SendDirectMessage` permissão com o ID do cliente de destino como recurso. A chave de `iot:Topic` condição (opcional) restringe os tópicos sobre os quais o remetente pode enviar mensagens.
+ Para servidores SigV4-authenticated de back-end, adicione isso a uma política do IAM.
+ Para dispositivos de X.509-authenticated IoT, adicione isso a uma AWS IoT Core política.
+ Para clientes personalizados autenticados pelo autorizador, a função Lambda deve retornar um documento de política concedendo o recurso do cliente de destino `iot:SendDirectMessage` com a chave de condição `iot:Topic`

A política a seguir permite que `device1` o cliente envie mensagens diretas ao cliente `myDevice` sobre os tópicos `commands/reboot` `commands/update` e.

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

## Política para receber mensagens diretas
<a name="dm-policy-receive"></a>

A política do destinatário deve conceder subsídios `iot:Receive` sobre o assunto. O destinatário não precisa de `iot:Subscribe` permissão — AWS IoT Core entrega mensagens diretas sem exigir uma assinatura de tópico. O destinatário pode se autenticar usando o certificado X.509 do cliente (AWS IoT Core política) ou SigV4 (política do IAM). Em ambos os casos, a `iot:Receive` permissão é necessária no tópico de recebimento.

A política a seguir permite que o cliente `myDevice` receptor receba mensagens diretas sobre os tópicos `commands/reboot` `commands/update` e.

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

A política a seguir usa um caractere curinga para permitir que o destinatário receba mensagens diretas sobre qualquer tópico sob o `commands/` prefixo.

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

**nota**  
O receptor deve estabelecer uma conexão MQTT AWS IoT Core antes de receber uma mensagem direta. As mensagens diretas não são colocadas na fila para dispositivos off-line.

## Política para enviar uma mensagem direta a qualquer cliente sobre tópicos específicos
<a name="dm-policy-send-any-client"></a>

A política a seguir permite que o remetente envie mensagens diretas para qualquer cliente, mas somente em tópicos que correspondam ao `commands/*` prefixo. Isso é útil para serviços de gerenciamento de frotas que precisam acessar qualquer dispositivo, mas somente para tópicos de comando específicos.

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

**nota**  
A chave de `iot:Topic` condição oferece suporte à correspondência de caracteres curinga com o operador de `StringLike` condição.

## Política para enviar uma mensagem direta a qualquer cliente sobre qualquer assunto
<a name="dm-policy-send-any-client-any-topic"></a>

A política a seguir permite que o remetente envie mensagens diretas para qualquer cliente sobre qualquer assunto. Isso é adequado para casos de uso administrativo ou de gerenciamento de frotas em que um serviço de back-end precisa de acesso irrestrito.

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