Iot DG
Iot DG
Las marcas comerciales y la imagen comercial de Amazon no se pueden utilizar en relación con ningún producto o
servicio que no sea de Amazon de ninguna manera que pueda causar confusión entre los clientes y que menosprecie
o desacredite a Amazon. Todas las demás marcas comerciales que no sean propiedad de Amazon son propiedad de
sus respectivos propietarios, que pueden o no estar afiliados, conectados o patrocinados por Amazon.
AWS IoT Core Guía para desarrolladores
Table of Contents
¿Qué es AWS IoT? ............................................................................................................................ 1
Cómo acceden tus dispositivos y aplicacionesAWS IoT .................................................................... 1
QuéAWS IoTpuede hacer ............................................................................................................ 2
IoT en la industria .............................................................................................................. 2
IoT en la automatización del hogar ....................................................................................... 3
Cómo funciona AWS IoT ............................................................................................................. 3
El universo IoT ................................................................................................................... 3
AWS IoTdescripción general de los servicios .......................................................................... 6
Servicios de AWS IoT Core ................................................................................................. 9
Obtener más información sobre AWS IoT ..................................................................................... 12
Recursos de formación paraAWS IoT .................................................................................. 12
AWS IoTrecursos y guías .................................................................................................. 12
AWS IoTen las redes sociales ............................................................................................ 13
AWSservicios utilizados porAWS IoT Coremotor de reglas ...................................................... 13
Protocolos de comunicación compatibles conAWS IoT Core .................................................... 14
Novedades de laAWS IoT consola de de de de de de la de de ........................................................ 14
Leyenda .......................................................................................................................... 16
Introducción a AWS IoT Core ............................................................................................................. 18
Conecta tu primer dispositivo aAWS IoT Core ............................................................................... 18
Configura tuCuenta de AWS ...................................................................................................... 19
Registro en una Cuenta de AWS ........................................................................................ 19
Crear un usuario administrativo ........................................................................................... 20
Abra elAWS IoTconsola ..................................................................................................... 20
Pruebe elAWS IoT Coretutorial interactivo .................................................................................... 21
Conexión de dispositivos de IoT ......................................................................................... 21
Guardar el estado del dispositivo sin conexión ...................................................................... 22
Enrutamiento de los datos del dispositivo a los servicios ......................................................... 23
Pruebe elAWS IoTconexión rápida .............................................................................................. 23
Paso 1. Iniciar el tutorial .................................................................................................... 24
Paso 2. Crea una cosa (objeto) .......................................................................................... 24
Paso 3. Descarga archivos a tu dispositivo ........................................................................... 27
Paso 4. Ejecute la muestra ................................................................................................ 29
Paso 5. Explore más ......................................................................................................... 33
Probar la conectividad con el terminal de datos de su dispositivo ............................................. 33
ExploreAWS IoT Coreservicios en un tutorial práctico ..................................................................... 37
¿Qué opción de dispositivo es la mejor para ti? .................................................................... 38
CrearAWS IoTrecursos ...................................................................................................... 39
Configuración del dispositivo .............................................................................................. 42
Ver los mensajes MQTT con el cliente MQTT de AWS IoT .............................................................. 69
Visualización de mensajes MQTT en el cliente MQTT ............................................................ 69
Publicación de mensajes MQTT desde el cliente MQTT .......................................................... 71
Prueba de suscripciones compartidas en el cliente MQTT ....................................................... 72
Conexión a AWS IoT Core ................................................................................................................. 74
AWS IoT Core- puntos finales del plano de control ........................................................................ 74
AWS IoTpuntos finales del dispositivo .......................................................................................... 75
AWS IoT CoreporLoRaPuertas de enlace y dispositivos WAN .......................................................... 76
Conectarse aAWS IoT Corepuntos finales de servicio .................................................................... 77
AWS CLI para AWS IoT Core ............................................................................................ 77
SDK de AWS ................................................................................................................... 78
AWS Mobile SDK ............................................................................................................. 82
API REST delAWS IoT Coreservicios .................................................................................. 82
Conexión de dispositivos aAWS IoT ............................................................................................ 83
AWS IoTpuntos finales de servicio y datos del dispositivo ....................................................... 83
SDK de dispositivos de AWS IoT ........................................................................................ 85
iii
AWS IoT Core Guía para desarrolladores
iv
AWS IoT Core Guía para desarrolladores
v
AWS IoT Core Guía para desarrolladores
vi
AWS IoT Core Guía para desarrolladores
vii
AWS IoT Core Guía para desarrolladores
viii
AWS IoT Core Guía para desarrolladores
ix
AWS IoT Core Guía para desarrolladores
x
AWS IoT Core Guía para desarrolladores
xi
AWS IoT Core Guía para desarrolladores
xii
AWS IoT Core Guía para desarrolladores
xiii
AWS IoT Core Guía para desarrolladores
xiv
AWS IoT Core Guía para desarrolladores
xv
AWS IoT Core Guía para desarrolladores
Cómo acceden tus dispositivos y aplicacionesAWS IoT
Para una introducción práctica aAWS IoT, visitaIntroducción a AWS IoT Core (p. 18).
AWS IoTle permite seleccionar la más adecuada yup-to-datetecnologías para su solución. Para ayudarlo a
administrar y brindar soporte a sus dispositivos de IoT sobre el terreno,AWS IoT Coreadmite los siguientes
protocolos:
ElAWS IoT CoreEl corredor de mensajes admite dispositivos y clientes que utilizan los protocolos MQTT
y MQTT a través de WSS para publicar mensajes y suscribirse a ellos. También es compatible con
dispositivos y clientes que utilizan el protocolo HTTPS para publicar mensajes.
1
AWS IoT Core Guía para desarrolladores
QuéAWS IoTpuede hacer
• AWS IoTSDK de dispositivos—Cree aplicaciones en sus dispositivos que envíen mensajes y reciban
mensajes desdeAWS IoT. Para obtener más información, consulte AWS IoTSDK para dispositivos, SDK
para dispositivos móviles yAWS IoTCliente de dispositivo (p. 1489).
• AWS IoT CoreporLoRaMENDIGO—Conecte y administre su WAN de largo alcance (LoRadispositivos y
puertas de enlace (WAN) medianteAWS IoT CoreporLoRaMENDIGO (p. 1272).
• AWS Command Line Interface (AWS CLI): ejecuta comandos para AWS IoT en Windows, macOS X y
Linux. Estos comandos le permiten crear y administrar objetos, certificados, reglas, trabajos y políticas.
Para empezar, consulte la AWS Command Line Interface Guía de usuario de . Para obtener más
información acerca de los comandos deAWS IoT, consultemotínen elAWS CLIReferencia de comando.
• AWS IoT API - Cree sus aplicaciones IoT mediante solicitudes HTTP o HTTPS. Estas acciones de la
API le permiten crear y administrar objetos, certificados, reglas y políticas de manera programática. Para
obtener más información acerca de las acciones de la API para AWS IoT, consulte las acciones en las
referencias de API de AWS IoT.
• AWSSDK—Cree sus aplicaciones de IoT mediante API específicas para cada idioma. Estos SDK
integran las API de HTTP/HTTPS y le permiten programar en cualquiera de los lenguajes admitidos.
Para obtener más información, consulte SDK y herramientas de AWS.
También puedes accederAWS IoTa través delAWS IoTconsola, que proporciona una interfaz gráfica de
usuario (GUI) a través de la cual puede configurar y administrar los objetos, los certificados, las reglas, los
trabajos, las políticas y otros elementos de sus soluciones de IoT.
IoT en la industria
Estos son algunos ejemplos deAWS IoTsoluciones paracasos de uso industrialque aplican tecnologías de
IoT para mejorar el rendimiento y la productividad de los procesos industriales.
Vea cómoAWS IoTpuede recopilar y analizar datos de operaciones industriales para crear modelos
predictivos de calidad. Más información
• UsaAWS IoTpara respaldar el mantenimiento predictivo en las operaciones industriales
Vea cómoAWS IoTpuede ayudar a planificar el mantenimiento preventivo para reducir el tiempo de
inactividad no planificado. Más información
2
AWS IoT Core Guía para desarrolladores
IoT en la automatización del hogar
Estos son algunos ejemplos deAWS IoTsoluciones paracasos de uso de automatización del hogarque
aplican tecnologías de IoT para crear aplicaciones de IoT escalables que automaticen las actividades del
hogar mediante dispositivos domésticos conectados.
Para obtener una lista de soluciones para casos de uso industrial, comercial y de consumo, consulteAWS
IoTRepositorio de soluciones.
El universo IoT
En general, el Internet de las cosas (IoT) se compone de los componentes clave que se muestran en este
diagrama.
3
AWS IoT Core Guía para desarrolladores
El universo IoT
móviles
Las aplicaciones permiten a los usuarios finales acceder a los dispositivos de IoT y a las funciones que
proporcionan los servicios en la nube a los que están conectados esos dispositivos.
Servicios en la nube
Los servicios en la nube son servicios de almacenamiento y procesamiento de datos distribuidos y a gran
escala que están conectados a Internet. Entre los ejemplos se incluyen:
Comunicaciones
Los dispositivos se comunican con los servicios en la nube mediante diversas tecnologías y protocolos.
Entre los ejemplos se incluyen:
4
AWS IoT Core Guía para desarrolladores
El universo IoT
Dispositivos
Un dispositivo es un tipo de hardware que administra las interfaces y las comunicaciones. Los dispositivos
suelen estar ubicados muy cerca de las interfaces del mundo real que supervisan y controlan. Los
dispositivos pueden incluir recursos informáticos y de almacenamiento, como microcontroladores, CPU y
memoria. Entre los ejemplos se incluyen:
• Raspberry Pi
• Arduino
• Asistentes de interfaz de voz
• LoRaWAN y dispositivos
• Dispositivos Amazon Sidewalk
• Dispositivos IoT personalizados
Interfaces
Una interfaz es un componente que conecta un dispositivo con el mundo físico.
• Interfaces de usuario
Componentes que permiten que los dispositivos y los usuarios se comuniquen entre sí.
• Interfaces de entrada
Componentes de entrada que miden o detectan algo en el mundo exterior de una manera que un
dispositivo entiende. Entre los ejemplos se incluyen:
• Sensor de temperatura (convierte la temperatura en una señal analógica o digital)
• Sensor de humedad (convierte la humedad relativa en una señal analógica o digital)
• Convertidor analógico a digital (convierte una tensión analógica en un valor numérico)
• Unidad de medición de distancia por ultrasonidos (convierte una distancia en un valor numérico)
• Sensor óptico (convierte un nivel de luz en un valor numérico)
• Cámara (convierte los datos de imagen en datos digitales)
• Actuadores
Componentes de salida que el dispositivo puede usar para controlar algo en el mundo exterior. Entre los
ejemplos se incluyen:
• Motores paso a paso (convierten las señales eléctricas en movimiento)
• Relés (controlan altas tensiones y corrientes eléctricas)
5
AWS IoT Core Guía para desarrolladores
AWS IoTdescripción general de los servicios
ElAWS IoTSDK para dispositivos y dispositivos móviles (p. 1489)le ayudan a conectar sus dispositivos
de manera eficiente aAWS IoT. Los de AWS IoT para dispositivos y móviles contienen bibliotecas de
código abierto, guías para desarrolladores con ejemplos y guías de portabilidad para que pueda crear
innovadores productos y soluciones de IoT en las plataformas de hardware que prefiera.
AWS IoT Device Tester
AWS IoT Device Testerpara FreeRTOS yAWS IoT Greengrasses una herramienta de automatización
de pruebas para microcontroladores.AWS IoT Device Testerprueba su dispositivo para determinar si
ejecutará FreeRTOS oAWS IoT Greengrasse interoperar conAWS IoTservicios.
AWS IoT ExpressLink
AWS IoT Greengrassse extiendeAWS IoTa dispositivos periféricos para que puedan actuar localmente
en función de los datos que generan, ejecutar predicciones basadas en modelos de aprendizaje
automático y filtrar y agregar los datos de los dispositivos.AWS IoT Greengrasspermite que sus
6
AWS IoT Core Guía para desarrolladores
AWS IoTdescripción general de los servicios
dispositivos recopilen y analicen datos más cerca de donde se generan esos datos, reaccionen de
forma autónoma ante los eventos locales y se comuniquen de forma segura con otros dispositivos de
la red local. Puedes usarAWS IoT Greengrasspara crear aplicaciones periféricas mediante módulos de
software prediseñados, denominados componentes, que pueden conectar sus dispositivos periféricos
aAWSservicios o servicios de terceros.
FreeRTOS
RTOS gratuitoses un sistema operativo de código abierto y en tiempo real para microcontroladores
que le permite incluir dispositivos periféricos pequeños y de bajo consumo en su solución de IoT.
FreeRTOS incluye un núcleo y un conjunto creciente de bibliotecas de software que admiten muchas
aplicaciones. Los sistemas FreeRTOS pueden conectar de forma segura sus dispositivos pequeños y
de bajo consumo aAWS IoTy admiten la ejecución de dispositivos periféricos más potentesAWS IoT
Greengrass.
AWS IoT Corees un servicio de nube gestionado que permite a los dispositivos conectados interactuar
de forma segura con las aplicaciones en la nube y otros dispositivos.AWS IoT Corepuede admitir
muchos dispositivos y mensajes, y puede procesar y enrutar esos mensajes aAWS IoTpuntos finales
y otros dispositivos. ConAWS IoT Core, tus aplicaciones pueden interactuar con todos tus dispositivos
incluso cuando no estén conectados.
AWS IoT Core Device Advisor
AWS IoT CoreAsesor de dispositivoses una capacidad de prueba totalmente gestionada y basada en
la nube para validar los dispositivos de IoT durante el desarrollo del software del dispositivo. Device
Advisor proporciona pruebas prediseñadas que puede utilizar para validar los dispositivos de IoT y
lograr una conectividad confiable y segura conAWS IoT Core, antes de implementar los dispositivos en
producción.
AWS IoT Device Defender
AWS IoTDefensor de dispositivosle ayuda a proteger su flota de dispositivos de IoT.AWS IoT Device
Defender audita continuamente sus configuraciones de IoT para asegurarse de que no se desvíen
de las mejores prácticas de seguridad.AWS IoT Device Defender envía una alerta cuando detecta
cualquier brecha en la configuración de IoT que pueda suponer un riesgo para la seguridad, como
certificados de identidad que se comparten en varios dispositivos o un dispositivo con un certificado de
identidad revocado que intenta conectarse aAWS IoT Core.
AWS IoTAdministración de dispositivos
7
AWS IoT Core Guía para desarrolladores
AWS IoTdescripción general de los servicios
Transmisiones de vídeo de Amazon Kinesisle permite transmitir vídeo en directo desde dispositivos
aAWSLa nube, donde se almacena, cifra e indexa de forma duradera, lo que le permite acceder a
sus datos a través deeasy-to-useAPIs. Puede utilizar Amazon Kinesis Video Streams para capturar
enormes cantidades de datos de vídeo en directo de millones de fuentes, incluidos teléfonos
inteligentes, cámaras de seguridad, cámaras web, cámaras integradas en automóviles, drones y otras
fuentes. Amazon Kinesis Video Streams le permite reproducir vídeos para verlos en directo y bajo
demanda, y crear rápidamente aplicaciones que aprovechen la visión artificial y el análisis de vídeo
mediante la integración con Amazon Rekognition Video y bibliotecas para marcos de aprendizaje
automático. También puede enviar datos serializados en el tiempo que no sean de vídeo, como, por
ejemplo, datos de audio, imágenes térmicas, datos de profundidad, datos de radar y mucho más.
Transmisiones de vídeo de Amazon Kinesis con WebRTC
AWS IoTEventosdetecta y responde a los eventos de los sensores y aplicaciones de IoT. Los eventos
son patrones de datos que identifican circunstancias más complicadas de lo esperado, como los
detectores de movimiento que utilizan señales de movimiento para activar las luces y las cámaras de
seguridad.AWS IoT Events monitorea continuamente los datos de múltiples sensores y aplicaciones
de IoT y se integra con otros servicios, comoAWS IoT Core, Internet de las cosasSiteWise, DynamoDB
y otros para permitir la detección temprana y obtener información única.
AWS IoT FleetWise
AWS IoT FleetWisees un servicio gestionado que puede utilizar para recopilar y transferir datos
de vehículos a la nube prácticamente en tiempo real. ConAWS IoT FleetWise, puede recopilar y
organizar fácilmente datos de vehículos que utilizan diferentes protocolos y formatos de datos.AWS
IoT FleetWiseayuda a transformar los mensajes de bajo nivel en valores legibles por humanos y
a estandarizar el formato de los datos en la nube para el análisis de datos. También puede definir
esquemas de recopilación de datos para controlar qué datos recopilar en los vehículos y cuándo
transferirlos a la nube.
AWS IoT SiteWise
AWS IoT SiteWiserecopila, almacena, organiza y monitorea los datos transmitidos desde los equipos
industriales mediante mensajes o API de MQTT a gran escala, proporcionando un software que se
ejecuta en una puerta de enlace en sus instalaciones. La pasarela se conecta de forma segura a los
servidores de datos locales y automatiza el proceso de recopilación y organización de los datos y su
envío alAWSNube.
8
AWS IoT Core Guía para desarrolladores
Servicios de AWS IoT Core
AWS IoT TwinMakerconstruye gemelos digitales operativos de sistemas físicos y digitales.AWS IoT
TwinMakercrea visualizaciones digitales mediante mediciones y análisis de una variedad de sensores,
cámaras y aplicaciones empresariales del mundo real para ayudarlo a realizar un seguimiento de
su fábrica física, edificio o planta industrial. Puede utilizar datos del mundo real para supervisar las
operaciones, diagnosticar y corregir errores y optimizar las operaciones.
En la siguiente sección se describe cada uno de losAWS IoT Coreservicios que se muestran en la
ilustración.
Gateway de dispositivos
Permite a los dispositivos comunicarse de forma segura y eficaz con AWS IoT. La comunicación del
dispositivo está protegida por protocolos seguros que utilizan certificados X.509.
Agente de mensajes
Proporciona un mecanismo seguro para que los dispositivos y las aplicaciones de AWS IoT publiquen
y reciban mensajes entre sí. Puede utilizar el protocolo MQTT directamente o MQTT a través
deWebSocketpara publicar y suscribirse. Para obtener más información sobre los protocolos queAWS
IoTsoportes, consultethe section called “Protocolos de comunicación de dispositivos” (p. 87). Los
dispositivos y los clientes también pueden usar la interfaz HTTP REST para publicar datos en el
intermediario de mensajes.
El agente de mensajes distribuye los datos del dispositivo a los dispositivos que se han suscrito a él y
a otrosAWS IoT Coreservicios, como el servicio Device Shadow y el motor de reglas.
9
AWS IoT Core Guía para desarrolladores
Servicios de AWS IoT Core
AWS IoT CoreporLoRaLa WAN permite configurar una red privadaLoRaRed WAN mediante la
conexión de suLoRaDispositivos WAN y puertas de enlace aAWSsin la necesidad de desarrollar y
operar unLoRaServidor de red WAN (LNS). Mensajes recibidos deLoRaLos dispositivos WAN se
envían al motor de reglas, donde se pueden formatear y enviar a otrosAWS IoTservicios.
Motor de reglas
El motor de reglas conecta los datos del intermediario de mensajes con otrosAWS IoTservicios de
almacenamiento y procesamiento adicional. Por ejemplo, puede insertar, actualizar o consultar una
tabla de DynamoDB o invocar una función de Lambda en función de una expresión que haya definido
en el motor de reglas. Puede utilizar un lenguaje basado en SQL para seleccionar datos de las cargas
de mensajes y, a continuación, procesarlos y enviarlos a otros servicios, como Amazon Simple
Storage Service (Amazon S3), Amazon DynamoDB yAWS Lambda. También puede crear reglas que
vuelvan a publicar los mensajes en el intermediario de mensajes y en otros suscriptores. Para obtener
más información, consulte Reglas para AWS IoT (p. 516).
Le permite aprovisionar dispositivos mediante una plantilla que describe los recursos necesarios para
su dispositivo: aobjeto objeto, un certificado y una o más políticas. Un objeto objeto es una entrada del
registro que contiene atributos que describen un dispositivo. Los dispositivos usan certificados para
realizar la autenticación con AWS IoT. Las políticas determinan qué operaciones pueden realizar los
dispositivos en AWS IoT.
Las plantillas contienen variables que se sustituirán por los valores en un diccionario (mapa).
Puede usar la misma plantilla para aprovisionar varios dispositivos tan solo pasando diferentes
valores para las variables de la plantilla en el diccionario. Para obtener más información, consulte
Aprovisionamiento de dispositivos (p. 886).
Registro de grupos
Los grupos permiten administrar varios dispositivos a la vez clasificándolos en grupos. Los grupos
también pueden contener grupos; puede crear una jerarquía de grupos. Cualquier acción que realice
en un grupo principal se aplicará a sus grupos secundarios. La misma acción también se aplica
a todos los dispositivos del grupo principal y a todos los dispositivos de los grupos secundarios.
Los permisos concedidos a un grupo se aplicarán a todos los dispositivos del grupo y a todos sus
grupos secundarios. Para obtener más información, consulte Administración de dispositivos con AWS
IoT (p. 281).
Servicio de Jobs
Permite definir un conjunto de operaciones remotas que se envían y se ejecutan en uno o más
dispositivos conectados aAWS IoT. Por ejemplo, puede definir un trabajo que indique a un conjunto de
10
AWS IoT Core Guía para desarrolladores
Servicios de AWS IoT Core
Para crear un trabajo, especifique una descripción de las operaciones remotas que se van a realizar y
una lista de destinos que deben realizarlas. Los destinos pueden ser dispositivos individuales, grupos
o ambos. Para obtener más información, consulte Trabajos (p. 731).
Registry (Registro)
Organiza los recursos asociados a cada dispositivo enAWSNube. Es necesario registrar los
dispositivos y asociar hasta tres atributos personalizados a cada uno. También es posible asociar
certificados e ID de cliente MQTT a cada dispositivo para poder administrarlos y solucionar los
problemas que presenten con mayor facilidad. Para obtener más información, consulte Administración
de dispositivos con AWS IoT (p. 281).
Servicio de seguridad e identidad
Documento JSON utilizado para almacenar y recuperar información del estado actual de un
dispositivo.
Servicio Device Shadow
El servicio Device Shadow mantiene el estado del dispositivo para que las aplicaciones puedan
comunicarse con él, ya sea que el dispositivo esté en línea o no. Cuando un dispositivo está
desconectado, el servicio Device Shadow administra los datos de las aplicaciones conectadas.
Cuando el dispositivo se vuelve a conectar, sincroniza su estado con el de su sombra en el servicio
Device Shadow. Los dispositivos también pueden publicar su estado actual en una sombra para
que las aplicaciones u otros dispositivos que no estén conectados todo el tiempo. Para obtener más
información, consulte Servicio Device Shadow de AWS IoT (p. 683).
Amazon Sidewalkes una red compartida que mejora las opciones de conectividad para ayudar a que
los dispositivos funcionen mejor juntos. Amazon Sidewalk es compatible con una amplia gama de
dispositivos de los clientes, como los que localizan mascotas u objetos de valor, los que proporcionan
un control inteligente de la seguridad del hogar y la iluminación, y los que proporcionan diagnósticos
remotos para electrodomésticos y herramientas. Integración con Amazon Sidewalk paraAWS IoT
Corepermite a los fabricantes de dispositivos añadir su flota de dispositivos Sidewalk a laAWS
IoTNube.
Para obtener más información, consulte AWS IoT Core para Amazon Sidewalk (p. 1397)
11
AWS IoT Core Guía para desarrolladores
Obtener más información sobre AWS IoT
Un curso avanzado que explora los conceptos deAWS IoTautenticación y autorización. Aprenderá a
autenticar y autorizar a los clientes a acceder alAWS IoTAPI de plano de control y plano de datos.
• Serie básica de Internet de las cosas
Una ruta de aprendizaje de módulos de aprendizaje electrónico de IoT sobre diferentes tecnologías y
funciones de IoT.
Un documento que describe las mejores prácticas para diseñar la arquitectura de sus aplicaciones de
IoT enAWS.
• Diseño de temas de MQTT paraAWS IoT Core
Un documento técnico que describe las mejores prácticas para diseñar temas de MQTT enAWS IoT
Corey apalancamientoAWS IoT Corefunciones con MQTT.
• Resumen e introducción
Un documento PDF que describe las diferentes formas en queAWS IoTpermite aprovisionar grandes
flotas de dispositivos.
• AWS IoT Core Device Advisor
AWS IoT CoreDevice Advisor proporciona pruebas prediseñadas que puede utilizar para validar los
dispositivos de IoT y obtener las mejores prácticas de conectividad confiable y segura conAWS IoT Core,
antes de implementar los dispositivos en producción.
• Recursos de AWS IoT
Los recursos específicos del IoT, como guías técnicas, arquitecturas de referencia, libros electrónicos y
publicaciones de blog seleccionadas, se presentan en un índice con capacidad de búsqueda.
• Atlas de IoT
Información general sobre cómo resolver problemas comunes de diseño de IoT. ElAtlas de
IoTproporciona un análisis detallado de los desafíos de diseño que probablemente encontrará al
desarrollar su solución de IoT.
12
AWS IoT Core Guía para desarrolladores
AWS IoTen las redes sociales
• Amazon DynamoDB
Amazon DynamoDB es un servicio de base de datos NoSQL escalable que proporciona un rendimiento
de base de datos rápido y predecible.
• Amazon Kinesis
AWS Lambda le permite ejecutar código sin aprovisionar ni administrar servidores. Puedes configurar
tu código para que se active automáticamente desdeAWS IoTdatos y eventos o llámalo directamente
desde una aplicación web o móvil.
• Amazon Simple Storage Service
Amazon Simple Storage Service (Amazon S3) puede almacenar y recuperar cualquier cantidad de datos
en cualquier momento y desde cualquier lugar de la web.AWS IoTlas reglas pueden enviar datos a
Amazon S3 para su almacenamiento.
• Amazon Simple Notification Service
Amazon Simple Notification Service (Amazon SNS) es un servicio web que permite a las aplicaciones,
los usuarios finales y los dispositivos enviar y recibir notificaciones desde la nube.
• Amazon Simple Queue Service
13
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación compatibles conAWS IoT Core
Amazon Simple Queue Service (Amazon SQS) es un servicio de colas de mensajes que desacopla y
escala los microservicios, los sistemas distribuidos y las aplicaciones sin servidor.
• AmazonOpenSearchServicio
La página principal del sitio MQTT.org donde puede encontrar las especificaciones del protocolo MQTT.
Para obtener más información sobre cómoAWS IoTadmite MQTT, consulteMQTT (p. 90).
• HTTPS (Protocolo de transferencia de hipertexto - Seguro)
LoRaLos dispositivos WAN y las puertas de enlace se pueden conectar aAWS IoT Coremediante el
usoAWS IoT CoreporLoRaMENDIGO.
• TLS (Transport Layer Security) v1.2
La especificación del TLS v1.2 (RFC 5246).AWS IoTusa TLS v1.2 para establecer conexiones seguras
entre dispositivos yAWS IoT.
Esta tabla muestra el estado de las áreas individuales de la interfaz de usuario de laAWS IoT consola al 27
de enero de 2022.
14
AWS IoT Core Guía para desarrolladores
Novedades de laAWS IoT consola
de de de de de de la de de
15
AWS IoT Core Guía para desarrolladores
Leyenda
Leyenda
Valores de estado
• Disponible
16
AWS IoT Core Guía para desarrolladores
Leyenda
Se está trabajando en la nueva experiencia de interfaz de usuario, pero aún no está lista.
• En curso
17
AWS IoT Core Guía para desarrolladores
Conecta tu primer dispositivo aAWS IoT Core
• MirainternoAWS IoTy sus componentes enCómo funciona AWS IoT (p. 3).
• Aprendemás sobreAWS IoT (p. 12)de nuestra colección de materiales y vídeos de formación. Este tema
también incluye una lista de servicios queAWS IoTpuede conectarse a enlaces de redes sociales y
enlaces a las especificaciones del protocolo de comunicación.
• the section called “Conecta tu primer dispositivo aAWS IoT Core” (p. 18).
• Desarrollarsus soluciones de IoT medianteConexión a AWS IoT Core (p. 74)y explorando elTutoriales
de AWS IoT (p. 139).
• Probar y validarsus dispositivos de IoT para una comunicación segura y confiable mediante elAsesor de
dispositivos (p. 1148).
• Administrarsu solución mediante el uso deAWS IoT Coreservicios de administración comoIndexación de
flota (p. 921),Trabajos (p. 731), yAWS IoT Device Defender (p. 966).
• Analizalos datos de sus dispositivos mediante elServicios de datos de AWS IoT (p. 7).
Esta sección presenta un recorrido por elAWS IoT Corepara presentar sus servicios clave y ofrece varios
ejemplos de cómo conectar un dispositivo aAWS IoT Corey pasar mensajes entre ellos. La transmisión de
mensajes entre los dispositivos y la nube es fundamental para todas las soluciones de IoT y es la forma en
que sus dispositivos pueden interactuar con otrasAWSservicios.
Antes de poder usarAWS IoTservicios, debe configurar unCuenta de AWS. Si ya tienes unCuenta de
AWSy un usuario de IAM para usted, puede usarlos y omitir este paso.
• Prueba el tutorial interactivo (p. 21)
18
AWS IoT Core Guía para desarrolladores
Configura tuCuenta de AWS
Esta demostración es la mejor si quieres ver qué es lo básicoAWS IoTla solución puede funcionar
sin conectar un dispositivo ni descargar ningún software. El tutorial interactivo presenta una solución
simulada basada enAWS IoT Coreservicios que ilustran cómo interactúan.
• Prueba el tutorial de conexión rápida (p. 23)
Este tutorial es el mejor si quieres empezar rápidamente conAWS IoTy vea cómo funciona en un
escenario limitado. En este tutorial, necesitarás un dispositivo e instalarás algunosAWS IoTsoftware
que contiene. Si no tienes un dispositivo de IoT, puedes usar tu ordenador personal Windows, Linux o
macOS como dispositivo para este tutorial. Si quieres probarAWS IoT, pero no tienes un dispositivo,
prueba la siguiente opción.
• ExploreAWS IoT Coreservicios con un tutorial práctico (p. 37)
Este tutorial es ideal para los desarrolladores que quieren empezar conAWS IoTpara que puedan seguir
explorando otrosAWS IoT Corefunciones como el motor de reglas y las sombras. Este tutorial sigue
un proceso similar al tutorial de conexión rápida, pero proporciona más detalles sobre cada paso para
permitir una transición más sencilla a los tutoriales más avanzados.
• Vea los mensajes MQTT conAWS IoTCliente MQTT (p. 69)
Aprenda a usar el cliente de prueba de MQTT para ver cómo su primer dispositivo publica mensajes
MQTT enAWS IoT. El cliente de prueba MQTT es una herramienta útil para monitorear y solucionar
problemas de conexiones de dispositivos.
Note
Si quieres probar más de uno de estos tutoriales de introducción o repetir el mismo tutorial, debes
eliminar el objeto thing que creaste de un tutorial anterior antes de empezar otro. Si no eliminas
el objeto objeto de un tutorial anterior, tendrás que usar un nombre diferente para los tutoriales
posteriores. Esto se debe a que el nombre de la cosa debe ser único en tu cuenta yRegión de
AWS.
Para obtener más información acerca de AWS IoT Core, consulte ¿Qué es AWS IoT Core? (p. 1).
Temas
• Registro en una Cuenta de AWS (p. 19)
• Crear un usuario administrativo (p. 20)
• Abra elAWS IoTconsola (p. 20)
1. Abra https://portal.aws.amazon.com/billing/signup.
2. Siga las instrucciones en línea.
Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e indicar un código de
verificación en el teclado del teléfono.
19
AWS IoT Core Guía para desarrolladores
Crear un usuario administrativo
Al registrase en una Cuenta de AWS, se crea un Usuario raíz de la cuenta de AWS. El usuario raíz
tiene acceso a todos los recursos y Servicios de AWS de esa cuenta. Como práctica recomendada de
seguridad, asigne acceso administrativo a un usuario administrativo y utilice únicamente el usuario raíz
para realizar la ejecución tareas que requieren acceso de usuario raíz.
AWS le enviará un email de confirmación luego de completar el proceso de registro. Puede ver la actividad
de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/ y
seleccionando My Account (Mi cuenta).
1. Inicie sesión en AWS Management Console como propietario de cuenta eligiendo Usuario raíz e
ingrese el email de su Cuenta de AWS. En la siguiente página, escriba su contraseña.
Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Signing in as the root user (Iniciar
sesión como usuario raíz) en la Guía del usuario de AWS Sign-In.
2. Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario raíz Cuenta de
AWS (consola) en la Guía del usuario de IAM.
• Para las tareas administrativas diarias, conceda acceso administrativo a un usuario administrativo en
AWS IAM Identity Center.
Para obtener instrucciones, consulte Introducción en la Guía del usuario de AWS IAM Identity Center.
• Para iniciar sesión con el usuario del Centro de identidades de IAM, utilice la URL de inicio de sesión
que se envió a la dirección de correo electrónico cuando creó el usuario del Centro de identidades de
IAM.
Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte
Iniciar sesión en el portal de acceso de AWS en la Guía del usuario de AWS Sign-In.
Si ya tienes unCuenta de AWSy un usuario para ti, puedes usarlos y pasar athe section called “Abra
elAWS IoTconsola” (p. 20).
20
AWS IoT Core Guía para desarrolladores
Pruebe elAWS IoT Coretutorial interactivo
Para ejecutar la demostración, primero debethe section called “Configura tuCuenta de AWS” (p. 19). El
tutorial, sin embargo, no requiere ningunaAWS IoTrecursos, software adicional o cualquier código.
21
AWS IoT Core Guía para desarrolladores
Guardar el estado del dispositivo sin conexión
La animación de este paso muestra cómo dos dispositivos, el dispositivo de control de la izquierda y una
lámpara inteligente de la casa a la derecha, se conectan y se comunican conAWS IoT Coreen la nube. La
animación muestra los dispositivos que se comunican conAWS IoT Corey reaccionando a los mensajes
que reciben.
Para obtener más información sobre la conexión de dispositivos aAWS IoT Core, consulteConexión a AWS
IoT Core (p. 74).
La animación de este paso muestra cómo el servicio Device Shadow enAWS IoT Coreguarda la
información del estado del dispositivo para el dispositivo de control y la lámpara inteligente. Mientras la
lámpara inteligente está desconectada, Device Shadow guarda los comandos del dispositivo de control.
22
AWS IoT Core Guía para desarrolladores
Enrutamiento de los datos del dispositivo a los servicios
Cuando la lámpara inteligente se vuelva a conectar aAWS IoT Core, recupera esos comandos. Cuando el
dispositivo de control está desconectado, Device Shadow guarda la información de estado de la lámpara
inteligente. Cuando el dispositivo de control se vuelve a conectar, recupera el estado actual de la lámpara
inteligente para actualizar su pantalla.
Para obtener más información sobre Device Shadows, consulteServicio Device Shadow de AWS
IoT (p. 683).
La animación de este paso muestra cómoAWS IoT Coreenvía datos de los dispositivos a
otrosAWSservicios mediante el uso deAWS IoTreglas.AWS IoTlas reglas se suscriben a mensajes
específicos de los dispositivos, interpretan los datos de esos mensajes y enrutan los datos interpretados
a otros servicios. En este ejemplo, unAWS IoTLa regla interpreta los datos de un sensor de movimiento
y envía los comandos a un Device Shadow, que luego los envía a la bombilla inteligente. Como en el
ejemplo anterior, Device Shadow almacena la información del estado del dispositivo de control.
Para obtener más información acerca de las reglas del AWS IoT, consulte Reglas para AWS IoT (p. 516).
Este tutorial es el mejor para las personas que desean comenzar rápidamente conAWS IoTpara ver cómo
funciona en un escenario limitado. Si estás buscando un ejemplo que te ayude a empezar a explorar más
funciones y servicios, pruebaExploreAWS IoT Coreservicios en un tutorial práctico (p. 37).
23
AWS IoT Core Guía para desarrolladores
Paso 1. Iniciar el tutorial
ser un dispositivo de IoT, como una Raspberry Pi, o también puede ser un ordenador que ejecute
Linux, OS y OSX o Windows. Si desea conectar una WAN de largo alcance (LoRadispositivo
WAN (a) paraAWS IoT, consulte el tutorialConexión de dispositivos y puertas de enlace aAWS IoT
CoreporLoRaMENGUAR (p. 1272).
Si el dispositivo admite un navegador que pueda ejecutar elAWS IoTconsola, le recomendamos que
complete este tutorial en ese dispositivo.
Note
El tutorial requiere que su dispositivo de IoT se comunique con el puerto 8443 de suCuenta de AWSpunto
final de datos del dispositivo. Para comprobar si puede acceder a ese puerto, pruebe los procedimientos
deProbar la conectividad con el terminal de datos de su dispositivo (p. 33).
Para iniciar el tutorial, inicie sesión enAWS IoTconsola. En elAWS IoTpágina principal de la consola, a la
izquierda, eligeConectary luego eligeConectar un dispositivo.
24
AWS IoT Core Guía para desarrolladores
Paso 2. Crea una cosa (objeto)
25
AWS IoT Core Guía para desarrolladores
Paso 2. Crea una cosa (objeto)
Asegúrese de consultar la lista del software necesario para el SDK que haya elegido en la
parte inferior de la página de la consola.
Debe tener el software necesario instalado en el equipo de destino antes de continuar con el
siguiente paso.
26
AWS IoT Core Guía para desarrolladores
Paso 3. Descarga archivos a tu dispositivo
1. Cuando esté listo para continuar, elijaDescargue el kit de conexión parabotón para descargar el kit de
conexión para la plataforma que eligió anteriormente.
27
AWS IoT Core Guía para desarrolladores
Paso 3. Descarga archivos a tu dispositivo
2. Si ejecuta este procedimiento en el dispositivo, guarde el archivo del kit de conexión en un directorio
desde el que pueda ejecutar los comandos de línea de comandos.
Si no está ejecutando este procedimiento en el dispositivo, guarde el archivo del kit de conexión en un
directorio local y, a continuación, transfiera el archivo al dispositivo.
3. En elDescomprime el kit de conexión en tu dispositivosección, introduzcaunzip
connect_device_package.zipen el directorio donde se encuentran los archivos del kit de conexión.
28
AWS IoT Core Guía para desarrolladores
Paso 4. Ejecute la muestra
1. En una terminal o ventana de comandos del dispositivo, en el directorio que contiene el archivo del kit
de conexión, siga los pasos que se muestran enAWS IoTconsola.
29
AWS IoT Core Guía para desarrolladores
Paso 4. Ejecute la muestra
2. Después de introducir el comando desdePaso 2en la consola, deberías ver una salida en la terminal o
ventana de comandos del dispositivo similar a la siguiente. Esta salida proviene de los mensajes a los
que el programa envía y luego recibe de vuelta.AWS IoT Core.
30
AWS IoT Core Guía para desarrolladores
Paso 4. Ejecute la muestra
3. Para volver a ejecutar el programa de ejemplo, puede repetir los comandos dePaso 2en la consola de
este procedimiento.
4. (Opcional) Si desea ver los mensajes de su cliente de IoT en elAWS IoTconsola, abra elcliente de
prueba MQTTen elPruebapágina delAWS IoTconsola. Si eligió el SDK de Python, entonces encliente
de prueba MQTT, enFiltro de temas, introduzca el tema, comosdk/test/pythonpara suscribirse
a los mensajes de su dispositivo. Los filtros de temas distinguen entre mayúsculas y minúsculas y
dependen del lenguaje de programación del SDK que haya elegido enPaso 1. Para obtener más
información sobre la suscripción y la publicación de temas, consulta el ejemplo de código del SDK que
hayas elegido.
5. Después de suscribirse al tema de prueba, ejecute./start.shen tu dispositivo. Para obtener más
información, consulte the section called “Ver los mensajes MQTT con el cliente MQTT de AWS
IoT” (p. 69).
{
"message": "Hello World!" [1]
}
Elsequencenúmero incluido en[]aumenta en uno cada vez que se crea un nuevoHello World!se
recibe el mensaje y se detiene al finalizar el programa.
6. Para finalizar el tutorial y ver un resumen, enAWS IoTconsola, eligeContinuar.
31
AWS IoT Core Guía para desarrolladores
Paso 4. Ejecute la muestra
32
AWS IoT Core Guía para desarrolladores
Paso 5. Explore más
Desde elAWS IoTconsola, puede abrir elCliente MQTTen elPruebapágina delAWS IoTconsola. En
elcliente de prueba MQTT, suscríbete a#, y luego, en tu dispositivo, ejecuta el programa./start.shcomo
se describe en el paso anterior. Para obtener más información, consulte the section called “Ver los
mensajes MQTT con el cliente MQTT de AWS IoT” (p. 69).
• Realiza pruebas en tus dispositivos conAsesor de dispositivos
Utilice Device Advisor para comprobar si sus dispositivos pueden conectarse de forma segura y
confiable e interactuar con,AWS IoT.
• the section called “Pruebe elAWS IoT Coretutorial interactivo” (p. 21)
Este inicio rápido le ofrece solo una muestra deAWS IoT. Si quieres explorarAWS IoTcontinúe y conozca
las características que la convierten en una poderosa plataforma de soluciones de IoT, comience a
preparar su plataforma de desarrollo de la siguiente manera:ExploreAWS IoT Coreservicios en un tutorial
práctico (p. 37).
Realice estos procedimientos en el dispositivo que desee probar o mediante una sesión de terminal SSH
conectada al dispositivo que desee probar.
33
AWS IoT Core Guía para desarrolladores
Probar la conectividad con el
terminal de datos de su dispositivo
Si desea probar la conectividad con el puerto específico que utilizarán sus dispositivos, omita este
procedimiento y continúe conHaz que la aplicación pruebe la conexión al puerto y al punto final de datos
de tu dispositivo (p. 34).
1. En una ventana de terminal o línea de comandos del dispositivo, sustituya el extremo de datos del
dispositivo de ejemplo (a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com) con el terminal
de datos del dispositivo de su cuenta y, a continuación, introduzca este comando.
Linux
ping -c 5 a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com
Windows
ping -n 5 a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com
Si desea probar la conectividad con el puerto específico utilizado porAWS IoT, continúe conHaz que la
aplicación pruebe la conexión al puerto y al punto final de datos de tu dispositivo (p. 34).
3. Sipingno devolvió un resultado correcto, compruebe el valor del punto final para asegurarse de que
tiene el punto final correcto y compruebe la conexión del dispositivo a Internet.
34
AWS IoT Core Guía para desarrolladores
Probar la conectividad con el
terminal de datos de su dispositivo
1. En una ventana de terminal o línea de comandos del dispositivo que desea probar, introduzca este
comando para comprobar sinmapestá instalado.
nmap --version
Linux
Este procedimiento requiere que tenga permiso para instalar el software en el equipo.
1. En una ventana de terminal o línea de comandos del dispositivo, introduce el comando que
corresponda a la versión de Linux que esté ejecutando.
a. Debian o Ubuntu:
b. CentOS o RHEL:
nmap --version
macOS
Este procedimiento requiere que tenga permiso para instalar el software en el equipo.
35
AWS IoT Core Guía para desarrolladores
Probar la conectividad con el
terminal de datos de su dispositivo
nmap --version
Windows
Este procedimiento requiere que tenga permiso para instalar el software en el equipo.
No necesitas la aplicación Npcap para esta prueba. Puedes deseleccionar esa opción si no
quieres instalarla.
4. EnCommand, pruebe la instalación con este comando.
nmap --version
36
AWS IoT Core Guía para desarrolladores
ExploreAWS IoT Coreservicios en un tutorial práctico
1. En una ventana de terminal o línea de comandos del dispositivo, sustituya el extremo de datos del
dispositivo de ejemplo (a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com) con el terminal
de datos del dispositivo de su cuenta y, a continuación, introduzca este comando.
3. Sinmapno arrojó un resultado correcto, compruebe el valor del punto de conexión para asegurarse de
que tiene el punto de conexión correcto y compruebe la conexión del dispositivo a Internet.
Puede probar otros puertos del terminal de datos del dispositivo, como el puerto 443, el puerto HTTPS
principal, sustituyendo el puerto utilizado en el paso 1,8443, con el puerto que desea probar.
Puede esperar dedicar entre 20 y 30 minutos a este tutorial. Si utilizas un dispositivo IoT o una Raspberry
Pi, este tutorial puede tardar más si, por ejemplo, necesitas instalar el sistema operativo y configurar el
dispositivo.
37
AWS IoT Core Guía para desarrolladores
¿Qué opción de dispositivo es la mejor para ti?
Este tutorial es ideal para los desarrolladores que quieren empezar conAWS IoT Corepara que puedan
seguir explorando funciones más avanzadas, comomotor de reglasysombras. Este tutorial lo prepara para
seguir aprendiendo sobreAWS IoT Corey cómo interactúa con otrosAWSservicios explicando los pasos
con mayor detalle queel tutorial de inicio rápido (p. 23). Si estás buscando algo rápido,Hola mundo,
experimenta, prueba elPruebe elAWS IoTconexión rápida (p. 23).
Después de configurar suCuenta de AWSyAWS IoTconsola, seguirás estos pasos para ver cómo conectar
un dispositivo y hacer que envíe mensajes aAWS IoT Core.
Pasos siguientes
Para obtener más información acerca de AWS IoT Core, consulte ¿Qué es AWS IoT Core? (p. 1).
Opción Esta podría ser una buena Puede que esta no sea una
opción si: buena opción si:
the section called “Cree un • No tienes tu propio dispositivo • No te sientes cómodo usando
dispositivo virtual con Amazon para probar. los comandos de la línea de
EC2” (p. 42) • No querrás instalar ningún comandos.
software en tu propio sistema. • No querrás incurrir en ningún
• Desea realizar una prueba en gasto adicionalAWScargos.
un sistema operativo Linux. • No querrás realizar pruebas en
un sistema operativo Linux.
the section called “Utilice • No querrás incurrir en ningún • No querrás instalar ningún
su PC o Mac con Windows gasto adicionalAWScargos. software en tu ordenador
personal.
38
AWS IoT Core Guía para desarrolladores
CrearAWS IoTrecursos
Opción Esta podría ser una buena Puede que esta no sea una
opción si: buena opción si:
o Linux comoAWS • No desea configurar ningún • Quieres una plataforma de
IoTdispositivo” (p. 50) dispositivo adicional. pruebas más representativa.
CrearAWS IoTrecursos
En este tutorial, crearás elAWS IoTrecursos a los que un dispositivo necesita conectarseAWS IoT Coree
intercambiar mensajes.
1. Crea unAWS IoTdocumento de política, que autorizará al dispositivo a interactuar conAWS IoTservicios.
2. Crea un objeto objeto enAWS IoTy su certificado de dispositivo X.509 y, a continuación, adjunte
el documento de política. La cosa objeto es la representación virtual de su dispositivo en elAWS
IoTregistro. El certificado autentica el dispositivo paraAWS IoT Core, y el documento de política autoriza
al dispositivo a interactuar conAWS IoT.
Note
39
AWS IoT Core Guía para desarrolladores
CrearAWS IoTrecursos
En este tutorial se utiliza elAWS IoTconsola para crear elAWS IoTrecursos. Si su dispositivo admite un
navegador web, puede ser más fácil ejecutar este procedimiento en el navegador web del dispositivo,
ya que podrá descargar los archivos de certificado directamente en su dispositivo. Si ejecuta este
procedimiento en otro equipo, tendrá que copiar los archivos de certificado a su dispositivo para que la
aplicación de ejemplo pueda utilizarlos.
Siga los pasos para crear una política que permita a su dispositivo realizar laAWS IoToperaciones
necesarias para ejecutar el programa de ejemplo. Debe crear elAWS IoTpolítica antes de poder adjuntarla
al certificado del dispositivo, que crearás más adelante.
Note
En este inicio rápido, se utiliza el carácter comodín (*) por motivos de simplicidad. Para
mayor seguridad, debe restringir los clientes (dispositivos) que pueden conectarse
y publicar mensajes especificando un ARN de cliente en lugar del carácter comodín
como recurso. Los ARN de los clientes siguen este formato:arn:aws:iot:your-
region:your-aws-account:client/my-client-id.
40
AWS IoT Core Guía para desarrolladores
CrearAWS IoTrecursos
Sin embargo, primero debe crear el recurso (como un dispositivo cliente o una sombra
de objetos) antes de poder asignar su ARN a una política. Para obtener más información,
consulteAWS IoT Corerecursos de acción.
4. Después de introducir la información de tu póliza, eligeCrear.
Para obtener más información, consulte Cómo AWS IoT funciona con IAM (p. 411).
Elige los nombres de las cosas con cuidado, porque no podrás cambiarlas más adelante.
Para cambiar el nombre de un objeto, debe crear otro objeto nueva, asignarle el nuevo nombre y
eliminar después el objeto anterior.
Note
1. Descargue cada uno de los archivos de certificado y clave y guárdelos para más adelante. Deberás
instalar estos archivos en tu dispositivo.
Cuando guarde los archivos de certificados, asígneles los nombres de la tabla siguiente. Estos son
los nombres de archivo que se utilizan en los ejemplos posteriores.
41
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Debe guardar los archivos de certificados antes de salir de esta página. Al salir de esta
página en la consola, ya no tendrá acceso a los archivos de certificados.
Si olvidó descargar los archivos de certificado que creó en este paso, debe salir de la
pantalla de la consola, ir a la lista de elementos de la consola, eliminar el objeto de cosa
que creó y, a continuación, reiniciar este procedimiento desde el principio.
3. Seleccione Done (Listo).
Después de completar este procedimiento, debería ver el nuevo objeto objeto en la lista de cosas.
Selecciona la mejor opción de dispositivo para probarlaAWS IoT Core. Por supuesto, puedes probarlas
todas, pero solo una a la vez. Si no estás seguro de qué opción de dispositivo es la mejor para ti, consulta
cómo elegirqué opción de dispositivo es la mejor (p. 38)y, a continuación, vuelve a esta página.
Opciones de dispositivo
Para completar este tutorial, necesitas unCuenta de AWS. Si no tiene uno, complete los pasos que se
describen enConfigura tuCuenta de AWS (p. 19)antes de continuar.
42
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Si es la primera vez que crea una instancia de Amazon EC2, puede encontrar las instrucciones
enComience a utilizar las instancias de Amazon EC2Linuxpara ser más útil.
No elija elContinuar sin un par de clavesopción. Si lanza la instancia sin un par de claves, no
podrá conectarse a ella.
7. En elAjustes de redsección y elConfigurar el almacenamientosección, puede mantener la
configuración predeterminada. Cuando esté listo, elijaLanzar instancias.
8. Verá una página de confirmación que indicará que la instancia se está lanzando. Elija View Instances
para cerrar la página de confirmación y volver a la consola.
9. Puede ver el estado del lanzamiento en la pantalla Instances (Instancias). La instancia tarda poco
tiempo en lanzarse. Al lanzar una instancia, su estado inicial es pending. Una vez iniciada la
instancia, el estado cambia a running y recibe un nombre de DNS público. (Si la columna Public
DNS (IPv4) (DNS público (IPv4)) está oculta, elija Show/Hide Columns (Mostrar/ocultar columnas)
(el icono con forma de engranaje) en la esquina superior derecha de la página y, a continuación,
seleccione Public DNS (IPv4) (DNS público (IPv4))).
10. Puede que transcurran unos minutos hasta que la instancia esté lista para conectarse a ella.
Compruebe que la instancia haya superado las comprobaciones de estado; puede ver esta
información en la columna Status Checks.
Una vez que la nueva instancia haya superado las comprobaciones de estado, continúe con el
siguiente procedimiento y conéctese a ella.
Para conectarse a una instancia mediante el cliente basado en el navegador, seleccione la instancia en la
consola de Amazon EC2 y elija conectarse mediante Amazon EC2 Instance Connect. Instance Connect
gestiona los permisos y proporciona una conexión exitosa.
43
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Ahora deberías tener unConexión de instancias de Amazon EC2ventana que está registrada en su nueva
instancia de Amazon EC2.
3. Para comprobar si se ha instalado Git y la versión actual de Git, ejecuta el siguiente comando:
git --version
Utilizaremos nvm para instalar Node.js, ya que nvm puede instalar varias versiones de Node.js y
permitirle alternar entre ellas.
2. En tuConexión de instancias de Amazon EC2ventana, active nvm con este comando.
. ~/.nvm/nvm.sh
3. En tuConexión de instancias de Amazon EC2ventana, utilice nvm para instalar la versión más reciente
de Node.js mediante este comando.
nvm install 16
Note
Si instala Node.js también instalará el administrador de paquetes de nodos (npm) para poder instalar
módulos adicionales según sea necesario.
4. En tuConexión de instancias de Amazon EC2ventana, compruebe que Node.js esté instalado y
funcionando correctamente mediante este comando.
44
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Este tutorial requiere Node v10.0 o posterior. Para obtener más información, consulteTutorial:
Configuración de Node.js en una instancia de Amazon EC2.
Su instancia de Amazon EC2 viene precargada conAWS CLI. Sin embargo, debe completar suAWS
CLIperfil. Para obtener más información sobre cómo configurar la CLI, consulteConfiguración delAWS CLI.
1. En el ejemplo siguiente se muestran los valores de ejemplo. Sustitúyalos por tus propios valores.
Puede encontrar estos valores en suAWSconsola en la información de tu cuenta, enCredenciales de
seguridad.
aws configure
A continuación, introduzca los valores de su cuenta siguiendo las instrucciones que aparecen.
Si tuAWS CLIestá configurado correctamente, el comando debe devolver una dirección de punto final
de suCuenta de AWS.
45
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
{
"thingArn": "arn:aws:iot:your-region:your-aws-account:thing/MyIotThing",
"thingName": "MyIotThing",
"thingId": "6cf922a8-d8ea-4136-f3401EXAMPLE"
}
1. En tuConexión de instancias de Amazon EC2ventana, cree un directorio para almacenar los archivos
de certificados y claves.
mkdir ~/certs
curl -o ~/certs/Amazon-root-CA-1.pem \
https://www.amazontrust.com/repository/AmazonRootCA1.pem
3. En tuConexión de instancias de Amazon EC2ventana, ejecute el siguiente comando para crear sus
archivos de clave privada, clave pública y certificado X.509. Este comando también registra y activa el
certificado conAWS IoT.
La respuesta tiene este aspecto: Guarde elcertificateArnpara que pueda usarlo en comandos
posteriores. Lo necesitarás para adjuntar tu certificado a lo tuyo y para adjuntar la política al certificado
en pasos posteriores.
{
"certificateArn": "arn:aws:iot:us-
west-2:123456789012:cert/9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2",
"certificateId":
"9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2",
"certificatePem": "
-----BEGIN CERTIFICATE-----
MIICiTCCEXAMPLE6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgEXAMPLEAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSEXAMPLE2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYEXAMPLEb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCEXAMPLEJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAEXAMPLEsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEXAMPLE25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+aEXAMPLE
EXAMPLEfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZEXAMPLELG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
46
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Ibb3OhjZnzcvQAEXAMPLEWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9qEXAMPLEyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDEXAMPLEBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
-----END CERTIFICATE-----\n",
"keyPair": {
"PublicKey": "-----BEGIN PUBLIC
KEY-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h
\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/
gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo
+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE
\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D
+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n-----END PUBLIC KEY-----\n",
"PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security
reasons\n-----END RSA PRIVATE KEY-----\n"
}
}
nano ~/policy.json
Pegue el documento de política parapolicy.jsonen él. Introduzca ctrl-x para salir denanoeditor y
guarde el archivo.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Receive",
"iot:Connect"
],
"Resource": [
"*"
]
}
]
}
47
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Salida:
{
"policyName": "MyIotThingPolicy",
"policyArn": "arn:aws:iot:your-region:your-aws-account:policy/MyIotThingPolicy",
"policyDocument": "{
\"Version\": \"2012-10-17\",
\"Statement\": [
{
\"Effect\": \"Allow\",
\"Action\": [
\"iot:Publish\",
\"iot:Receive\",
\"iot:Subscribe\",
\"iot:Connect\"
],
\"Resource\": [
\"*\"
]
}
]
}",
"policyVersionId": "1"
}
cd ~
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
cd aws-iot-device-sdk-js-v2
48
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
npm install
cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub
npm install
La aplicación de muestra:
49
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
{"message":"Hello world!","sequence":1}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":2}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":3}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":4}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":5}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":6}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":7}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":8}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":9}
Publish received. topic:"topic_1" dup:false qos:1 retain:false
{"message":"Hello world!","sequence":10}
Si tienes problemas para ejecutar la aplicación de muestra, consultathe section called “Solución de
problemas con la aplicación de muestra” (p. 67).
1. Consulte Ver los mensajes MQTT con el cliente MQTT de AWS IoT (p. 69). Esto le ayuda a
aprender a usar elcliente de prueba MQTTen elAWS IoTconsolapara ver los mensajes MQTT a
medida que pasan por el intermediario de mensajes.
2. Abra elcliente de prueba MQTTen elAWS IoTconsola.
3. EnSuscríbete a un tema, Suscríbete al tema,tema_1.
4. En tuConexión de instancias de Amazon EC2ventana, vuelva a ejecutar la aplicación de muestra y vea
los mensajes en elcliente de prueba MQTTen elAWS IoTconsola.
cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub
node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/
certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
Para obtener más información sobre MQTT y cómoAWS IoT Coreadmite el protocolo, consulteMATT.
50
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Antes de continuar con el paso siguiente, asegúrese de poder abrir una ventana de línea de comandos en
su ordenador. Usacmd.exeen un PC con Windows. En un PC Linux o Mac, utiliceTerminal.
1. Comprueba si tienes Git instalado en tu ordenador. Introduzca este comando en la línea de comandos.
git --version
Si el comando muestra la versión de Git, significa que Git está instalado y puede continuar con el paso
siguiente.
python -V
Note
Si este comando da un error:Python was not found, puede deberse a que su sistema
operativo llama al ejecutable Python v3.x comoPython3. En ese caso, sustituya todas las
instancias depythonconpython3y continúe con el resto de este tutorial.
Si el comando muestra la versión de Python, Python ya está instalado. Este tutorial requiere Python
v3.7 o posterior.
3. Si Python está instalado, puede omitir el resto de los pasos de esta sección. Si no, continúa.
4. Abrirhttps://www.python.org/downloads/y descarga el instalador para tu ordenador.
5. Si la descarga no se inicia automáticamente, ejecuta el programa descargado para instalar Python.
6. Compruebe la instalación de Python.
python -V
Confirme que el comando muestre la versión de Python. Si no aparece la versión de Python, intenta
descargar e instalar Python de nuevo.
51
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Linux/macOS
cd ~
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
Windows
En Windows, puede encontrar elcasaruta del directorio mediante la ejecución de este comando
en elcmdventana.
echo %USERPROFILE%
cd %USERPROFILE%
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
Note
echo $home
Los comandos de la siguiente sección asumen que los archivos de claves y certificados están
almacenados en el dispositivo, tal como se muestra en esta tabla.
Linux/macOS
Ejecute este comando para crearcertssubdirectorio que usará cuando ejecute las aplicaciones
de ejemplo.
52
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
mkdir ~/certs
En el nuevo subdirectorio, copie los archivos a las rutas de los archivos de destino que se
muestran en la tabla siguiente.
Ejecute este comando para enumerar los archivos delcertsdirectorio y compárelos con los que
figuran en la tabla.
ls -l ~/certs
Windows
Ejecute este comando para crearcertssubdirectorio que usará cuando ejecute las aplicaciones
de ejemplo.
mkdir %USERPROFILE%\certs
En el nuevo subdirectorio, copie los archivos a las rutas de los archivos de destino que se
muestran en la tabla siguiente.
Ejecute este comando para enumerar los archivos delcertsdirectorio y compárelos con los que
figuran en la tabla.
dir %USERPROFILE%\certs
53
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
script muestra cómo el dispositivo usa la biblioteca MQTT para publicar mensajes MQTT y suscribirse a
ellos.
Antes de ejecutar el script, asegúrate de que la política de tu aplicación proporcione permisos para que el
script de ejemplo se conecte, se suscriba, publique y reciba.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:region:account:topic/test/topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
54
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
],
"Resource": [
"arn:aws:iot:region:account:topicfilter/test/topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:region:account:client/test-*"
]
}
]
}
Linux/macOS
cd ~/aws-iot-device-sdk-python-v2/samples
Windows
cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
El script de ejemplo:
55
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Connected!
Subscribing to topic 'test/topic'...
Subscribed with QoS.AT_LEAST_ONCE
Sending 10 message(s)
Publishing message to topic 'test/topic': Hello World! [1]
Received message from topic 'test/topic': b'"Hello World! [1]"'
Publishing message to topic 'test/topic': Hello World! [2]
Received message from topic 'test/topic': b'"Hello World! [2]"'
Publishing message to topic 'test/topic': Hello World! [3]
Received message from topic 'test/topic': b'"Hello World! [3]"'
Publishing message to topic 'test/topic': Hello World! [4]
Received message from topic 'test/topic': b'"Hello World! [4]"'
Publishing message to topic 'test/topic': Hello World! [5]
Received message from topic 'test/topic': b'"Hello World! [5]"'
Publishing message to topic 'test/topic': Hello World! [6]
Received message from topic 'test/topic': b'"Hello World! [6]"'
Publishing message to topic 'test/topic': Hello World! [7]
Received message from topic 'test/topic': b'"Hello World! [7]"'
Publishing message to topic 'test/topic': Hello World! [8]
Received message from topic 'test/topic': b'"Hello World! [8]"'
Publishing message to topic 'test/topic': Hello World! [9]
Received message from topic 'test/topic': b'"Hello World! [9]"'
Publishing message to topic 'test/topic': Hello World! [10]
Received message from topic 'test/topic': b'"Hello World! [10]"'
10 message(s) received.
Disconnecting...
Disconnected!
Si tienes problemas para ejecutar la aplicación de muestra, consultathe section called “Solución de
problemas con la aplicación de muestra” (p. 67).
También puede añadir el--verbosity Debugparámetro de la línea de comandos para que la aplicación
de ejemplo muestre mensajes detallados sobre lo que está haciendo. Esa información podría ayudarle a
corregir el problema.
1. Consulte Ver los mensajes MQTT con el cliente MQTT de AWS IoT (p. 69). Esto le ayuda a
aprender a usar elcliente de prueba MQTTen elAWS IoTconsolapara ver los mensajes MQTT a
medida que pasan por el intermediario de mensajes.
2. Abra elcliente de prueba MQTTen elAWS IoTconsola.
3. EnSuscríbete a un tema, suscríbete al tema,prueba/tema.
4. En la ventana de línea de comandos, vuelva a ejecutar la aplicación de ejemplo y observe los
mensajes delCliente MQTTen elAWS IoTconsola.
Linux/macOS
cd ~/aws-iot-device-sdk-python-v2/samples
python3 pubsub.py --topic test/topic --ca_file ~/certs/Amazon-root-CA-1.pem --cert
~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
Windows
cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
56
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Para obtener más información sobre MQTT y cómoAWS IoT Coreadmite el protocolo, consulteMATT.
1. Para ejecutar el ejemplo de suscripción compartida, debes configurar la política de tu producto tal y
como se indica enSuscripción compartida a MQTT 5.
2. Para ejecutar el ejemplo de suscripción compartida, ejecute los siguientes comandos.
Linux/macOS
cd ~/aws-iot-device-sdk-python-v2/samples
Windows
cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
57
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Note
58
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
59
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Esto suele tardar unos 20 minutos, pero puede tardar más si tiene que instalar muchas actualizaciones del
software del sistema.
Important
Adaptar estas instrucciones a otros dispositivos y sistemas operativos puede resultar difícil.
Deberás entender tu dispositivo lo suficientemente bien como para poder interpretar estas
instrucciones y aplicarlas al dispositivo.
Si tiene dificultades al configurar el dispositivo paraAWS IoT, puede probar una de las otras
opciones del dispositivo como alternativa, comoCree un dispositivo virtual con Amazon
EC2 (p. 42)oUtilice su PC o Mac con Windows o Linux comoAWS IoTdispositivo (p. 50).
Configura tu dispositivo
El objetivo de este paso es recopilar lo que necesitará para configurar el dispositivo de modo que pueda
iniciar el sistema operativo (SO), conectarse a Internet y permitirle interactuar con él en una interfaz de
línea de comandos.
• Una Cuenta de AWS. Si no tiene uno, complete los pasos que se describen enConfigura tuCuenta de
AWS (p. 19)antes de continuar.
• UNRaspberry Pi 3 modelo Bo modelo más reciente. Esto podría funcionar en versiones anteriores de
Raspberry Pi, pero no se han probado.
• Sistema operativo Raspberry Pi (32 bits)o más adelante. Recomendamos utilizar la versión más reciente
del sistema operativo Raspberry Pi. Es posible que las versiones anteriores del sistema operativo
funcionen, pero no se han probado.
Para ejecutar este ejemplo, no necesita instalar el escritorio con la interfaz gráfica de usuario (GUI);
sin embargo, si es la primera vez que utiliza la Raspberry Pi y su hardware de Raspberry Pi la admite,
podría resultarle más fácil utilizar el escritorio con la GUI.
• Ethernet oWiFiconexión.
• Teclado, ratón, monitor, cables, fuentes de alimentación y demás hardware que necesite el dispositivo.
Important
Antes de continuar con el paso siguiente, el dispositivo debe tener el sistema operativo instalado,
configurado y en ejecución. El dispositivo debe estar conectado a Internet y tendrás que
poder acceder al dispositivo mediante su interfaz de línea de comandos. El acceso a la línea
de comandos puede realizarse a través de un teclado, un ratón y un monitor conectados
directamente, o mediante una interfaz remota de terminal SSH.
60
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Si ejecuta un sistema operativo en su Raspberry Pi que tiene una interfaz gráfica de usuario (GUI),
abra una ventana de terminal en el dispositivo y siga las siguientes instrucciones en esa ventana. De
lo contrario, si te conectas a tu dispositivo mediante un terminal remoto, como PuTTY, abre un terminal
remoto en tu dispositivo y úsalo.
Antes de instalar unAWS IoTSDK del dispositivo: ejecute estos comandos en una ventana de terminal
del dispositivo para actualizar el sistema operativo e instalar las bibliotecas necesarias.
2. Instalar Git
Si el sistema operativo de tu dispositivo no viene con Git instalado, debes instalarlo para instalar
elAWS IoTSDK de dispositivos paraJavaScript.
git --version
b. Si el comando anterior devuelve la versión de Git, significa que Git ya está instalado y puedes
saltar al paso 3.
c. Si aparece un error al ejecutar elgitcomando, instala Git ejecutando este comando.
git --version
e. Si Git está instalado, continúa con la siguiente sección. De lo contrario, solucione y corrija el error
antes de continuar. Necesitas Git para instalar elAWS IoTSDK de dispositivos paraJavaScript.
Python
En esta sección, instalará Python, sus herramientas de desarrollo yAWS IoTEl SDK de dispositivos
para Python está en tu dispositivo. Estas instrucciones son para una Raspberry Pi que ejecute el
61
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
último sistema operativo Raspberry Pi. Si tienes otro dispositivo o utilizas otro sistema operativo, es
posible que tengas que adaptar estas instrucciones para tu dispositivo.
ElAWS IoTEl SDK de dispositivos para Python requiere que Python v3.5 o posterior esté instalado
en tu Raspberry Pi.
python3 --version
4. Ejecute este comando para confirmar que ya está instalada la versión correcta de Python.
python3 --version
2. Prueba de pip3
pip3 --version
pip3 --version
Instale elAWS IoTDevice SDK para Python y descarga las aplicaciones de muestra en tu
dispositivo.
cd ~
python3 -m pip install awsiotsdk
62
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
JavaScript
En esta sección, instalará Node.js, el administrador de paquetes npm yAWS IoTSDK de dispositivos
paraJavaScripten tu dispositivo. Estas instrucciones son para una Raspberry Pi que ejecuta el sistema
operativo Raspberry Pi. Si tienes otro dispositivo o utilizas otro sistema operativo, es posible que
tengas que adaptar estas instrucciones para tu dispositivo.
a. Descargue la versión más reciente del repositorio de Node ingresando este comando.
cd ~
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
node -v
Confirme que el comando muestre la versión de Node. Este tutorial requiere Node v10.0 o
posterior. Si no aparece la versión de Node, intenta descargar de nuevo el repositorio de
Node.
d. Verifique la instalación de npm.
npm -v
sudo shutdown -r 0
cd ~
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
63
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
cd ~/aws-iot-device-sdk-js-v2
npm install
La aplicación de ejemplo requiere que los archivos de certificado que autentican el dispositivo estén
instalados en el dispositivo.
Para instalar los archivos de certificado del dispositivo para la aplicación de muestra
cd ~
mkdir certs
La forma de copiar los archivos de certificado al dispositivo depende del dispositivo y del sistema
operativo y no se describe aquí. Sin embargo, si el dispositivo admite una interfaz gráfica de usuario
(GUI) y tiene un navegador web, puede realizar el procedimiento descrito enthe section called
“CrearAWS IoTrecursos” (p. 39)desde el navegador web de su dispositivo para descargar los
archivos resultantes directamente a su dispositivo.
Los comandos de la siguiente sección suponen que los archivos de clave y certificado se almacenan
en el dispositivo como se muestra en esta tabla.
64
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Python
cd ~/aws-iot-device-sdk-python-v2/samples
65
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
Si tienes problemas para ejecutar la aplicación de muestra, consultathe section called “Solución
de problemas con la aplicación de muestra” (p. 67).
JavaScript
cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub
npm install
66
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
{"message":"Hello world!","sequence":8}
Publish received on topic topic_1
{"message":"Hello world!","sequence":9}
Publish received on topic topic_1
{"message":"Hello world!","sequence":10}
Si tienes problemas para ejecutar la aplicación de muestra, consultathe section called “Solución
de problemas con la aplicación de muestra” (p. 67).
1. Consulte Ver los mensajes MQTT con el cliente MQTT de AWS IoT (p. 69). Esto le ayuda a
aprender a usar elcliente de prueba MQTTen elAWS IoTconsolapara ver los mensajes MQTT a
medida que pasan por el intermediario de mensajes.
2. Abra elcliente de prueba MQTTen elAWS IoTconsola.
3. Suscríbete al tema,tema_1.
4. En la ventana de línea de comandos, vuelva a ejecutar la aplicación de ejemplo y observe los
mensajes delCliente MQTTen elAWS IoTconsola.
Python
cd ~/aws-iot-device-sdk-python-v2/samples
python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/
certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
JavaScript
cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub
node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/
certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
Compruebe el certificado
Si el certificado no está activo,AWS IoTno aceptará ningún intento de conexión que lo utilice para la
autorización. Al crear su certificado, es fácil pasar por alto elActivarbotón. Afortunadamente, puede activar
su certificado desdeAWS IoTconsola.
67
AWS IoT Core Guía para desarrolladores
Configuración del dispositivo
2. En la lista de certificados, busque el certificado que creó para el ejercicio y compruebe su estado en
elEstadocolumna.
Si no recuerda el nombre del certificado, compruebe si hay alguno que lo seaInactivopara ver si
pueden ser los que estás usando.
Elija el certificado de la lista para abrir su página de detalles. En la página de detalles, puedes ver
suFecha de creaciónpara ayudarle a identificar el certificado.
3. Para activar un certificado inactivo, en la página de detalles del certificado, elijaAccionesy luego
eligeActivar.
Si has encontrado el certificado correcto y está activo, pero sigues teniendo problemas para ejecutar la
aplicación de muestra, comprueba su política tal y como se describe en el paso siguiente.
También puede intentar crear algo nuevo y un certificado nuevo siguiendo los pasos dethe section called
“Crea una cosa (objeto)” (p. 41). Si creas algo nuevo, tendrás que darle un nombre nuevo y descargar
los nuevos archivos de certificado a tu dispositivo.
1. Busque el certificado tal y como se describe en el elemento anterior y abra su página de detalles.
2. En el menú de la izquierda de la página de detalles del certificado, elijaPolíticaspara ver las políticas
adjuntas al certificado.
3. Si no hay políticas adjuntas al certificado, añada una seleccionando laAccionesmenú y, a
continuación, elegirPolítica de adjuntos.
Elija la política que creó anteriormente enthe section called “CrearAWS IoTrecursos” (p. 39).
4. Si hay una política adjunta, seleccione el icono de la política para abrir su página de detalles.
Es posible que algunos sistemas requieran que los nombres de los archivos estén entre comillas para
funcionar correctamente.
68
AWS IoT Core Guía para desarrolladores
Ver los mensajes MQTT con el cliente MQTT de AWS IoT
En caso de duda, vuelve a instalar el SDK en tu dispositivo. En la mayoría de los casos, es cuestión de
encontrar la sección del tutorial tituladaInstale elAWS IoTSDK de dispositivos paraIdioma del SDKy
siguiendo de nuevo el procedimiento.
Si está utilizando elAWS IoTSDK de dispositivos paraJavaScript, recuerde instalar las aplicaciones de
muestra antes de intentar ejecutarlas. La instalación del SDK no instala automáticamente las aplicaciones
de muestra. Las aplicaciones de muestra se deben instalar manualmente después de instalar el SDK.
Los dispositivos publican mensajes MQTT que se identifican contemas (p. 112)para comunicar su
estado aAWS IoT, yAWS IoTpublica mensajes MQTT para informar a los dispositivos y aplicaciones de
los cambios y eventos. Puede utilizar el cliente MQTT para suscribirse a estos temas y ver los mensajes a
medida que aparecen. También puede utilizar el cliente de prueba MQTT para publicar mensajes MQTT en
los dispositivos y servicios suscritos en suCuenta de AWS.
Contenido
• Visualización de mensajes MQTT en el cliente MQTT (p. 69)
• Publicación de mensajes MQTT desde el cliente MQTT (p. 71)
• Prueba de suscripciones compartidas en el cliente MQTT (p. 72)
69
AWS IoT Core Guía para desarrolladores
Visualización de mensajes MQTT en el cliente MQTT
3. En el#página de registro de mensajes, también puedes publicar mensajes en un tema, pero tendrás
que especificar el nombre del tema. No puede publicar en#tema.
Los mensajes publicados en los temas suscritos aparecen en el registro de mensajes a medida que se
reciben, con el mensaje más reciente primero.
Si tus mensajes no aparecen en el registro de mensajes como esperabas, prueba a suscribirte a un filtro
de temas comodín, tal y como se describe enFiltros de temas (p. 114). El filtro de temas comodín de
varios niveles de MQTT es el signo hash o libra (#) y se puede utilizar como filtro de temas enTema de
suscripcióncampo.
Suscribirse a la#El filtro de temas se suscribe a todos los temas recibidos por el agente de mensajes.
Puede reducir el filtro sustituyendo los elementos de la ruta del filtro del tema por un#comodín de varios
niveles o comodín de un solo nivel «+».
• El carácter comodín de varios niveles debe ser el último carácter del filtro de temas.
70
AWS IoT Core Guía para desarrolladores
Publicación de mensajes MQTT desde el cliente MQTT
• La ruta del filtro de temas solo puede tener un carácter comodín de un solo nivel por nivel de tema.
Por ejemplo:
Para obtener más información sobre los filtros de temas, consulteFiltros de temas (p. 114).
Los nombres y filtros de temas de MQTT distinguen entre mayúsculas y minúsculas. Si, por ejemplo,
su dispositivo publica mensajes enTopic_1(con mayúscula)T) en lugar detopic_1, el tema al que se
suscribió, sus mensajes no aparecerían en el cliente de prueba de MQTT. Sin embargo, si te suscribes al
filtro de temas comodín, se mostrará que el dispositivo está publicando mensajes y que está utilizando un
nombre de tema diferente al que esperabas.
No utilice información de identificación personal en los nombres de los temas, ya sea que los
utilice en el cliente de prueba de MQTT o en la implementación de su sistema. Los nombres
de los temas pueden aparecer en comunicaciones e informes no cifrados.
2. En la ventana de carga del mensaje, introduzca el siguiente JSON:
{
"message": "Hello, world",
"clientType": "MQTT test client"
}
71
AWS IoT Core Guía para desarrolladores
Prueba de suscripciones compartidas en el cliente MQTT
Puede publicar mensajes MQTT en otros temas cambiando laNombre del temaen elNombre del
temacampo y seleccionando elPublicarbotón.
72
AWS IoT Core Guía para desarrolladores
Prueba de suscripciones compartidas en el cliente MQTT
$share/{ShareName}/{TopicFilter}
3. Abre otro navegador web y repite los pasos 1 y 2. De esta forma, está simulando dos clientes MQTT
diferentes que comparten la misma suscripción.$share/group1/topic1.
4. Elija un cliente MQTT, enPublicar en un temapestaña, enNombre del temacampo, introduzca
elNombre del temade tu mensaje. En este ejemplo, use topic1. Intenta publicar el mensaje
varias veces. Desde elSuscripcioneslista de ambos clientes de MQTT, debería poder ver que los
clientes reciben el mensaje mediante una distribución aleatoria. En este ejemplo, publicamos el mismo
mensaje «Hola desdeAWS IoTconsola» tres veces. El cliente MQTT de la izquierda recibió el mensaje
dos veces y el cliente MQTT de la derecha lo recibió una vez.
73
AWS IoT Core Guía para desarrolladores
AWS IoT Core- puntos finales del plano de control
Hay varias formas de interactuar conAWS IoT. Las aplicaciones y los servicios pueden utilizar elAWS
IoT Core- puntos finales del plano de control (p. 74)y los dispositivos pueden conectarse aAWS IoT
Coremediante elAWS IoTpuntos finales del dispositivo (p. 75)oAWS IoT CoreporLoRaPuertas de enlace
y dispositivos WAN (p. 76).
• Puntos de conexión
ElAWS IoT Core- plano de controlyAWS IoT CorePlano de control de Device Advisorlos puntos finales
son específicos de la región y se enumeran enAWS IoT CoreCriterios de valoración y cuotas. Los
formatos de los puntos finales son los siguientes.
AWS IoT Core- plano de control iot.aws- AWS IoTAPI de plano de control
region.amazonaws.com
74
AWS IoT Core Guía para desarrolladores
AWS IoTpuntos finales del dispositivo
AWS IoT CoreDevice Advisor: api.iotdeviceadvisor.aws- AWS IoT CoreAPI del plano de
plano de control region.amazonaws.com control de Device Advisor
• SDK y herramientas
ElAWSSDKproporcionan soporte específico para cada idiomaAWS IoT CoreLas API y las API de
otrosAWSservicios. ElAWSSDK móvilesproporcionar a los desarrolladores de aplicaciones soporte
específico para la plataformaAWS IoT CoreAPI y otrosAWSservicios en dispositivos móviles.
ElAWS CLIproporciona acceso desde la línea de comandos a las funciones proporcionadas por elAWS
IoTpuntos finales de servicio.AWS Herramientas paraPowerShellproporciona herramientas para
gestionarAWSservicios y recursos en elPowerShellentorno de creación de scripts.
• Autenticación
Los puntos finales del servicio utilizan usuarios de IAM yAWScredenciales para autenticar a los usuarios.
• Más información
Para obtener más información y enlaces a las referencias del SDK, consultethe section called
“Conectarse aAWS IoT Corepuntos finales de servicio” (p. 77).
• Puntos de conexión
Los terminales del dispositivo admitenAWS IoT CoreyAWS IoT Device Managementfunciones. Son
específicos para suCuenta de AWSy puedes ver lo que son utilizando eldescribe-endpointcomando.
AWS IoT Core- plano de datos Consulte ??? (p. 83). AWS IoTAPI de plano de datos
AWS IoT Device Management- Consulte ??? (p. 83). AWS IoTAPI de plano de datos
datos de empleos de Jobs
Para obtener más información sobre estos puntos de conexión y las funciones que admiten, consultethe
section called “AWS IoTpuntos finales de servicio y datos del dispositivo” (p. 83).
• SDK
ElAWS IoTSDK de dispositivos (p. 85)proporcionan soporte específico para cada idioma para el
transporte telemétrico de mensajería en cola (MQTT) yWebSocketProtocolos seguros (WSS), con los
que se comunican los dispositivosAWS IoT.AWS Mobile SDK (p. 82)también brindan soporte para las
75
AWS IoT Core Guía para desarrolladores
AWS IoT CoreporLoRaPuertas
de enlace y dispositivos WAN
Los terminales del dispositivo utilizan certificados X.509 oAWSUsuarios de IAM con credenciales para
autenticar a los usuarios.
• Más información
Para obtener más información y enlaces a las referencias del SDK, consultethe section called “SDK de
dispositivos de AWS IoT” (p. 85).
• Puntos de conexión
AWS IoT CoreporLoRaLa WAN administra las conexiones de puerta de enlace a cuentas y regiones
específicasAWS IoT Corepuntos finales. Las puertas de enlace pueden conectarse al punto final
del servidor de configuración y actualización (CUPS) de su cuenta queAWS IoT CoreporLoRaWAN
proporciona.
• SDK
ElAWS IoTAPI inalámbrica queAWS IoT CoreporLoRaLa WAN se basa en el soporte deAWSSDK. Para
obtener más información, consulteAWSSDK y kits de herramientas.
• Autenticación
AWS IoT CoreporLoRaLas comunicaciones entre dispositivos WAN utilizan certificados X.509 para
proteger las comunicaciones conAWS IoT.
• Más información
76
AWS IoT Core Guía para desarrolladores
Conectarse aAWS IoT Corepuntos finales de servicio
Los dispositivos de IoT deben usarSDK de dispositivos de AWS IoT (p. 85). Los SDK de
dispositivos están optimizados para su uso en dispositivos y admiten la comunicación MQTT
conAWS IoT, y apoye elAWS IoTLas API más utilizadas por los dispositivos. Para obtener
más información sobre los SDK de dispositivos y las funciones que ofrecen, consulteSDK de
dispositivos de AWS IoT (p. 85).
Los dispositivos móviles deben utilizarAWS Mobile SDK (p. 82). Los SDK para dispositivos
móviles ofrecen soporte paraAWS IoTLas API, las comunicaciones entre dispositivos MQTT y las
API de otrosAWSservicios en dispositivos móviles. Para obtener más información sobre los SDK
para dispositivos móviles y las funciones que ofrecen, consulteAWS Mobile SDK (p. 82).
En las siguientes secciones se describen las herramientas y los SDK que puede utilizar para desarrollar e
interactuar con ellos.AWS IoTy otrosAWSservicios. Para ver la lista completa deAWSherramientas y kits
de desarrollo que están disponibles para crear y administrar aplicaciones enAWS, consulteHerramientas
sobre las que construirAWS.
• Instalación
Para obtener información sobre cómo instalar elAWS CLI, consulteInstalación delAWS CLI.
• Autenticación
Para obtener información sobre laAWS CLIcomandos para estosAWS IoT Coreservicios, consulte:
• AWS CLIReferencia de comandos para IoT
• AWS CLIReferencia de comandos para datos de IoT
• AWS CLIReferencia de comandos para datos de trabajos de IoT
• AWS CLIReferencia de comandos para túneles seguros de IoT
77
AWS IoT Core Guía para desarrolladores
SDK de AWS
SDK de AWS
ConAWSLos SDK, tus aplicaciones y dispositivos compatibles pueden llamarAWS IoTLas API y las API
de otrosAWSservicios. En esta sección se proporcionan enlaces a laAWSLos SDK y la documentación de
referencia de la API para las API delAWS IoT Coreservicios.
• AWS IoT
• AWS IoTPlano de datos
• AWS IoTPlano de datos de trabajos
• AWS IoTTúneles seguros
• AWS IoTinalámbrico
C++
Para instalar elAWS SDK for C++y úsalo para conectarte aAWS IoT:
Documentación para elAWS IoT Coreservicios que elAWS SDK for C++soporta
Go
Para instalar elAWS SDK for Goy úsalo para conectarte aAWS IoT:
78
AWS IoT Core Guía para desarrolladores
SDK de AWS
Documentación para elAWS IoT Coreservicios que elAWS SDK for Gosoporta
Java
Para instalar elAWS SDK for Javay úsalo para conectarte aAWS IoT:
Documentación para elAWS IoT Coreservicios que elAWS SDK for Javasoporta
• IotClientdocumentación de referencia
• IotDataPlaneClientdocumentación de referencia
• IotJobsDataPlaneClientdocumentación de referencia
• IoTSecureTunnelingClientdocumentación de referencia
JavaScript
Para instalar elAWS SDK for JavaScripty úsalo para conectarte aAWS IoT:
1. Siga las instrucciones deConfiguración delAWS SDK for JavaScript. Estas instrucciones se aplican
al uso delAWS SDK for JavaScripten el navegador y con Node.JS. Asegúrese de seguir las
instrucciones aplicables a la instalación.
Documentación para elAWS IoT Coreservicios que elAWS SDK for JavaScriptsoporta
79
AWS IoT Core Guía para desarrolladores
SDK de AWS
.NET
Para instalar elAWS SDK for .NETy úsalo para conectarte aAWS IoT:
Documentación para elAWS IoT Coreservicios que elAWS SDK for .NETsoporta
PHP
Para instalar elAWS SDK for PHPy úsalo para conectarte aAWS IoT:
Documentación para elAWS IoT Coreservicios que elAWS SDK for PHPsoporta
Python
Para instalar elAWS SDK for Python (Boto3)y úsalo para conectarte aAWS IoT:
80
AWS IoT Core Guía para desarrolladores
SDK de AWS
Este programa muestra las opciones de registro configuradas actualmente en la cuenta. Después
de instalar el SDK y configurarlo para su cuenta, debería poder ejecutar este programa.
import boto3
import json
# initialize client
iot = boto3.client('iot')
# get current logging levels, format them as JSON, and write them to stdout
response = iot.get_v2_logging_options()
print(json.dumps(response, indent=4))
Para obtener más información sobre la función utilizada en este ejemplo, consultethe section called
“Configuración de registros de AWS IoT” (p. 459).
Documentación para elAWS IoT Coreservicios que elAWS SDK for Python (Boto3)soporta
Ruby
Para instalar elAWS SDK for Rubyy úsalo para conectarte aAWS IoT:
Documentación para elAWS IoT Coreservicios que elAWSCompatible con SDK para Ruby
81
AWS IoT Core Guía para desarrolladores
AWS Mobile SDK
Android
ElAWS Mobile SDK for Androidcontiene una biblioteca, ejemplos y documentación para que los
desarrolladores puedan crear aplicaciones móviles conectadas medianteAWS. Este SDK también
incluye soporte para las comunicaciones entre dispositivos MQTT y para llamar a las API delAWS IoT
Coreservicios. Para obtener más información, consulte lo siguiente:
iOS
ElAWS Mobile SDK for iOSes un kit de desarrollo de software de código abierto, distribuido bajo
una licencia Apache Open Source. El SDK para iOS proporciona una biblioteca, ejemplos de
código y documentación para ayudar a los desarrolladores a crear aplicaciones móviles conectadas
medianteAWS. Este SDK también incluye soporte para las comunicaciones entre dispositivos MQTT y
para llamar a las API delAWS IoT Coreservicios. Para obtener más información, consulte lo siguiente:
Los puntos finales del servicio que exponen las API REST delAWS IoT Corelos servicios varían según
la región y se enumeran enAWS IoT CoreCriterios de valoración y cuotas. Debe utilizar el punto final
de la región que tiene elAWS IoTrecursos a los que desea acceder, porqueAWS IoTlos recursos son
específicos de la región.
• Autenticación
Las API REST delAWS IoT Coreuso de serviciosAWSCredenciales de IAM para la autenticación. Para
obtener más información, consulteFirmandoAWSSolicitudes de APIen elAWSReferencia general.
• Referencia de la API
Para obtener información sobre las funciones específicas que proporcionan las API REST delAWS IoT
Coreservicios, consulte:
82
AWS IoT Core Guía para desarrolladores
Conexión de dispositivos aAWS IoT
El intermediario de mensajes
Puede almacenar en caché o almacenar los puntos finales en su dispositivo. Esto significa que no
necesitará consultar elDescribeEndpointAPI cada vez que se conecta un dispositivo nuevo.
Los puntos finales no cambiarán despuésAWS IoT Corelos crea para tu cuenta.
Cada cuenta tiene varios terminales de dispositivo que son exclusivos de la cuenta y admiten funciones
de IoT específicas. ElAWS IoTlos extremos de datos del dispositivo admiten un protocolo de publicación
o suscripción diseñado para las necesidades de comunicación de los dispositivos de IoT; sin embargo,
otros clientes, como aplicaciones y servicios, también pueden usar esta interfaz si su aplicación requiere
las funciones especializadas que proporcionan estos puntos finales. ElAWS IoTlos terminales de servicio
de dispositivos permiten el acceso centrado en el dispositivo a los servicios de seguridad y administración.
Para conocer el extremo de datos del dispositivo de tu cuenta, puedes encontrarlo enAjustespágina de
tuAWS IoT Coreconsola.
Para conocer el punto final del dispositivo de tu cuenta para un propósito específico, incluido el
extremo de datos del dispositivo, utiliza eldescribe-endpointEl comando CLI que se muestra aquí, o
elDescribeEndpointAPI REST y proporcione laendpointTypevalor de parámetro de la siguiente tabla.
83
AWS IoT Core Guía para desarrolladores
AWS IoTpuntos finales de servicio y datos del dispositivo
Cada cliente tiene uniot:Data-ATSy uniot:Datapunto final. Cada terminal usa un certificado X.509
para autenticar el cliente. Recomendamos a los clientes que utilicen el tipo de punto de enlace iot:Data-
ATS más reciente para evitar problemas relacionados con la desconfianza generalizada en las entidades
de certificación de Symantec. Proporcionamos eliot:Datapunto final para que los dispositivos recuperen
datos de puntos finales antiguos que utilizanVeriSigncertificados de compatibilidad con versiones
anteriores. Para obtener más información, consulte Autenticación del servidor.
iot:Data-ATSdevuelve un
punto final de datos firmado por
ATS.
84
AWS IoT Core Guía para desarrolladores
SDK de dispositivos de AWS IoT
ElAWS IoTLos SDK de dispositivos difieren de losAWSSDK en el sentido de que elAWS IoTLos SDK
de dispositivos satisfacen las necesidades de comunicación especializadas de los dispositivos de IoT,
pero no admiten todos los servicios compatibles conAWSSDK. ElAWS IoTLos SDK de dispositivos son
compatibles conAWSSDK que admiten todos losAWSservicios; sin embargo, utilizan diferentes métodos
de autenticación y se conectan a diferentes puntos finales, lo que podría hacer que el uso delAWSLos SDK
no son prácticos en un dispositivo de IoT.
Dispositivos móviles
Elthe section called “AWS Mobile SDK” (p. 82)admiten las comunicaciones de ambos dispositivos
MQTT, algunos de losAWS IoTlas API de servicio y las API de otrasAWSservicios. Si desarrolla en un
dispositivo móvil compatible, revise su SDK para ver si es la mejor opción para desarrollar su solución de
IoT.
C++
ElAWS IoTEl SDK de dispositivos C++ permite a los desarrolladores crear aplicaciones conectadas
medianteAWSy las API delAWS IoT Coreservicios. En concreto, este SDK se diseñó para los
dispositivos que no tienen limitación de recursos y requieren características avanzadas, como la
puesta en cola de mensajes, la compatibilidad con varios procesos y las características de idioma más
actualizadas. Para obtener más información, consulte lo siguiente:
Python
ElAWS IoTEl SDK de dispositivos para Python permite a los desarrolladores escribir scripts de
Python para utilizar sus dispositivos para acceder aAWS IoTplataforma a través de MQTT o MQTT
85
AWS IoT Core Guía para desarrolladores
SDK de dispositivos de AWS IoT
a través delWebSocketProtocolo seguro (WSS). Al conectar sus dispositivos a las API delAWS IoT
Coreservicios, los usuarios pueden trabajar de forma segura con el agente de mensajes, las reglas
y el servicio Device Shadow queAWS IoT Coreproporciona y con otrosAWSservicios comoAWS
Lambda, Amazon Kinesis y Amazon S3, entre otros.
JavaScript
Java
ElAWS IoTEl SDK de dispositivos para Java permite a los desarrolladores de Java acceder a las API
delAWS IoT Corea través de MQTT o MQTT a través delWebSocketprotocolo. El SDK es compatible
con el servicio Device Shadow. Puede tener acceso a las sombras mediante los métodos GET,
UPDATE y DELETE de HTTP. El SDK también admite un modelo simplificado de acceso oculto,
que permite a los desarrolladores intercambiar datos con sombras mediante los métodos getter y
setter, sin tener que serializar ni deserializar ningún documento JSON. Para obtener más información,
consulte lo siguiente:
Embedded C
ElAWS IoT Device SDK para Embedded C(C-SDK) es una colección de archivos fuente en C bajo la
licencia de código abierto del MIT que se pueden utilizar en aplicaciones integradas para conectar
de forma segura dispositivos de IoT aAWSNúcleo de IoT. Incluye MQTT, JSON Parser yAWS
IoTBibliotecas Device Shadow y otras. Se distribuye en formato fuente y está previsto que se integre
86
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
en el firmware del cliente junto con el código de la aplicación, otras bibliotecas y, opcionalmente, un
RTOS (sistema operativo en tiempo real).
AWS IoT Device SDK para Embedded C generalmente se dirige a dispositivos con limitaciones de
recursos que requieren un tiempo de ejecución optimizado del lenguaje C. Puede usar el SDK en
cualquier sistema operativo y alojarlo en cualquier tipo de procesador (por ejemplo, MCU y MPU). Si el
dispositivo tiene suficientes recursos de memoria y procesamiento disponibles, le recomendamos que
utilice uno de los otrosAWS IoTSDK para dispositivos y dispositivos móviles, como elAWS IoTSDK de
dispositivos para C++, Java,JavaScript, o Python.
AWS IoT CoreusosTLS versión 1.2yTLS versión 1.3para cifrar todas las comunicaciones. Al conectar
dispositivos aAWS IoT Core, los clientes pueden enviar elExtensión de indicación del nombre del servidor
(SNI), que no es obligatorio pero sí muy recomendable. Para usar funciones comoregistro de múltiples
cuentas,dominios personalizados, yTerminales de VPC, debe utilizar la extensión SNI. Para obtener más
información, consulte Seguridad de transporte en AWS IoT.
ElSDK de dispositivos de AWS IoT (p. 85)admiten MQTT y MQTT a través de WSS y cumplen con los
requisitos de seguridad de las conexiones de los clientes. Se recomienda utilizar elSDK de dispositivos de
AWS IoT (p. 85)para conectar a los clientes conAWS IoT.
87
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Los clientes se conectan a susCuenta de AWSpuntos finales del dispositivo. Consultethe section called
“AWS IoTpuntos finales de servicio y datos del dispositivo” (p. 83)para obtener información sobre cómo
encontrar los puntos de conexión de los dispositivos de tu cuenta.
Note
AWSLos SDK no requieren la URL completa. Solo requieren el nombre de host del punto final,
comopubsub.pymuestra paraAWS IoTSDK de dispositivos para Python enGitHub. Si se pasa la
URL completa tal y como se indica en la siguiente tabla, se puede generar un error, por ejemplo,
un nombre de servidor no válido.
MQTT iot-endpoint
HTTPS https://iot-endpoint/topics
88
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
clientIdsoporte de campo Sí No
Detección de desconexión de Sí No
dispositivos
La duración de la conexión MQTT depende de la función de autenticación que utilice. La siguiente tabla
muestra la duración máxima de la conexión en condiciones ideales para cada función.
*
No está garantizado
89
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Con los certificados X.509 y la autenticación personalizada, la duración de la conexión no tiene un límite
estricto, pero puede ser de tan solo unos minutos. Las interrupciones de conexión pueden producirse por
varios motivos. La siguiente lista contiene algunos de los motivos más comunes.
Sus dispositivos deben implementar estrategias para detectar desconexiones y volver a conectarse.
Para obtener información sobre los eventos de desconexión y orientación sobre cómo gestionarlos,
consulte??? (p. 1268)en??? (p. 1267).
MQTT
MATT(Message Queue Telemetry Transport) es un protocolo de mensajería ligero y ampliamente
adoptado que está diseñado para dispositivos con restricciones.AWS IoT Coreel soporte para MQTT
se basa enEspecificación MQTT v3.1.1y elEspecificación MQTT v5.0, con algunas diferencias,
como se documenta enthe section called “AWS IoTdiferencias con respecto a las especificaciones
de MQTT” (p. 109). Como la última versión del estándar, MQTT 5 presenta varias funciones
clave que hacen que un sistema basado en MQTT sea más sólido, incluidas las nuevas mejoras de
escalabilidad, la mejora de la notificación de errores con las respuestas a los códigos de motivo, los
temporizadores de caducidad de los mensajes y las sesiones y los encabezados de los mensajes de
usuario personalizados. Para obtener más información sobre las funciones de MQTT 5 queAWS IoT
Coresoportes, consulteFunciones compatibles con MQTT 5 (p. 101).AWS IoT Coretambién admite la
comunicación entre versiones de MQTT (MQTT 3 y MQTT 5). Un publicador de MQTT 3 puede enviar un
mensaje de MQTT 3 a un suscriptor de MQTT 5 que recibirá un mensaje de publicación de MQTT 5, y
viceversa.
AWS IoT Coreadmite conexiones de dispositivos que utilizan el protocolo MQTT y el protocolo MQTT
a través de WSS y que se identifican mediante unID de cliente. ElSDK de dispositivos de AWS
IoT (p. 85)admiten ambos protocolos y son las formas recomendadas de conectar dispositivos aAWS
IoT Core. ElAWS IoTLos SDK de dispositivos admiten las funciones necesarias para que los dispositivos
y los clientes se conecten y accedanAWS IoTservicios. Los SDK de dispositivos admiten los protocolos
de autenticación que elAWS IoTlos servicios requieren y los requisitos de ID de conexión que requieren
el protocolo MQTT y los protocolos MQTT sobre WSS. Para obtener información sobre cómo conectarse
aAWS IoTutilizando elAWSSDK de dispositivos y enlaces a ejemplos deAWS IoTen los idiomas admitidos,
consultethe section called “Conectarse con MQTT mediante elAWS IoTSDK de dispositivos” (p. 91).
Para obtener más información sobre los métodos de autenticación y las asignaciones de puertos para los
mensajes MQTT, consulteProtocolos, mapeos de puertos y autenticación (p. 87).
Si bien recomendamos usar elAWS IoTSDK de dispositivos a los que conectarseAWS IoT, no son
obligatorios. Si no utiliza elAWS IoTSin embargo, los SDK de dispositivos deben proporcionar la seguridad
de conexión y comunicación necesaria. Los clientes deben enviar elExtensión TLS de indicación de
nombre de servidor (SNI)en la solicitud de conexión. Se rechazan los intentos de conexión que no incluyan
el SNI. Para obtener más información, consulte Seguridad de transporte en AWS IoT. Clientes que utilizan
usuarios de IAM yAWSlas credenciales para autenticar a los clientes deben proporcionar la información
correctaVersión de firma 4autenticación.
En este tema:
90
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
ElAWS IoTLos SDK de dispositivos han publicado un cliente MQTT 5 en la versión preliminar
para desarrolladores. Durante el período de previsualización, es posible que realicemos cambios
incompatibles con versiones anteriores en las API públicas y en los clientes del servicio delAWS
IoTLos SDK de dispositivos siguen utilizando el cliente MQTT 3.1.1.
C++
• Código fuente de una aplicación de muestra que muestra un ejemplo de conexión MQTT en C++
• AWS IoTSDK para dispositivos C++ v2 activadoGitHub
Python
• Código fuente de una aplicación de muestra que muestra un ejemplo de conexión MQTT en Python
• AWS IoTSDK de dispositivos para Python v2 activadoGitHub
JavaScript
• Código fuente de una aplicación de muestra que muestra un ejemplo de conexión MQTT
enJavaScript
• AWS IoTSDK de dispositivos paraJavaScriptv2 activadoGitHub
Java
• Código fuente de una aplicación de muestra que muestra un ejemplo de conexión MQTT en Java
91
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Embedded C
• Código fuente de una aplicación de ejemplo que muestra un ejemplo de conexión MQTT en
Embedded C
• AWS IoTSDK de dispositivos para C integrado activadoGitHub
Esta tabla describe cómo afecta cada nivel de QoS a los mensajes publicados en y por el intermediario de
mensajes.
Nivel 0 de QoS Enviado cero o más veces Este nivel debe usarse para los
mensajes que se envían a través
de enlaces de comunicación
confiables o que pueden omitirse
sin problemas.
92
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Clean Start= 1 Crea una sesión nueva y termina una sesión anterior si existe.
No se admiten sesiones persistentes entre las versiones MQTT (MQTT 3 y MQTT 5). Una sesión
persistente de MQTT 3 no se puede reanudar como una sesión de MQTT 5 y viceversa.
Una vez que el cliente se une a una sesión persistente, puede publicar mensajes y suscribirse a los filtros
de temas sin ningún indicador adicional en cada operación.
Una sesión persistente representa una conexión continua entre un cliente y un intermediario de mensajes
MQTT. Cuando un cliente se conecta al agente de mensajes mediante una sesión persistente, el agente
de mensajes guarda todas las suscripciones que el cliente realiza durante la conexión. Cuando el cliente
se desconecta, el agente de mensajes almacena los mensajes QoS 1 sin confirmar y los mensajes QoS 1
nuevos publicados en los temas a los que el cliente está suscrito. Los mensajes se almacenan según
el límite de la cuenta. Los mensajes que superen el límite se eliminarán. Para obtener más información
sobre los límites de mensajes persistentes, consulteAWS IoT Corepuntos finales y cuotas. Cuando el
93
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
cliente se vuelve a conectar a su sesión persistente, se restablecen todas las suscripciones y todos los
mensajes almacenados se envían al cliente a una velocidad máxima de 10 mensajes por segundo. En
MQTT 5, si una QoS1 saliente con el intervalo de caducidad del mensaje caduca cuando un cliente está
desconectado, una vez que se reanude la conexión, el cliente no recibirá el mensaje caducado.
Tras la reconexión, los mensajes almacenados se envían al cliente, a una velocidad limitada a 10
mensajes almacenados por segundo, junto con el tráfico de mensajes actual hasta quePublish
requests per second per connectionse ha alcanzado el límite. Dado que la velocidad de
entrega de los mensajes almacenados es limitada, se tardarán varios segundos en entregar todos los
mensajes almacenados si una sesión tiene más de 10 mensajes almacenados que entregar después de la
reconexión.
En MQTT 3, el valor predeterminado del tiempo de caducidad de las sesiones persistentes es de una hora,
y esto se aplica a todas las sesiones de la cuenta.
En MQTT 5, puede establecer el intervalo de caducidad de sesión para cada sesión en los paquetes
CONNECT y DISCONNECT.
Note
Los mensajes almacenados que esperan ser enviados al cliente al finalizar la sesión se descartan;
sin embargo, se siguen facturando con la tarifa de mensajería estándar, aunque no se hayan
podido enviar. Para obtener más información sobre los precios de los mensajes, consulteAWS IoT
CorePrecios. Puede configurar el intervalo de tiempo de caducidad.
Si un cliente no se vuelve a conectar a su sesión persistente antes de que caduque, la sesión finaliza
y los mensajes almacenados se descartan. Cuando un cliente se vuelve a conectar después de que la
sesión haya expirado con uncleanSessionmarcar a0, el servicio crea una nueva sesión persistente.
Las suscripciones o los mensajes de la sesión anterior no están disponibles para esta sesión porque se
descartaron al expirar la sesión anterior.
94
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
y se cargan nuevamente a tu cuenta. Para obtener más información sobre los precios de los mensajes,
consulteAWS IoT Coreprecios - Mensajería.
El tiempo de caducidad predeterminado de la sesión persistente de una hora se puede aumentar mediante
el proceso de aumento del límite estándar. Tenga en cuenta que aumentar el tiempo de caducidad de la
sesión podría aumentar los cargos por mensajes, ya que el tiempo adicional podría permitir almacenar más
mensajes para el dispositivo sin conexión y esos mensajes adicionales se cargarían a su cuenta según
la tarifa de mensajería estándar. El tiempo de caducidad de la sesión es aproximado y una sesión puede
persistir hasta 30 minutos más que el límite de la cuenta; sin embargo, una sesión no será inferior al límite
de la cuenta. Para obtener más información sobre los límites de sesión, consulteAWSCuotas de servicio.
Los mensajes retenidos de MQTT se envían a un cliente después de que el cliente se suscriba a un
tema. Si desea que todos los clientes que se suscriban a un tema reciban el mensaje retenido de
MQTT inmediatamente después de su suscripción, puede publicar un mensaje de configuración con
el indicador RETAIN activado. Los clientes que se suscriben también reciben actualizaciones de esa
configuración cada vez que se publica un nuevo mensaje de configuración.
• Como último mensaje de estado conocido
Los dispositivos pueden configurar el indicador RETAIN en los mensajes de estado actual para queAWS
IoT Corelos salvará. Cuando las aplicaciones se conecten o vuelvan a conectarse, pueden suscribirse a
este tema y obtener el último estado del que se informó inmediatamente después de suscribirse al tema
del mensaje conservado. De esta forma, pueden evitar tener que esperar hasta el siguiente mensaje del
dispositivo para ver el estado actual.
En esta sección:
• Tareas comunes con mensajes de MQTT retenidos enAWS IoT Core (p. 95)
• Mensajes de facturación y retenidos (p. 97)
• Comparación de los mensajes retenidos de MQTT y las sesiones persistentes de MQTT (p. 98)
• MQTT retuvo mensajes yAWS IoTSombras del dispositivo (p. 99)
Los mensajes retenidos de MQTT requieren acciones políticas específicas para autorizar a los clientes
a acceder a ellos. Para ver ejemplos del uso de políticas de mensajes retenidos, consulteEjemplos de
políticas de mensajes retenidos (p. 384).
En esta sección se describen las operaciones comunes que implican la retención de mensajes.
El cliente determina si un mensaje se conserva cuando publica un mensaje MQTT. Los clientes pueden
configurar el indicador RETAIN al publicar un mensaje mediante unSDK de dispositivos (p. 1489).
95
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Las aplicaciones y los servicios pueden establecer el indicador RETAIN cuando utilizan
elPublishacciónpara publicar un mensaje MQTT.
Solo se conserva un mensaje por nombre de tema. Un mensaje nuevo con el marcador RETAIN
establecido publicado en un tema reemplaza cualquier mensaje retenido existente que se haya enviado
anteriormente al tema.
NOTA:No puedes publicar en untema reservado (p. 115)con el indicador RETAIN activado.
• Suscribirse a un tema de mensaje conservado
Los clientes se suscriben a los temas de mensajes retenidos como lo harían con cualquier otro tema
de mensajes de MQTT. Los mensajes retenidos que se reciben al suscribirse a un tema de mensajes
retenidos tienen el indicador RETAIN activado.
Los mensajes retenidos se eliminan deAWS IoT Corecuando un cliente publica un mensaje retenido con
una carga de mensajes de 0 bytes en el tema del mensaje retenido. Los clientes que se hayan suscrito
al tema del mensaje conservado también recibirán el mensaje de 0 bytes.
Suscribirse a un filtro de temas comodín que incluye un tema de mensaje retenido permite al cliente
recibir los mensajes posteriores publicados en el tema del mensaje retenido, pero no entrega el mensaje
retenido al suscribirse.
Los mensajes retenidos que se reciben al suscribirse a un tema de mensajes retenidos tienen el
indicador RETAIN activado. Los mensajes retenidos que recibe un cliente suscriptor después de la
suscripción no se conservan.
• Recuperar un mensaje retenido
Los mensajes retenidos se entregan a los clientes automáticamente cuando se suscriben al tema con
el mensaje retenido. Para que un cliente reciba el mensaje retenido al suscribirse, debe suscribirse al
nombre de tema exacto del mensaje retenido. Al suscribirse a un filtro de temas comodín que incluye un
tema de mensaje retenido, el cliente recibe los mensajes posteriores publicados en el tema del mensaje
retenido, pero no entrega el mensaje retenido al suscribirse.
Los servicios y las aplicaciones pueden enumerar y recuperar los mensajes retenidos
llamandoListRetainedMessagesyGetRetainedMessage.
Con MQTT 5, si un mensaje retenido tiene establecido el intervalo de caducidad del mensaje y el
mensaje retenido caduca, el nuevo suscriptor que se suscriba a ese tema no recibirá el mensaje retenido
una vez que la suscripción se haya realizado correctamente.
• Listar temas de mensajes retenidos
96
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Los dispositivos, las aplicaciones y los servicios pueden eliminar un mensaje retenido publicando un
mensaje con el marcador RETAIN establecido y una carga de mensajes vacía (0 bytes) en el nombre del
tema del mensaje retenido que se va a eliminar. Estos mensajes eliminan el mensaje retenido deAWS
IoT Core, se envían a los clientes que tienen una suscripción al tema, pero no son retenidos porAWS IoT
Core.
Los mensajes retenidos también se pueden eliminar de forma interactiva accediendo al mensaje retenido
enAWS IoTconsola. Mensajes retenidos que se eliminan mediante elAWS IoTconsolatambién envía un
mensaje de 0 bytes a los clientes que se hayan suscrito al tema del mensaje retenido.
Los mensajes retenidos no se pueden restaurar después de eliminarlos. Un cliente tendría que publicar
un nuevo mensaje conservado para reemplazar el mensaje eliminado.
• Depuración y solución de problemas de mensajes retenidos
ElAWS IoTconsolaproporciona varias herramientas para ayudarle a solucionar problemas con los
mensajes retenidos:
• ElMensajes retenidospágina
ElMensajes retenidospágina en elAWS IoTla consola proporciona una lista paginada de los mensajes
retenidos que su cuenta ha almacenado en la región actual. Desde esta página, puede:
• Consulte los detalles de cada mensaje retenido, como la carga útil del mensaje, la QoS y la hora en
que se recibió.
• Actualiza el contenido de un mensaje conservado.
• Eliminar un mensaje retenido.
• Elcliente de prueba MQTT
Elcliente de prueba MQTTpágina en elAWS IoTla consola puede suscribirse y publicar temas de
MQTT. La opción de publicación le permite configurar el indicador RETAIN en los mensajes que
publique para simular el comportamiento de sus dispositivos.
Algunos resultados inesperados podrían deberse a estos aspectos de la forma en que se implementan
los mensajes retenidos enAWS IoT Core.
• Límites de mensajes retenidos
Cuando una cuenta ha almacenado el número máximo de mensajes retenidos,AWS IoT Coredevuelve
una respuesta restringida a los mensajes publicados con RETAIN configurado y a cargas superiores a
0 bytes hasta que se eliminen algunos mensajes retenidos y el recuento de mensajes retenidos caiga
por debajo del límite.
• Orden de entrega de mensajes retenida
Publicar mensajes con el indicador RETAIN establecido desde un cliente, medianteAWS IoTconsola o
llamandoPublishincurre en los cargos de mensajería adicionales descritos enAWS IoT Coreprecios -
Mensajería.
Para obtener más información sobre los costos de mensajería, consulteAWS IoT Coreprecios - Mensajería.
Los mensajes retenidos y las sesiones persistentes son características estándar de MQTT que permiten
a los dispositivos recibir mensajes publicados sin conexión. Los mensajes retenidos se pueden publicar
desde sesiones persistentes. En esta sección se describen los aspectos clave de estas funciones y cómo
funcionan juntas.
Mensajes recibidos en la Tras suscribirse a un tema con Tras suscribirse a un tema sin
suscripción inicial a un tema un mensaje retenido, se recibe el conservar ningún mensaje, no se
mensaje retenido más reciente. recibe ningún mensaje hasta que
se publique uno sobre el tema.
Temas suscritos después de la Sin una sesión persistente, el Los temas suscritos se restauran
reconexión cliente debe suscribirse a los tras la reconexión.
temas después de la reconexión.
Mensajes recibidos después de Tras suscribirse a un tema con Todos los mensajes publicados
la reconexión un mensaje retenido, se recibe el con un QOS = 1 y a los que se
mensaje retenido más reciente. haya suscrito con un QOS =1
mientras el dispositivo estaba
desconectado se envían después
de que el dispositivo se vuelva a
conectar.
98
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Para obtener información sobre las sesiones persistentes, consultethe section called “Sesiones
persistentes de MQTT” (p. 92).
Con los mensajes retenidos, el cliente de publicación determina si un mensaje debe conservarse y
entregarse a un dispositivo después de que se conecte, si ha tenido una sesión anterior o no. El editor
elige almacenar un mensaje y el mensaje almacenado se entrega a todos los clientes actuales y futuros
que se suscriban con suscripciones de QoS 0 o QoS 1. Los mensajes retenidos guardan solo un mensaje
sobre un tema determinado a la vez.
Cuando una cuenta ha almacenado el número máximo de mensajes retenidos,AWS IoT Coredevuelve una
respuesta restringida a los mensajes publicados con RETAIN configurado y a cargas superiores a 0 bytes
hasta que se eliminen algunos mensajes retenidos y el recuento de mensajes retenidos caiga por debajo
del límite.
Tanto los mensajes retenidos como las sombras de dispositivos retienen datos de un dispositivo, pero se
comportan de manera diferente y tienen propósitos diferentes. En esta sección se describen sus similitudes
y diferencias.
La carga útil del mensaje tiene Según lo definido en la AWS IoTadmite una estructura
una estructura o esquema implementación. MQTT no de datos específica.
predefinidos especifica una estructura o
esquema para la carga de sus
mensajes.
La carga útil del mensaje está Los mensajes retenidos no se Las sombras del dispositivo
adjunta a un recurso de cosa adjuntan a ningún recurso. están asociadas a un recurso de
la cosa.
99
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
El cliente recibe los datos del El cliente recibe Los clientes pueden suscribirse
mensaje al suscribirse automáticamente un mensaje a las actualizaciones de Device
retenido después de suscribirse Shadow, pero deben solicitar
a un tema con un mensaje el estado actual de forma
retenido. deliberada.
El corredor almacenará los mensajes del testamento hasta que se produzca una desconexión no iniciada.
Cuando eso suceda, el corredor publicará los mensajes a todos los clientes que se suscribieron al Will
Topic para notificar la desconexión. Si el cliente se desconecta del corredor mediante una desconexión
iniciada por el cliente mediante el mensaje MQTT DISCONNECT, el corredor no publicará los mensajes
de LWT almacenados. En todos los demás casos, se enviarán los mensajes LWT. Para obtener una
lista completa de los escenarios de desconexión en los que el corredor enviará los mensajes de LWT,
consulteConectar o desconectar eventos.
Uso de connectAttributes
ConnectAttributesle permiten especificar los atributos que desea usar en su mensaje de conexión en
sus políticas de IAM, comoPersistentConnectyLastWill. ConConnectAttributes, puedes crear
políticas que no den a los dispositivos acceso a las nuevas funciones de forma predeterminada, lo que
puede resultar útil si un dispositivo se ve comprometido.
PersistentConnect
Utilice elPersistentConnectfunción para guardar todas las suscripciones que el cliente realiza
durante la conexión cuando se interrumpe la conexión entre el cliente y el corredor.
LastWill
100
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
De forma predeterminada, su política tiene una conexión no persistente y no se transfieren atributos para
esta conexión. Debe especificar una conexión persistente en su política de IAM si desea tener una.
Suscripciones compartidas
AWS IoT Coreadmite suscripciones compartidas para MQTT 3 y MQTT 5. Las suscripciones compartidas
permiten que varios clientes compartan una suscripción a un tema y solo un cliente recibirá los mensajes
publicados sobre ese tema mediante una distribución aleatoria. Las suscripciones compartidas pueden
equilibrar de manera efectiva la carga de los mensajes MQTT entre varios suscriptores. Por ejemplo,
supongamos que tiene 1000 dispositivos que publican sobre el mismo tema y 10 aplicaciones de fondo
que procesan esos mensajes. En ese caso, las aplicaciones de fondo pueden suscribirse al mismo
tema y cada una recibirá de forma aleatoria los mensajes publicados por los dispositivos en el tema
compartido. Esto es efectivamente «compartir» la carga de esos mensajes. Las suscripciones compartidas
también permiten una mayor resiliencia. Cuando alguna aplicación de backend se desconecta, el corredor
distribuye la carga entre los suscriptores restantes del grupo.
Para utilizar las suscripciones compartidas, los clientes se suscriben a una suscripción compartidafiltro de
temasde la siguiente manera:
$share/{ShareName}/{TopicFilter}
• $sharees una cadena literal para indicar el filtro de temas de una suscripción compartida, que debe
empezar por$share.
• {ShareName}es una cadena de caracteres para especificar el nombre compartido que utiliza un grupo
de suscriptores. El filtro de temas de una suscripción compartida debe contener unShareNamey será
seguido por el/personaje. El{ShareName}no debe incluir los siguientes caracteres:/,+, o#. El tamaño
máximo para{ShareName}es de 128 bytes.
• {TopicFilter}sigue lo mismofiltro de temassintaxis como suscripción no compartida. El tamaño
máximo para{TopicFilter}es de 256 bytes.
• Las dos barras obligatorias (/) para$share/{ShareName}/{TopicFilter}no están incluidos en
elNúmero máximo de barras en el tema y el filtro de temaslímite.
En las tablas siguientes se comparan las suscripciones no compartidas y las suscripciones compartidas:
101
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
102
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
En este ejemplo, hay tres suscripciones compartidas que coinciden con el tema de publicación de
MQTTsports/tennis. El intermediario de mensajes copia el mensaje publicado y lo envía a un cliente
aleatorio de cada grupo coincidente.
Para obtener más información sobre los límites de las suscripciones compartidas, consulteAWS IoT
Corepuntos finales y cuotasdesde elAWSReferencia general. Para probar las suscripciones compartidas
mediante elAWS IoTCliente MQTT en elAWS IoTconsola, consulte??? (p. 72). Para obtener más
información sobre las suscripciones compartidas, consulteSuscripciones compartidasde la especificación
MQTTV5.0.
Alias de temas
Puede sustituir el nombre de un tema por un alias de tema, que es un entero de dos bytes. El uso de
alias de temas puede optimizar la transmisión de los nombres de los temas para reducir potencialmente
los costos de datos en los servicios de datos medidos.AWS IoT Coretiene un límite predeterminado de
8 alias de temas. Para obtener más información, consulteAWS IoT Corepuntos finales y cuotasdesde
elAWSReferencia general.
En la salida, el suscriptor recibirá un mensaje con el tiempo restante restante en el intervalo de caducidad.
Por ejemplo, si un mensaje de publicación entrante tiene una caducidad de 30 segundos y se envía al
suscriptor transcurridos 20 segundos, el campo de caducidad del mensaje se actualizará a 10. Es posible
que el mensaje recibido por el suscriptor tenga un MEI actualizado de 0. Esto se debe a que tan pronto
como el tiempo restante sea de 999 ms o menos, se actualizará a 0.
EnAWS IoT Core, el intervalo mínimo de caducidad de los mensajes es 1. Si el intervalo se establece en 0
desde el lado del cliente, se ajustará a 1. El intervalo máximo de caducidad de los mensajes es 604800 (7
días). Los valores superiores a este se ajustarán al valor máximo.
103
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
por una sesión conectada a través de MQTT5 puede caducar para los dispositivos suscritos a sesiones
de MQTT3. La siguiente tabla muestra cómo la caducidad de los mensajes admite los siguientes tipos de
mensajes de publicación:
Ultimo El intervalo para los mensajes de última voluntad comienza cuando el cliente se
testamento desconecta y el servidor intenta entregar el mensaje de última voluntad a sus
suscriptores.
Mensajes en Si una QoS1 saliente con intervalo de caducidad de mensajes caduca cuando un
cola cliente está desconectado, después desesión persistente (p. 92)se reanuda, el
cliente no recibirá el mensaje caducado.
Cuando se produce una desconexión, el servidor puede enviar de forma proactiva al cliente un mensaje de
DESCONEXIÓN para notificar el cierre de la conexión con un código de motivo de la desconexión.
Solicitud/respuesta
Los editores pueden solicitar que el destinatario envíe una respuesta a un tema especificado por el editor
en el momento de la recepción.
El cliente y el servidor pueden especificar de forma independiente el tamaño máximo de paquete que
admiten.
Puede especificar el formato de carga (binario, texto) y el tipo de contenido cuando se publique un
mensaje. Se reenvían al receptor del mensaje.
Propiedades de MQTT 5
Las propiedades de MQTT 5 son adiciones importantes al estándar MQTT para soportar las nuevas
funciones de MQTT 5, como la caducidad de la sesión y el patrón de solicitud/respuesta. EnAWS IoT Core,
puedes crearreglasque puede reenviar las propiedades de los mensajes salientes o utilizarPublicación
HTTPpara publicar mensajes MQTT con algunas de las nuevas propiedades.
La siguiente tabla muestra todas las propiedades de MQTT 5 queAWS IoT Coresoportes.
Indicador de Un valor booleano que indica si la carga está Byte PUBLICAR, CONECTAR
formato de formateada como UTF-8.
carga
104
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Content Type Cadena UTF-8 que describe el contenido de la Cadena PUBLICAR, CONECTAR
carga. UTF-8
Tema de Cadena UTF-8 que describe el tema en el que Cadena PUBLICAR, CONECTAR
respuesta el receptor debe publicar como parte del flujo UTF-8
de solicitud-respuesta. El tema no debe tener
caracteres comodín.
Datos de Datos binarios utilizados por el remitente del Binario PUBLICAR, CONECTAR
correlación mensaje de solicitud para identificar a qué
solicitud se dirige el mensaje de respuesta.
Tema Alias Este valor indica el valor más alto que Entero CONECTAR, CONECTAR
Maximum se aceptará como alias de tema. El valor de 2
predeterminado es 0. bytes
105
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
Retener Un valor booleano que indica siAWS IoT Coreel Byte CHIVATO
disponible corredor de mensajes admite los mensajes
retenidos. El valor predeterminado es 1.
Suscripción Un valor booleano que indica siAWS IoT CoreEl Byte CHIVATO
a Wildcard corredor de mensajes admite la suscripción
disponible Wildcard disponible. El valor predeterminado es
1.
Identificador Un valor booleano que indica siAWS IoT Coreel Byte CHIVATO
de suscripción corredor de mensajes admite el identificador de
disponible suscripción disponible. El valor predeterminado
es 0.
128 0x80 Error no El servidor no desea revelar el motivo del error o no se aplica
especificado ninguno de los otros códigos por los que se aplica.
133 0x85 Identificador de El identificador del cliente es una cadena válida, pero el servidor
cliente no válido no lo permite.
144 0x90 Nombre de tema El nombre del tema del testamento está formado correctamente,
no válido pero el servidor no lo acepta.
155 0x9B No se admite QoS El servidor no admite la QoS establecida en Will QoS.
106
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
144 0x90 Nombre de tema El nombre del tema no tiene un formato incorrecto, pero el
no válido cliente o el servidor no lo aceptan.
145 0x91 Identificador de El identificador del paquete ya está en uso. Esto podría indicar
paquete en uso una discrepancia en el estado de la sesión entre el cliente y el
servidor.
129 0x81 Paquete mal El paquete recibido no cumple con esta especificación.
formado
142 0x8E Sesión Se ha conectado otra conexión con el mismo ClientID, lo que
interrumpida hace que esta conexión se cierre.
143 0x8F Filtro de tema no El filtro de temas está configurado correctamente, pero el
válido servidor no lo acepta.
144 0x90 Nombre de tema El nombre del tema tiene el formato correcto, pero este cliente
no válido o servidor no lo acepta.
148 0x94 Alias de tema no El cliente o servidor ha recibido un paquete PUBLISH que
válido contiene un alias de tema superior al alias de tema máximo que
envió en el paquete CONNECT o CONNACK.
107
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
155 0x9B No se admite El cliente especificó una QoS superior a la QoS especificada en
QoS la QoS máxima del CONNACK.
0 0x00 QoS concedida: 0 Se acepta la suscripción y la QoS máxima enviada será QoS 0.
Es posible que se trate de una QoS inferior a la solicitada.
1 0x01 QoS 1 concedida Se acepta la suscripción y la QoS máxima enviada será QoS 1.
Es posible que se trate de una QoS inferior a la solicitada.
143 0x8F Filtro de tema no El filtro de temas está configurado correctamente, pero no está
válido permitido para este cliente.
143 0x8F Filtro de tema no El filtro de temas está configurado correctamente, pero no está
válido permitido para este cliente.
108
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
• AWS IoTno admite los siguientes paquetes para MQTT 3: PUBREC, PUBREL y PUBCOMP.
• AWS IoTno admite los siguientes paquetes para MQTT 5: PUBREC, PUBREL, PUBCOMP y AUTH.
• AWS IoTno admite la redirección del servidor MQTT 5.
• AWS IoTsolo admite los niveles 0 y 1 de calidad de servicio (QoS) de MQTT.AWS IoTno admite la
publicación ni la suscripción con el nivel 2 de QoS. Cuando se solicita el nivel 2 de QoS, el intermediario
de mensajes no envía ningún PUBACK ni un SUBACK.
• En AWS IoT, suscribirse a un tema con QoS nivel 0 significa que un mensaje se entrega cero o más
veces. Es posible que un mensaje se entregue más de una vez. Los mensajes que se entreguen más de
una vez pueden enviarse con otro ID de paquete. En tal caso, la marca DUP no se establece.
• Cuando responde a una solicitud de conexión, el agente de mensajes envía un mensaje CONNACK.
Este mensaje contiene una marca para indicar si la conexión reanuda una sesión anterior.
• Antes de enviar paquetes de control adicionales o una solicitud de desconexión, el cliente debe esperar
a que el mensaje CONNACK se reciba en su dispositivo desde elAWS IoTagente de mensajes.
• Cuando un cliente se suscribe a un tema, puede haber un retraso entre el momento en que el agente
de mensajes envía un SUBACK y el momento en que el cliente empieza a recibir nuevos mensajes
coincidentes.
• Cuando un cliente usa el carácter comodín#en el filtro de temas para suscribirse a un tema, coinciden
todas las cadenas en su nivel de la jerarquía de temas o por debajo de él. Sin embargo, el tema principal
no coincide. Por ejemplo, una suscripción al temasensor/#recibe los mensajes publicados en los
temassensor/,sensor/temperature,sensor/temperature/room1, pero no los mensajes
publicados ensensor. Para obtener más información sobre los comodines, consulteFiltros de
temas (p. 114).
• El agente de mensajes utiliza el ID de cliente para identificar a cada cliente. El ID de cliente se transfiere
desde el cliente al agente de mensajes como parte de la carga de MQTT. Dos clientes con el mismo
ID de cliente no se pueden conectar simultáneamente al agente de mensajes. Cuando un cliente se
conecta al agente de mensajes mediante un ID de cliente que otro cliente está utilizando, se acepta la
nueva conexión de cliente y se desconecta el cliente previamente conectado.
• En raras ocasiones, el agente de mensajes reenviará el mismo mensaje PUBLISH lógico con otro ID de
paquete.
• La suscripción a los filtros de temas que contienen un carácter comodín no puede recibir mensajes
retenidos. Para recibir un mensaje retenido, la solicitud de suscripción debe contener un filtro de tema
que coincida exactamente con el tema del mensaje retenido.
• El agente de mensajes no garantiza el orden en que se reciben los mensajes y el ACK.
• AWS IoTpueden tener límites diferentes a los de las especificaciones. Para obtener más información,
consulteAWS IoT Corelímites y cuotas del intermediario de mensajes y del protocolodesde elAWS
IoTGuía de referencia.
HTTPS
Los clientes pueden publicar mensajes realizando solicitudes a la API REST utilizando los protocolos
HTTP 1.0 o 1.1. Para obtener información sobre la autenticación y los mapeos de puertos utilizados por las
solicitudes HTTP, consulte Protocolos, mapeos de puertos y autenticación (p. 87).
Note
109
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1"
• Endpoint de datos de IoTes elAWS IoTpunto final de datos del dispositivo (p. 83). Puede
encontrar el punto final enAWS IoTconsola en la página de detalles del objeto o en el cliente mediante
elAWS CLIcomando:
import requests
import argparse
# make request
publish = requests.request('POST',
publish_url,
data=publish_msg,
cert=[args.cert, args.key])
# print results
print("Response status: ", str(publish.status_code))
if publish.status_code == 200:
110
AWS IoT Core Guía para desarrolladores
Protocolos de comunicación de dispositivos
import requests
import http.client
import json
import ssl
ssl_context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_CLIENT)
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
# make request
response = connection.getresponse()
# print results
print(response.read().decode())
CURL
Para usar curl para enviar un mensaje desde un dispositivo cliente de AWS IoT
1. Compruebe elcurlversión.
curl --help
En el texto de ayuda, busque las opciones TLS. Debería ver la opción --tlsv1.2.
b. Si ve la opción --tlsv1.2, continúe.
c. Si no ve el--tlsv1.2opción o obtienes uncommand not founderror, es posible que
tengas que actualizar o instalar curl en tu cliente o instalaropensslantes de continuar.
2. Instale los certificados en su cliente.
Copie los archivos de certificado que creó cuando registró su cliente (objeto) en la consola
de AWS IoT. Asegúrese de que tiene estos tres archivos de certificado en su cliente antes de
continuar.
curl --tlsv1.2 \
111
AWS IoT Core Guía para desarrolladores
Temas de MQTT
--cacert Amazon-root-CA-1.pem \
--cert device.pem.crt \
--key private.pem.key \
--request POST \
--data "{ \"message\": \"Hello, world\" }" \
"https://IoT_data_endpoint:8443/topics/topic?qos=1"
--tlsv1.2
Los datos de HTTP POST que quiere publicar. En este caso, es una cadena JSON, con las
comillas internas con el carácter de escape de barra invertida (\).
«https://Endpoint de datos de IoT: 8443/temas/tema? qos=1"
La URL de su clienteAWS IoTpunto final de datos del dispositivo, seguido del puerto
HTTPS,:8443, que luego va seguida de la palabra clave,/topics/y el nombre del
tema,topic, en este caso. Especifique la calidad de servicio como parámetro de consulta,?
qos=1.
4. Abra el cliente de prueba MQTT en elAWS IoTconsola.
Siga las instrucciones deVer los mensajes MQTT con el cliente MQTT de AWS IoT (p. 69)y
configure la consola para suscribirse a los mensajes con el nombre del tema detemautilizado en
sucurlcomando, o utilice el filtro de temas comodín de#.
5. Pruebe el comando.
Mientras monitorea el tema en el cliente de prueba de la consola de AWS IoT, vaya a su cliente y
ejecute la línea de comandos curl que creó en el paso 3. Debería ver los mensajes de su cliente
en la consola.
Temas de MQTT
Los temas de MQTT identificanAWS IoTmensajes.AWS IoTlos clientes identifican los mensajes que
publican asignando nombres de temas a los mensajes. Los clientes identifican los mensajes a los que
desean suscribirse (recibir) registrando un filtro de temas con AWS IoT Core. El agente de mensajes de
utiliza nombres y filtros de temas para dirigir los mensajes de los clientes de publicación a los clientes de
suscripción.
El agente de mensajes utiliza temas para identificar los mensajes enviados mediante MQTT y enviados
mediante HTTP alURL del mensaje HTTPS (p. 110).
112
AWS IoT Core Guía para desarrolladores
Temas de MQTT
Aunque AWS IoT admite algunos temas reservados del sistema (p. 115), la mayoría de los temas de
MQTT los crea y administra el diseñador del sistema. AWS IoT utiliza temas para identificar los mensajes
que se reciben de los clientes de publicación y para seleccionar los mensajes que se van a enviar a los
clientes suscriptores, tal y como se describe en las secciones siguientes. Antes de crear un espacio de
nombres de temas para el sistema, consulte las características de los temas de MQTT para crear la
jerarquía de nombres de temas que funcione mejor con su sistema de IoT.
Nombres de temas
Los nombres de los temas y los filtros de temas son cadenas codificadas por UTF-8. Pueden representar
una jerarquía de información utilizando el carácter de barra diagonal (/) para separar los niveles de la
jerarquía. Por ejemplo, este nombre de tema podría referirse a un sensor de temperatura en la sala 1:
• sensor/temperature/room1
En este ejemplo, también puede haber otros tipos de sensores en otras salas con nombres de temas
como:
• sensor/temperature/room2
• sensor/humidity/room1
• sensor/humidity/room2
Note
Cuando considere los nombres de los temas para los mensajes de su sistema, tenga en cuenta:
• Los nombres de temas y los filtros de temas distinguen entre mayúsculas y minúsculas.
• Los nombres de los temas no deben contener información de identificación personal.
• Los nombres de tema que comienzan por $ son temas reservados (p. 115) que debe utilizar
únicamente AWS IoT Core.
• AWS IoT Coreno puede enviar ni recibir mensajes entreCuenta de AWSs o regiones.
Para obtener más información sobre cómo diseñar los nombres de los temas y el espacio de nombres,
consulta nuestro documento técnico,Diseño de temas de MQTT paraAWS IoT Core.
Para ver ejemplos de cómo las aplicaciones pueden publicar mensajes y suscribirse a ellos, comienza
conIntroducción a AWS IoT Core (p. 18)yAWS IoTSDK para dispositivos, SDK para dispositivos móviles
yAWS IoTCliente de dispositivo (p. 1489).
Important
El espacio de nombres del tema está limitado aCuenta de AWSy región. Por ejemplo, elsensor/
temp/room1tema utilizado por unCuenta de AWSen una región es distinta de lasensor/temp/
room1tema utilizado por el mismoAWScuenta en otra región o utilizada por cualquier otraCuenta
de AWSen cualquier región.
ARN de tema
Todos los ARN (nombres de recursos de Amazon) de los temas tienen el siguiente formato:
arn:aws:iot:aws-region:AWS-account-ID:topic/Topic
Por ejemplo,arn:aws:iot:us-west-2:123EXAMPLE456:topic/application/topic/device/
sensores un ARN para el tema application/topic/device/sensor.
113
AWS IoT Core Guía para desarrolladores
Temas de MQTT
Filtros de temas
Los clientes suscriptores registran filtros de temas con el agente de mensajes de para especificar los
temas de mensajes que el agente de mensajes debe enviarles. Un filtro de tema puede ser un nombre de
tema único para suscribirse a un solo nombre de tema o puede incluir caracteres comodín para suscribirse
a varios nombres de temas al mismo tiempo.
Los clientes de publicación no pueden usar caracteres comodín en los nombres de los temas que publican.
En la tabla siguiente se enumeran los caracteres comodín que se pueden utilizar en un filtro de temas.
Comodines de tema
Carácter comodín Coincide Notas
arn:aws:iot:aws-region:AWS-account-ID:topicfilter/TopicFilter
Por ejemplo,arn:aws:iot:us-west-2:123EXAMPLE456:topicfilter/application/topic/+/
sensores un ARN para el filtro de temas application/topic/+/sensor.
El uso de un formato JSON para la carga de mensajes permite laAWS IoTmotor de reglas para analizar
sus mensajes y aplicarles consultas SQL. Si la aplicación no requiere que el motor de reglas aplique
114
AWS IoT Core Guía para desarrolladores
Temas de MQTT
consultas SQL a las cargas de mensajes, puede utilizar cualquier formato de datos que requiera la
aplicación. Para obtener información sobre las limitaciones y los caracteres reservados de un documento
JSON utilizado en las consultas SQL, consulteExtensiones JSON (p. 672).
Para obtener más información sobre el diseño de los temas de MQTT y sus correspondientes cargas de
mensajes, consulteDiseño de temas de MQTT paraAWS IoT Core.
Temas reservados
Los temas que comienzan por un signo de dólar ($) están reservados para su uso por parte de AWS IoT.
Puedes suscribirte a estos temas reservados y publicarlos en la medida en que lo permitan; sin embargo,
no puedes crear nuevos temas que comiencen por el signo del dólar. Las operaciones de publicación o
suscripción no admitidas a temas reservados pueden dar como resultado que se termine la conexión.
Para obtener más información, consulte Envío de métricas desde dispositivos (p. 1108).
115
AWS IoT Core Guía para desarrolladores
Temas de MQTT
116
AWS IoT Core Guía para desarrolladores
Temas de MQTT
Temas de eventos
117
AWS IoT Core Guía para desarrolladores
Temas de MQTT
118
AWS IoT Core Guía para desarrolladores
Temas de MQTT
119
AWS IoT Core Guía para desarrolladores
Temas de MQTT
Las operaciones del cliente se indican comoRecibiren esta tabla, indique los temas queAWS
IoTpublica directamente en el cliente que lo solicitó, independientemente de que el cliente se haya
suscrito al tema o no. Los clientes deben esperar recibir estos mensajes de respuesta incluso
si no se han suscrito a ellos. Estos mensajes de respuesta no pasan por el intermediario de
mensajes y no pueden suscribirse a ellos otros clientes ni reglas.
Estos mensajes admiten búferes de respuesta en formato de representación binaria concisa de objetos
(CBOR) yJavaScriptNotación de objetos (JSON), segúnformato de cargadel tema.
Para obtener más información, consulte API de MQTT de aprovisionamiento de dispositivos (p. 915).
120
AWS IoT Core Guía para desarrolladores
Temas de MQTT
$aws/certificados/create-from- Suscríbete, recibe AWS IoTpublica sobre este tema una llamada
csr/formato de carga/ exitosa a $aws/certificates/create-from-
aceptado csr/formato de carga.
$aws/certificados/create-from- Suscríbete, recibe AWS IoTpublica sobre este tema una llamada
csr/formato de carga/ fallida a $aws/certificates/create-from-
rechazado csr/formato de carga.
Temas de trabajos
Note
Las operaciones del cliente se indican comoRecibiren esta tabla, indique los temas queAWS
IoTpublica directamente en el cliente que lo solicitó, independientemente de que el cliente se haya
suscrito al tema o no. Los clientes deben esperar recibir estos mensajes de respuesta incluso si
no se han suscrito a ellos.
Estos mensajes de respuesta no pasan por el intermediario de mensajes y no pueden suscribirse
a ellos otros clientes ni reglas. Para suscribirse a los mensajes relacionados con la actividad
laboral, utilice elnotifyynotify-nexttemas.
Al suscribirse al trabajo yjobExecutiontemas de eventos para su solución de monitoreo de
flotas, primero debe habilitartrabajo y eventos de ejecución de trabajos (p. 1253)para recibir
cualquier evento en la nube.
Para obtener más información, consulte Operaciones de la API MQTT del dispositivo
Jobs (p. 817).
121
AWS IoT Core Guía para desarrolladores
Temas de MQTT
122
AWS IoT Core Guía para desarrolladores
Temas de MQTT
123
AWS IoT Core Guía para desarrolladores
Temas de MQTT
124
AWS IoT Core Guía para desarrolladores
Temas de MQTT
Temas de reglas
Temas de sombra
Las sombras con nombre y sin nombre utilizan los temas de esta sección. Los temas utilizados por cada
uno solo difieren en el prefijo del tema. Esta tabla muestra el prefijo de tema utilizado por cada tipo de
sombra.
125
AWS IoT Core Guía para desarrolladores
Temas de MQTT
126
AWS IoT Core Guía para desarrolladores
Temas de MQTT
127
AWS IoT Core Guía para desarrolladores
Terminales configurables
arn:aws:iot:aws-region:AWS-account-ID:topic/Topic
Por ejemplo,arn:aws:iot:us-west-2:123EXAMPLE456:topic/$aws/things/thingName/jobs/
get/acceptedes un ARN para el tema reservado$aws/things/thingName/jobs/get/accepted.
Terminales configurables
ConAWS IoT Core, puede configurar y administrar los comportamientos de sus extremos de datos
mediante configuraciones de dominio. Con las configuraciones de dominio, puede generar múltiplesAWS
IoT Corepuntos de enlace de datos, personalice los extremos de datos con sus propios nombres de
dominio completos (FQDN) y certificados de servidor asociados, y también asocie un autorizador
personalizado. Para obtener más información, consulte Autenticación y autorización a la medida (p. 337).
Note
Puede utilizar configuraciones de dominio para simplificar tareas como las siguientes.
AWS IoT Core utiliza la extensión TLS de indicación de nombre de servidor (SNI) para aplicar
configuraciones de dominio. Los dispositivos deben usar esta extensión cuando se conecten. También
128
AWS IoT Core Guía para desarrolladores
Terminales configurables
deben incluir un nombre de servidor que sea idéntico al nombre de dominio que especifique en
la configuración del dominio. Para probar este servicio, utilice la versión v2 delAWS IoTSDK de
dispositivosenGitHub.
Si crea varios puntos finales de datos en suCuenta de AWS, compartiránAWS IoT Corerecursos como
temas de MQTT, sombras de dispositivos y reglas.
Temas
• Creación y configuración de dominios administrados por AWS (p. 129)
• Creación y configuración de dominios personalizados (p. 129)
• Administrar configuraciones de dominio (p. 133)
• Configuración de los ajustes de TLS en las configuraciones de dominio (p. 134)
• domainConfigurationName
Un nombre definido por el usuario que identifique la configuración del dominio y el valor debe ser
exclusivo de suRegión de AWS. No puede usar nombres de configuración de dominio que comiencen
conIoT:porque están reservados para los puntos finales predeterminados.
• defaultAuthorizerName (opcional)
Un valor booleano que especifica si los dispositivos pueden anular el autorizador predeterminado
especificando un autorizador diferente en el encabezado HTTP de la solicitud. Este valor es obligatorio si
se especifica un valor para defaultAuthorizerName.
• serviceType
Objeto que especifica la configuración de TLS para un dominio. Para obtener más información, consulte
??? (p. 134).
El siguiente ejemploAWS CLIel comando crea una configuración de dominio para unDatapunto final.
129
AWS IoT Core Guía para desarrolladores
Terminales configurables
propios certificados de servidor para poder gestionar detalles, como la autoridad certificadora (CA) raíz
utilizada para firmar el certificado, el algoritmo de firma, la profundidad de la cadena de certificados y el
ciclo de vida del certificado.
El flujo de trabajo para establecer una configuración de dominio con un dominio personalizado consta de
las tres etapas siguientes.
Note
AWS IoT Core considera que un certificado está firmado por una entidad de certificación pública
(CA) si está incluido en el paquete de CA de confianza de Mozilla.
Requisitos de certificado
ConsulteRequisitos previos para la importación de certificadospara conocer los requisitos para importar
certificados a ACM. Además de estos requisitos,AWS IoT Coreañade los siguientes requisitos.
• El certificado foliar debe incluir elUso extendido de clavesextensión x509 v3 con un valor
deAutenticación del servidor(Autenticación de servidor web TLS). Si solicita el certificado a ACM, esta
extensión se agrega automáticamente.
• La profundidad máxima de la cadena de certificados es de 5 certificados.
• El tamaño máximo de la cadena de certificados es de 16 KB.
• El tamaño de la clave del certificado es 2048.
Si tiene previsto utilizar un certificado para cubrir varios subdominios, utilice un dominio comodín
en el campo Nombre común (CN) o Nombres alternativos del firmante (SAN). Por ejemplo, utilice
*.iot.example.com para cubrir dev.iot.example.com, qa.iot.example.com y prod.iot.example.com.
Cada FQDN requiere su propia configuración de dominio, pero varias configuraciones de dominio pueden
usar el mismo valor comodín. El CN o el SAN deben cubrir el FQDN que desea utilizar como dominio
personalizado. Si hay SAN, se ignora la CN y una SAN debe cubrir el FQDN que desea usar como dominio
personalizado. Esta cobertura puede ser una coincidencia exacta o una coincidencia de caracteres
comodín. Una vez validado y registrado un certificado comodín en una cuenta, se impide que otras cuentas
de la región creen dominios personalizados que se superpongan con el certificado.
En las siguientes secciones se describe cómo obtener cada tipo de certificado. Cada recurso de certificado
requiere un nombre de recurso de Amazon (ARN) registrado en ACM que utilice al crear la configuración
de su dominio.
130
AWS IoT Core Guía para desarrolladores
Terminales configurables
Si ya tienes un certificado de servidor firmado por una CA pública (una CA que se incluye en el paquete
de CA de confianza de Mozilla), puedes importar la cadena de certificados directamente a ACM
medianteImportCertificateAPI. Para obtener más información sobre esta tarea, los requisitos previos y los
requisitos de formato de certificado, consulte Importación de certificados.
Si ya tiene un certificado de servidor firmado por una CA privada o autofirmado, puede usar el certificado
para crear la configuración de su dominio, pero también debe crear un certificado público adicional en
ACM para validar la propiedad de su dominio. Para ello, registre la cadena de certificados de su servidor
en ACM mediante elImportCertificateAPI. Para obtener más información sobre esta tarea, los requisitos
previos y los requisitos de formato de certificado, consulte Importación de certificados.
Tras importar el certificado a ACM, genere un certificado público para su dominio personalizado mediante
elRequestCertificateAPI. Al generar un certificado de esta manera, ACM valida su propiedad del dominio
personalizado. Para obtener más información, consulte Solicitar un certificado público. Cuando cree la
configuración de dominio, utilice este certificado público como certificado de validación.
• domainConfigurationName
Nombre definido por el usuario que identifica la configuración del dominio. Los nombres de configuración
de dominio que comienzan por IoT: están reservados para los puntos de enlace predeterminados y no
se pueden usar. Además, este valor debe ser exclusivo de suRegión de AWS.
• domainName
El FQDN que utilizan sus dispositivos para conectarseAWS IoT Core.AWS IoT Coreaprovecha la
extensión TLS de indicación del nombre del servidor (SNI) para aplicar configuraciones de dominio. Los
dispositivos deben usar esta extensión al conectarse y pasar un nombre de servidor idéntico al nombre
de dominio especificado en la configuración del dominio.
• serverCertificateArns
El ARN de la cadena de certificados del servidor que registró en ACM.AWS IoT Coreactualmente solo
admite un certificado de servidor.
• validationCertificateArn
El ARN del certificado público que generó en ACM para validar la propiedad de su dominio
personalizado. Este argumento no es obligatorio si utiliza un certificado de servidor generado por ACM o
firmado públicamente.
• defaultAuthorizerName (optional)
131
AWS IoT Core Guía para desarrolladores
Terminales configurables
• allowAuthorizerOverride
Un valor booleano que especifica si los dispositivos pueden anular el autorizador predeterminado
especificando un autorizador diferente en el encabezado HTTP de la solicitud. Este valor es obligatorio si
se especifica un valor para defaultAuthorizerName.
• serviceType
AWS IoT Core actualmente solo admite el tipo de servicio DATA. Cuando especifiquesDATA,AWS
IoTdevuelve un punto final con un tipo de punto final deiot:Data-ATS.
• TlsConfig (opcional)
Objeto que especifica la configuración de TLS para un dominio. Para obtener más información, consulte
??? (p. 134).
El siguiente comando de la AWS CLI crea una configuración de dominio para iot.example.com.
Note
Después de crear la configuración de dominio, pueden pasar hasta 60 minutos hasta queAWS IoT
Coresirve sus certificados de servidor personalizados.
Cuando tenga el punto de enlace iot:Data-ATS, cree un registro CNAME en el dominio personalizado
para este punto de enlace de AWS IoT. Si creas varios dominios personalizados en el mismoCuenta de
AWS, ponerles el alias de este mismoiot:Data-ATSpunto final.
Solución de problemas
Si tienes problemas para conectar dispositivos a un dominio personalizado, asegúrate de queAWS IoT
Coreha aceptado y aplicado su certificado de servidor. Puedes verificarloAWS IoT Coreha aceptado su
certificado mediante elAWS IoT Coreconsola oAWS CLI.
Para utilizar elAWS IoT Coreconsola, navega hasta laAjustespágina y seleccione el nombre de
configuración del dominio. En elDetalles del certificado de servidorsección, compruebe el estado y los
detalles del estado. Si el certificado no es válido, sustitúyalo en ACM por un certificado que cumpla
conrequisitos de certificado (p. 130)listados en la sección anterior. Si el certificado tiene el mismo
ARN,AWS IoT Corelo recogerá y lo aplicará automáticamente.
Para comprobar el estado del certificado mediante elAWS CLI, llame alDescribeDomainConfigurationUtilice
la API y especifique el nombre de configuración de su dominio.
132
AWS IoT Core Guía para desarrolladores
Terminales configurables
Note
Si su certificado no es válido,AWS IoT Coreseguirá entregando el último certificado válido.
Puede comprobar qué certificado se entrega en su terminal mediante el siguiente comando openssl.
• ListDomainConfigurations
• DescribeDomainConfiguration
• UpdateDomainConfiguration
• DeleteDomainConfiguration
Ejemplo
Ejemplo
Ejemplo
Después de eliminar una configuración de dominio, AWS IoT Core ya no sirve el certificado de servidor
asociado a ese dominio personalizado.
133
AWS IoT Core Guía para desarrolladores
Terminales configurables
Note
AWS IoT Coresolo recoge las actualizaciones de los certificados en las siguientes condiciones.
La siguiente tabla describe las políticas de seguridad, sus versiones de TLS y las regiones compatibles:
IoTSecurityPolicy_TLS13_1_3_2022_10
TodosRegiones de AWS
IoTSecurityPolicy_TLS13_1_2_2022_10
TodosRegiones de AWS
IoTSecurityPolicy_TLS12_1_2_2022_10
TodosRegiones de AWS
IoTSecurityPolicy_TLS12_1_0_2016_01
ap-este-1, ap-norte-2, ap-sur-1, ap-sudeast-2, ca-central-1, cn-norte-1, cn-
noroeste-1, eu-norte1, eu-oeste-2, eu-oeste-3, me-sur-1, sa-este-2,us-gov-
west-1,us-gov-west-2, US-oeste-1
IoTSecurityPolicy_TLS12_1_0_2015_01
ap-nordeste-1, ap-sudeast-1, EU-centro-1, EU-oeste-1, EE. UU. Este-2
Los nombres de las políticas de seguridad enAWS IoT Coreincluyen información sobre la versión en
función del año y el mes en que se publicaron. Si crea una nueva configuración de dominio, la política de
seguridad se establecerá de forma predeterminada enIoTSecurityPolicy_TLS13_1_2_2022_10.
Para obtener una tabla completa de políticas de seguridad con detalles de los protocolos, los puertos TCP
y los cifrados, consultePolíticas de seguridad (p. 403).AWS IoT Coreno admite políticas de seguridad
personalizadas. Para obtener más información, consulte ??? (p. 402).
Para configurar los ajustes de TLS en las configuraciones de dominio, puede utilizar laAWS IoTconsola
oAWS CLI.
Contenido
• Configurar los ajustes de TLS en las configuraciones de dominio (consola) (p. 134)
• Configurar los ajustes de TLS en las configuraciones de dominio (CLI) (p. 135)
134
AWS IoT Core Guía para desarrolladores
Terminales configurables
2. Para configurar los ajustes de TLS al crear una nueva configuración de dominio, siga estos pasos.
{
"domainConfigurationName": "test",
"domainConfigurationArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/
test/34ga9"
}
Si crea una nueva configuración de dominio sin especificar la política de seguridad, el valor
predeterminado será:IoTSecurityPolicy_TLS13_1_2_2022_10.
2. Para describir la configuración de TLS mediantedescribe-domain-configurationComando CLI:
Este comando puede devolver los detalles de configuración del dominio que incluyen la configuración de
TLS, como se muestra a continuación:
{
"tlsConfig": {
"securityPolicy": "IoTSecurityPolicy_TLS13_1_2_2022_10"
},
"domainConfigurationStatus": "ENABLED",
"serviceType": "DATA",
"domainType": "AWS_MANAGED",
135
AWS IoT Core Guía para desarrolladores
Conectarse aAWS IoTTerminales FIPS
"domainName": "d1234567890abcdefghij-ats.iot.us-west-2.amazonaws.com",
"serverCertificates": [],
"lastStatusChangeDate": 1678750928.997,
"domainConfigurationName": "test",
"domainConfigurationArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/
test/34ga9"
}
{
"domainConfigurationName": "test",
"domainConfigurationArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/
test/34ga9"
}
{
"domainConfigurationName": "iot:Data-ATS",
"domainConfigurationArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/
iot:Data-ATS"
}
En las siguientes secciones se describe cómo acceder a la normativa FIPS.AWS IoTpuntos de conexión
mediante la API REST, un SDK o elAWS CLI.
Temas
• AWS IoT Core- puntos finales del plano de control (p. 137)
• AWS IoT Core- puntos finales del plano de datos (p. 137)
136
AWS IoT Core Guía para desarrolladores
AWS IoT Core- puntos finales del plano de control
• AWS IoT Device Management- puntos finales de datos de trabajos (p. 137)
• AWS IoT Device Management- Terminales Fleet Hub (p. 138)
• AWS IoT Device Management- puntos finales de tunelización seguros (p. 138)
Para utilizar el punto final que cumple con la FIPS al acceder alAWS IoToperaciones, utilice elAWSEl SDK
o la API REST con el punto de conexión adecuado para suRegión de AWS.
Para utilizar el punto de conexión compatible con FIPS cuando ejecutaaws iotComandos de CLI, añada el--
endpointparámetro con el punto final adecuado para suRegión de AWSal comando.
Puede utilizar el terminal compatible con FIPS para suRegión de AWScon un cliente compatible con
FIPS mediante elAWS IoTSDK del dispositivo y proporcionar el punto final a la función de conexión del
SDK en lugar de la predeterminada de tu cuentaAWS IoT Core- plano de datospunto final. La función de
conexión es específica deAWS IoTSDK de dispositivos. Para ver un ejemplo de una función de conexión,
consulteFunción de conexión en elAWS IoTSDK de dispositivos para Python.
Note
Para utilizar la norma FIPSAWS IoT Device Management- datos de empleospunto final cuando corresaws
iot-jobs-dataComandos CLI, añada el--endpointparámetro con el punto final adecuado para suRegión de
AWSal comando. También puede utilizar la API REST con este punto de conexión.
Puede utilizar el terminal compatible con FIPS para suRegión de AWScon un cliente compatible con FIPS
mediante elAWS IoTSDK del dispositivo y proporcionar el punto final a la función de conexión del SDK en
lugar de la predeterminada de tu cuentaAWS IoT Device Management- datos de empleospunto final. La
función de conexión es específica deAWS IoTSDK de dispositivos. Para ver un ejemplo de una función de
conexión, consulteFunción de conexión en elAWS IoTSDK de dispositivos para Python.
137
AWS IoT Core Guía para desarrolladores
AWS IoT Device Management- Terminales Fleet Hub
Para utilizar la norma FIPSAWS IoT Device Management- Centro de flotaspunto final cuando corresaws
iotfleethubComandos de CLI, añada el--endpointparámetro con el punto final adecuado para suRegión de
AWSal comando. También puede utilizar la API REST con este punto de conexión.
Para utilizar la norma FIPSAWS IoT Device Management- construcción segura de túnelespunto final
cuando corresaws iotsecuretunnelingComandos CLI, añada el--endpointparámetro con el punto final
adecuado para suRegión de AWSal comando. También puede utilizar la API REST con este punto de
conexión.
138
AWS IoT Core Guía para desarrolladores
Creación de demostraciones con
elAWS IoTCliente del dispositivo
Para demostrar tareas y aplicaciones comunes de IoT mediante elAWS IoTDevice Client en tus
dispositivos, sigue lathe section called “Creación de demostraciones con elAWS IoTCliente del
dispositivo” (p. 139)ruta de aprendizaje. LaAWS IoTDevice Client proporciona software de dispositivo
con el que puede aplicar sus propios recursos en la nube para demostrar un end-to-end solución con un
desarrollo mínimo.
Para obtener más información acerca de laAWS IoTDevice Client, consulte laAWS IoTCliente del
dispositivo.
• Desea aprender a crear software de producción para implementar su solución
Para crear su propio software de solución que cumpla con sus requisitos específicos mediante unAWS
IoTSDK del dispositivo, siga elthe section called “Creación de soluciones con elAWS IoTSDKs de
dispositivos” (p. 191)ruta de aprendizaje.
El objetivo de estos tutoriales es facilitar la exploración y la experimentación para que puedas estar seguro
de queAWS IoTes compatible con la solución antes de desarrollar el software del dispositivo.
• Cómo preparar un Raspberry Pi para usarlo como dispositivo IoT conAWS IoT
• Cómo demostrarAWS IoTfunciones mediante elAWS IoTDevice Client en el dispositivo
En esta ruta de aprendizaje, instalará elAWS IoTDevice Client en tu propio Raspberry Pi y crea elAWS
IoTrecursos en la nube para demostrar ideas de soluciones de IoT. Si bien los tutoriales de esta ruta
139
AWS IoT Core Guía para desarrolladores
Requisitos previos para crear demostraciones
con elAWS IoTCliente del dispositivo
de aprendizaje muestran características mediante el uso de una Raspberry Pi, explican los objetivos y
procedimientos para ayudarle a adaptarlos a otros dispositivos.
Puede utilizar su existenteCuenta de AWS, si tienes uno, pero es posible que tengas que añadir
funciones o permisos adicionales para usar elAWS IoTcaracterísticas que utilizan estos tutoriales.
Si necesita crear una nuevaCuenta de AWS, consultethe section called “Configura tuCuenta de
AWS” (p. 19).
• Raspberry Pi o dispositivo IoT compatible
Los tutoriales utilizan unRaspberry Piporque viene en diferentes factores de forma, es omnipresente y es
un dispositivo de demostración relativamente económico. Los tutoriales se han probado en laRaspberry
Pi 3 Modelo B+, elRaspberry Pi 4 Modelo By en una instancia de Amazon EC2 que ejecuta Ubuntu
Server 20.04 LTS (HVM). Para utilizar elAWS CLIy ejecute los comandos, le recomendamos que utilice
la última versión del Raspberry Pi OS (Raspberry Pi OS (64 bits)o OS Lite). Las versiones anteriores del
sistema operativo podrían funcionar, pero no lo hemos probado.
Note
Los tutoriales explican los objetivos de cada paso para ayudarle a adaptarlos al hardware
de IoT en el que no los hemos probado; sin embargo, no describen específicamente cómo
adaptarlos a otros dispositivos.
• Familiaridad con el sistema operativo del dispositivo IoT
En los pasos de estos tutoriales se supone que está familiarizado con el uso de comandos y operaciones
básicos de Linux desde la interfaz de línea de comandos compatible con Raspberry Pi. Si no estás
familiarizado con estas operaciones, tal vez quieras dedicarte más tiempo para completar los tutoriales.
Los tutoriales describen el software y el hardware necesarios; sin embargo, los tutoriales suponen
que podrá realizar operaciones que podrían no describirse explícitamente. Algunos ejemplos de este
hardware y operaciones incluyen:
140
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
Para el Raspberry Pi, suele ser un ordenador personal o portátil que puede leer y escribir en tarjetas
de memoria microSD. El equipo host local debe:
• Conectarse a Internet.
• Tenga laAWS CLIinstalada y configurada.
• Disponer de un navegador web que admita laAWSconsola de .
• Una forma de conectar el equipo host local al dispositivo para comunicarse con él, introducir
comandos y transferir archivos
En Raspberry Pi, esto se hace a menudo utilizando SSH y SCP desde el equipo host local.
• Monitor y teclado para conectarse al dispositivo IoT
Estos pueden ser útiles, pero no son necesarios para completar los tutoriales.
• Una forma de que el equipo host local y los dispositivos IoT se conecten a Internet
Podría ser una conexión de red por cable o inalámbrica a un router o puerta de enlace que está
conectado a Internet. El host local también debe poder conectarse a Raspberry Pi. Esto podría
requerir que estén en la misma red de área local. Los tutoriales no pueden mostrarle cómo
configurarlo para la configuración de su dispositivo o dispositivo en particular, pero muestran cómo
puede probar esta conectividad.
• Acceso al enrutador de la red de área local para ver los dispositivos conectados
Para completar los tutoriales de esta ruta de aprendizaje, tendrás que poder encontrar la dirección IP
de tu dispositivo IoT.
En una red de área local, esto se puede hacer accediendo a la interfaz de administración del router de
red al que se conectan los dispositivos. Si puede asignar una dirección IP fija para su dispositivo en el
router, puede simplificar la reconexión cada vez que se reinicie el dispositivo.
Si ninguna de estas opciones es una opción, tendrás que encontrar una forma de identificar la
dirección IP del dispositivo después de cada vez que se reinicie.
Después de tener todos sus materiales, continúethe section called “Preparación de los dispositivos para
elAWS IoTCliente del dispositivo” (p. 141).
141
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
El objetivo de este tutorial es instalar la versión actual del sistema operativo del dispositivo y asegurarse de
que puede comunicarse con el dispositivo en el contexto de su entorno de desarrollo.
• Haga que los artículos estén listados enthe section called “Requisitos previos para crear demostraciones
con elAWS IoTCliente del dispositivo” (p. 140)disponible y listo para su uso.
Después de completar este tutorial, el siguiente tutorial prepara el dispositivo para las demostraciones que
utilizan elAWS IoTCliente del dispositivo.
Después de completar esta sección, debería poder iniciar el dispositivo IoT y conectarse a él desde el
programa terminal de su equipo host local.
Equipo requerido:
Al seleccionar una tarjeta microSD para estos ejercicios, elija una que sea lo más grande que
sea necesario pero, lo más pequeña posible.
Una pequeña tarjeta SD será más rápida de realizar copias de seguridad y actualización. En
Raspberry Pi, no necesitarás más de una tarjeta microSD de 8 GB para estos tutoriales. Si
necesita más espacio para su aplicación específica, los archivos de imagen más pequeños que
guarde en estos tutoriales pueden cambiar el tamaño del sistema de archivos en una tarjeta
más grande para utilizar todo el espacio admitido de la tarjeta que elija.
142
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
Equipamiento opcional:
1. En el equipo host local, descargue y descomprima la imagen del sistema operativo Raspberry Pi
que desea utilizar. Las últimas versiones están disponibles enhttps://www.raspberrypi.com/software/
operating-systems/
En este tutorial se utilizaRaspberry Pi OS Liteversión porque es la versión más pequeña que admite
estos tutoriales en esta ruta de aprendizaje. Esta versión del sistema operativo Raspberry Pi solo
tiene una interfaz de línea de comandos y no tiene interfaz gráfica de usuario. Una versión del último
sistema operativo Raspberry Pi con una interfaz gráfica de usuario también funcionará con estos
tutoriales; sin embargo, los procedimientos descritos en esta ruta de aprendizaje utilizan únicamente la
interfaz de línea de comandos para realizar operaciones en Raspberry Pi.
2. Inserte la tarjeta microSD en el equipo host local.
3. Con una herramienta de imagen de tarjetas SD, escriba el archivo de imagen del sistema operativo
descomprimido en la tarjeta microSD.
4. Después de escribir la imagen del sistema operativo Raspberry Pi en la tarjeta microSD:
a. Abra la partición BOOT de la tarjeta microSD en una ventana de línea de comandos o en una
ventana del explorador de archivos.
b. En la partición BOOT de la tarjeta microSD, en el directorio raíz, cree un archivo vacío
denominadosshsin extensión de archivo ni contenido. Esto indica a Raspberry Pi que active las
comunicaciones SSH la primera vez que se inicia.
5. Expulsa la tarjeta microSD y quítala de forma segura del equipo host local.
Su tarjeta microSD está lista parathe section called “Inicie su dispositivo IoT con el nuevo sistema
operativo” (p. 143).
143
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
1. Con la alimentación desconectada del dispositivo, inserte la tarjeta microSD del paso anterior,the
section called “Cargue el sistema operativo del dispositivo en la tarjeta microSD” (p. 143), en el
Raspberry Pi.
2. Connect del dispositivo a una red cableada.
3. Estos tutoriales interactuarán con su Raspberry Pi desde su equipo host local mediante un terminal
SSH.
a. Connect un monitor HDMI a él para ver los mensajes de la consola de Raspberry Pi antes de
poder conectar la ventana del terminal del equipo host local a la Raspberry Pi.
b. Connect un teclado USB si quieres interactuar directamente con la Raspberry Pi.
4. Connect la alimentación a la Raspberry Pi y espera alrededor de un minuto para que se inicialice.
Si tienes un monitor conectado a tu Raspberry Pi, puedes ver el proceso de inicio en él.
5. Averigua la dirección IP de tu dispositivo:
Cuando tenga la dirección IP de su Raspberry Pi, estará listo parathe section called “Connect el equipo
host local al dispositivo” (p. 144).
• Windows: PuTTY
• Linux/macOS:Terminal
Note
PuTTY no se instala automáticamente en Windows. Si no está en el equipo, tal vez tenga que
descargarlo e instalarlo.
2. Connect el programa de terminal a la dirección IP de Raspberry Pi e inicie sesión con sus credenciales
predeterminadas.
username: pi
password: raspberry
passwd
144
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
Después de tener el símbolo de línea de comandos de Raspberry Pi en la ventana del terminal y cambiar
la contraseña, estará listo para continuarthe section called “Paso 2: Instala y verifica el software necesario
en tu dispositivo” (p. 145).
Después de completar esta sección, su Raspberry Pi tendrá un sistema operativo actualizado, el software
requerido por los tutoriales de esta ruta de aprendizaje y se configurará para su ubicación.
Equipo requerido:
Note
Raspberry Pi Model 3+ y Raspberry Pi Model 4 pueden ejecutar todos los comandos descritos
en esta ruta de aprendizaje. Si el dispositivo IoT no puede compilar software o ejecutar elAWS
Command Line Interface, es posible que tenga que instalar los compiladores necesarios en el
equipo host local para crear el software y, a continuación, transferirlo a su dispositivo IoT. Para
obtener más información sobre cómo instalar y crear software para su dispositivo, consulte la
documentación del software de su dispositivo.
Lleve a cabo estos pasos en la ventana de terminal del equipo host local.
1. Escriba estos comandos para actualizar el software del sistema en su Raspberry Pi.
145
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
Introduzca este comando para actualizar la configuración regional y la zona horaria del dispositivo.
sudo raspi-config
sudo shutdown -r 0
El software del sistema Raspberry Pi ya está configurado y está listo para continuarthe section called
“Instale las aplicaciones y bibliotecas necesarias” (p. 147).
Si utiliza una Raspberry Pi o si puede compilar el software necesario en su dispositivo IoT, lleve a cabo
estos pasos en la ventana del terminal del equipo host local. Si debe compilar software para su dispositivo
IoT en el equipo host local, consulte la documentación de software de su dispositivo IoT para obtener
información sobre cómo realizar estos pasos en el dispositivo.
2. Introduzca estos comandos para confirmar que se ha instalado la versión correcta del software.
gcc --version
cmake --version
openssl version
git --version
Si su Raspberry Pi tiene versiones aceptables del software de aplicación requerido, está listo para
continuarthe section called “(Opcional) Guardar la imagen de la tarjeta microSD” (p. 147).
En este punto, la tarjeta microSD de su Raspberry Pi tiene un sistema operativo actualizado y el software
básico de aplicación cargado. Puede ahorrar el tiempo que le tomó completar los pasos anteriores
guardando ahora el contenido de la tarjeta microSD en un archivo. Tener la imagen actual de la imagen de
la tarjeta microSD de tu dispositivo te permite comenzar desde este punto para continuar o volver a intentar
un tutorial o procedimiento sin necesidad de instalar y actualizar el software desde cero.
147
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
sudo shutdown -h 0
Después de completar esta sección, sabrá que su Raspberry Pi tiene el software del sistema necesario
para instalar elAWS IoTDevice Client y que tiene una conexión funcional a Internet.
Equipo requerido:
Si utiliza una Raspberry Pi o si puede compilar software en su dispositivo IoT, lleve a cabo estos pasos en
la ventana del terminal del equipo host local. Si debe compilar software para su dispositivo IoT en el equipo
host local, consulte la documentación de software de su dispositivo IoT para obtener información sobre las
bibliotecas que necesita.
148
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
export PATH=$PATH:~/.local/bin # configures the path to include the directory with the
AWS CLI
git clone https://github.com/aws/aws-cli.git # download the AWS CLI code from GitHub
cd aws-cli && git checkout v2 # go to the directory with the repo and checkout version
2
pip3 install -r requirements.txt # install the prerequisite software
2. Ejecute este comando para instalar elAWS CLI. Este comando puede tardar hasta 15 minutos en
completarse.
3. Ejecute este comando para confirmar que la versión correcta delAWS CLIse instaló.
aws --version
Si el archivo deAWS CLImuestra su versión actual, estará listo para continuarthe section called
“Configuración de sus credenciales de Cuenta de AWS” (p. 149).
1. Obtenga unAccess Key IDyClave de acceso secretadesde suCuenta de AWSpara autenticar elAWS
CLIen su dispositivo.
aws configure
3. Ejecute este comando para probar el acceso de tu dispositivo a tuCuenta de AWSyAWS IoT Core.
Debería devolver suCuenta de AWS-específicoAWS IoTpunto final de datos, como este ejemplo:
149
AWS IoT Core Guía para desarrolladores
Preparación de los dispositivos para
elAWS IoTCliente del dispositivo
"endpointAddress": "a3EXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
}
mkdir ~/certs
2. Ejecute este comando para descargar el certificado de entidad de certificación de Amazon Root.
chmod 745 ~
chmod 700 ~/certs
chmod 644 ~/certs/AmazonRootCA1.pem
ls -l ~/certs
Debería ver una entrada como esta. La fecha y la hora serán diferentes; sin embargo, el tamaño del
archivo y el resto de la información deben ser los mismos que se muestran aquí.
150
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
aws configure
sudo shutdown -h 0
Después de reiniciar e iniciar sesión en su Raspberry Pi, estará listo para continuarthe section called
“Instalar y configurar elAWS IoTCliente del dispositivo” (p. 151).
• Haga que su equipo host local y Raspberry Pi deel tutorial anterior (p. 141)listo.
151
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
• El dispositivo IoT estará listo para usar en otrosAWS IoTDemostraciones del cliente de
• Habrás aprovisionado tu dispositivo IoT enAWS IoT Core.
• Habrás descargado e instalado elAWS IoTDevice Client en tu dispositivo.
• Habrás guardado una imagen de la tarjeta microSD de tu dispositivo que se puede utilizar en tutoriales
posteriores.
Equipo requerido:
Realice estos comandos en la ventana de terminal del equipo host local que está conectado a Raspberry
Pi.
cd ~
git clone https://github.com/awslabs/aws-iot-device-client aws-iot-device-client
mkdir ~/aws-iot-device-client/build && cd ~/aws-iot-device-client/build
cmake ../
2. Ejecute este comando para compilar elAWS IoTCliente del dispositivo. Este comando puede tardar
hasta 15 minutos en completarse.
152
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
Los mensajes de advertencia mostrados comoAWS IoTLas compilaciones de Device Client se pueden
ignorar.
Estos tutoriales se han probado con elAWS IoTCliente de dispositivo basado engcc, versión (Raspbian
10.2.1-6+rpi1) 10.2.1 20210110 en la versión 30 de octubre de 2021 de Raspberry Pi OS (bullseye)
engcc, versión (Raspbian 8.3.0-6+rpi1) 8.3.0 en la versión 7 de mayo de 2021 del sistema operativo
Raspberry Pi (buster).
3. Después delAWS IoTDevice Client finaliza la compilación, pruébalo ejecutando este comando.
./aws-iot-device-client --help
Si ve la ayuda de la línea de comandos deAWS IoTDevice Client, elAWS IoTDevice Client se ha creado
correctamente y está listo para su uso.
Para crear los directorios utilizados por los tutoriales en esta ruta de aprendizaje:
mkdir ~/dc-configs
mkdir ~/policies
mkdir ~/messages
mkdir ~/certs/testconn
mkdir ~/certs/pubsub
mkdir ~/certs/jobs
2. Ejecute estos comandos para establecer los permisos de los nuevos directorios.
chmod 745 ~
chmod 700 ~/certs/testconn
chmod 700 ~/certs/pubsub
chmod 700 ~/certs/jobs
Después de crear estos directorios y establecer su permiso, continúe enthe section called “(Opcional)
Guardar la imagen de la tarjeta microSD” (p. 153).
Si quieres volver a probar estos ejercicios y tutoriales, puedes omitir los procedimientos anteriores
escribiendo la imagen de la tarjeta microSD que guardas con este procedimiento en una nueva tarjeta
microSD y continuar con los tutoriales dethe section called “Paso 2: Aprovisione su Raspberry Pi enAWS
IoT” (p. 154).
En la ventana de terminal del equipo host local que está conectado a la Raspberry Pi:
153
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
aws configure
sudo shutdown -h 0
Puedes continuar con esta tarjeta microSD enthe section called “Paso 2: Aprovisione su Raspberry Pi
enAWS IoT” (p. 154).
Utilizar una tarjeta microSD desdethe section called “(Opcional) Guardar la imagen de la tarjeta
microSD” (p. 153)que cuenta con el software necesario para los ejercicios y tutoriales de esta trayectoria
de aprendizaje.
1. Con la alimentación desconectada de la Raspberry Pi, inserta la tarjeta microSD en la Raspberry Pi.
2. Aplique energía al Raspberry Pi.
3. Después de un minuto, en el equipo host local, reinicie la sesión de la ventana de terminal e inicie
sesión en Raspberry Pi.
4. En el equipo host local, en la ventana de terminal y con elAccess Key IDyClave de acceso
secretacredenciales de su Raspberry Pi:
154
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
aws configure
Después de haber restaurado suCuenta de AWScredenciales, está listo para continuarthe section called
“Aprovisionamiento del dispositivo enAWS IoT Core” (p. 155).
Para que tu Raspberry Pi funcione conAWS IoT, debe aprovisionarse. El aprovisionamiento es el proceso
de creación y configuración delAWS IoTrecursos necesarios para admitir su Raspberry Pi como un
dispositivo de IoT.
Con la Raspberry Pi encendida y reiniciada, conecte la ventana del terminal de su equipo host local al
Raspberry Pi y complete estos procedimientos.
Este procedimiento crea los archivos de certificado de dispositivo para esta demostración.
1. En la ventana de terminal del equipo host local, introduzca estos comandos para crear los archivos de
certificado de dispositivo para su dispositivo.
mkdir ~/certs/testconn
aws iot create-keys-and-certificate \
--set-as-active \
--certificate-pem-outfile "~/certs/testconn/device.pem.crt" \
--public-key-outfile "~/certs/testconn/public.pem.key" \
--private-key-outfile "~/certs/testconn/private.pem.key"
{
"certificateArn": "arn:aws:iot:us-
west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
"certificateId":
"76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
"certificatePem": "-----BEGIN CERTIFICATE-----
\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
155
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
"keyPair": {
"PublicKey": "-----BEGIN PUBLIC KEY-----
\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
"PrivateKey": "-----BEGIN RSA PRIVATE KEY-----
\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
}
}
2. Introduzca los siguientes comandos para establecer los permisos en el directorio de certificados y sus
archivos.
chmod 745 ~
chmod 700 ~/certs/testconn
chmod 644 ~/certs/testconn/*
chmod 600 ~/certs/testconn/private.pem.key
3. Ejecute este comando para revisar los permisos de los directorios y archivos de certificados.
ls -l ~/certs/testconn
El resultado del comando debe ser el mismo que el que ve aquí, excepto que las fechas y horas del
archivo serán diferentes.
En este punto, tiene instalados los archivos de certificado del dispositivo en su Raspberry Pi y puede
continuarthe section called “CrearAWS IoTrecursos” (p. 156).
CrearAWS IoTrecursos
Este procedimiento aprovisiona su dispositivo enAWS IoTcreando los recursos a los que necesita acceder
su dispositivoAWS IoTcaracterísticas y servicios.
1. En la ventana de terminal de su equipo host local, introduzca el siguiente comando para obtener la
dirección del punto final de datos del dispositivo para suCuenta de AWS.
El comando de los pasos anteriores devuelve una respuesta similar a la siguiente. Anote
elendpointAddressvalor para un uso posterior.
{
"endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
}
2. Escriba este comando para crear unAWS IoTrecurso de cosa para su Raspberry Pi.
Si las recetasAWS IoTobjeto de recurso se creó, el comando devuelve una respuesta similar a esta.
156
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
"thingName": "DevCliTestThing",
"thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/DevCliTestThing",
"thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
}
3. En la ventana de borna:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Receive",
"iot:Connect"
],
"Resource": [
"*"
]
}
]
}
Note
Este documento de política otorga generosamente permiso a todos los recursos para
conectarse, recibir, publicar y suscribirse. Normalmente, las políticas otorgan permiso
únicamente a recursos específicos para realizar acciones específicas. Sin embargo, para
la prueba de conectividad inicial de dispositivos, esta política excesivamente general y
permisiva se utiliza para minimizar la posibilidad de que se produzca un problema de
acceso durante esta prueba. En los tutoriales posteriores, se utilizarán documentos de
política con un alcance más limitado para demostrar mejores prácticas en el diseño de
políticas.
c. Guarde el archivo en el editor de texto como~/policies/
dev_cli_test_thing_policy.json.
4. Ejecute este comando para utilizar el documento de política de los pasos anteriores para crear unAWS
IoTpolítica.
{
"policyName": "DevCliTestThingPolicy",
"policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy",
"policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n
{\n \"Effect\": \"Allow\",\n \"Action\": [\n
\"iot:Publish\",\n \"iot:Subscribe\",\n \"iot:Receive\",
\n \"iot:Connect\"\n ],\n \"Resource\": [\n
\"*\"\n ]\n }\n ]\n}\n",
"policyVersionId": "1"
}
157
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
Después de aprovisionar correctamente el dispositivo enAWS IoT, está listo para continuarthe section
called “Paso 3: Configuración delAWS IoTCliente de dispositivo para probar la conectividad” (p. 158).
Para crear el archivo de configuración para probar elAWS IoTCliente del dispositivo
• En la ventana de terminal del equipo host local que está conectado a la Raspberry Pi:
a. Introduzca estos comandos para crear un directorio para los archivos de configuración y
establecer el permiso en el directorio:
mkdir ~/dc-configs
chmod 745 ~/dc-configs
{
"endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
"cert": "~/certs/testconn/device.pem.crt",
"key": "~/certs/testconn/private.pem.key",
"root-ca": "~/certs/AmazonRootCA1.pem",
"thing-name": "DevCliTestThing",
158
AWS IoT Core Guía para desarrolladores
Instalar y configurar elAWS IoTCliente del dispositivo
"logging": {
"enable-sdk-logging": true,
"level": "DEBUG",
"type": "STDOUT",
"file": ""
},
"jobs": {
"enabled": false,
"handler-directory": ""
},
"tunneling": {
"enabled": false
},
"device-defender": {
"enabled": false,
"interval": 300
},
"fleet-provisioning": {
"enabled": false,
"template-name": "",
"template-parameters": "",
"csr-file": "",
"device-key": ""
},
"samples": {
"pub-sub": {
"enabled": true,
"publish-topic": "test/dc/pubtopic",
"publish-file": "",
"subscribe-topic": "test/dc/subtopic",
"subscribe-file": ""
}
},
"config-shadow": {
"enabled": false
},
"sample-shadow": {
"enabled": false,
"shadow-name": "",
"shadow-input-file": "",
"shadow-output-file": ""
}
}
Después de guardar el archivo, estará listo para continuarthe section called “Cliente de prueba MQTT
abierto” (p. 159).
159
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
Para preparar elCliente de prueba MQTTpara suscribirse a todos los mensajes MQTT
Deja la ventana con elCliente de prueba MQTTabierto a medida que continúasthe section called “Ejecución
deAWS IoTCliente del dispositivo” (p. 160).
1. Asegúrese de que tanto la ventana de terminal conectada a su Raspberry Pi como la ventana con
elCliente de prueba MQTTestán visibles mientras realiza este procedimiento.
2. En la ventana de terminal, introduzca estos comandos para ejecutar elAWS IoTCliente de
dispositivo mediante el archivo de configuración creado enthe section called “Crear el archivo de
configuración” (p. 158).
cd ~/aws-iot-device-client/build
./aws-iot-device-client --config-file ~/dc-configs/dc-testconn-config.json
En una ventana de terminal, elAWS IoTDevice Client muestra mensajes de información y cualquier
error que se produzca cuando se ejecuta.
Después de demostrar que elAWS IoTDevice Client se ejecuta correctamente en su Raspberry Pi y puede
comunicarse conAWS IoT, puede continuar hasta elthe section called “Demostrar la comunicación de
mensajes MQTT con elAWS IoTCliente del dispositivo” (p. 160).
• Haga que su equipo host local y Raspberry Pi estén configurados como se utilizan ensección
anterior (p. 151).
Si ha guardado la imagen de la tarjeta microSD después de instalar elAWS IoTDevice Client, puedes
usar una tarjeta microSD con esa imagen con tu Raspberry Pi.
160
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
• Si ya has ejecutado esta demo antes, revisa??? (p. 186)para eliminar todoAWS IoTrecursos que creó
en ejecuciones anteriores para evitar errores de recursos duplicados.
• Habrás demostrado diferentes formas en que tu dispositivo IoT puede suscribirse a mensajes MQTT
desdeAWS IoTy publicar mensajes MQTT enAWS IoT.
Equipo necesario:
1. En la ventana de terminal del equipo host local, introduzca el siguiente comando para crear los
archivos de certificado de dispositivo para su dispositivo.
mkdir ~/certs/pubsub
aws iot create-keys-and-certificate \
--set-as-active \
--certificate-pem-outfile "~/certs/pubsub/device.pem.crt" \
--public-key-outfile "~/certs/pubsub/public.pem.key" \
--private-key-outfile "~/certs/pubsub/private.pem.key"
161
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
{
"certificateArn": "arn:aws:iot:us-
west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
"certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
"certificatePem": "-----BEGIN CERTIFICATE-----
\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
"keyPair": {
"PublicKey": "-----BEGIN PUBLIC KEY-----
\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
"PrivateKey": "-----BEGIN RSA PRIVATE KEY-----
\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
}
}
2. Introduzca los siguientes comandos para establecer los permisos en el directorio de certificados y sus
archivos.
3. Ejecute este comando para revisar los permisos de los directorios y archivos de certificados.
ls -l ~/certs/pubsub
El resultado del comando debe ser el mismo que el que ve aquí, excepto que las fechas y horas del
archivo serán diferentes.
4. Introduzca estos comandos para crear los directorios de los archivos de registro.
mkdir ~/.aws-iot-device-client
mkdir ~/.aws-iot-device-client/log
chmod 745 ~/.aws-iot-device-client/log
echo " " > ~/.aws-iot-device-client/log/aws-iot-device-client.log
echo " " > ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
chmod 600 ~/.aws-iot-device-client/log/*
1. En la ventana de terminal del equipo host local, introduzca el siguiente comando para obtener la
dirección del punto final de datos del dispositivo para suCuenta de AWS.
162
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
El valor del endpoint no ha cambiado desde el momento en que ejecutó este comando para el tutorial
anterior. La ejecución de nuevo aquí se hace para facilitar la búsqueda y pegar el valor del extremo de
datos en el archivo de configuración utilizado en este tutorial.
El comando de los pasos anteriores devuelve una respuesta similar a la siguiente. Registre
elendpointAddressvalor para un uso posterior.
{
"endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
}
2. Escriba este comando para crear un nuevoAWS IoTrecurso de cosa para su Raspberry Pi.
Estos tutoriales solo usarán un recurso a la vez para representar la Raspberry Pi. De esta forma,
en estos tutoriales, representan las diferentes demostraciones para que después de crear elAWS
IoTrecursos para una demostración, puede volver atrás y repetir la demostración utilizando los
recursos que creó específicamente para cada uno.
Si las recetasAWS IoTse creó un recurso de la cosa, el comando devuelve una respuesta similar a
esta.
{
"thingName": "PubSubTestThing",
"thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/PubSubTestThing",
"thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
}
3. En la ventana de borna:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic"
]
},
163
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/subtopic"
]
}
]
}
{
"policyName": "PubSubTestThingPolicy",
"policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy",
"policyDocument": "{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n
\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n
\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\":
\"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-
west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow
\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-
west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow
\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-
west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n",
"policyVersionId": "1"
164
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
6. Ejecute este comando para adjuntar el certificado de dispositivo alAWS IoTrecurso de cosa.
ReemplazarcertificateArnconcertificateArnvalor que ha guardado anteriormente en esta
sección.
Después de aprovisionar correctamente el dispositivo enAWS IoT, ya está listo para seguirthe section
called “Configuración delAWS IoTArchivo de configuración de Device Client y cliente de prueba MQTT para
demostrar la comunicación MQTT” (p. 165).
Para crear el archivo de configuración para probar elAWS IoTCliente del dispositivo
1. En la ventana de terminal del equipo host local que está conectado a la Raspberry Pi:
{
"endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
"cert": "~/certs/pubsub/device.pem.crt",
"key": "~/certs/pubsub/private.pem.key",
"root-ca": "~/certs/AmazonRootCA1.pem",
"thing-name": "PubSubTestThing",
"logging": {
"enable-sdk-logging": true,
"level": "DEBUG",
"type": "STDOUT",
"file": ""
},
"jobs": {
"enabled": false,
"handler-directory": ""
},
"tunneling": {
"enabled": false
},
"device-defender": {
"enabled": false,
"interval": 300
},
"fleet-provisioning": {
"enabled": false,
"template-name": "",
"template-parameters": "",
"csr-file": "",
"device-key": ""
},
"samples": {
"pub-sub": {
"enabled": true,
"publish-topic": "test/dc/pubtopic",
165
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
"publish-file": "",
"subscribe-topic": "test/dc/subtopic",
"subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
}
},
"config-shadow": {
"enabled": false
},
"sample-shadow": {
"enabled": false,
"shadow-name": "",
"shadow-input-file": "",
"shadow-output-file": ""
}
}
2. Para preparar elCliente de prueba MQTTpara suscribirse a todos los mensajes MQTT:
Deje la ventana con elCliente de prueba MQTTabrir mientras continúas con este tutorial.
Después de guardar el archivo y configurar elCliente de prueba MQTT, ya está listo para seguirthe section
called “Paso 2: Demostrar la publicación de mensajes con elAWS IoTCliente del dispositivo” (p. 166).
Estas declaraciones de política de la política que ha creado en el paso anterior para estos ejercicios dan
permiso a Raspberry Pi para ejecutar estas acciones:
• iot:Connect
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing"
166
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
]
}
• iot:Publish
Otorga permiso a Raspberry Pi para publicar mensajes con un tema MQTT detest/dc/pubtopic.
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic"
]
}
Para enviar el mensaje MQTT predeterminado desde elAWS IoTCliente del dispositivo
1. Asegúrese de que tanto la ventana del terminal del equipo host local que esté conectado a Raspberry
Pi como la ventana con elCliente de prueba MQTTestán visibles mientras realiza este procedimiento.
2. En una ventana de terminal, escriba estos comandos para ejecutar laAWS IoTCliente de
dispositivo mediante el archivo de configuración creado enthe section called “Crear el archivo de
configuración” (p. 158).
cd ~/aws-iot-device-client/build
./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json
En una ventana de terminal,AWS IoTDevice Client muestra mensajes de información y cualquier error
que se produzca cuando se ejecuta.
Después de demostrar que elAWS IoTDevice Client publicó el mensaje MQTT predeterminado, puede
continuar con lathe section called “Publicar un mensaje personalizado mediante elAWS IoTCliente del
dispositivo.” (p. 167).
167
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
Realice estos pasos en la ventana del terminal del equipo host local que está conectado a Raspberry Pi.
Para crear un mensaje personalizado para elAWS IoTCliente de dispositivo para publicar
{
"temperature": 28,
"humidity": 80,
"barometer": 1013,
"wind": {
"velocity": 22,
"bearing": 255
}
}
Para crear un archivo de configuración para elAWS IoTCliente de dispositivo que se utilizará para
enviar el mensaje personalizado
"samples": {
"pub-sub": {
"enabled": true,
"publish-topic": "test/dc/pubtopic",
"publish-file": "~/messages/sample-ws-message.json",
"subscribe-topic": "test/dc/subtopic",
"subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
Este cambio solo afecta acontenidode la carga útil de mensajes MQTT, por lo que la política actual seguirá
funcionando. Sin embargo, si lasTema MQTT(tal como lo define elpublish-topicValor en~/dc-
configs/dc-pubsub-custom-config.json) se ha cambiado, eliot::PublishTambién tendría que
modificarse para permitir que Raspberry Pi publique en el nuevo tema MQTT.
168
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
1. Asegúrese de que tanto la ventana de terminal como la ventana con elCliente de prueba MQTTestán
visibles mientras realiza este procedimiento. Además, asegúrese de que suCliente de prueba
MQTTsigue suscrito al#filtro de temas. Si no es así, suscríbase al#filtro de tema de nuevo.
2. En una ventana de terminal, escriba estos comandos para ejecutar laAWS IoTCliente de
dispositivo mediante el archivo de configuración creado enthe section called “Crear el archivo de
configuración” (p. 158).
cd ~/aws-iot-device-client/build
./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
En una ventana de terminal,AWS IoTDevice Client muestra mensajes de información y cualquier error
que se produzca cuando se ejecuta.
Después de demostrar que elAWS IoTDevice Client publicó una carga útil de mensajes personalizados,
puede continuarthe section called “Paso 3: Demostrar suscribirse a mensajes con elAWS IoTCliente del
dispositivo” (p. 169).
Estas declaraciones de política de la política creada para estos ejercicios otorgan permiso a Raspberry Pi
para realizar estas acciones:
• iot:Receive
Otorga elAWS IoTPermiso de cliente de dispositivo para recibir temas MQTT que coinciden con los
mencionados en elResourceobjeto.
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/subtopic"
]
}
• iot:Subscribe
169
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
Otorga elAWS IoTPermiso de cliente de dispositivo para suscribirse a filtros de temas MQTT que
coinciden con los mencionados en elResourceobjeto.
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic"
]
}
En la ventana de terminal del equipo host local que está conectado a la Raspberry Pi, enumere el
contenido de~/dc-configs/dc-pubsub-custom-config.jsono abra el archivo en un editor de texto
para revisar su contenido. Busque el complementosamplesobjeto, que debería tener un aspecto similar a
este.
"samples": {
"pub-sub": {
"enabled": true,
"publish-topic": "test/dc/pubtopic",
"publish-file": "~/messages/sample-ws-message.json",
"subscribe-topic": "test/dc/subtopic",
"subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
Para suscribirse a un tema de mensaje MQTT desde elAWS IoTCliente del dispositivo
1. Asegúrese de que tanto la ventana de terminal como la ventana con el cliente de prueba MQTT
estén visibles mientras realiza este procedimiento. Además, asegúrese de que suCliente de prueba
MQTTsigue suscrito al#filtro de temas. Si no es así, suscríbase al#filtro de tema de nuevo.
2. En una ventana de terminal, escriba estos comandos para ejecutar laAWS IoTCliente de
dispositivo mediante el archivo de configuración creado enthe section called “Crear el archivo de
configuración” (p. 158).
cd ~/aws-iot-device-client/build
./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
En una ventana de terminal,AWS IoTDevice Client muestra mensajes de información y cualquier error
que se produzca cuando se ejecuta.
170
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
7. En una ventana de terminal, tenga en cuenta lamensaje recibidoentrada desde elAWS IoTCliente de
dispositivo que tiene un aspecto similar a este.
tail ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
Al ver el mensaje en el archivo de registro, ha demostrado que elAWS IoTDevice Client recibió el mensaje
que publicó desde el cliente de prueba MQTT.
1. Actualice el filtro de temas que elAWS IoTDevice Client utiliza para suscribirse a temas de MQTT.
2. Actualice la política utilizada por el dispositivo para permitir las nuevas suscripciones.
3. Ejecute laAWS IoTDevice Client y publica mensajes desde la consola de pruebas MQTT.
Para crear un archivo de configuración para suscribirse a varios temas de mensajes MQTT
mediante un filtro de temas MQTT comodín
1. En la ventana de terminal del equipo host local que está conectado a la Raspberry Pi, abra~/dc-
configs/dc-pubsub-custom-config.jsonpara editar y localizar elsamplesobjeto.
2. En el editor de texto, busque elsamplesobjeto y actualiza elsubscribe-topictenga un aspecto
similar al siguiente.
"samples": {
"pub-sub": {
"enabled": true,
"publish-topic": "test/dc/pubtopic",
"publish-file": "~/messages/sample-ws-message.json",
"subscribe-topic": "test/dc/#",
"subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
Para modificar la política utilizada por su Raspberry Pi para permitir suscribirse y recibir varios
temas de mensajes MQTT
1. En la ventana de terminal del equipo host local que está conectado a Raspberry Pi, en su editor de
texto favorito, abra~/policies/pubsub_test_thing_policy.jsonpara editar y, a continuación,
busque eliot::Subscribeyiot::Receivedeclaraciones de política en el archivo.
171
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/*"
]
}
Note
LaCaracteres comodín del filtro de temas MQTT (p. 114)son los+(signo más) y#(signo de
libra). Solicitud de suscripción con un#al final se suscribe a todos los temas que empiezan
por la cadena que precede al#carácter (por ejemplo,test/dc/en este caso).
Sin embargo, el valor del recurso de la declaración de política que autoriza esta suscripción
debe utilizar un*(un asterisco) en lugar del#(un signo de libra) en el filtro de temas ARN. Esto
se debe a que el procesador de políticas utiliza un carácter comodín diferente al que utiliza
MQTT.
Para obtener más información sobre el uso de caracteres comodín para temas y filtros
de temas en las políticas, consulteUsar caracteres de comodín a MQTT aAWS IoT
Corepolíticas (p. 370).
3. En el navegadoriot::Receivedirectiva, actualice la cadena del objeto Resource para
reemplazarsubtopiccon*, para que tenga el siguiente aspecto.
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*"
]
}
{
"policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy",
"policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n
\"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Connect\"\n ],\n
\"Resource\": [\n \"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing
172
AWS IoT Core Guía para desarrolladores
Demostrar la comunicación de mensajes
MQTT con elAWS IoTCliente del dispositivo
Si aparece un error de que hay demasiadas versiones de directivas para guardar una nueva,
introduzca este comando para enumerar las versiones actuales de la política. Revise la lista que
devuelve este comando para encontrar una versión de directiva que pueda eliminar.
Escriba este comando para eliminar una versión que ya no necesita. Tenga en cuenta que no puede
eliminar la versión de la política predeterminada. La versión predeterminada de la política es la que
tieneisDefaultVersionValor detrue.
Con el archivo de configuración y la política actualizados, está listo para demostrar las suscripciones de
comodín con elAWS IoTCliente del dispositivo.
Para demostrar cómo elAWS IoTDevice Client se suscribe y recibe varios temas de mensajes
MQTT
cd ~/aws-iot-device-client/build
./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-wild-config.json
3. Mientras veía elAWS IoTSalida de Device Client en la ventana de terminal del equipo host local,
vuelva alCliente de prueba MQTT. En el navegadorPublicación de un tema, enNombre del tema,
introduzcatest/dc/subtopicy luego seleccionePublicación.
4. En la ventana del terminal, confirme que el mensaje se ha recibido buscando un mensaje como:
5. Mientras veía elAWS IoTSalida de Device Client en la ventana de terminal del equipo host local,
vuelva alCliente de prueba MQTT. En el navegadorPublicación de un tema, enNombre del tema,
introduzcatest/dc/subtopic2y luego seleccionePublicación.
6. En la ventana del terminal, confirme que el mensaje se ha recibido buscando un mensaje como:
173
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
7. Después de ver los mensajes que confirman que se han recibido ambos mensajes, introduzca^C(Ctrl-
C) para detener elAWS IoTCliente del dispositivo.
8. Introduzca este comando para ver el final del archivo de registro de mensajes y ver el mensaje que
publicó desde elCliente de prueba MQTT.
tail -n 20 ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
Note
El archivo de registro de contiene solo las cargas útiles de los mensajes. Los temas de
mensajes no se graban en el archivo de registro de mensajes recibido.
También podría aparecer el mensaje publicado por elAWS IoTCliente de dispositivo en el
registro recibido. Esto se debe a que el filtro de temas comodín incluye ese tema del mensaje
y, a veces, el agente de mensajes puede procesar la solicitud de suscripción antes de enviar
el mensaje publicado a los suscriptores.
Las entradas del archivo de registro demuestran que se han recibido los mensajes. Puede repetir este
procedimiento utilizando otros nombres de temas. Todos los mensajes que tienen un nombre de tema que
comienza portest/dc/deben recibirse y registrarse. Los mensajes con nombres de temas que empiezan
por cualquier otro texto se ignoran.
Después de demostrar cómo elAWS IoTDevice Client puede publicar mensajes MQTT y suscribirse a ellos,
continuarTutorial: Demuestre acciones remotas (trabajos) con elAWS IoTDispositivo de cliente (p. 174).
• Configure una Raspberry Pi en su equipo host local como se usa enla sección anterior (p. 160).
• Si no has completado el tutorial de la sección anterior, puedes probar este tutorial usando la Raspberry
Pi con una tarjeta microSD que tenga la imagen que guardaste después de instalar elAWS IoTDevice
Client en(Opcional) Guardar la imagen de la tarjeta microSD (p. 153).
• Si ya ha ejecutado esta demostración anteriormente, revise??? (p. 186)eliminar todoAWS IoTrecursos
que creó en ejecuciones anteriores para evitar errores de recursos duplicados.
• Habrás demostrado diferentes maneras en las que tu dispositivo IoT puede usar elAWS IoT Corepara
ejecutar operaciones remotas gestionadas porAWS IoT.
Equipo requerido:
• El entorno local de desarrollo y pruebas que probó enuna sección anterior (p. 151)
174
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
Si está preparando más de un dispositivo, este procedimiento debe realizarse en cada uno de ellos.
Para crear y descargar los archivos de certificado de dispositivo para tu Raspberry Pi:
En la ventana del terminal del equipo host local que está conectado a la Raspberry Pi, introduce estos
comandos.
1. Ingresa el siguiente comando para crear los archivos de certificado de dispositivo para tu dispositivo.
{
"certificateArn": "arn:aws:iot:us-
west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
"certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
175
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
2. Introduzca los siguientes comandos para establecer los permisos en el directorio de certificados y sus
archivos.
3. Ejecute este comando para revisar los permisos de los directorios y archivos de certificados.
ls -l ~/certs/jobs
La salida del comando debe ser la misma que la que se ve aquí, excepto que las fechas y horas del
archivo serán diferentes.
Una vez que hayas descargado los archivos del certificado del dispositivo en tu Raspberry Pi, estarás listo
para continuarthe section called “Aprovisione su Raspberry Pi para demostrar” (p. 175).
Si está preparando más de un dispositivo, este procedimiento debe realizarse para cada dispositivo.
En la ventana del terminal de tu ordenador host local que está conectado a tu Raspberry Pi:
1. Escriba el siguiente comando para obtener la dirección del punto de enlace de datos delCuenta de
AWS.
El valor del punto final no ha cambiado desde la última vez que ejecutó este comando. La ejecución
del comando de nuevo aquí facilita la búsqueda y el pegado del valor del punto final de datos en el
archivo de configuración utilizado en este tutorial.
{
"endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
}
176
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
Escriba este comando para crear unAWS IoTrecurso thing para tu Raspberry Pi.
Estos tutoriales solo usarán un recurso de cosa a la vez por dispositivo. De esta manera, en estos
tutoriales, representan las diferentes demos para que después de crear elAWS IoTrecursos para
una demostración, puede volver atrás y repetir las demostraciones utilizando los recursos que creó
específicamente para cada una.
Si tuAWS IoTthing resource, el comando devuelve una respuesta similar a esta. Grabar
elthingArnpara usarlo más adelante cuando cree el trabajo para ejecutarlo en este dispositivo.
{
"thingName": "uniqueThingName",
"thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/uniqueThingName",
"thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
}
3. En la ventana de la terminal:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:client/uniqueThingName"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic",
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/events/job/*",
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/events/jobExecution/*",
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/things/uniqueThingName/jobs/
*"
]
177
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic",
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/events/jobExecution/*",
"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/$aws/
things/uniqueThingName/jobs/*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/subtopic",
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/things/uniqueThingName/jobs/
*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:DescribeJobExecution",
"iot:GetPendingJobExecutions",
"iot:StartNextPendingJobExecution",
"iot:UpdateJobExecution"
],
"Resource": [
"arn:aws:iot:us-west-2:57EXAMPLE833:topic/$aws/things/uniqueThingName"
]
}
]
}
Si ejecuta este procedimiento para varios dispositivos, guarde el archivo con este nombre de
archivo en cada dispositivo.
4. SustituiruniqueThingNamecon el nombre de cosa del dispositivo y, a continuación, ejecute este
comando para crear unAWS IoTpolítica que se adapta a ese dispositivo.
{
"policyName": "JobTestPolicyForuniqueThingName",
"policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/
JobTestPolicyForuniqueThingName",
178
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
Después de aprovisionar correctamente la Raspberry Pi, estará listo para repetir esta sección para otra
Raspberry Pi en la prueba o, si se han aprovisionado todos los dispositivos, continuarthe section called
“Configura elAWS IoTDevice Client para ejecutar el agente de trabajos” (p. 179).
Nota: si está preparando más de un dispositivo, este procedimiento debe realizarse en cada uno de ellos.
1. En la ventana del terminal de tu ordenador host local que está conectado a tu Raspberry Pi:
{
"endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
"cert": "~/certs/jobs/device.pem.crt",
"key": "~/certs/jobs/private.pem.key",
"root-ca": "~/certs/AmazonRootCA1.pem",
"thing-name": "uniqueThingName",
"logging": {
"enable-sdk-logging": true,
"level": "DEBUG",
"type": "STDOUT",
179
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
"file": ""
},
"jobs": {
"enabled": true,
"handler-directory": ""
},
"tunneling": {
"enabled": false
},
"device-defender": {
"enabled": false,
"interval": 300
},
"fleet-provisioning": {
"enabled": false,
"template-name": "",
"template-parameters": "",
"csr-file": "",
"device-key": ""
},
"samples": {
"pub-sub": {
"enabled": false,
"publish-topic": "",
"publish-file": "",
"subscribe-topic": "",
"subscribe-file": ""
}
},
"config-shadow": {
"enabled": false
},
"sample-shadow": {
"enabled": false,
"shadow-name": "",
"shadow-input-file": "",
"shadow-output-file": ""
}
}
c. Sustituya elPunto de enlace devalor de punto final de datos del dispositivo para suCuenta
de AWSque encontraste enthe section called “Aprovisionamiento del dispositivo enAWS IoT
Core” (p. 155).
d. SustituiruniqueThingNamecon el nombre de cosa que utilizaste para este dispositivo.
e. Guarde el archivo en el editor de texto como~/dc-configs/dc-jobs-config.json.
2. Ejecute este comando para establecer los permisos de archivo del nuevo archivo de configuración.
No usarás elCliente de pruebas de MQTTpara esta prueba. Si bien el dispositivo intercambiará mensajes
MQTT relacionados con los trabajos conAWS IoT, los mensajes de progreso del trabajo solo se
intercambian con el dispositivo que ejecuta el trabajo. Dado que los mensajes de progreso del trabajo
solo se intercambian con el dispositivo que ejecuta el trabajo, no puede suscribirse a ellos desde otro
dispositivo, como elAWS IoTConsola de.
Después de guardar el archivo de configuración, está listo para continuarthe section called “Paso 2: Crear
y ejecutar el trabajo enAWS IoT” (p. 181).
180
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
{
"operation": "echo",
"args": ["Hello world!"]
}
La URL del documento de trabajo que identifica el documento de trabajo que ha almacenado en
Amazon S3 se determina sustituyendo els3_nombre_cuboyAWS_regiónen la siguiente dirección
URL. Registre la URL resultante para usarla más adelante comoruta_document_trabajo
https://s3_bucket_name.s3.AWS_Region.amazonaws.com/hello-world-job.json
Note
AWSseguridad impide que puedas abrir esta URL fuera de tuCuenta de AWS, por ejemplo,
mediante un navegador. La URL es utilizada por elAWS IoTjobs engine, que tiene acceso
181
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
Después de guardar la URL del documento de trabajo, continúe conthe section called “Ejecutar un trabajo
enAWS IoTpara un dispositivo IoT” (p. 182).
1. En la ventana del terminal del equipo host local que está conectado a la Raspberry Pi, ejecuta este
comando para iniciar elAWS IoTDispositivo de cliente.
cd ~/aws-iot-device-client/build
./aws-iot-device-client --config-file ~/dc-configs/dc-jobs-config.json
2. En una ventana de terminal, confirme queAWS IoTDevice Client y muestra estos mensajes
3. En la ventana de la terminal, cuando vea este mensaje, continúe con el siguiente procedimiento y cree
el recurso de trabajo. Tenga en cuenta que puede que no sea la última entrada de la lista.
182
AWS IoT Core Guía para desarrolladores
Demuestre acciones remotas (trabajos)
con elAWS IoTDispositivo de cliente
{
"jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1",
"jobId": "hello-world-job-1"
}
2. En una ventana de terminal, debería ver el resultado delAWS IoTDevice Client como este.
183
AWS IoT Core Guía para desarrolladores
Limpieza
3. Si bien elAWS IoTDevice Client se está ejecutando y está esperando un trabajo, puede enviar otro
trabajo cambiando eljob-idValor y volver a ejecutarcreate-jobdesde el Paso 1.
Cuando haya terminado de ejecutar los trabajos, en la ventana de la terminal, introduzca^C(Control-c) para
detener elAWS IoTDispositivo de cliente.
Ten en cuenta que limpiar la tarjeta microSD del dispositivo no elimina ningún AWS IoT recurso que hayas
creado. Para limpiar los AWS IoT recursos después de limpiar la tarjeta microSD del dispositivo, consulte
el tutorial sobrethe section called “Limpieza después de crear demostraciones con el AWS IoT Device
Client” (p. 186).
Este procedimiento utiliza la computadora host local para escribir una imagen de tarjeta microSD guardada
en una tarjeta microSD.
184
AWS IoT Core Guía para desarrolladores
Limpieza
Note
1. En el ordenador host local, busque la imagen de la tarjeta microSD guardada que desea grabar en la
tarjeta microSD.
2. Inserte la tarjeta microSD en la computadora host local.
3. Con una herramienta de procesamiento de imágenes de tarjetas SD, escriba el archivo de imagen
seleccionado en la tarjeta microSD.
4. Después de escribir la imagen del sistema operativo Raspberry Pi en la tarjeta microSD, extraiga la
tarjeta microSD y extráigala de forma segura de la computadora host local.
1. Ejecute estos comandos para eliminar los directorios, subdirectorios y todos sus archivos de usuario
que se crearon en esta ruta de aprendizaje, en la ventana de terminal conectada a su dispositivo.
Note
Tras eliminar estos directorios y archivos, no podrá ejecutar las demostraciones sin volver a
completar los tutoriales.
rm -Rf ~/dc-configs
rm -Rf ~/policies
rm -Rf ~/messages
rm -Rf ~/certs
rm -Rf ~/.aws-iot-device-client
2. Ejecute estos comandos para eliminar los directorios y archivos de origen de la aplicación, en la
ventana del terminal conectada al dispositivo.
Note
Estos comandos no desinstalan ningún programa. Solo eliminan los archivos fuente utilizados
para crearlos e instalarlos. Después de eliminar estos archivos, es posible que el AWS CLI y
el AWS IoT Device Client no funcionen.
rm -Rf ~/aws-cli
rm -Rf ~/aws
rm -Rf ~/aws-iot-device-client
185
AWS IoT Core Guía para desarrolladores
Limpieza
the section called “Demuestre definido por el usuario (puede definido por el usuario (puede
acciones remotas (trabajos) haber más de uno) haber más de uno)
con elAWS IoTDispositivo de
cliente” (p. 174)
Para eliminar los AWS IoT recursos, siga este procedimiento para cada recurso que haya creado.
1. thing_nameSustitúyalo por el nombre del recurso de la cosa que desea eliminar y, a continuación,
ejecute este comando para enumerar los certificados adjuntos al recurso de la cosa desde la
computadora host local.
Este comando devuelve una respuesta como esta que enumera los certificados a los que se
adjuntanthing_name. En la mayoría de los casos, solo habrá un certificado en la lista.
{
"principals": [
"arn:aws:iot:us-
west-2:57EXAMPLE833:cert/23853eea3cf0edc7f8a69c74abeafa27b2b52823cab5b3e156295e94b26ae8ac"
]
}
186
AWS IoT Core Guía para desarrolladores
Limpieza
Este comando devuelve una respuesta como esta que enumera las políticas adjuntas al
certificado. En la mayoría de los casos, solo habrá una política en la lista.
{
"policies": [
{
"policyName": "DevCliTestThingPolicy",
"policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/
DevCliTestThingPolicy"
}
]
}
Si el comando devuelve una lista vacía como esta, la política no se adjunta a ningún
certificado y usted continúa enumerando las versiones de la política. Si aún hay certificados
adjuntos a la política, continúe con el detach-thing-principal paso.
{
"targets": []
}
Si la política solo tiene una versión, como en este ejemplo, puede ir directamente al delete-
policy paso y eliminarla ahora.
{
"policyVersions": [
{
"versionId": "1",
187
AWS IoT Core Guía para desarrolladores
Limpieza
"isDefaultVersion": true,
"createDate": "2021-11-18T01:02:46.778000+00:00"
}
]
}
Si la política tiene más de una versión, como en este ejemplo, las versiones de la política
con un isDefaultVersion valor de se false deben eliminar antes de poder eliminar la
política.
{
"policyVersions": [
{
"versionId": "2",
"isDefaultVersion": true,
"createDate": "2021-11-18T01:52:04.423000+00:00"
},
{
"versionId": "1",
"isDefaultVersion": false,
"createDate": "2021-11-18T01:30:18.083000+00:00"
}
]
}
Después de eliminar una versión de la política, repita este paso hasta que la política tenga
solo una versión de la política.
iv. policy_nameSustitúyalo por el policyName valor y, a continuación, ejecute este comando
para eliminar la política.
the section called “Demuestre AWS IoTrecursos laborales definido por el usuario
acciones remotas (trabajos)
con elAWS IoTDispositivo de
cliente” (p. 174)
El comando devuelve una lista de los AWS IoT trabajos Región de AWS que tiene Cuenta de
AWS y tiene este aspecto.
{
"jobs": [
{
"jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-2",
"jobId": "hello-world-job-2",
"targetSelection": "SNAPSHOT",
"status": "COMPLETED",
"createdAt": "2021-11-16T23:40:36.825000+00:00",
"lastUpdatedAt": "2021-11-16T23:40:41.375000+00:00",
"completedAt": "2021-11-16T23:40:41.375000+00:00"
},
{
"jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1",
"jobId": "hello-world-job-1",
"targetSelection": "SNAPSHOT",
"status": "COMPLETED",
"createdAt": "2021-11-16T23:35:26.381000+00:00",
"lastUpdatedAt": "2021-11-16T23:35:29.239000+00:00",
"completedAt": "2021-11-16T23:35:29.239000+00:00"
}
189
AWS IoT Core Guía para desarrolladores
Limpieza
]
}
b. Para cada trabajo que reconozca de la lista como un trabajo creado en esta ruta de aprendizaje,
sustitúyalo por jobId el jobId valor del trabajo que se va a eliminar y, a continuación, ejecute
este comando para eliminar un AWS IoT trabajo.
a. bucketSustitúyalo por el nombre del depósito que utilizaste y, a continuación, ejecuta este
comando para enumerar los objetos del depósito de Amazon S3 que utilizaste.
El comando devuelve una lista de los objetos de Amazon S3 del bucket con este aspecto.
{
"Contents": [
{
"Key": "hello-world-job.json",
"LastModified": "2021-11-18T03:02:12+00:00",
"ETag": "\"868c8bc3f56b5787964764d4b18ed5ef\"",
"Size": 54,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "EXAMPLE",
"ID":
"e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
}
},
{
"Key": "iot_job_firmware_update.json",
"LastModified": "2021-04-13T21:57:07+00:00",
"ETag": "\"7c68c591949391791ecf625253658c61\"",
"Size": 66,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "EXAMPLE",
"ID":
"e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
}
},
{
"Key": "order66.json",
"LastModified": "2021-04-13T21:57:07+00:00",
"ETag": "\"bca60d5380b88e1a70cc27d321caba72\"",
"Size": 29,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "EXAMPLE",
"ID":
"e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
}
}
]
}
190
AWS IoT Core Guía para desarrolladores
Creación de soluciones con elAWS IoTSDKs de dispositivos
b. Para cada objeto que reconozca de la lista como un objeto que creó en esta ruta de aprendizaje,
bucket sustitúyalo por el nombre del bucket y key por el valor clave del objeto que desea
eliminar y, a continuación, ejecute este comando para eliminar un objeto de Amazon S3.
Después de eliminar todos los AWS recursos y objetos que creó al completar esta ruta de aprendizaje,
puede volver a empezar y repetir los tutoriales.
Estos tutoriales pueden tardar más tiempo en completarse que los de la sección sobrethe section called
“Creación de demostraciones con elAWS IoTCliente del dispositivo” (p. 139)porque utilizan elAWS
IoTSDK de dispositivos y explique los conceptos que se están aplicando con más detalle para ayudarlo a
crear soluciones seguras y fiables.
Temas
• Tutorial: Conectar un dispositivo aAWS IoT Core mediante el SDK deAWS IoT dispositivos (p. 191)
• CreandoAWS IoTreglas para enrutar los datos del dispositivo a otros servicios (p. 208)
• Conservación del estado del dispositivo mientras el dispositivo está desconectado con Device
Shadows (p. 238)
• Tutorial: Crear un autorizador personalizado para AWS IoT Core (p. 259)
• Tutorial: Monitorear la humedad del suelo con unaAWS IoT Raspberry Pi (p. 271)
191
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
En la sección de ese tutorial donde debe hacerlothe section called “Configuración del dispositivo” (p. 42),
seleccione lathe section called “Conecta una Raspberry Pi u otro dispositivo” (p. 60) opción para su
dispositivo y utilice las opciones del lenguaje Python para configurar su dispositivo.
Mantén abierta la ventana de terminal que usas en ese tutorial porque también la usarás en este tutorial.
• Un dispositivo que puede ejecutar el SDK deAWS IoT dispositivos v2 para Python.
Este tutorial muestra cómo conectar un dispositivo a travésAWS IoT Core de ejemplos de código Python,
que requieren un dispositivo relativamente potente.
Si trabaja con dispositivos con recursos limitados, es posible que estos ejemplos de código no funcionen
en ellos. En ese caso, es posible que tenga más éxito con elthe section called “Mediante AWS IoT
Device SDK para Embedded C” (p. 205) tutorial.
El procedimiento que seConfigura tuCuenta de AWS (p. 19) describe cómo crear unCuenta de AWS si
aún no dispone de uno.
2. En esa cuenta, debe tener definidos los siguientes AWS IoTrecursos para el dispositivo de su
regiónCuenta de AWS y región.
El procedimiento descritoCrearAWS IoTrecursos (p. 39) describe cómo crear estos recursos para el
dispositivo en su regiónCuenta de AWS y en su región.
• Un certificado de dispositivo registradoAWS IoT y activado para autenticar el dispositivo.
El certificado a menudo se crea con un objeto deAWS IoT cosa y se adjunta a él. Si bien no se
requiere un objeto objeto para conectarse a un dispositivoAWS IoT, hace queAWS IoT las funciones
adicionales estén disponibles para el dispositivo.
• Una política adjunta al certificado del dispositivo que lo autoriza a conectarseAWS IoT Core y a
realizar todas las acciones que desee realizar.
3. Una conexión a Internet que pueda acceder a los terminalesCuenta de AWS de tu dispositivo.
Los terminales del dispositivo se describenAWS IoTpuntos finales de servicio y datos del
dispositivo (p. 83) y se pueden ver en la página de configuración de laAWS IoT consola.
4. Software de comunicación, como los SDK deAWS IoT dispositivos que proporcionan. Este tutorial usa el
SDK deAWS IoT dispositivos v2 para Python.
192
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
El agente de mensajes recibe mensajes de los dispositivos y los publica en los dispositivos que se han
suscrito a ellos. Con las sesiones persistentes (p. 92) (sesiones que permanecen activas incluso cuando el
dispositivo iniciador está desconectado), los dispositivos pueden recuperar los mensajes que se publicaron
mientras estaban desconectados. En cuanto al dispositivo, MQTT admite niveles de calidad de servicio
(QoS (p. 92)) que garantizan que el host reciba los mensajes enviados por el dispositivo.
La aplicaciónpubsub.py de ejemplo muestra estos aspectos de una conexión MQTT conAWS IoT Core:
• Protocolos de comunicación (p. 193)
• Sesiones persistentes (p. 196)
• Calidad de servicio (p. 196)
• Publicación de mensajes (p. 197)
• Suscribirse a mensajes (p. 198)
• Desconexión y reconexión del dispositivo (p. 199)
Protocolos de comunicación
Elpubsub.py ejemplo muestra una conexión MQTT que utiliza los protocolos MQTT y MQTT sobre WSS.
La biblioteca AWSCommon Runtime (AWSCRT) proporciona soporte para protocolos de comunicación de
bajo nivel y se incluye en elAWS IoT Device SDK v2 para Python.
MQTT
193
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
mqtt_connection = mqtt_connection_builder.mtls_from_path(
endpoint=args.endpoint,
cert_filepath=args.cert,
pri_key_filepath=args.key,
ca_filepath=args.ca_file,
client_bootstrap=client_bootstrap,
on_connection_interrupted=on_connection_interrupted,
on_connection_resumed=on_connection_resumed,
client_id=args.client_id,
clean_session=False,
keep_alive_secs=6
)
endpoint
La ruta al archivo de clave privada del dispositivo que se creó con su archivo de certificado
La ruta al archivo CA raíz. Solo es obligatorio si el servidor MQTT usa un certificado que no esté ya en
su almacén de confianza.
Las funciones de devolución de llamada permiten llamar cuando la conexión del dispositivo se
interrumpe y se reanuda
client_id
Si se debe iniciar una nueva sesión persistente o, si hay una, volver a conectarse a una existente
keep_alive_secs
El valor de mantener vivo, en segundos, para enviar laCONNECT solicitud. Se enviará automáticamente
un ping en este intervalo. Si el servidor no recibe un ping después de 1,5 veces este valor, asume que
la conexión se ha perdido.
194
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
mqtt_connection = mqtt_connection_builder.websockets_with_default_aws_signing(
endpoint=args.endpoint,
client_bootstrap=client_bootstrap,
region=args.signing_region,
credentials_provider=credentials_provider,
websocket_proxy_options=proxy_options,
ca_filepath=args.ca_file,
on_connection_interrupted=on_connection_interrupted,
on_connection_resumed=on_connection_resumed,
client_id=args.client_id,
clean_session=False,
keep_alive_secs=6
)
endpoint
La región deAWS firma utilizada por la autenticación Signature V4. Enpubsub.py, pasa el parámetro
introducido en la línea de comando.
La ruta al archivo CA raíz. Solo es obligatorio si el servidor MQTT usa un certificado que no esté ya en
su almacén de confianza.
195
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
on_connection_interrupted, on_connection_resumed
Las funciones de devolución de llamada permiten llamar cuando la conexión del dispositivo se
interrumpe y se reanuda
client_id
Si se debe iniciar una nueva sesión persistente o, si hay una, volver a conectarse a una existente
keep_alive_secs
El valor de mantener vivo, en segundos, para enviar laCONNECT solicitud. Se enviará automáticamente
un ping en este intervalo. Si el servidor no recibe un ping después de 1,5 veces este valor, asume que
la conexión se ha perdido.
HTTPS
¿Qué pasa con HTTPS? AWS IoT Coreadmite dispositivos que publican solicitudes HTTPS. Desde el
punto de vista de la programación, los dispositivos envían solicitudes HTTPSAWS IoT Core como lo haría
cualquier otra aplicación. Para ver un ejemplo de un programa de Python que envía un mensaje HTTP
desde un dispositivo, consulta el ejemplo de código HTTPS (p. 110) con larequests biblioteca de Python.
En este ejemplo se envía un mensaje aAWS IoT Core través de HTTPS, que loAWS IoT Core interpreta
como un mensaje MQTT.
Si bienAWS IoT Core admite las solicitudes HTTPS de los dispositivos, asegúrese de revisar la
informaciónElegir un protocolo para la comunicación del dispositivo (p. 88) para poder tomar una decisión
informada sobre qué protocolo utilizar para las comunicaciones de su dispositivo.
Sesiones persistentes
En la aplicación de ejemplo, si se establece elclean_session parámetro en, seFalse indica que la
conexión debe ser persistente. En la práctica, esto significa que la conexión abierta por esta llamada se
vuelve a conectar a una sesión persistente existente, si existe. De lo contrario, crea una nueva sesión
persistente y se conecta a ella.
Con una sesión persistente, el agente de mensajes almacena los mensajes que se envían al dispositivo
mientras el dispositivo no está conectado. Cuando un dispositivo se vuelve a conectar a una sesión
persistente, el agente de mensajes envía al dispositivo todos los mensajes almacenados a los que se haya
suscrito.
Sin una sesión persistente, el dispositivo no recibirá los mensajes que se envíen mientras el dispositivo
no esté conectado. La opción que se utilice depende de la aplicación y de si se deben comunicar los
mensajes que se producen mientras el dispositivo no está conectado. Para obtener más información,
consulte Sesiones persistentes de MQTT (p. 92).
Calidad de servicio
Cuando el dispositivo publica mensajes y se suscribe a ellos, se puede configurar la calidad de servicio
(QoS) preferida. AWS IoTadmite los niveles de QoS 0 y 1 para las operaciones de publicación y
suscripción. Para obtener más información sobre los niveles de QoS enAWS IoT, consulteOpciones de
calidad de servicio (QoS) de MQTT (p. 92).
El tiempo de ejecución deAWS CRT para Python define estas constantes para los niveles de QoS que
admite:
196
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
En la aplicación de ejemplo, las solicitudes de publicación y suscripción se realizan con un nivel de QoS de
1 (mqtt.QoS.AT_LEAST_ONCE).
• QoS al publicar
Cuando un dispositivo publica un mensaje con el nivel 1 de QoS, lo envía repetidamente hasta que
recibe unaPUBACK respuesta del intermediario de mensajes. Si el dispositivo no está conectado, el
mensaje se pone en cola para enviarse cuando se vuelva a conectar.
• QoS al suscribirse
Publicación de mensajes
Tras establecer correctamente una conexión conAWS IoT Core, los dispositivos pueden publicar mensajes.
Elpubsub.py ejemplo hace esto llamando a lapublish operación delmqtt_connection objeto.
mqtt_connection.publish(
topic=args.topic,
payload=message,
qos=mqtt.QoS.AT_LEAST_ONCE
)
topic
La carga útil del mensaje con formato de cadena (por ejemplo, un documento JSON)
Un documento JSON es un formato de carga común y es reconocido por otrosAWS IoT servicios; sin
embargo, el formato de datos de la carga útil del mensaje puede ser cualquier formato que acuerden
197
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
los editores y los suscriptores. Sin embargo, otrosAWS IoT servicios solo reconocen JSON y CBOR,
en algunos casos, para la mayoría de las operaciones.
qos
Suscribirse a mensajes
Para recibir mensajes de otros serviciosAWS IoT y dispositivos, los dispositivos se suscriben a esos
mensajes por el nombre del tema. Los dispositivos pueden suscribirse a mensajes individuales
especificando un nombre de tema (p. 113) y a un grupo de mensajes especificando un filtro de
tema (p. 114), que puede incluir caracteres comodín. Elpubsub.py ejemplo usa el código que se muestra
aquí para suscribirse a los mensajes y registrar las funciones de devolución de llamada para procesar el
mensaje una vez recibido.
topic
Si el agente de mensajes debe almacenar estos mensajes mientras el dispositivo está desconectado.
La devolución de llamada delpubsub.py ejemplo procesa los mensajes suscritos a medida que el
dispositivo los recibe.
topic
198
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
Este es el nombre de tema específico del mensaje recibido, incluso si te suscribiste a un filtro de
temas.
payload
La carga de mensajes
Tu aplicación evaluaría el tema y la carga útil para determinar qué acciones realizar.
Cuando un dispositivo se conecta por primera vez, debe suscribirse a los temas para recibir. Si la sesión
de un dispositivo está presente cuando se vuelve a conectar, sus suscripciones se restauran y todos
los mensajes almacenados de esas suscripciones se envían al dispositivo después de que se vuelva a
conectar.
Si la sesión de un dispositivo ya no existe cuando se vuelve a conectar, debe volver a suscribirse a sus
suscripciones. Las sesiones persistentes tienen una duración limitada y pueden caducar si el dispositivo se
desconecta durante demasiado tiempo.
En estos ejercicios se parte del supuesto de que ha completado losIntroducción a AWS IoT
Core (p. 18) tutoriales y que ha utilizado la ventana de terminal del dispositivo que aparece en ese
tutorial.
199
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
Procedimiento de
Para este ejercicio, imagine que su dispositivo contiene un control de temperatura y un control de luz.
Utiliza estos nombres de temas para identificar los mensajes sobre ellos.
1. Antes de empezar el ejercicio, intenta ejecutar este comando desde losIntroducción a AWS IoT
Core (p. 18) tutoriales de tu dispositivo para asegurarte de que todo está preparado para el ejercicio.
cd ~/aws-iot-device-sdk-python-v2/samples
python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/
certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
Deberías ver el mismo resultado que viste en el tutorial de introducción (p. 64).
2. Para este ejercicio, cambie estos parámetros de la línea de comandos.
Al realizar estos cambios en la línea de comando inicial, se obtiene esta línea de comandos.
Introduzca este comando en la ventana del terminal de su dispositivo.
Si ves algo como esto en tu terminal, tu dispositivo está preparado y escuchando los mensajes en los
que los nombres de los temas comiencendevice y terminen con/detail. Así que probemos eso.
3. Estos son algunos mensajes que puede recibir tu dispositivo.
200
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
4. Con el cliente de prueba MQTT de laAWS IoT consola, envíe los mensajes descritos en el paso
anterior a su dispositivo.
Resultado de
Con estopubsub.py, se suscribió a los mensajes mediante un filtro de tema comodín, los recibió y los
mostró en la ventana del terminal. Observa cómo te suscribiste a un único filtro de temas y que se llamó a
la función de devolución de llamada para procesar los mensajes que tenían dos temas distintos.
Procedimiento de
topic_parsed = False
if "/" in topic:
parsed_topic = topic.split("/")
if len(parsed_topic) == 3:
# this topic has the correct format
if (parsed_topic[0] == 'device') and (parsed_topic[2] == 'details'):
# this is a topic we care about, so check the 2nd element
if (parsed_topic[1] == 'temp'):
print("Received temperature request: {}".format(payload))
topic_parsed = True
if (parsed_topic[1] == 'light'):
print("Received light request: {}".format(payload))
topic_parsed = True
if not topic_parsed:
print("Unrecognized message topic.")
5. Guarde los cambios y ejecute el programa modificado mediante esta línea de comandos.
201
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
Resultado de
En este ejercicio, agregaste código para que la aplicación de ejemplo reconociera y procesara varios
mensajes en la función de devolución de llamada. Con esto, su dispositivo podría recibir mensajes y actuar
en consecuencia.
Otra forma de que el dispositivo reciba y procese varios mensajes es suscribirse a diferentes mensajes por
separado y asignar cada suscripción a su propia función de devolución de llamadas.
202
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
Procedimiento de
{
"timestamp": 1601048303,
"sensorId": 28,
"sensorData": [
{
"sensorName": "Wind speed",
"sensorValue": 34.2211224
}
]
}
Para preparar su cliente de prueba de MQTT para monitorear los mensajes de este ejercicio
message = "{}".format(message_string)
d. Busque esta línea de código:
message_json = json.dumps(message)
e. Cámbielo a:
message = "{}".json.dumps(json.loads(message))
f. Guarde los cambios.
3. En el dispositivo, ejecuta este comando para enviar el mensaje dos veces.
203
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
De forma predeterminada,pubsub3.py también se suscribe a los mensajes que envía. Deberías ver que
ha recibido los mensajes en la salida de la aplicación. La ventana de la terminal debería tener un aspecto
similar al siguiente.
Resultado de
Con esto, el dispositivo puede generar mensajes para enviarlosAWS IoT Core a fin de probar la
conectividad básica y proporcionar mensajes del dispositivoAWS IoT Core para su procesamiento. Por
ejemplo, puedes usar esta aplicación para enviar datos de prueba desde tu dispositivo para probar las
acciones de lasAWS IoT reglas.
Cuando esté listo paraAWS IoT Core seguir explorando, pruebe estos tutoriales:
• the section called “Envío de una notificación de Amazon SNS” (p. 216)
204
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
• the section called “Almacenamiento de datos del dispositivo en una tabla de DynamoDB” (p. 224)
• the section called “Formatear una notificación mediante unAWS Lambdafunción” (p. 229)
En general, AWS IoT Device SDK para Embedded C está dirigido a sistemas que utilizan MCU o MPU de
bajo rendimiento que ejecutan sistemas operativos integrados. Para el ejemplo de programación de esta
sección, asumimos que su dispositivo utiliza Linux.
Example
cd aws-iot-device-sdk-embedded-c
git checkout latest-release-tag
3. Instale OpenSSL versión 1.1.0 o posterior. Las bibliotecas de desarrollo de OpenSSL suelen
denominarse «libssl-dev» o «openssl-devel» cuando se instalan a través de un gestor de paquetes.
1. Copie el certificado y la clave privada que creó enIntroducción a AWS IoT Core (p. 18)en elbuild/
bin/certificatesdirectorio.
205
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
Note
Si tiene laAWS CLIinstalada, puede utilizar este comando para buscar la URL del punto de enlace de
su cuenta.
Si no tiene instalada la AWS CLI, abra la consola de AWS IoT. Desde el panel de navegación, elija
Manage (Administrar) y, a continuación, Things (Objetos). Elija la cosa IoT de su dispositivo y, a
continuación, elijaInteractuar. Su punto de enlace se muestra en la sección HTTPS de la página de
detalles del objeto.
3. Abra el iconodemo_config.hy actualice los valores de los elementos siguientes:
AWS_IOT_ENDPOINT
Por ejemplo:
cmake --version
Si aparece un error o no ve la información, deberá instalar el paquete cmake mediante este comando.
Ejecute lacmake --versiony confirme que CMake se ha instalado y que está listo para continuar.
5. Compruebe si tiene las herramientas de desarrollo instaladas en su dispositivo mediante este
comando.
206
AWS IoT Core Guía para desarrolladores
Conectar un dispositivo aAWS IoT Core
mediante el SDK deAWS IoT dispositivos
gcc --version
Vuelva a ejecutar el comando gcc --version y confirme que las herramientas de compilación se han
instalado y que está listo para continuar.
Para ejecutar las aplicaciones de ejemplo de AWS IoT Device SDK para Embedded C
2. Introduzca el siguiente comando CMake para generar los Makefiles necesarios para crear.
cmake ..
make
cd bin
./mqtt_demo_mutual_auth
207
AWS IoT Core Guía para desarrolladores
CreandoAWS IoTreglas para enrutar los
datos del dispositivo a otros servicios
El dispositivo está conectado aAWS IoTutilizando elAWS IoT Device SDK para Embedded C.
También puede utilizar laAWS IoTpara ver los mensajes MQTT que está publicando la aplicación de
muestra. Para obtener información sobre cómo utilizar el cliente MQTT en la consola de AWS IoT, consulte
the section called “Ver los mensajes MQTT con el cliente MQTT de AWS IoT” (p. 69).
AWS IoTlas reglas envían datos de tus dispositivos a otrosAWSservicios. Escuchan mensajes MQTT
específicos, formatean los datos de las cargas de mensajes y envían el resultado a otrosAWSservicios.
Le recomendamos que las pruebe en el orden en que se muestran aquí, incluso si su objetivo es crear una
regla que utilice una función Lambda o algo más complejo. Los tutoriales se presentan en orden, de básico
a complejo. Presentan nuevos conceptos de forma gradual para ayudarlo a aprender los conceptos que
puede utilizar para crear las acciones de reglas que no tienen un tutorial específico.
Note
AWS IoTlas reglas lo ayudan a enviar los datos de sus dispositivos de IoT a otrosAWSservicios.
Sin embargo, para hacerlo correctamente, necesita un conocimiento práctico de los otros servicios
a los que desea enviar datos. Si bien estos tutoriales proporcionan la información necesaria para
completar las tareas, puede resultarle útil obtener más información sobre los servicios a los que
desea enviar datos antes de utilizarlos en la solución. Una explicación detallada de la otraAWSlos
servicios están fuera del alcance de estos tutoriales.
208
AWS IoT Core Guía para desarrolladores
CreandoAWS IoTreglas para enrutar los
datos del dispositivo a otros servicios
tutoriales de esta sección se centran en un solo dispositivo y, al mismo tiempo, muestran cómo puede
incluir varios sensores.
Los tutoriales de esta sección muestran cómo utilizarAWS IoTreglas para realizar las siguientes tareas con
este sistema imaginario de dispositivos sensores meteorológicos.
Este tutorial muestra cómo volver a publicar un mensaje MQTT recibido de los sensores meteorológicos
como un mensaje que contiene solo el ID del sensor y el valor de temperatura. Utiliza soloAWS IoT
Coreservicios y muestra una consulta SQL sencilla y cómo utilizar el cliente MQTT para probar la regla.
• Tutorial: Enviar una notificación de Amazon SNS (p. 216)
Este tutorial muestra cómo enviar un mensaje SNS cuando un valor de un dispositivo sensor
meteorológico supera un valor específico. Se basa en los conceptos presentados en el tutorial anterior y
añade cómo trabajar con otroAWSservicio, elServicio de notificación simple de Amazon(Amazon SNS).
Si es la primera vez que utiliza Amazon SNS, revise suPrimeros pasosejercicios antes de empezar este
tutorial.
• Tutorial: Almacenamiento de datos del dispositivo en una tabla de DynamoDB (p. 224)
Este tutorial muestra cómo almacenar los datos de los dispositivos de sensores meteorológicos en una
tabla de base de datos. Utiliza la sentencia de consulta de reglas y las plantillas de sustitución para
formatear los datos del mensaje del servicio de destino,Amazon DynamoDB.
Si es la primera vez que utiliza DynamoDB, revise suPrimeros pasosejercicios antes de empezar este
tutorial.
• Tutorial: Formatear una notificación mediante unAWS Lambdafunción (p. 229)
Este tutorial muestra cómo llamar a una función Lambda para reformatear los datos del dispositivo
y luego enviarlos como mensaje de texto. Añade un script de Python yAWSEl SDK funciona en
unAWS Lambdafunción para formatear con el mensaje los datos de carga de los dispositivos sensores
meteorológicos y enviar un mensaje de texto.
Si eres nuevo en Lambda, revisa suPrimeros pasosejercicios antes de empezar este tutorial.
Para unAWS IoTregla para enviar los datos de un dispositivo a otroAWSservicio, utiliza:
Los dispositivos publican mensajes en temas de MQTT. El filtro de temas de la sentencia SQL SELECT
identifica los temas de MQTT a los que se debe aplicar la regla. Los campos especificados en la sentencia
SQL SELECT formatean los datos de la carga útil del mensaje MQTT entrante para que los utilicen las
acciones de la regla. Para obtener una lista completa de las acciones de las reglas, consulte Acciones de
las reglas de AWS IoT (p. 524).
209
AWS IoT Core Guía para desarrolladores
CreandoAWS IoTreglas para enrutar los
datos del dispositivo a otros servicios
Los mensajes que se vuelven a publicar mediante una regla actúan como los mensajes enviados
por cualquier otra.AWS IoTdispositivo o cliente. Los dispositivos pueden suscribirse a los mensajes
republicados del mismo modo que a cualquier otro tema de mensajes de MQTT.
• Cómo utilizar consultas y funciones SQL simples en una sentencia de consulta de reglas
• Cómo utilizar el cliente MQTT para probar unAWS IoTregla
Asegúrese de poder utilizar el cliente MQTT para suscribirse y publicar en un tema. Utilizará el cliente
MQTT para probar la nueva regla en este procedimiento.
Protocolo MQTT
210
AWS IoT Core Guía para desarrolladores
CreandoAWS IoTreglas para enrutar los
datos del dispositivo a otros servicios
mensajes. Para recibir mensajes del agente de mensajes, los dispositivos se suscriben a los temas que
van a recibir enviando filtros de temas en las solicitudes de suscripción al agente de mensajes. ElAWS
IoTEl motor de reglas recibe mensajes MQTT del intermediario de mensajes.
AWS IoTlas reglas constan de una sentencia de consulta de reglas y una o más acciones de reglas.
Cuando elAWS IoTEl motor de reglas recibe un mensaje MQTT, estos elementos actúan sobre el mensaje
de la siguiente manera.
La sentencia de consulta de la regla describe los temas de MQTT que se deben utilizar, interpreta los
datos de la carga útil del mensaje y formatea los datos tal como se describe en una sentencia SQL
similar a las sentencias utilizadas en las bases de datos SQL populares. El resultado de la sentencia de
consulta son los datos que se envían a las acciones de la regla.
• Acción de la regla
Cada acción de regla de una regla actúa sobre los datos que resultan de la sentencia de consulta
de la regla.AWS IoTsoportamuchas acciones de reglas (p. 524). En este tutorial, sin embargo, te
concentrarás en elRepublish (p. 588)rule action, que publica el resultado de la sentencia de consulta
como un mensaje MQTT con un tema específico.
Por ejemplo, la carga útil de un mensaje MQTT con eldevice/22/datael tema se ve así:
{
"temperature": 28,
"humidity": 80,
"barometer": 1013,
"wind": {
"velocity": 22,
"bearing": 255
}
}
La regla toma eltemperaturevalor de la carga útil del mensaje y eldevice_iddel tema y los vuelve a
publicar como un mensaje MQTT con eldevice/data/temptema y una carga de mensajes similar a la
siguiente:
{
"device_id": "22",
"temperature": 28
}
Con esta regla, los dispositivos que solo necesitan el identificador del dispositivo y los datos de
temperatura se suscriben a ladevice/data/temptema para recibir solo esa información.
211
AWS IoT Core Guía para desarrolladores
CreandoAWS IoTreglas para enrutar los
datos del dispositivo a otros servicios
Recuerda que el nombre de una regla debe ser único en tu cuenta y región, y no puede tener
espacios. Hemos utilizado un carácter de subrayado en este nombre para separar las dos
palabras del nombre de la regla.
b. EnDescripción, describe la regla.
Una descripción significativa le ayuda a recordar qué hace esta regla y por qué la creó. La
descripción puede ser tan larga como sea necesario, por lo que debe ser lo más detallada
posible.
4. EnDeclaración de consulta de reglasdeCrear una regla:
Esta declaración:
• Escucha los mensajes MQTT con un tema que coincida condevice/+/datafiltro de temas.
• Selecciona el segundo elemento de la cadena del tema y lo asigna a ladevice_idcampo.
• Selecciona el valortemperaturecampo de la carga útil del mensaje y lo asigna a
latemperaturecampo.
5. EnDefinir una o más acciones:
a. Para abrir la lista de acciones de la regla para esta regla, elijaAñadir acción.
b. EnSelecciona una acción, eligeVolver a publicar un mensaje en unAWS IoTtema.
c. En la parte inferior de la lista de acciones, seleccionaConfigurar acciónpara abrir la página de
configuración de la acción seleccionada.
6. EnConfigurar acción:
a. EnTema, introducedevice/data/temp. Este es el tema MQTT del mensaje que publicará esta
regla.
b. EnCalidad de servicio, elige0 - El mensaje se entrega cero o más veces.
c. EnElija o cree un rol para otorgarloAWS IoTacceso para realizar esta acción:
i. Elija Create Role (Crear rol). ElCrear un nuevo rolSe abre un cuadro de diálogo.
ii. Introduzca un nombre que describa la nueva función. En este tutorial,
utilicerepublish_role.
Al crear un nuevo rol, se crean las políticas correctas para realizar la acción de la regla y se
adjuntan al nuevo rol. Si cambia el tema de esta acción de regla o usa esta función en otra
acción de regla, debe actualizar la política de esa función para autorizar el nuevo tema o
acción. Para actualizar un rol existente, elijaActualizar rolen esta sección.
iii. EscojaCrear rolpara crear el rol y cerrar el cuadro de diálogo.
d. EscojaAñadir acciónpara añadir la acción a la regla y volver aCrear una reglapágina.
212
AWS IoT Core Guía para desarrolladores
CreandoAWS IoTreglas para enrutar los
datos del dispositivo a otros servicios
7. ElVolver a publicar un mensaje en unAWS IoTtemala acción ahora aparece enDefinir una o más
acciones.
Abra elCliente MQTT en elAWS IoTconsolaen una ventana nueva. Esto le permitirá editar la regla sin
perder la configuración de su cliente MQTT. El cliente MQTT no conserva ninguna suscripción o registro de
mensajes si lo deja para ir a otra página de la consola.
1. En elCliente MQTT en elAWS IoTconsola, suscríbete a los temas de entrada, en este caso,device/
+/data.
En elSuscripcionescolumna, debajodispositivo/+/datos,device/data/tempaparece.
3. Publica un mensaje en el tema de entrada con un identificador de dispositivo específico,device/22/
data. No puede publicar en MQTT temas que contengan caracteres comodín.
{
"temperature": 28,
"humidity": 80,
"barometer": 1013,
"wind": {
"velocity": 22,
"bearing": 255
}
}
213
AWS IoT Core Guía para desarrolladores
CreandoAWS IoTreglas para enrutar los
datos del dispositivo a otros servicios
a. En el cliente MQTT, enSuscripciones, hay un punto verde junto a los dos temas a los que te