Bróker MQTT 5 (EMQX) - AWS IoT Greengrass

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

Bróker MQTT 5 (EMQX)

El componente intermediario MQTT de EMQX (aws.greengrass.clientdevices.mqtt.EMQX) gestiona los mensajes MQTT entre los dispositivos cliente y un dispositivo principal de Greengrass. Este componente proporciona una versión modificada del broker EMQX MQTT 5.0. Implemente este broker de MQTT para utilizar las funciones de MQTT 5 en la comunicación entre los dispositivos cliente y un dispositivo principal. Para obtener más información sobre cómo elegir un bróker de MQTT, consulte. Elija un bróker MQTT

Este bróker implementa el protocolo MQTT 5.0. Incluye compatibilidad con los intervalos de caducidad de las sesiones y los mensajes, las propiedades de los usuarios, las suscripciones compartidas, los alias de los temas y mucho más. MQTT 5 es compatible con versiones anteriores de MQTT 3.1.1, por lo que si utiliza el bróker MQTT 3.1.1 de Moquette, podrá sustituirlo por el bróker EMQX MQTT 5 y los dispositivos cliente podrán seguir conectándose y funcionando como de costumbre.

nota

Los dispositivos cliente son dispositivos IoT locales que se conectan a un dispositivo central de Greengrass para enviar mensajes MQTT y datos para su procesamiento. Para obtener más información, consulte Interactúa con dispositivos IoT locales.

Versiones

Este componente tiene las siguientes versiones:

  • 2.0.x

  • 1.2.x

  • 1.1.x

  • 1.0.x

Tipo

Este componente es un componente genérico (aws.greengrass.generic). El núcleo de Greengrass ejecuta los scripts del ciclo de vida del componente.

Para obtener más información, consulte Tipos de componentes.

Sistema operativo

Este componente se puede instalar en los dispositivos principales que ejecutan los siguientes sistemas operativos:

  • Linux

  • Windows

Requisitos

Este componente tiene los siguientes requisitos:

  • El dispositivo principal debe poder aceptar conexiones en el puerto en el que opera el broker MQTT. Este componente ejecuta el broker MQTT en el puerto 8883 de forma predeterminada. Puede especificar un puerto diferente al configurar este componente.

    Si especifica un puerto diferente y utiliza el componente de puente MQTT para retransmitir mensajes MQTT a otros intermediarios, debe utilizar MQTT bridge v2.1.0 o posterior. Configúrelo para que utilice el puerto en el que opera el broker MQTT.

    Si especifica un puerto diferente y utiliza el componente IP detector para gestionar los puntos finales del broker MQTT, debe utilizar IP detector v2.1.0 o una versión posterior. Configúrelo para que indique el puerto en el que opera el broker MQTT.

  • En los dispositivos principales de Linux, Docker se instala y configura en el dispositivo principal:

    • Docker Engine 1.9.1 o posterior instalado en el dispositivo principal de Greengrass. Se ha comprobado que la versión 20.10 es la última versión que funciona con el software Core. AWS IoT Greengrass Debe instalar Docker directamente en el dispositivo principal antes de implementar los componentes que ejecutan contenedores de Docker.

    • El daemon de Docker se inició y se ejecutó en el dispositivo principal antes de implementar este componente.

    • El usuario del sistema que ejecuta este componente debe tener permisos de administrador o root. Como alternativa, puede ejecutar este componente como usuario del sistema en el docker grupo y configurar la requiresPrivileges opción de este componente false para ejecutar el broker MQTT de EQMX sin privilegios.

  • Se admite la ejecución del componente broker MQTT de EMQX en una VPC.

  • La plataforma no admite el componente de intermediario MQTT de EMQX. armv7

Dependencias

Al implementar un componente, AWS IoT Greengrass también despliega versiones compatibles de sus dependencias. Esto significa que debe cumplir los requisitos del componente y de todas sus dependencias para poder implementarlo correctamente. En esta sección se enumeran las dependencias de las versiones publicadas de este componente y las restricciones de las versiones semánticas que definen las versiones de los componentes para cada dependencia. También puede ver las dependencias de cada versión del componente en la consola.AWS IoT Greengrass En la página de detalles del componente, busque la lista de dependencias.

