MQTT5 courtiers (1EMQX) - AWS IoT Greengrass

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

MQTT5 courtiers (1EMQX)

Le composant EMQX MQTT broker (aws.greengrass.clientdevices.mqtt.EMQX) gère les MQTT messages entre les appareils clients et un périphérique principal de Greengrass. Ce composant fournit une version modifiée du broker EMQX MQTT 5.0. Déployez ce MQTT broker pour utiliser MQTT 5 fonctionnalités de communication entre les appareils clients et un appareil principal. Pour plus d'informations sur le choix d'un MQTT courtier, consultezChoisissez un courtier MQTT.

Ce broker implémente le protocole MQTT 5.0. Il inclut la prise en charge des intervalles d'expiration des sessions et des messages, des propriétés utilisateur, des abonnements partagés, des alias de rubrique, etc. MQTT5 est rétrocompatible avec MQTT 3.1.1, donc si vous exécutez le broker Moquette MQTT 3.1.1, vous pouvez le remplacer par le broker EMQX MQTT 5, et les appareils clients peuvent continuer à se connecter et à fonctionner comme d'habitude.

Note

Les appareils clients sont des appareils IoT locaux qui se connectent à un appareil principal de Greengrass pour envoyer MQTT des messages et des données à traiter. Pour de plus amples informations, veuillez consulter Interagissez avec les appareils IoT locaux.

Versions

Les versions de ce composant sont les suivantes :

  • 2,0.x

  • 1,2.x

  • 1,1x

  • 1,0 x

Type

Ce composant est un composant générique (aws.greengrass.generic). Le noyau Greengrass exécute les scripts de cycle de vie du composant.

Pour de plus amples informations, veuillez consulter Types de composants.

Système d’exploitation

Ce composant peut être installé sur les appareils principaux qui exécutent les systèmes d'exploitation suivants :

  • Linux

  • Windows

Prérequis

Ce composant répond aux exigences suivantes :

  • Le périphérique principal doit être en mesure d'accepter des connexions sur le port où opère le MQTT broker. Ce composant exécute le MQTT broker sur le port 8883 par défaut. Vous pouvez spécifier un port différent lorsque vous configurez ce composant.

    Si vous spécifiez un port différent et que vous utilisez le composant MQTT pont pour relayer MQTT des messages à d'autres courtiers, vous devez utiliser le MQTT pont v2.1.0 ou version ultérieure. Configurez-le pour utiliser le port sur lequel le MQTT broker opère.

    Si vous spécifiez un port différent et que vous utilisez le composant de détection IP pour gérer les points de terminaison du MQTT broker, vous devez utiliser le détecteur IP v2.1.0 ou version ultérieure. Configurez-le pour signaler le port sur lequel le MQTT broker opère.

  • Sur les appareils principaux Linux, Docker est installé et configuré sur le périphérique principal :

    • Docker Engine 1.9.1 ou version ultérieure installé sur le périphérique principal de Greengrass. La version 20.10 est la dernière version vérifiée pour fonctionner avec le logiciel AWS IoT Greengrass Core. Vous devez installer Docker directement sur le périphérique principal avant de déployer des composants qui exécutent des conteneurs Docker.

    • Le daemon Docker a démarré et s'est exécuté sur le périphérique principal avant que vous ne déployiez ce composant.

    • L'utilisateur du système qui exécute ce composant doit disposer des autorisations root ou administrateur. Vous pouvez également exécuter ce composant en tant qu'utilisateur du système dans le docker groupe et configurer l'requiresPrivilegesoption de ce composant false pour exécuter le EQMX MQTT broker sans privilèges.

  • Le composant EMQX MQTT broker est compatible pour s'exécuter dans unVPC.

  • Le composant EMQX MQTT broker n'est pas pris en charge sur la armv7 plateforme.

Dépendances

Lorsque vous déployez un composant, il déploie AWS IoT Greengrass également des versions compatibles de ses dépendances. Cela signifie que vous devez satisfaire aux exigences relatives au composant et à toutes ses dépendances pour réussir le déploiement du composant. Cette section répertorie les dépendances des versions publiées de ce composant et les contraintes de version sémantiques qui définissent les versions des composants pour chaque dépendance. Vous pouvez également consulter les dépendances de chaque version du composant dans la AWS IoT Greengrass console. Sur la page de détails du composant, recherchez la liste des dépendances.

