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.
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, 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:SendDirectMessagela clave de condicióniot: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": "*" } } } ] }