2.0.1

La siguiente tabla muestra las dependencias de la versión 2.0.1 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Autenticación del dispositivo cliente >=2.2.0 <2.6.0 Rígido
2.0.0

La siguiente tabla muestra las dependencias de la versión 2.0.0 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Autenticación del dispositivo cliente >=2.2.0 <2.5.0 Rígido
1.2.2 – 1.2.3

La siguiente tabla muestra las dependencias de las versiones 1.2.2 a 1.2.3 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Autenticación del dispositivo cliente >=2.2.0 <2.5.0 Rígido
1.2.0 and 1.2.1

La siguiente tabla muestra las dependencias de las versiones 1.2.0 y 1.2.1 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Autenticación del dispositivo cliente >=2.2.0 <2.4.0 Rígido
1.0.0 and 1.1.0

La siguiente tabla muestra las dependencias de las versiones 1.0.0 y 1.1.0 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Autenticación del dispositivo cliente >=2.2.0 <2.3.0 Rígido

Para obtener más información sobre las dependencias de los componentes, consulta la referencia de recetas de componentes.

Configuración

2.0.0 - 2.0.1

Este componente proporciona los siguientes parámetros de configuración que puede personalizar al implementar el componente.

importante

Si utiliza la versión 2 del componente MQTT 5 broker (EMQX), debe actualizar el archivo de configuración. Los archivos de configuración de la versión 1 no funcionan con la versión 2.

eMqxConfig

(Opcional) La configuración del broker EMQX MQTT que se va a utilizar. Puede configurar las opciones de configuración de EMQX en este componente.

Cuando se utiliza el bróker EMQX, Greengrass utiliza una configuración predeterminada. Esta configuración se utiliza a menos que la modifique mediante este campo.

La modificación de los siguientes ajustes de configuración provoca el reinicio del componente broker EMQX. Se aplican otros cambios de configuración sin reiniciar el componente.

  • emqxConfig/cluster

  • emqxConfig/node

  • emqxConfig/rpc

nota

aws.greengrass.clientdevices.mqtt.EMQXle permite configurar opciones sensibles a la seguridad. Estas incluyen la configuración de TLS, la autenticación y los proveedores de autorización. Recomendamos la configuración predeterminada que utiliza la autenticación TLS mutua y el proveedor de autenticación de dispositivos cliente Greengrass.

ejemplo Ejemplo: configuración predeterminada

El siguiente ejemplo muestra los valores predeterminados establecidos para el broker MQTT 5 (EMQX). Puede anular estos parámetros mediante el ajuste de configuración. emqxConfig

{ "authorization": { "no_match": "deny", "sources": [] }, "node": { "cookie": "<placeholder>" }, "listeners": { "ssl": { "default": { "ssl_options": { "keyfile": "{work:path}\\data\\key.pem", "certfile": "{work:path}\\data\\cert.pem", "cacertfile": null, "verify": "verify_peer", "versions": ["tlsv1.3", "tlsv1.2"], "fail_if_no_peer_cert": true } } }, "tcp": { "default": { "enabled": false } }, "ws": { "default": { "enabled": false } }, "wss": { "default": { "enabled": false } } }, "plugins": { "states": [{"name_vsn": "gg-1.0.0", "enable": true}], "install_dir": "plugins" } }
AuthMode

(Opcional) Establece el proveedor de autorización del corredor. Puede ser uno de los siguientes valores:

  • enabled— (Predeterminado) Utilice el proveedor de autenticación y autorización de Greengrass.

  • bypass_on_failure— Utilice el proveedor de autenticación Greengrass y, a continuación, utilice los demás proveedores de autenticación de la cadena de proveedores de EMQX si Greengrass deniega la autenticación o la autorización.

  • bypass— El proveedor de Greengrass está deshabilitado. La cadena de proveedores de EMQX gestiona la autenticación y la autorización.

requiresPrivilege

