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.
En esta sección:
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:SendDirectMessagela autorización al recurso del cliente de destino con la clave de condicióniot: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": "*" } } } ] }