2.0.2

Le tableau suivant répertorie les dépendances pour la version 2.0.2 de ce composant.

Dépendance Versions compatibles Type de dépendance
Authentification de l'appareil client >=2,2,0 <2,6,0 Flexible
2.0.1

Le tableau suivant répertorie les dépendances pour la version 2.0.1 de ce composant.

Dépendance Versions compatibles Type de dépendance
Authentification de l'appareil client >=2,2,0 <2,6,0 Stricte
2.0.0

Le tableau suivant répertorie les dépendances pour la version 2.0.0 de ce composant.

Dépendance Versions compatibles Type de dépendance
Authentification de l'appareil client >=2,2,0 <2,5,0 Stricte
1.2.2 – 1.2.3

Le tableau suivant répertorie les dépendances pour les versions 1.2.2 à 1.2.3 de ce composant.

Dépendance Versions compatibles Type de dépendance
Authentification de l'appareil client >=2,2,0 <2,5,0 Stricte
1.2.0 and 1.2.1

Le tableau suivant répertorie les dépendances pour les versions 1.2.0 et 1.2.1 de ce composant.

Dépendance Versions compatibles Type de dépendance
Authentification de l'appareil client >=2,2,0 <2,4,0 Stricte
1.0.0 and 1.1.0

Le tableau suivant répertorie les dépendances pour les versions 1.0.0 et 1.1.0 de ce composant.

Dépendance Versions compatibles Type de dépendance
Authentification de l'appareil client >=2,2,0 <2,3,0 Stricte

Pour plus d'informations sur les dépendances des composants, consultez la référence de la recette des composants.

Configuration

2.0.0 - 2.0.1

Ce composant fournit les paramètres de configuration suivants que vous pouvez personnaliser lorsque vous déployez le composant.

Important

Si vous utilisez la version 2 du composant MQTT 5 broker (EMQX), vous devez mettre à jour votre fichier de configuration. Les fichiers de configuration de la version 1 ne fonctionnent pas avec la version 2.

emqxConfig

(Facultatif) La configuration du EMQXMQTTbroker à utiliser. Vous pouvez définir des options EMQX de configuration dans ce composant.

Lorsque vous utilisez le EMQX broker, Greengrass utilise une configuration par défaut. Cette configuration est utilisée sauf si vous la modifiez à l'aide de ce champ.

La modification des paramètres de configuration suivants entraîne le redémarrage du composant EMQX broker. Les autres modifications de configuration s'appliquent sans redémarrer le composant.

  • emqxConfig/cluster

  • emqxConfig/node

  • emqxConfig/rpc

Note

aws.greengrass.clientdevices.mqtt.EMQXvous permet de configurer des options sensibles à la sécurité. Il s'agit notamment des TLS paramètres, de l'authentification et des fournisseurs d'autorisation. Nous avons recommandé la configuration par défaut qui utilise TLS l'authentification mutuelle et le fournisseur d'authentification des appareils clients Greengrass.

Exemple : configuration par défaut

L'exemple suivant montre les valeurs par défaut définies pour le courtier MQTT 5 (EMQX). Vous pouvez remplacer ces paramètres à l'aide du paramètre emqxConfig de configuration.