(Opcional) En los dispositivos principales de Linux, puede especificar que se ejecute el broker MQTT de EMQX sin privilegios de administrador o root. Si establece esta opción enfalse, el usuario del sistema que ejecute este componente debe ser miembro del grupo. docker

Valor predeterminado: true

startupTimeoutSeconds

(Opcional) El tiempo máximo en segundos para que se inicie el broker MQTT de EMQX. El estado del componente cambia a BROKEN si supera este tiempo de espera.

Valor predeterminado: 90

ipcTimeoutSeconds

(Opcional) El tiempo máximo en segundos que tarda el componente en esperar a que el núcleo de Greengrass responda a las solicitudes de comunicación entre procesos (IPC). Aumente este número si este componente informa de errores de tiempo de espera al comprobar si un dispositivo cliente está autorizado.

Valor predeterminado: 5

crtLogLevel

(Opcional) El nivel de registro de la biblioteca AWS Common Runtime (CRT).

El valor predeterminado es el nivel de registro del broker MQTT de EMQX (in). log.level emqx

restartIdentifier

(Opcional) Configure esta opción para reiniciar el broker MQTT de EMQX. Cuando este valor de configuración cambia, este componente reinicia el broker MQTT. Puede utilizar esta opción para forzar la desconexión de los dispositivos cliente.

dockerOptions

(Opcional) Configure esta opción solo en los sistemas operativos Linux para añadir parámetros a la línea de comandos de Docker. Por ejemplo, para asignar puertos adicionales, utilice el parámetro de -p Docker:

"-p 1883:1883"
ejemplo Ejemplo: actualizar un archivo de configuración de la versión 1.x a la versión 2.x

El siguiente ejemplo muestra los cambios necesarios para actualizar un archivo de configuración de la versión 1.x a la versión 2.x.

El archivo de configuración de la versión 1.x:

