View a markdown version of this page

Ejemplos de políticas de mensajería directa - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplos de políticas de mensajería directa

El uso de la mensajería directa requiere políticas específicas. La mensajería directa utiliza la API SendDirectMessage HTTP para enviar los mensajes de un remitente a un único destinatario identificado por su ID de cliente en MQTT. En esta sección se presentan ejemplos de políticas que permiten el uso habitual de la mensajería directa.

Política para enviar un mensaje directo a un cliente específico sobre temas específicos

Para que un remitente envíe mensajes directos, debe tener iot:SendDirectMessage permiso y utilizar el ID del cliente de destino como recurso. La clave de iot:Topic condición (opcional) restringe los temas sobre los que el remitente puede enviar mensajes.

  • En el caso SigV4-authenticated de los servidores back-end, agréguelo a una política de IAM.

  • En el caso X.509-authenticated de los dispositivos de IoT, añada esto a una AWS IoT Core política.

  • En el caso de los clientes personalizados autenticados mediante el autorizador, la función Lambda debe devolver un documento de política que otorgue iot:SendDirectMessage la autorización al recurso del cliente de destino con la clave de condición iot:Topic

La siguiente política permite al cliente enviar mensajes directos device1 al cliente myDevice sobre los temas y. commands/reboot 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"] } } } ] }

Política de recepción de mensajes directos

La política del destinatario debe ser favorable iot:Receive en relación con el tema. El destinatario no necesita iot:Subscribe permiso: AWS IoT Core envía mensajes directos sin necesidad de suscribirse al tema. El receptor puede autenticarse mediante un certificado de X.509 cliente (AWS IoT Core política) o SigV4 (política de IAM). En ambos casos, se requiere el iot:Receive permiso para el tema receptor.

La siguiente política permite al cliente receptor myDevice recibir mensajes directos sobre los temas commands/reboot ycommands/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 siguiente política utiliza un comodín para permitir al receptor recibir mensajes directos sobre cualquier tema con el commands/ prefijo.

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

El receptor debe establecer una conexión MQTT con AWS IoT Core antes de recibir un mensaje directo. Los mensajes directos no están en cola para los dispositivos sin conexión.

Política para enviar un mensaje directo a cualquier cliente sobre temas específicos

La siguiente política permite al remitente enviar mensajes directos a cualquier cliente, pero solo sobre temas que coincidan con el commands/* prefijo. Esto resulta útil para los servicios de administración de flotas que necesitan acceder a cualquier dispositivo, pero solo para temas específicos relacionados con los comandos.

{ "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

La clave de iot:Topic condición permite hacer coincidir caracteres comodín con el operador de StringLike condición.

Política para enviar un mensaje directo a cualquier cliente sobre cualquier tema

La siguiente política permite al remitente enviar mensajes directos a cualquier cliente sobre cualquier tema. Esto es adecuado para casos de uso administrativo o de gestión de flotas en los que un servicio de backend necesita un acceso sin restricciones.

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