{ "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

(Facultatif) Définit le fournisseur d'autorisation pour le courtier. Il peut avoir l'une des valeurs suivantes :

  • enabled— (Par défaut) Utilisez le fournisseur d'authentification et d'autorisation Greengrass.

  • bypass_on_failure— Utilisez le fournisseur d'authentification Greengrass, puis utilisez tous les fournisseurs d'authentification restants de la chaîne de fournisseurs EMQX si Greengrass refuse l'authentification ou l'autorisation.

  • bypass— Le fournisseur Greengrass est désactivé. L'authentification et l'autorisation sont gérées par la chaîne EMQX de fournisseurs.

requiresPrivilege

(Facultatif) Sur les appareils principaux Linux, vous pouvez spécifier d'exécuter le EMQX MQTT broker sans privilèges root ou administrateur. Si vous définissez cette option surfalse, l'utilisateur du système qui exécute ce composant doit être membre du docker groupe.

Par défaut : true

startupTimeoutSeconds

(Facultatif) Durée maximale en secondes pendant laquelle le EMQX MQTT courtier démarre. L'état du composant change BROKEN s'il dépasse ce délai.

Par défaut : 90

ipcTimeoutSeconds

(Facultatif) Durée maximale en secondes pendant laquelle le composant attend que le noyau Greengrass réponde aux demandes de communication interprocessus ()IPC. Augmentez ce nombre si ce composant signale des erreurs de temporisation lorsqu'il vérifie si un appareil client est autorisé.

Par défaut : 5

crtLogLevel

(Facultatif) Le niveau de journalisation de la bibliothèque AWS Common Runtime (CRT).

La valeur par défaut est le niveau de connexion du EMQX MQTT courtier (log.levelinemqx).

restartIdentifier

(Facultatif) Configurez cette option pour redémarrer le EMQX MQTT broker. Lorsque cette valeur de configuration change, ce composant redémarre le MQTT broker. Vous pouvez utiliser cette option pour forcer les appareils clients à se déconnecter.

dockerOptions

(Facultatif) Configurez cette option uniquement sur les systèmes d'exploitation Linux pour ajouter des paramètres à la ligne de commande Docker. Par exemple, pour mapper des ports supplémentaires, utilisez le paramètre -p Docker :

"-p 1883:1883"
Exemple : mise à jour d'un fichier de configuration v1.x vers la version 2.x

L'exemple suivant montre les modifications nécessaires pour mettre à jour un fichier de configuration v1.x vers la version 2.x.

Le fichier de configuration de la version 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" } }

Le fichier de configuration équivalent pour la v2 :

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

Il n'existe aucun équivalent à l'entrée listener.ssl.external.rate_limit de configuration. L'option use_greengrass_managed_certificates de configuration a été supprimée.

Exemple : définir un nouveau port pour le courtier

Dans l'exemple suivant, le port sur lequel le MQTT broker opère passe du port par défaut 8883 au port 1234. Si vous utilisez Linux, incluez le dockerOptions champ.

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": 1234 } } } }, "dockerOptions": "-p 1234:1234" }
Exemple : ajuster le niveau de journalisation du MQTT courtier

L'exemple suivant change le niveau de journalisation du MQTT courtier endebug. Vous pouvez choisir l'un des niveaux de journalisation suivants :

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

Le niveau de journalisation par défaut estwarning.

{ "emqxConfig": { "log": { "console": { "level": "debug" } } } }
Exemple : activer le EMQX tableau de bord

L'exemple suivant active le EMQX tableau de bord afin que vous puissiez surveiller et gérer votre courtier. Si vous utilisez Linux, incluez le dockerOptions champ.

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

Ce composant fournit les paramètres de configuration suivants que vous pouvez personnaliser lorsque vous déployez le composant.

emqx

(Facultatif) La configuration du EMQXMQTTbroker à utiliser. Vous pouvez configurer un sous-ensemble d'options de EMQX configuration dans ce composant.

Cet objet contient les informations suivantes :

listener.ssl.external

(Facultatif) Port sur lequel opère le MQTT broker.

Note

Si vous spécifiez un port différent et que vous utilisez le composant MQTT pont pour relayer MQTT des messages à d'autres courtiers, vous devez utiliser le MQTT pont v2.1.0 ou version ultérieure. Configurez-le pour utiliser le port sur lequel le MQTT broker opère.

Si vous spécifiez un port différent et que vous utilisez le composant de détection IP pour gérer les points de terminaison du MQTT broker, vous devez utiliser le détecteur IP v2.1.0 ou version ultérieure. Configurez-le pour signaler le port sur lequel le MQTT broker opère.

Par défaut : 8883

listener.ssl.external.max_connections

(Facultatif) Nombre maximal de connexions simultanées prises en charge par le MQTT broker.

Par défaut : 1024000

listener.ssl.external.max_conn_rate

(Facultatif) Le nombre maximum de nouvelles connexions par seconde que le MQTT courtier peut recevoir.

Par défaut : 500

listener.ssl.external.rate_limit

(Facultatif) Limite de bande passante pour toutes les connexions au MQTT broker. Spécifiez la bande passante et la durée de cette bande passante séparées par une virgule (,) au format suivant :bandwidth,duration. Par exemple, vous pouvez spécifier 50KB,5s de limiter le MQTT broker à 50 kilo-octets (Ko) de données toutes les 5 secondes.

listener.ssl.external.handshake_timeout

(Facultatif) Durée pendant laquelle le MQTT courtier attend pour terminer l'authentification d'une nouvelle connexion.

Par défaut : 15s

mqtt.max_packet_size

(Facultatif) Taille maximale d'un MQTT message.

Par défaut : 268435455 (256 Mo moins 1)

log.level

(Facultatif) Le niveau de journalisation du MQTT courtier. Sélectionnez parmi les options suivantes :

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

Le niveau de journalisation par défaut estwarning.

requiresPrivilege

(Facultatif) Sur les appareils principaux Linux, vous pouvez spécifier d'exécuter le EMQX MQTT broker sans privilèges root ou administrateur. Si vous définissez cette option surfalse, l'utilisateur du système qui exécute ce composant doit être membre du docker groupe.

Par défaut : true

startupTimeoutSeconds

(Facultatif) Durée maximale en secondes pendant laquelle le EMQX MQTT courtier démarre. L'état du composant change BROKEN s'il dépasse ce délai.

Par défaut : 90

ipcTimeoutSeconds

(Facultatif) Durée maximale en secondes pendant laquelle le composant attend que le noyau Greengrass réponde aux demandes de communication interprocessus ()IPC. Augmentez ce nombre si ce composant signale des erreurs de temporisation lorsqu'il vérifie si un appareil client est autorisé.

Par défaut : 5

crtLogLevel

(Facultatif) Le niveau de journalisation de la bibliothèque AWS Common Runtime (CRT).

La valeur par défaut est le niveau de connexion du EMQX MQTT courtier (log.levelinemqx).

restartIdentifier

(Facultatif) Configurez cette option pour redémarrer le EMQX MQTT broker. Lorsque cette valeur de configuration change, ce composant redémarre le MQTT broker. Vous pouvez utiliser cette option pour forcer les appareils clients à se déconnecter.

dockerOptions

(Facultatif) Configurez cette option uniquement sur les systèmes d'exploitation Linux pour ajouter des paramètres à la ligne de commande Docker. Par exemple, pour mapper des ports supplémentaires, utilisez le paramètre -p Docker :

"-p 1883:1883"
mergeConfigurationFiles

(Facultatif) Configurez cette option pour ajouter ou remplacer les valeurs par défaut dans les fichiers de EMQX configuration spécifiés. Pour plus d'informations sur les fichiers de configuration et leurs formats, consultez la section Configuration dans la documentation EMQX 4.0. Les valeurs que vous spécifiez sont ajoutées au fichier de configuration.

L'exemple suivant met à jour le etc/emqx.conf fichier.

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

Outre les fichiers de configuration pris en charge parEMQX, Greengrass prend en charge un fichier qui configure le plugin d'authentification Greengrass pour called. EMQX etc/plugins/aws_greengrass_emqx_auth.conf Il existe deux options prises en charge, auth_mode etuse_greengrass_managed_certificates. Pour utiliser un autre fournisseur d'authentification, définissez l'auth_modeoption sur l'une des options suivantes :

  • enabled— (Par défaut) Utilisez le fournisseur d'authentification et d'autorisation Greengrass.

  • bypass_on_failure— Utilisez le fournisseur d'authentification Greengrass, puis utilisez tous les fournisseurs d'authentification restants de la chaîne de fournisseurs EMQX si Greengrass refuse l'authentification ou l'autorisation.

  • bypass— Le fournisseur Greengrass est désactivé. L'authentification et l'autorisation sont ensuite gérées par la chaîne EMQX de fournisseurs.

Dans l'use_greengrass_managed_certificatesaffirmativetrue, cette option indique que Greengrass gère les certificats du courtierTLS. Sifalse, cela indique que vous fournissez les certificats via une autre source.

L'exemple suivant met à jour les valeurs par défaut du fichier etc/plugins/aws_greengrass_emqx_auth.conf de configuration.

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

aws.greengrass.clientdevices.mqtt.EMQXvous permet de configurer des options sensibles à la sécurité. Il s'agit notamment des TLS paramètres, de l'authentification et des fournisseurs d'autorisation. La configuration recommandée est la configuration par défaut qui utilise l'TLSauthentification mutuelle et le fournisseur Greengrass Client Device Auth.

replaceConfigurationFiles

(Facultatif) Configurez cette option pour remplacer les fichiers EMQX de configuration spécifiés. Les valeurs que vous spécifiez remplacent l'intégralité du fichier de configuration existant. Vous ne pouvez pas spécifier le etc/emqx.conf fichier dans cette section. Vous devez utiliser mergeConfigurationFile pour modifieretc/emqx.conf.

Exemple : mise à jour de la fusion de configurations

L'exemple de configuration suivant indique de faire fonctionner le MQTT broker sur le port 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" }

Fichier journal local

Ce composant utilise le fichier journal suivant.

Linux
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
Windows
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
Pour consulter les journaux de ce composant
  • Exécutez la commande suivante sur le périphérique principal pour afficher le fichier journal de ce composant en temps réel. Remplacez /greengrass/v2 ou C:\greengrass\v2 par le chemin d'accès au dossier AWS IoT Greengrass racine.

    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

Licences

Sur les systèmes d'exploitation Windows, ce logiciel inclut du code distribué conformément aux termes du contrat de licence logiciel Microsoft - Microsoft Visual Studio Community 2022. En téléchargeant ce logiciel, vous acceptez les termes du contrat de licence de ce code.

Ce composant est publié dans le cadre du contrat de licence logicielle Greengrass Core.

Journal des modifications

Le tableau suivant décrit les modifications apportées à chaque version du composant.

v2.x

Version

Modifications

2.0.2

Corrections de bugs et améliorations
  • Résout un problème de EMQX démarrage avant que le composant d'authentification de l'appareil client ne soit prêt.

2.0.1

Version mise à jour pour la version 2.5.0 d'authentification des appareils clients.

2.0.0

Cette version du broker MQTT 5 (EMQX) attend des paramètres de configuration différents de ceux de la version 1.x. Si vous utilisez une configuration autre que celle par défaut pour la version 1.x, vous devez mettre à jour la configuration du composant pour 2.x. Pour de plus amples informations, veuillez consulter Configuration.

Nouvelles fonctionnalités
  • Met à jour le MQTT broker vers la EMQX version 5.1.1.

  • Permet de modifier la configuration du broker sans redémarrer le composant.

Mises à jour
  • Ajoute un nouveau champ de emqxConfig configuration qui remplace les champs emqxmergeConfigurationFiles, et replaceConfigurationFiles de configuration.

v1.x

Version

Modifications

1.2.3

Corrections de bugs et améliorations
  • Résout un problème empêchant les clients d'interagir avec eux EMQX après s'être authentifiés en les déconnectant puis en les authentifiant de nouveau.

1.2.2

Version mise à jour pour la version 2.4.0 d'authentification du périphérique client.

1.2.1

Corrections de bugs et améliorations
  • Résout un problème selon lequel le composant ne démarrait pas sous Windows si Visual C++ Redistributable n'est pas déjà présent.

  • Mises à jour EMQX vers la version 4.4.14.

1.2.0

Ajoute la prise en charge des chaînes de certificats.

1.1.0

Nouvelles fonctionnalités
  • Prend en charge les EMQX configurations, notamment les options de courtage et les plug-ins.

Corrections de bugs et améliorations
  • Mises EMQX à jour vers la version 4.4.9.

1.0.1

Résout un problème lors de la TLS poignée de main qui empêchait certains MQTT clients de se connecter.

1.0.0

Première version.