{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" } }

El archivo de configuración equivalente para la versión 2:

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": "8883", "max_connections": "1024000", "max_conn_rate": "500", "handshake_timeout": "15s" } } }, "log": { "console": { "enable": true, "level": "warning" } } }, "authMode": "enabled" }

No hay ningún equivalente a la entrada listener.ssl.external.rate_limit de configuración. Se ha eliminado la opción de use_greengrass_managed_certificates configuración.

ejemplo Ejemplo: establecer un puerto nuevo para el bróker

El siguiente ejemplo cambia el puerto en el que opera el broker MQTT del 8883 predeterminado al puerto 1234. Si utiliza Linux, incluya el dockerOptions campo.

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": 1234 } } } }, "dockerOptions": "-p 1234:1234" }
ejemplo Ejemplo: ajuste el nivel de registro del bróker MQTT

En el siguiente ejemplo, se cambia el nivel de registro del bróker de MQTT a. debug Puede elegir entre los siguientes niveles de registro:

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

El nivel de registro predeterminado eswarning.

{ "emqxConfig": { "log": { "console": { "level": "debug" } } } }
ejemplo Ejemplo: habilite el panel de EMQX

El siguiente ejemplo habilita el panel de EMQX para que pueda monitorear y administrar su corredor. Si utiliza Linux, incluya el dockerOptions campo.

{ "emqxConfig": { "dashboard": { "listeners": { "http": { "bind": 18083 } } } }, "dockerOptions": "-p 18083:18083" }
1.0.0 - 1.2.2

Este componente proporciona los siguientes parámetros de configuración que puede personalizar al implementar el componente.

emqx

(Opcional) La configuración del broker MQTT de EMQX que se va a utilizar. Puede configurar un subconjunto de opciones de configuración de EMQX en este componente.

Este objeto contiene la siguiente información:

listener.ssl.external

(Opcional) El puerto en el que opera el bróker MQTT.

nota

Si especifica un puerto diferente y utiliza el componente de puente MQTT para retransmitir mensajes MQTT a otros intermediarios, debe utilizar el puente MQTT v2.1.0 o posterior. Configúrelo para que utilice el puerto en el que opera el broker MQTT.

Si especifica un puerto diferente y utiliza el componente IP detector para gestionar los puntos finales del broker MQTT, debe utilizar IP detector v2.1.0 o una versión posterior. Configúrelo para que indique el puerto en el que opera el broker MQTT.

Valor predeterminado: 8883

listener.ssl.external.max_connections

(Opcional) El número máximo de conexiones simultáneas que admite el bróker MQTT.

Valor predeterminado: 1024000

listener.ssl.external.max_conn_rate

(Opcional) El número máximo de conexiones nuevas por segundo que puede recibir el broker de MQTT.

Valor predeterminado: 500

listener.ssl.external.rate_limit

(Opcional) El límite de ancho de banda para todas las conexiones al bróker MQTT. Especifique el ancho de banda y la duración de ese ancho de banda separados por una coma (,) en el siguiente formato:. bandwidth,duration Por ejemplo, puede especificar 50KB,5s limitar el broker MQTT a 50 kilobytes (KB) de datos cada 5 segundos.

listener.ssl.external.handshake_timeout

(Opcional) El tiempo que espera el bróker de MQTT para terminar de autenticar una nueva conexión.

Valor predeterminado: 15s

mqtt.max_packet_size

(Opcional) El tamaño máximo de un mensaje MQTT.

Predeterminado: 268435455 (256 MB menos 1)

log.level

(Opcional) El nivel de registro del bróker MQTT. Puede elegir entre las siguientes opciones:

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

El nivel de registro predeterminado eswarning.

requiresPrivilege

(Opcional) En los dispositivos principales de Linux, puede especificar que se ejecute el broker MQTT de EMQX sin privilegios de administrador o root. Si establece esta opción enfalse, el usuario del sistema que ejecute este componente debe ser miembro del grupo. docker

Valor predeterminado: true

startupTimeoutSeconds

(Opcional) El tiempo máximo en segundos para que se inicie el broker MQTT de EMQX. El estado del componente cambia a BROKEN si supera este tiempo de espera.

Valor predeterminado: 90

ipcTimeoutSeconds

(Opcional) El tiempo máximo en segundos que tarda el componente en esperar a que el núcleo de Greengrass responda a las solicitudes de comunicación entre procesos (IPC). Aumente este número si este componente informa de errores de tiempo de espera al comprobar si un dispositivo cliente está autorizado.

Valor predeterminado: 5

crtLogLevel

(Opcional) El nivel de registro de la biblioteca AWS Common Runtime (CRT).

El valor predeterminado es el nivel de registro del broker MQTT de EMQX (in). log.level emqx

restartIdentifier

(Opcional) Configure esta opción para reiniciar el broker MQTT de EMQX. Cuando este valor de configuración cambia, este componente reinicia el broker MQTT. Puede utilizar esta opción para forzar la desconexión de los dispositivos cliente.

dockerOptions

(Opcional) Configure esta opción solo en los sistemas operativos Linux para añadir parámetros a la línea de comandos de Docker. Por ejemplo, para asignar puertos adicionales, utilice el parámetro de -p Docker:

"-p 1883:1883"
mergeConfigurationFiles

(Opcional) Configure esta opción para añadir o anular los valores predeterminados de los archivos de configuración de EMQX especificados. Para obtener información sobre los archivos de configuración y sus formatos, consulte Configuración en la documentación de EMQX 4.0. Los valores que especifique se adjuntan al archivo de configuración.

En el siguiente ejemplo, se actualiza el etc/emqx.conf archivo.

"mergeConfigurationFiles": { "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s" },

Además de los archivos de configuración compatibles con EMQX, Greengrass admite un archivo que configura el complemento de autenticación de Greengrass para EMQX llamado. etc/plugins/aws_greengrass_emqx_auth.conf Hay dos opciones compatibles: y. auth_mode use_greengrass_managed_certificates Para usar otro proveedor de autenticación, defina la auth_mode opción en una de las siguientes opciones:

  • enabled— (Predeterminado) Utilice el proveedor de autenticación y autorización de Greengrass.

  • bypass_on_failure— Utilice el proveedor de autenticación Greengrass y, a continuación, utilice los demás proveedores de autenticación de la cadena de proveedores de EMQX si Greengrass deniega la autenticación o la autorización.

  • bypass— El proveedor de Greengrass está deshabilitado. Luego, la cadena de proveedores de EMQX gestiona la autenticación y la autorización.

Si use_greengrass_managed_certificates es asítrue, esta opción indica que Greengrass administra los certificados TLS del bróker. Sifalse, indica que proporciona los certificados a través de otra fuente.

En el siguiente ejemplo, se actualizan los valores predeterminados del archivo etc/plugins/aws_greengrass_emqx_auth.conf de configuración.

"mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" },
nota

