View a markdown version of this page

Exemplos de políticas de mensagens diretas - AWS IoT Core

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

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.

Política para enviar uma mensagem direta a um cliente específico sobre tópicos específicos

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