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 entregar los mensajes de un remitente a un único receptor identificado por su ID de cliente MQTT. En esta sección se presentan ejemplos de políticas que permiten los usos comunes 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, el remitente debe tener iot:SendDirectMessage permiso con 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 X.509-authenticated caso de los dispositivos de IoT, agréguelo a una AWS IoT Core política.

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

La siguiente política permite al cliente enviar mensajes directos device1 al cliente sobre los temas y. myDevice 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 válida iot:Receive sobre el tema. El destinatario no necesita iot:Subscribe permiso: AWS IoT Core envía mensajes directos sin necesidad de suscribirse a un 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 sobre el tema de recepción.

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 destinatario 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 AWS IoT Core antes de recibir un mensaje directo. Los mensajes directos no se ponen en cola para los dispositivos que están fuera de línea.

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 llegar a cualquier dispositivo, pero solo para temas de mando 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

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

Política de 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 back-end 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": "*" } } } ] }