aws.greengrass.clientdevices.mqtt.EMQXpermite configurar opciones sensibles a la seguridad. Estas incluyen la configuración de TLS, la autenticación y los proveedores de autorización. La configuración recomendada es la configuración predeterminada que utiliza la autenticación TLS mutua y el proveedor de autenticación de dispositivos cliente Greengrass.

replaceConfigurationFiles

(Opcional) Configure esta opción para reemplazar los archivos de configuración de EMQX especificados. Los valores que especifique sustituyen a todo el archivo de configuración existente. No puede especificar el etc/emqx.conf archivo en esta sección. Debe usarlo mergeConfigurationFile para modificaretc/emqx.conf.

ejemplo Ejemplo: actualización de la combinación de configuraciones

El siguiente ejemplo de configuración especifica el funcionamiento del broker MQTT en el puerto 443.

{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "requiresPrivilege": "true", "startupTimeoutSeconds": "90", "ipcTimeoutSeconds": "5" }

Archivo de registro local

Este componente utiliza el siguiente archivo de registro.

Linux
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
Windows
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
Para ver los registros de este componente
  • Ejecute el siguiente comando en el dispositivo principal para ver el archivo de registro de este componente en tiempo real. Sustituya /greengrass/v2 o C:\greengrass\v2 por la ruta a la carpeta AWS IoT Greengrass raíz.

    Linux
    sudo tail -f /greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log -Tail 10 -Wait

Licencias

En los sistemas operativos Windows, este software incluye código distribuido según los términos de licencia del software de Microsoft: Microsoft Visual Studio Community 2022. Al descargar este software, aceptas los términos de licencia de ese código.

Este componente se publica en virtud del contrato de licencia de software principal de Greengrass.

Registros de cambios

En la siguiente tabla se describen los cambios en cada versión del componente.

v2.x

Versión

Cambios

2.0.1

Versión actualizada para la versión 2.5.0 de autenticación de dispositivos cliente.

2.0.0

Esta versión del broker MQTT 5 (EMQX) espera parámetros de configuración diferentes a los de la versión 1.x. Si utiliza una configuración no predeterminada para la versión 1.x, debe actualizar la configuración del componente para la versión 2.x. Para obtener más información, consulte Configuración.

Nuevas características
  • Actualiza el broker MQTT a EMQX 5.1.1.

  • Permite realizar cambios en la configuración del broker sin necesidad de reiniciar el componente.

Actualizaciones
  • Añade un nuevo campo emqxConfig de configuración que sustituye a los emqx campos de replaceConfigurationFiles configuración y. mergeConfigurationFiles

v1.x

Versión

Cambios

1.2.3

Mejoras y correcciones de errores
  • Soluciona un problema por el que los clientes no podían interactuar con EMQX después de autenticarse previamente desconectando y volviendo a autenticar el cliente.

1.2.2

Versión actualizada para la autenticación de dispositivos cliente, versión 2.4.0.

1.2.1

Mejoras y correcciones de errores
  • Soluciona un problema por el que el componente no se iniciaba en Windows si Visual C++ Redistributable aún no estaba presente.

  • Actualiza EMQX a la versión 4.4.14.

1.2.0

Añade soporte para cadenas de certificados.

1.1.0

Nuevas características
  • Añade compatibilidad con las configuraciones de EMQX, incluidas las opciones de intermediación y los complementos.

Mejoras y correcciones de errores
  • Actualiza EMQX a la versión 4.4.9.

1.0.1

Corrige un problema durante el protocolo de enlace TLS que provocaba que algunos clientes MQTT no pudieran conectarse.

1.0.0

Versión inicial.