AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.
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.
Configuration du AWS IoT Greengrass noyau
Un AWS IoT Greengrass cœur est un AWS IoT objet (appareil) qui agit comme un hub ou une passerelle dans les environnements périphériques. Comme AWS IoT les autres appareils, un noyau existe dans le registre, possède un périphérique fantôme et utilise un certificat d'appareil pour s'authentifier auprès de AWS IoT Core et AWS IoT Greengrass. L'appareil principal exécute le logiciel AWS IoT Greengrass Core, ce qui lui permet de gérer les processus locaux pour les groupes Greengrass, tels que la communication, la synchronisation de shadows et l'échange de jetons.
Le logiciel AWS IoT Greengrass Core fournit les fonctionnalités suivantes :
-
Déploiement et exécution locale de connecteurs et de fonctions Lambda.
-
Traitez les flux de données localement avec des exportations automatiques vers le AWS Cloud.
-
Messagerie MQTT sur le réseau local entre les appareils, les connecteurs et les fonctions Lambda à l'aide d'abonnements gérés.
-
Messagerie MQTT entre appareils, connecteurs AWS IoT et fonctions Lambda à l'aide d'abonnements gérés.
-
Connexions sécurisées entre les appareils et AWS Cloud utilisation de l'authentification et de l'autorisation des appareils.
-
Synchronisation cachée locale des appareils. Les ombres peuvent être configurées pour être synchronisées avec AWS Cloud.
-
Accès contrôlé à l'appareil local et aux ressources de volume.
-
Déploiement de modèles d'apprentissage automatique formés dans le cloud pour exécution de l'inférence locale.
-
Détection automatique d'adresse IP qui permet aux appareils de détecter votre appareil Greengrass principal.
-
Déploiement central de nouvelles configurations de groupe ou mises à jour. Une fois les données de configuration téléchargée, l'appareil principal redémarre automatiquement.
-
Mises à jour logicielles sécurisées over-the-air (OTA) des fonctions Lambda définies par l'utilisateur.
-
Stockage sécurisé et crypté des secrets locaux et accès contrôlé par des connecteurs et des fonctions Lambda.
AWS IoT Greengrass fichier de configuration de base
Le fichier de configuration du logiciel AWS IoT Greengrass Core estconfig.json
. Il est placé dans le répertoire /
.greengrass-root
/config
Note
greengrass-root
représente le chemin d'installation du logiciel AWS IoT Greengrass Core sur votre appareil. Généralement, il s'agit du répertoire /greengrass
.
Si vous utilisez l'option de création de groupe par défaut depuis la AWS IoT Greengrass console, le config.json
fichier est déployé sur le périphérique principal dans un état de fonctionnement.
Vous pouvez vérifier le contenu de ce fichier en exécutant la commande suivante :
cat /
greengrass-root
/config/config.json
Voici un exemple de fichier config.json
. Il s'agit de la version générée lorsque vous créez le noyau depuis la AWS IoT Greengrass console.
{
"coreThing": {
"caPath": "root.ca.pem",
"certPath": "hash
.cert.pem",
"keyPath": "hash
.private.key",
"thingArn": "arn:partition
:iot:region
:account-id
:thing/core-thing-name
",
"iotHost": "host-prefix
-ats.iot.region
.amazonaws.com",
"ggHost": "greengrass-ats.iot.region
.amazonaws.com",
"keepAlive": 600,
"ggDaemonPort": 8000,
"systemComponentAuthTimeout": 5000
},
"runtime": {
"maxWorkItemCount": 1024,
"maxConcurrentLimit": 25,
"lruSize": 25,
"mountAllBlockDevices": "no",
"cgroup": {
"useSystemd": "yes"
}
},
"managedRespawn": false,
"crypto": {
"principals": {
"SecretsManager": {
"privateKeyPath": "file:///greengrass/certs/hash
.private.key"
},
"IoTCertificate": {
"privateKeyPath": "file:///greengrass/certs/hash
.private.key",
"certificatePath": "file:///greengrass/certs/hash
.cert.pem"
}
},
"caPath": "file:///greengrass/certs/root.ca.pem"
},
"writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory",
"pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory"
}
Le fichier config.json
prend en charge les propriétés suivantes :
coreThing
Champ | Description | Remarques |
---|---|---|
caPath |
Le chemin d'accès à l'autorité de certification AWS IoT racine par rapport au |
Pour une compatibilité descendante avec les versions antérieures à 1.7.0. Cette propriété est ignorée lorsque l' NoteAssurez-vous que vos points de terminaison correspondent à votre type de certificat. |
certPath |
Chemin d'accès au certificat de l'appareil principal relatif au répertoire |
Pour une compatibilité descendante avec les versions antérieures à 1.7.0. Cette propriété est ignorée lorsque l'crypto objet est présent. |
keyPath |
Chemin d'accès à la clé privée principale relatif au répertoire / . |
Pour une compatibilité descendante avec les versions antérieures à 1.7.0. Cette propriété est ignorée lorsque l'crypto objet est présent. |
thingArn |
Le nom de ressource Amazon (ARN) de l' AWS IoT objet qui représente le périphérique AWS IoT Greengrass principal. | Trouvez l'ARN de votre cœur dans la AWS IoT Greengrass console, sous Cores, ou en exécutant la commande aws greengrass get-core-definition-version CLI. |
iotHost |
Votre AWS IoT point de terminaison. |
Recherchez le point de terminaison dans la AWS IoT console sous Paramètres ou en exécutant la commande Cette commande renvoie le point de terminaison ATS (Amazon Trust Services). Pour de plus amples informations, veuillez consulter la documentation Authentification du serveur. NoteAssurez-vous que vos points de terminaison correspondent à votre type de certificat. Assurez-vous que vos points de terminaison correspondent à vos Région AWS. |
ggHost |
Votre AWS IoT Greengrass point de terminaison. |
Il s'agit de votre point de terminaison NoteAssurez-vous que vos points de terminaison correspondent à votre type de certificat. Assurez-vous que vos points de terminaison correspondent à vos Région AWS. |
iotMqttPort |
Facultatif. Le numéro de port à utiliser pour les communications MQTT. AWS IoT | Les valeurs valides sont 8883 ou 443 . La valeur par défaut est 8883 . Pour de plus amples informations, veuillez consulter Connexion au port 443 ou via un proxy réseau. |
iotHttpPort |
Facultatif. Numéro de port utilisé pour créer des connexions HTTPS vers AWS IoT. | Les valeurs valides sont 8443 ou 443 . La valeur par défaut est 8443 . Pour de plus amples informations, veuillez consulter Connexion au port 443 ou via un proxy réseau. |
ggMqttPort |
Facultatif. Numéro de port à utiliser pour la communication MQTT sur le réseau local. | Les valeurs valides vont de 1024 à 65535 . La valeur par défaut est 8883 . Pour de plus amples informations, veuillez consulter Configuration du port MQTT pour la messagerie locale. |
ggHttpPort |
Facultatif. Numéro de port utilisé pour créer des connexions HTTPS vers le service AWS IoT Greengrass . | Les valeurs valides sont 8443 ou 443 . La valeur par défaut est 8443 . Pour de plus amples informations, veuillez consulter Connexion au port 443 ou via un proxy réseau. |
keepAlive |
Facultatif. Période KeepAlive MQTT, en secondes |
La plage valide est comprise entre 30 et 1 200 secondes. La valeur par défaut est 600 . |
networkProxy |
Facultatif. Objet qui définit une serveur proxy auquel vous connecter. | Le serveur proxy peut être HTTP ou HTTPS. Pour de plus amples informations, veuillez consulter Connexion au port 443 ou via un proxy réseau. |
mqttOperationTimeout |
Facultatif. Durée (en secondes) permettant au noyau Greengrass de terminer une opération de publication, d'abonnement ou de désabonnement dans des connexions MQTT vers AWS IoT Core. | La valeur par défaut est 5. La valeur minimale est 5. |
ggDaemonPort |
Facultatif. Le numéro de port IPC principal de Greengrass. |
Cette propriété est disponible dans la AWS IoT Greengrass version v1.11.0 ou ultérieure. Les valeurs valides sont comprises entre 1024 et 65535. La valeur par défaut est 8 000. |
systemComponentAuthTimeout |
Facultatif. Durée (en millisecondes) nécessaire pour permettre à l'IPC principal de Greengrass de terminer l'authentification. |
Cette propriété est disponible dans la AWS IoT Greengrass version v1.11.0 ou ultérieure. Les valeurs valides sont comprises entre 500 et 5 000. La valeur par défaut est 5000. |
runtime
Champ | Description | Remarques |
---|---|---|
maxWorkItemCount |
Facultatif. Nombre maximal d'éléments de travail que le démon Greengrass peut traiter simultanément. Les éléments de travail qui dépassent cette limite sont ignorés. La file d'attente des éléments de travail est partagée par les composants du système, les fonctions Lambda définies par l'utilisateur et les connecteurs. |
La valeur par défaut est 1024. La valeur maximale est limitée par le matériel de votre appareil. L'augmentation de cette valeur augmente la mémoire AWS IoT Greengrass utilisée. Vous pouvez augmenter cette valeur si vous pensez que votre noyau va recevoir un trafic de messages MQTT important. |
maxConcurrentLimit |
Facultatif. Le nombre maximum de travailleurs Lambda non épinglés simultanés que le daemon Greengrass peut avoir. Vous pouvez spécifier un autre entier pour remplacer ce paramètre. |
La valeur par défaut est 25. La valeur minimale est définie par |
lruSize |
Facultatif. Définit la valeur minimale pourmaxConcurrentLimit . |
La valeur par défaut est 25. |
mountAllBlockDevices |
Facultatif. Permet d' AWS IoT Greengrass utiliser des montages par liaison pour monter tous les périphériques en mode bloc dans un conteneur après avoir configuré OverlayFS. |
Cette propriété est disponible dans la AWS IoT Greengrass version v1.11.0 ou ultérieure. Les valeurs valides sont Définissez cette valeur sur |
postStartHealthCheckTimeout |
Facultatif. Durée (en millisecondes) pendant laquelle le démon Greengrass attend la fin de la vérification de l'état après son démarrage. | Le délai d'attente par défaut est de 30 secondes (30000 ms). |
cgroup |
||
useSystemd |
Indique si votre appareil utilise systemd |
Les valeurs valides sont yes ou no . Exécutez le script check_ggc_dependencies dans Module 1 pour voir si votre appareil utilise systemd . |
crypto
Le paramètre crypto
contient les propriétés qui prennent en charge le stockage de la clé privée sur un module de sécurité matérielle (HSM) via PKCS #11 et le stockage secret local. Pour plus d’informations, consultez AWS IoT Greengrass principes de sécurité fondamentaux, Intégration de sécurité matérielle et Déployez les secrets jusqu'au AWS IoT Greengrass cœur. Les configurations pour le stockage de clés privées sur HSMs ou dans le système de fichiers sont prises en charge.
Champ | Description | Remarques |
---|---|---|
caPath |
Le chemin absolu vers l'autorité de certification AWS IoT racine. |
Il doit s'agir de l'URI d'un fichier du formulaire : NoteAssurez-vous que vos points de terminaison correspondent à votre type de certificat. |
PKCS11 |
||
OpenSSLEngine |
Facultatif. Chemin d'accès absolu au fichier de moteur OpenSSL |
Doit être un chemin d'accès à un fichier sur le système de fichiers. Cette propriété est requise si vous utilisez l'agent de mise à jour Greengrass OTA avec sécurité matérielle. Pour de plus amples informations, veuillez consulter Configurer le support pour les over-the-air mises à jour. |
P11Provider |
Chemin absolu vers la bibliothèque libdl-loadable d'implémentation PKCS # 11. |
Doit être un chemin d'accès à un fichier sur le système de fichiers. |
slotLabel |
Étiquette d'emplacement qui est utilisée pour identifier le module matériel. |
Doit se conformer aux spécifications d'étiquette PKCS # 11. |
slotUserPin |
Le code PIN utilisateur utilisé pour authentifier le noyau de Greengrass auprès du module. |
Vous devez disposer d'autorisations suffisantes pour exécuter C_Sign avec les clés privées configurées. |
principals |
||
IoTCertificate |
Certificat et clé privée que le noyau utilise pour effectuer des demandes à AWS IoT. | |
IoTCertificate .privateKeyPath
|
Chemin d'accès à la clé privée principale. |
Pour le stockage de système de fichiers, il doit s'agir de l'URI d'un fichier du formulaire : Pour le stockage HSM, il doit s'agir du chemin d'accès RFC WF-7512 PKCS # 11 |
IoTCertificate .certificatePath |
Chemin d'accès absolu au certificat de votre noyau. |
Il doit s'agir de l'URI d'un fichier du formulaire : |
MQTTServerCertificate |
Facultatif. Clé privée que le noyau utilise en combinaison avec le certificat pour agir en tant que passerelle ou serveur MQTT. |
|
MQTTServerCertificate .privateKeyPath |
Chemin d'accès à la clé privée du serveur MQTT local. |
Utilisez cette valeur pour spécifier votre propre clé privée pour le serveur MQTT local. Pour le stockage de système de fichiers, il doit s'agir de l'URI d'un fichier du formulaire : Pour le stockage HSM, il doit s'agir du chemin d'accès RFC WF-7512 PKCS # 11 Si cette propriété est omise, fait AWS IoT Greengrass pivoter la clé en fonction de vos paramètres de rotation. Si cette propriété est spécifiée, le client est responsable de la rotation de la clé. |
SecretsManager |
Clé privée qui sécurise la clé de données utilisée pour le chiffrement. Pour de plus amples informations, veuillez consulter Déployez les secrets jusqu'au AWS IoT Greengrass cœur. | |
SecretsManager .privateKeyPath |
Chemin d'accès à la clé privée du Secrets Manager local. |
Seule une clé RSA est prise en charge. Pour le stockage de système de fichiers, il doit s'agir de l'URI d'un fichier du formulaire : Pour le stockage HSM, il doit s'agir du chemin d'accès RFC WF-7512 PKCS # 11 |
Les propriétés de configuration suivantes sont également prises en charge :
Champ | Description | Remarques |
---|---|---|
mqttMaxConnectionRetryInterval
|
Facultatif. L'intervalle maximal (en secondes) entre les tentatives de connexion MQTT si la connexion est abandonnée. |
Spécifiez cette valeur en tant qu'entier non signé. L’argument par défaut est |
managedRespawn
|
Facultatif. Indique que l'agent OTA doit exécuter un code personnalisé avant une mise à jour. |
Les valeurs valides sont |
writeDirectory
|
Facultatif. Le répertoire d'écriture où sont AWS IoT Greengrass créées toutes les ressources de lecture/écriture. |
Pour de plus amples informations, veuillez consulter Configurer un répertoire d'écriture pour AWS IoT Greengrass. |
pidFileDirectory |
Facultatif AWS IoT Greengrass enregistre son identifiant de processus (PID) dans ce répertoire. |
La valeur par défaut est |
Les points de terminaison du service doivent correspondre au type de certificat de l'autorité de certification racine
Vos points de AWS IoT Greengrass terminaison AWS IoT Core et vos points de terminaison doivent correspondre au type de certificat du certificat de l'autorité de certification racine sur votre appareil. Si les points de terminaison et le type de certificat ne correspondent pas, les tentatives d'authentification échouent entre l'appareil et AWS IoT Core ou AWS IoT Greengrass. Pour plus d'informations, consultez la section Authentification du serveur dans le guide du AWS IoT développeur.
Si votre appareil utilise un certificat CA racine Amazon Trust Services (ATS), qui est la méthode préférée, il doit également utiliser les points de terminaison ATS pour la gestion des appareils et les opérations du plan de données de découverte. Les points de terminaison ATS incluent le ats
segment, comme indiqué dans la syntaxe suivante pour le AWS IoT Core point de terminaison.
prefix
-ats.iot.region
.amazonaws.com
Note
Pour des raisons de rétrocompatibilité, prend AWS IoT Greengrass actuellement en charge les anciens certificats et points de terminaison de l'autorité de certification VeriSign racine dans certains Région AWS s. Si vous utilisez un ancien certificat d'autorité de certification VeriSign racine, nous vous recommandons de créer un point de terminaison ATS et d'utiliser un certificat d'autorité de certification racine ATS à la place. Sinon, assurez-vous d'utiliser les points de terminaison hérités correspondants. Pour de plus amples informations, veuillez consulter Points de terminaison hérités pris en charge dans le Référence générale d'Amazon Web Services.
Points de terminaison dans config.json
Sur un appareil noyau Greengrass, les points de terminaison sont spécifiés dans l'objet coreThing
du fichier config.json. La iotHost
propriété représente le AWS IoT Core point de terminaison. La ggHost
propriété représente le AWS IoT Greengrass point de terminaison. Dans l'exemple d'extrait suivant, ces propriétés spécifient des points de terminaison ATS.
{
"coreThing" : {
...
"iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com",
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
...
},
- AWS IoT Core point de terminaison
-
Vous pouvez obtenir votre AWS IoT Core point de terminaison en exécutant la commande aws iot describe-endpointCLI avec le
--endpoint-type
paramètre approprié.-
Pour renvoyer un point de terminaison signé ATS, exécutez :
aws iot describe-endpoint --endpoint-type iot:Data-ATS
-
Pour renvoyer un ancien point de terminaison VeriSign signé, exécutez :
aws iot describe-endpoint --endpoint-type iot:Data
-
- AWS IoT Greengrass point de terminaison
-
Votre AWS IoT Greengrass point de terminaison est votre
iotHost
point de terminaison dont le préfixe d'hôte est remplacé par greengrass. Par exemple, le point de terminaison signé ATS estgreengrass-ats.iot.
. Cela utilise la même région que votre AWS IoT Core point de terminaison.region
.amazonaws.com
Connexion au port 443 ou via un proxy réseau
Cette fonctionnalité est disponible pour AWS IoT Greengrass Core v1.7 et versions ultérieures.
Les cœurs de Greengrass communiquent avec eux à AWS IoT Core l'aide du protocole de messagerie MQTT avec authentification client TLS. Par convention, MQTT via TLS utilise le port 8883. Toutefois, par mesure de sécurité, les environnements restrictifs peuvent limiter le trafic entrant et sortant à une petite plage de ports TCP. Par exemple, un pare-feu d'entreprise peut ouvrir le port 443 pour le trafic HTTPS, mais fermer les autres ports qui sont utilisés pour des protocoles moins courants, tels que le port 8883 pour le trafic MQTT. D'autres environnements restrictifs peuvent nécessiter que l'ensemble du trafic passe par un proxy HTTP avant de vous connecter à Internet.
Pour activer la communication dans ces scénarios, AWS IoT Greengrass autorise les configurations suivantes :
-
MQTT avec l'authentification client TLS via le port 443. Si votre réseau autorise les connexions au port 443, vous pouvez configurer le noyau pour utiliser ce port pour le trafic MQTT au lieu du port 8883 par défaut. Il peut s'agir d'une connexion directe au port 443 ou d'une connexion via un serveur réseau proxy.
AWS IoT Greengrass utilise l'extension TLS ALPN (Application Layer Protocol Network
) pour activer cette connexion. Comme avec la configuration par défaut, MQTT via TLS sur le port 443 utilise l'authentification client basée sur le certificat. Lorsqu'il est configuré pour utiliser une connexion directe au port 443, le noyau prend en charge les mises à jour AWS IoT Greengrass logicielles over-the-air (OTA). Ce support nécessite AWS IoT Greengrass Core v1.9.3 ou version ultérieure.
-
Communication HTTPS via le port 443. AWS IoT Greengrass envoie le trafic HTTPS sur le port 8443 par défaut, mais vous pouvez le configurer pour utiliser le port 443.
-
Connexion via un proxy réseau. Vous pouvez configurer un serveur réseau proxy comme intermédiaire pour la connexion au noyau Greengrass. Seule l'authentification de base et les proxys HTTP et HTTPS sont pris en charge.
La configuration du proxy est transmise aux fonctions Lambda définies par l'utilisateur via
http_proxy
les variables d'https_proxy
environnement,no_proxy
et. Les fonctions Lambda définies par l'utilisateur doivent utiliser ces paramètres transmis pour se connecter via le proxy. Les bibliothèques courantes utilisées par les fonctions Lambda pour établir des connexions (telles que les packages boto3 ou cURL etrequests
python) utilisent généralement ces variables d'environnement par défaut. Si une fonction Lambda spécifie également ces mêmes variables d'environnement, AWS IoT Greengrass elle ne les remplace pas.Important
Les noyaux Greengrass qui sont configurés pour utiliser un proxy réseau ne prennent pas en charge les mises à jour OTA.
Pour configurer MQTT via le port 443
Cette fonctionnalité nécessite AWS IoT Greengrass Core v1.7 ou version ultérieure.
Cette procédure permet au noyau Greengrass d'utiliser le port 443 pour la messagerie MQTT avec AWS IoT Core.
-
Exécutez la commande suivante pour arrêter le daemon Greengrass :
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Ouvrez
pour le modifier en tant qu'utilisateur su.greengrass-root
/config/config.json -
Dans l'objet
coreThing
, ajoutez la propriétéiotMqttPort
et définissez la valeur sur443
, comme illustré dans l'exemple suivant.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotMqttPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... } -
Lancez le démon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Pour configurer HTTPS via le port 443
Cette fonctionnalité nécessite AWS IoT Greengrass Core v1.8 ou version ultérieure.
Cette procédure configure le noyau afin qu'il utilise le port 443 pour la communication HTTPS.
-
Exécutez la commande suivante pour arrêter le daemon Greengrass :
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Ouvrez
pour le modifier en tant qu'utilisateur su.greengrass-root
/config/config.json -
Dans l'objet
coreThing
, ajoutez les propriétésiotHttpPort
etggHttpPort
, comme indiqué dans l'exemple suivant.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotHttpPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com","ggHttpPort" : 443,
"keepAlive" : 600 }, ... } -
Lancez le démon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Pour configurer un proxy réseau
Cette fonctionnalité nécessite AWS IoT Greengrass Core v1.7 ou version ultérieure.
Cette procédure permet AWS IoT Greengrass de se connecter à Internet via un proxy réseau HTTP ou HTTPS.
-
Exécutez la commande suivante pour arrêter le daemon Greengrass :
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Ouvrez
pour le modifier en tant qu'utilisateur su.greengrass-root
/config/config.json -
Dans l'
coreThing
objet, ajoutez l'objet NetworkProxy, comme indiqué dans l'exemple suivant.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600,
"networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } }
}, ... } -
Lancez le démon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Objet networkProxy
Utilisez l'objet networkProxy
pour spécifier les informations sur le proxy réseau. Cet objet a les propriétés suivantes.
Champ | Description |
---|---|
noProxyAddresses |
Facultatif. Liste séparée par des virgules d'adresses IP ou de noms d'hôte qui sont dispensés par le proxy. |
proxy |
Proxy auquel se connecter. Un proxy a les propriétés suivantes.
|
Autoriser les points de terminaison
La communication entre les appareils Greengrass AWS IoT Core et/ou AWS IoT Greengrass doit être authentifiée. Cette authentification est basée sur les certificats d'appareils X.509 enregistrés et sur des clés de chiffrement. Pour autoriser les demandes authentifiées à passer par des proxys sans chiffrement supplémentaire, autorisez les points de terminaison suivants.
Point de terminaison | Port | Description |
---|---|---|
greengrass. |
443 |
Utilisé pour les opérations de plan de contrôle pour la gestion des groupes. |
or
|
MQTT : 8883 ou 443 HTTPS : 8443 ou 443 |
Utilisé pour les opérations de plan de contrôle pour la gestion des appareils, par exemple la synchronisation shadow. Autorisez l'utilisation d'un ou des deux points de terminaison, selon que vos appareils principaux et clients utilisent des certificats d'autorité de certification racine (préférés) d'Amazon Trust Services, des certificats d'autorité de certification racine existants ou les deux. Pour de plus amples informations, veuillez consulter Les points de terminaison du service doivent correspondre au type de certificat de l'autorité de certification racine. |
or
|
8443 ou 443 |
Utilisé pour les opérations de détection d'appareils. Autorisez l'utilisation d'un ou des deux points de terminaison, selon que vos appareils principaux et clients utilisent des certificats d'autorité de certification racine (préférés) d'Amazon Trust Services, des certificats d'autorité de certification racine existants ou les deux. Pour de plus amples informations, veuillez consulter Les points de terminaison du service doivent correspondre au type de certificat de l'autorité de certification racine. NoteLes clients qui se connectent sur le port 443 doivent implémenter l'extension TLS ALPN (Application Layer Protocol Negotiation) |
*.s3.amazonaws.com |
443 |
Utilisé pour les opérations de déploiement et les over-the-air mises à jour. Ce format comprend le caractère |
logs. |
443 |
Requis si le groupe Greengrass est configuré pour écrire des journaux dans CloudWatch. |
Configurer un répertoire d'écriture pour AWS IoT Greengrass
Cette fonctionnalité est disponible pour AWS IoT Greengrass Core v1.6 et versions ultérieures.
Par défaut, le logiciel AWS IoT Greengrass Core est déployé dans un répertoire racine unique où sont effectuées toutes AWS IoT Greengrass les opérations de lecture et d'écriture. Cependant, vous pouvez configurer AWS IoT Greengrass pour utiliser un répertoire distinct pour toutes les opérations d'écriture, y compris la création de répertoires et de fichiers. Dans ce cas, AWS IoT Greengrass utilise deux répertoires de premier niveau :
-
Le répertoire
greengrass-root
, que vous pouvez conserver accessible en lecture et en écriture ou, si vous le souhaitez, en lecture seule uniquement. Il contient le logiciel de AWS IoT Greengrass base et d'autres composants critiques qui doivent rester immuables pendant l'exécution, tels que les certificats etconfig.json
. -
Le répertoire en écriture spécifié. Il contient du contenu inscriptible, tel que des journaux, des informations d'état et des fonctions Lambda définies par l'utilisateur déployées.
Cette configuration entraîne la structure de répertoires suivante.
- Répertoire racine Greengrass
-
greengrass-root
/ |-- certs/ | |-- root.ca.pem | |--hash
.cert.pem | |--hash
.private.key | |--hash
.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |--package-version
/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version
.html | |-- runtime/ | |-- java8
/ | |-- nodejs8.10
/ | |-- python3.8
/ | |-- core/ - Répertoire en écriture
-
write-directory
/ |-- packages/ | |--package-version
/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/
Pour configurer un répertoire en écriture
-
Exécutez la commande suivante pour arrêter le AWS IoT Greengrass démon :
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Ouvrez
pour le modifier en tant qu'utilisateur su.greengrass-root
/config/config.json -
Ajoutez
writeDirectory
en tant que paramètre et spécifiez le chemin d'accès au répertoire cible, comme illustré dans l'exemple suivant.{ "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/
write-directory
" }Note
Vous pouvez mettre à jour le paramètre
writeDirectory
aussi souvent que vous le souhaitez. Une fois le paramètre mis à jour, AWS IoT Greengrass utilise le répertoire d'écriture nouvellement spécifié au prochain démarrage, mais ne migre pas le contenu du répertoire d'écriture précédent. -
Maintenant que votre répertoire en écriture est configuré, vous pouvez, si vous le souhaitez, rendre le répertoire
greengrass-root
accessible en lecture seule. Pour en savoir plus, consultez Pour rendre le répertoire racine Greengrass accessible en lecture seule.Dans le cas contraire, lancez le AWS IoT Greengrass daemon :
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Pour rendre le répertoire racine Greengrass accessible en lecture seule
Cette étape est nécessaire uniquement si vous souhaitez que le répertoire racine Greengrass soit accessible en lecture seule. Le répertoire en écriture doit être configuré avant de commencer cette procédure.
-
Accorder des autorisations d'accès aux répertoires requis :
-
Accordez les autorisations en lecture et en écriture au propriétaire de
config.json
.sudo chmod 0600 /
greengrass-root
/config/config.json -
Définissez ggc_user en tant que propriétaire des répertoires certs et Lambda système.
sudo chown -R ggc_user:ggc_group /
greengrass-root
/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root
/ggc/packages/1.11.6/lambda/Note
Les comptes ggc_user et ggc_group sont utilisés par défaut pour exécuter les fonctions Lambda du système. Si vous avez configuré l'identité d'accès par défaut au niveau du groupe de façon à utiliser différents comptes, vous devez octroyer des autorisations à cet utilisateur (UID) et à ce groupe (GID) à la place.
-
-
Rendez le répertoire
greengrass-root
accessible en lecture seule à l'aide de votre mécanisme préféré.Note
Une des méthodes pour rendre le répertoire
greengrass-root
accessible en lecture seule consiste à monter le répertoire en lecture seule. Toutefois, pour appliquer des mises à jour over-the-air (OTA) au logiciel AWS IoT Greengrass Core dans un répertoire monté, le répertoire doit d'abord être démonté, puis remonté après la mise à jour. Vous pouvez ajouter ces opérationsumount
etmount
aux scriptsota_pre_update
etota_post_update
. Pour plus d'informations sur les mises à jour OTA, consultez Agent de mise à jour OTA Greengrass et Commande managedRespawn avec mises à jour OTA. -
Lancez le démon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd startSi les autorisations de l'étape 1 ne sont pas correctement définies, le démon ne démarre pas.
Configuration des paramètres MQTT
Dans l' AWS IoT Greengrass environnement, les appareils clients locaux, les fonctions Lambda, les connecteurs et les composants du système peuvent communiquer entre eux et avec. AWS IoT Core Toutes les communications passent par le noyau, qui gère les abonnements autorisant la communication MQTT entre les entités.
Pour plus d'informations sur les paramètres MQTT que vous pouvez configurer AWS IoT Greengrass, consultez les sections suivantes :
Note
OPC-UA est une norme d'échange d'informations pour la communication industrielle. Pour implémenter la prise en charge de l'OPC-UA sur le cœur de Greengrass, vous pouvez utiliser le connecteur IoT. SiteWise Le connecteur envoie les données des appareils industriels depuis les serveurs OPC-UA vers les propriétés des actifs. AWS IoT SiteWise
Message de qualité de service
AWS IoT Greengrass prend en charge les niveaux de qualité de service (QoS) 0 ou 1, en fonction de votre configuration, de la cible et de la direction de la communication. Le noyau de Greengrass agit en tant que client pour la communication avec le réseau local AWS IoT Core et en tant que courtier de messages pour la communication sur le réseau local.

Pour plus d'informations sur MQTT et QoS, consultez Getting
- Communication avec le AWS Cloud
-
-
Les messages sortants utilisent QoS 1
Le noyau envoie des messages destinés aux AWS Cloud cibles à l'aide de QoS 1. AWS IoT Greengrass utilise une file de messages MQTT pour traiter ces messages. Si la livraison du message n'est pas confirmée par AWS IoT, le message est mis en attente pour être réessayé ultérieurement. Le message ne peut pas être réessayé si la file d'attente est pleine. La confirmation de remise du message peut aider à minimiser les pertes de données dues à une connectivité intermittente.
Comme les messages sortants doivent AWS IoT utiliser QoS 1, le débit maximal auquel le cœur de Greengrass peut envoyer des messages dépend de la latence entre le cœur et. AWS IoT Chaque fois que le noyau envoie un message, il attend d' AWS IoT avoir accusé réception du message avant d'envoyer le message suivant. Par exemple, si le temps d'aller-retour entre le cœur et le sien Région AWS est de 50 millisecondes, le cœur peut envoyer jusqu'à 20 messages par seconde. Tenez compte de ce comportement lorsque vous choisissez l' Région AWS endroit où votre cœur se connecte. Pour ingérer de gros volumes de données IoT dans le AWS Cloud, vous pouvez utiliser le gestionnaire de flux.
Pour plus d'informations sur la file d'attente de messages MQTT, notamment sur la façon de configurer un cache de stockage local capable de conserver les messages destinés aux AWS Cloud cibles, consultezFile d'attente de messages MQTT pour les cibles cloud.
-
Les messages entrants utilisent le niveau de qualité QoS 0 (par défaut) ou QoS 1
Par défaut, le noyau s'abonne avec QoS 0 aux messages AWS Cloud provenant des sources. Si vous activez les sessions persistantes, le noyau s'abonne avec le niveau QoS 1. Cela peut permettre de réduire les pertes de données dues à l'intermittence de la connexion. Pour gérer le niveau de qualité QoS pour ces abonnements, vous configurez les paramètres de persistance sur le composant système spouleur local.
Pour plus d'informations, notamment sur la manière de permettre au noyau d'établir une session persistante avec AWS Cloud des cibles, consultezSessions persistantes MQTT avec AWS IoT Core.
-
- Communication avec les cibles locales
-
Toutes les communications locales utilisent le niveau QoS 0. Le noyau tente d'envoyer un message à une cible locale, qui peut être une fonction Greengrass Lambda, un connecteur ou un appareil client. Le noyau ne stocke pas de messages et ne confirme pas la livraison. Les messages peuvent être supprimés n'importe où entre les composants.
Note
Bien que la communication directe entre les fonctions Lambda n'utilise pas la messagerie MQTT, le comportement est le même.
File d'attente de messages MQTT pour les cibles cloud
Les messages MQTT destinés aux AWS Cloud cibles sont mis en file d'attente en attente de traitement. Les messages en attente sont traités selon l'ordre FIFO (premier entré, premier sorti). Une fois qu'un message est traité et publié sur AWS IoT Core, il est retiré de la file d'attente.
Par défaut, le cœur de Greengrass stocke en mémoire les messages non traités destinés aux cibles. AWS Cloud Si vous le souhaitez, vous pouvez configurer le noyau pour stocker les messages non traités dans une mémoire cache locale. Contrairement au stockage en mémoire, le cache de stockage local a la capacité de persister pendant les redémarrages principaux (par exemple, après un déploiement de groupe ou le redémarrage d'un appareil), ce qui AWS IoT Greengrass permet de continuer à traiter les messages. Vous pouvez également configurer la taille du stockage.
Avertissement
Le noyau de Greengrass peut mettre en file d'attente des messages MQTT dupliqués lorsqu'il perd la connexion, car il tente à nouveau une opération de publication avant que le client MQTT ne détecte qu'il est hors ligne. Pour éviter les messages MQTT dupliqués pour les cibles du cloud, configurez la keepAlive
valeur du noyau à moins de la moitié de sa mqttOperationTimeout
valeur. Pour de plus amples informations, veuillez consulter AWS IoT Greengrass fichier de configuration de base.
AWS IoT Greengrass utilise le composant du système de spouleur (fonction GGCloudSpooler
Lambda) pour gérer la file d'attente de messages. Vous pouvez utiliser les variables d'environnement GGCloudSpooler
suivantes pour configurer les paramètres de stockage.
-
GG_CONFIG_STORAGE_TYPE. Emplacement de la file d'attente de messages. Les valeurs suivantes sont valides :
-
FileSystem
. Stockez les messages non traités dans le cache de stockage local sur le disque du périphérique principal physique. Lorsque le noyau redémarre, les messages mis en file d'attente sont conservés en vue de leur traitement. Les messages sont supprimés une fois qu'ils sont traités. -
Memory
(default). Les messages non traités sont stockés en mémoire. Lorsque le noyau redémarre, les messages mis en file d'attente sont perdus.Cette option est optimisée pour les périphériques avec des capacités matérielles restreintes. Lorsque vous utilisez cette configuration, nous vous recommandons de déployer des groupes ou de redémarrer l'appareil lorsque l'interruption de service est la moins importante.
-
-
GG_CONFIG_MAX_SIZE_BYTES. Taille du stockage, en octets. Cette valeur peut être un entier non négatif supérieur ou égal à 262 144 (256 Ko) ; une taille inférieure empêche le logiciel AWS IoT Greengrass Core de démarrer. La taille par défaut est de 2.5 Mo. Lorsque la taille limite est atteinte, les messages les plus anciens de la file d'attente sont remplacés par de nouveaux messages.
Note
Cette fonctionnalité est disponible pour AWS IoT Greengrass Core v1.6 et versions ultérieures. Les versions antérieures utilisent le stockage en mémoire avec une taille de file d'attente de 2,5 Mo. Vous ne pouvez pas configurer les paramètres de stockage pour les versions antérieures.
Pour mettre en cache des messages dans le stockage local
Vous pouvez configurer la mise AWS IoT Greengrass en cache des messages dans le système de fichiers afin qu'ils persistent pendant les redémarrages principaux. Pour ce faire, vous déployez une version de définition de fonction dans laquelle la fonction GGCloudSpooler
définit le type de stockage sur FileSystem
. Vous devez utiliser l' AWS IoT Greengrass API pour configurer le cache de stockage local. Vous ne pouvez pas réaliser cette opération dans la console.
La procédure suivante utilise la commande create-function-definition-version
CLI pour configurer le spouleur afin d'enregistrer les messages en file d'attente dans le système de fichiers. Elle configure également une file d'attente d'une taille de 2,6 Mo.
-
Obtenez le IDs groupe Greengrass cible et la version du groupe. Cette procédure suppose qu'il s'agit de la dernière version du groupe et du groupe. La requête suivante renvoie le dernier groupe créé.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Vous pouvez également procéder à une interrogation par nom. Les noms de groupe ne devant pas nécessairement être uniques, plusieurs groupes peuvent être renvoyés.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Note
Vous pouvez également trouver ces valeurs dans la AWS IoT console. L'ID du groupe s'affiche sur la page Paramètres du groupe. IDs Les versions du groupe sont affichées dans l'onglet Déploiements du groupe.
-
Copiez les valeurs
LatestVersion
etId
du groupe cible dans la sortie. -
Obtenez la version de groupe la plus récente.
-
Remplacez
group-id
par l’Id
que vous avez copié. -
Remplacez
latest-group-version-id
par l’LatestVersion
que vous avez copié.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
À partir de l'
Definition
objet de la sortie, copiez leCoreDefinitionVersionArn
et ARNs de tous les autres composants du groupe, à l'exception deFunctionDefinitionVersionArn
. Vous utilisez ces valeurs lorsque vous créez une nouvelle version de groupe. -
Depuis
FunctionDefinitionVersionArn
dans la sortie, copiez l'ID de la définition de fonction. L'ID est le GUID qui suit le segmentfunctions
dans l'ARN, comme illustré dans l'exemple suivant.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
Note
Vous pouvez également créer une définition de fonction en exécutant la
create-function-definition
commande, puis en copiant l'ID depuis la sortie. -
Ajoutez une version de définition de fonction à la définition de fonction.
-
function-definition-id
Remplacez-le par celuiId
que vous avez copié pour la définition de la fonction. -
arbitrary-function-id
Remplacez-le par un nom pour la fonction, tel quespooler-function
. -
Ajoutez au tableau toutes les fonctions Lambda que vous souhaitez inclure dans cette version.
functions
Vous pouvez utiliser laget-function-definition-version
commande pour obtenir les fonctions Greengrass Lambda à partir d'une version de définition de fonction existante.
Avertissement
Assurez-vous de spécifier une valeur pour
GG_CONFIG_MAX_SIZE_BYTES
qui soit supérieure ou égale à 262 144. Une taille plus petite empêche le logiciel AWS IoT Greengrass Core de démarrer.aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'Note
Si vous avez précédemment défini la variable d'
GG_CONFIG_SUBSCRIPTION_QUALITY
environnement pour qu'elle prenne en charge les sessions persistantes AWS IoT Core, incluez-la dans cette instance de fonction. -
-
Copiez l'
Arn
de la version de définition de fonction à partir de la sortie. -
Créez une version de groupe contenant la fonction Lambda du système.
-
Remplacez
group-id
par leId
pour le groupe. -
core-definition-version-arn
Remplacez-le par celuiCoreDefinitionVersionArn
que vous avez copié à partir de la dernière version du groupe. -
function-definition-version-arn
Remplacez-le par celuiArn
que vous avez copié pour la nouvelle version de définition de fonction. -
Remplacez le ARNs pour les autres composants du groupe (par exemple,
SubscriptionDefinitionVersionArn
ouDeviceDefinitionVersionArn
) que vous avez copiés à partir de la dernière version du groupe. -
Supprimez tous les paramètres inutilisés. Par exemple, supprimez
--resource-definition-version-arn
si votre version de groupe ne contient aucune ressource.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copiez la
Version
à partir de la sortie. Il s'agit de l'ID de la nouvelle version de groupe. -
Déployez le groupe avec la nouvelle version de groupe.
-
group-id
Remplacez-le par celuiId
que vous avez copié pour le groupe. -
group-version-id
Remplacez-le par celuiVersion
que vous avez copié pour la nouvelle version du groupe.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Pour mettre à jour les paramètres de stockage, vous utilisez l' AWS IoT Greengrass API pour créer une nouvelle version de définition de fonction contenant la GGCloudSpooler
fonction avec la configuration mise à jour. Ensuite, ajoutez la version de définition de fonction à une nouvelle version de groupe (avec vos autres composants de groupe) et déployez la version de groupe. Si vous souhaitez restaurer la configuration par défaut, vous pouvez déployer une version de définition de fonction qui n'inclut pas la fonction GGCloudSpooler
.
Cette fonction Lambda du système n'est pas visible dans la console. Toutefois, lorsque la fonction est ajoutée à la version de groupe la plus récente, elle est incluse dans les déploiements que vous effectuez à partir de la console (sauf si vous utilisez l'API pour la remplacer ou la supprimer).
Sessions persistantes MQTT avec AWS IoT Core
Cette fonctionnalité est disponible pour AWS IoT Greengrass Core v1.10 et versions ultérieures.
Un noyau Greengrass peut établir une session permanente avec le courtier de AWS IoT messages. Une session persistante est une connexion continue qui permet au noyau de recevoir les messages envoyés pendant qu'il est hors connexion. Le noyau est le client dans la connexion.
Dans une session permanente, le courtier de AWS IoT messages enregistre tous les abonnements effectués par le noyau pendant la connexion. Si le cœur se déconnecte, le courtier de AWS IoT messages stocke les messages non reconnus et les nouveaux messages publiés en tant que QoS 1 et destinés à des cibles locales, telles que les fonctions Lambda et les appareils clients. Lorsque le cœur se reconnecte, la session persistante reprend et le courtier de AWS IoT messages envoie des messages stockés au cœur à un débit maximal de 10 messages par seconde. Les sessions persistantes ont une période d'expiration par défaut de 1 heure, qui commence lorsque le courtier de messages détecte la déconnexion du noyau. Pour plus d'informations, consultez la section Sessions persistantes MQTT dans le manuel du AWS IoT développeur.
AWS IoT Greengrass utilise le composant du système de spouleur AWS IoT (la fonction GGCloudSpooler
Lambda) pour créer des abonnements dont la source est la source. Vous pouvez utiliser la variable d'environnement GGCloudSpooler
suivante pour configurer des sessions persistantes.
-
GG_CONFIG_SUBSCRIPTION_QUALITY. La qualité des abonnements dont AWS IoT la source est. Les valeurs suivantes sont valides :
-
AtMostOnce
(default). Désactive les sessions persistantes. Les abonnements utilisent le niveau QoS 0. -
AtLeastOncePersistent
. Active les sessions persistantes. Définit l'indicateurcleanSession
sur0
dans les messagesCONNECT
et s'abonne au niveau QoS 1.Les messages publiés avec le niveau QoS 1 et qui sont reçus par le noyau atteignent obligatoirement la file d'attente de travail en mémoire du démon Greengrass. Le noyau accuse réception du message après son ajout à la file d'attente. Les communications ultérieures entre la file d'attente et la cible locale (par exemple, la fonction, le connecteur ou le périphérique Greengrass Lambda) sont envoyées sous la forme de QoS 0. AWS IoT Greengrass ne garantit pas la livraison aux cibles locales.
Note
Vous pouvez utiliser la propriété de configuration maxWorkItemCount pour contrôler la taille de la file d'attente des éléments de travail. Par exemple, vous pouvez augmenter la taille de la file d'attente si votre charge de travail nécessite un trafic MQTT élevé.
Lorsque les sessions persistantes sont activées, le noyau ouvre au moins une connexion supplémentaire avec AWS IoT laquelle échanger des messages MQTT. Pour de plus amples informations, veuillez consulter Client IDs pour les connexions MQTT avec AWS IoT.
-
Pour configurer des sessions permanentes MQTT
Vous pouvez configurer AWS IoT Greengrass pour utiliser des sessions persistantes avec AWS IoT Core. Pour ce faire, vous déployez une version de définition de fonction dans laquelle la fonction GGCloudSpooler
définit la qualité d'abonnement sur AtLeastOncePersistent
. Ce paramètre s'applique à tous vos abonnements ayant AWS IoT Core
(cloud
) comme source. Vous devez utiliser l' AWS IoT Greengrass API pour configurer des sessions persistantes. Vous ne pouvez pas réaliser cette opération dans la console.
La procédure suivante utilise la commande create-function-definition-version
CLI pour configurer le spouleur afin qu'il utilise des sessions persistantes. Dans cette procédure, on suppose que vous mettez à jour la configuration de la version de groupe la plus récente d'un groupe existant.
-
Obtenez le IDs groupe Greengrass cible et la version du groupe. Cette procédure suppose qu'il s'agit de la dernière version du groupe et du groupe. La requête suivante renvoie le dernier groupe créé.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Vous pouvez également procéder à une interrogation par nom. Les noms de groupe ne devant pas nécessairement être uniques, plusieurs groupes peuvent être renvoyés.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Note
Vous pouvez également trouver ces valeurs dans la AWS IoT console. L'ID du groupe s'affiche sur la page Paramètres du groupe. IDs Les versions du groupe sont affichées dans l'onglet Déploiements du groupe.
-
Copiez les valeurs
LatestVersion
etId
du groupe cible dans la sortie. -
Obtenez la version de groupe la plus récente.
-
Remplacez
group-id
par l’Id
que vous avez copié. -
Remplacez
latest-group-version-id
par l’LatestVersion
que vous avez copié.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
À partir de l'
Definition
objet de la sortie, copiez leCoreDefinitionVersionArn
et ARNs de tous les autres composants du groupe, à l'exception deFunctionDefinitionVersionArn
. Vous utilisez ces valeurs lorsque vous créez une nouvelle version de groupe. -
Depuis
FunctionDefinitionVersionArn
dans la sortie, copiez l'ID de la définition de fonction. L'ID est le GUID qui suit le segmentfunctions
dans l'ARN, comme illustré dans l'exemple suivant.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
Note
Vous pouvez également créer une définition de fonction en exécutant la
create-function-definition
commande, puis en copiant l'ID depuis la sortie. -
Ajoutez une version de définition de fonction à la définition de fonction.
-
function-definition-id
Remplacez-le par celuiId
que vous avez copié pour la définition de la fonction. -
arbitrary-function-id
Remplacez-le par un nom pour la fonction, tel quespooler-function
. -
Ajoutez au tableau toutes les fonctions Lambda que vous souhaitez inclure dans cette version.
functions
Vous pouvez utiliser laget-function-definition-version
commande pour obtenir les fonctions Greengrass Lambda à partir d'une version de définition de fonction existante.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'Note
Si vous avez précédemment défini les variables d'environnement
GG_CONFIG_STORAGE_TYPE
ouGG_CONFIG_MAX_SIZE_BYTES
afin de définir les paramètres de stockage, incluez-les dans cette instance de fonction. -
-
Copiez l'
Arn
de la version de définition de fonction à partir de la sortie. -
Créez une version de groupe contenant la fonction Lambda du système.
-
Remplacez
group-id
par leId
pour le groupe. -
core-definition-version-arn
Remplacez-le par celuiCoreDefinitionVersionArn
que vous avez copié à partir de la dernière version du groupe. -
function-definition-version-arn
Remplacez-le par celuiArn
que vous avez copié pour la nouvelle version de définition de fonction. -
Remplacez le ARNs pour les autres composants du groupe (par exemple,
SubscriptionDefinitionVersionArn
ouDeviceDefinitionVersionArn
) que vous avez copiés à partir de la dernière version du groupe. -
Supprimez tous les paramètres inutilisés. Par exemple, supprimez
--resource-definition-version-arn
si votre version de groupe ne contient aucune ressource.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copiez la
Version
à partir de la sortie. Il s'agit de l'ID de la nouvelle version de groupe. -
Déployez le groupe avec la nouvelle version de groupe.
-
group-id
Remplacez-le par celuiId
que vous avez copié pour le groupe. -
group-version-id
Remplacez-le par celuiVersion
que vous avez copié pour la nouvelle version du groupe.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
-
(Facultatif) Augmentez la propriété maxWorkItemCount dans le fichier de configuration principal. Cela peut aider le noyau à gérer l'augmentation du trafic MQTT et la communication avec les cibles locales.
Pour mettre à jour le noyau avec ces modifications de configuration, vous utilisez l' AWS IoT Greengrass API pour créer une nouvelle version de définition de fonction contenant la GGCloudSpooler
fonction avec la configuration mise à jour. Ensuite, ajoutez la version de définition de fonction à une nouvelle version de groupe (avec vos autres composants de groupe) et déployez la version de groupe. Si vous souhaitez restaurer la configuration par défaut, vous pouvez créer une version de définition de fonction qui n'inclut pas la fonction GGCloudSpooler
.
Cette fonction Lambda du système n'est pas visible dans la console. Toutefois, lorsque la fonction est ajoutée à la version de groupe la plus récente, elle est incluse dans les déploiements que vous effectuez à partir de la console (sauf si vous utilisez l'API pour la remplacer ou la supprimer).
Client IDs pour les connexions MQTT avec AWS IoT
Cette fonctionnalité est disponible pour AWS IoT Greengrass Core v1.8 et versions ultérieures.
Le noyau de Greengrass ouvre des connexions MQTT AWS IoT Core pour des opérations telles que la synchronisation instantanée et la gestion des certificats. Pour ces connexions, le cœur génère un client prévisible IDs basé sur le nom de l'objet principal. Le client prévisible IDs peut être utilisé avec des fonctionnalités de surveillance, d'audit et de tarification, y compris les événements AWS IoT Device Defender liés au AWS IoT cycle de vie. Vous pouvez également créer une logique autour d'un client prévisible IDs (par exemple, des modèles de politique d'abonnement basés sur les attributs des certificats).
Deux composants du système Greengrass ouvrent des connexions MQTT avec. AWS IoT Core Ces composants utilisent les modèles suivants pour générer le client IDs pour les connexions.
Opération | Modèle d'ID client |
---|---|
Déploiements |
Exemple : Utilisez cet ID client pour vous connecter, vous déconnecter, vous abonner et vous désabonner des notifications d'événement de cycle de vie. |
Abonnements |
Exemple :
Le composant du système de spouleur se connecte pour échanger des messages relatifs AWS IoT Core à des abonnements avec une source ou une cible cloud. Le spouleur fait également office de proxy pour l'échange de messages entre le service parallèle local AWS IoT Core et le gestionnaire de certificats de périphérique. |
Pour calculer le nombre de connexions MQTT par groupe, utilisez la formule suivante :
number of MQTT connections per group = number of connections for
Deployment Agent + number of connections for
Subscriptions
Où,
-
nombre de connexions pour l'agent de déploiement = 1.
-
nombre de connexions pour les abonnements =
(2 subscriptions for supporting certificate generation + number of MQTT topics in AWS IoT Core + number of device shadows synced) / 50
.-
Où,
50
= le nombre maximum d'abonnements par connexion AWS IoT Core pouvant être pris en charge.
-
Note
Si vous activez les sessions persistantes pour vous abonner AWS IoT Core, le noyau ouvre au moins une connexion supplémentaire à utiliser dans le cadre d'une session persistante. Les composants système ne prennent pas en charge les sessions persistantes ; ils ne peuvent donc pas partager cette connexion.
Pour réduire le nombre de connexions MQTT et réduire les coûts, vous pouvez utiliser les fonctions Lambda locales pour agréger les données à la périphérie. Vous envoyez ensuite les données agrégées au AWS Cloud. Par conséquent, vous utilisez moins de sujets MQTT dans AWS IoT Core. Pour plus d'informations, consultez AWS IoT Greengrass
Pricing
Note
Un client dupliqué IDs utilisé lors de connexions simultanées peut provoquer une boucle de connexion/déconnexion infinie. Cela peut se produire si un autre périphérique est codé de manière irréversible pour utiliser le nom du périphérique principal comme ID client dans les connexions. Pour plus d'informations, consultez cette étape de dépannage.
Les appareils Greengrass sont également entièrement intégrés au service d'indexation de flotte d' AWS IoT Device Management. Cela vous permet d'indexer et de rechercher des appareils en fonction de leurs attributs, de leur état shadow et de leur état de connexion dans le cloud. Par exemple, les appareils Greengrass établissent au moins une connexion qui utilise le nom d'objet comme ID client, afin que vous puissiez utiliser l'indexation de connectivité des appareils pour détecter quels appareils Greengrass sont actuellement connectés à AWS IoT Core ou déconnectés de celui-ci. Pour plus d'informations, consultez la section Service d'indexation de flotte dans le Guide du AWS IoT développeur.
Configuration du port MQTT pour la messagerie locale
Cette fonctionnalité nécessite AWS IoT Greengrass Core v1.10 ou version ultérieure.
Le noyau de Greengrass agit en tant que courtier de messages local pour la messagerie MQTT entre les fonctions Lambda locales, les connecteurs et les appareils clients. Par défaut, le noyau utilise le port 8883 pour le trafic MQTT sur le réseau local. Vous pouvez modifier le port pour éviter un conflit avec d'autres logiciels s'exécutant sur le port 8883.
Pour configurer le numéro de port utilisé par le noyau pour le trafic MQTT local
-
Exécutez la commande suivante pour arrêter le daemon Greengrass :
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Ouvrez
pour le modifier en tant qu'utilisateur su.greengrass-root
/config/config.json -
Dans l'objet
coreThing
, ajoutez la propriétéggMqttPort
et définissez la valeur sur le numéro de port que vous souhaitez utiliser. Les valeurs valides vont de 1 024 à 65 535. L'exemple suivant définit le numéro de port sur9000
.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
"ggMqttPort" : 9000,
"keepAlive" : 600 }, ... } -
Lancez le démon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start -
Si la détection IP automatique est activée pour le noyau, la configuration est terminée.
Si la détection IP automatique n'est pas activée, vous devez mettre à jour les informations de connectivité du noyau. Cela permet aux appareils clients de recevoir le numéro de port correct lors des opérations de découverte afin d'acquérir des informations de connectivité de base. Vous pouvez utiliser la AWS IoT console ou l' AWS IoT Greengrass API pour mettre à jour les informations de connectivité de base. Pour cette procédure, vous mettez uniquement à jour le numéro de port. L'adresse IP locale du noyau reste la même.
- Pour mettre à jour les informations de connectivité du noyau (console)
-
-
Sur la page de configuration du groupe, choisissez le noyau Greengrass.
-
Sur la page des détails de base, choisissez l'onglet Points de terminaison du broker MQTT.
-
Choisissez Gérer les points de terminaison, puis choisissez Ajouter un point de terminaison
-
Entrez votre adresse IP locale actuelle et le nouveau numéro de port. L'exemple suivant définit le numéro de port
9000
pour l'adresse IP192.168.1.8
. -
Supprimez le point de terminaison obsolète, puis choisissez Mettre à jour
-
- Pour mettre à jour les informations de connectivité du noyau (API)
-
-
Utilisez l'action UpdateConnectivityInfo. L'exemple suivant utilise
update-connectivity-info
dans l' AWS CLI pour définir le numéro de port9000
de l'adresse IP192.168.1.8
.aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
-
Note
Vous pouvez également configurer le port utilisé par le noyau pour la messagerie MQTT. AWS IoT Core Pour de plus amples informations, veuillez consulter Connexion au port 443 ou via un proxy réseau.
Délai d'expiration pour les opérations de publication, d'abonnement et de désabonnement dans les connexions MQTT avec le AWS Cloud
Cette fonctionnalité est disponible dans la AWS IoT Greengrass version v1.10.2 ou ultérieure.
Vous pouvez configurer le temps (en secondes) alloué au noyau Greengrass pour terminer une opération de publication, d'abonnement ou de désabonnement dans des connexions MQTT vers AWS IoT Core. Vous pouvez modifier ce paramètre si les opérations dépassent le délai d'attente en raison de contraintes de bande passante ou d'une latence élevée. Pour configurer ce paramètre dans le fichier config.json, ajoutez ou modifiez la propriété mqttOperationTimeout
dans l'objet coreThing
. Par exemple :
{
"coreThing": {
"mqttOperationTimeout": 10,
"caPath": "root-ca.pem",
"certPath": "hash
.cert.pem",
"keyPath": "hash
.private.key",
...
},
...
}
Le délai d’attente par défaut est de 5 secondes. Le délai d'attente minimum est de 5 secondes.
Activation de la la détection IP automatique
Vous pouvez configurer AWS IoT Greengrass pour permettre aux appareils clients d'un groupe Greengrass de découvrir automatiquement le noyau de Greengrass. Lorsque cette option est activée, le cœur surveille les modifications apportées à ses adresses IP. Si une adresse change, le noyau publie une liste d'adresses mise à jour. Ces adresses sont mises à la disposition des appareils clients appartenant au même groupe Greengrass que le noyau.
Note
La AWS IoT politique relative aux appareils clients doit greengrass:Discover
autoriser les appareils à récupérer des informations de connectivité pour le cœur. Pour de plus amples informations sur cette instruction de stratégie, veuillez consulter Autorisation de découverte.
Pour activer cette fonctionnalité depuis la AWS IoT Greengrass console, choisissez Détection automatique lorsque vous déployez votre groupe Greengrass pour la première fois. Vous pouvez également activer ou désactiver cette fonctionnalité sur la page de configuration du groupe en choisissant l'onglet Fonctions Lambda et en sélectionnant le détecteur IP. La détection automatique des adresses IP est activée si l'option Détecter et remplacer automatiquement les points de terminaison du broker MQTT est sélectionnée.
Pour gérer la découverte automatique avec l' AWS IoT Greengrass API, vous devez configurer la fonction Lambda IPDetector
du système. La procédure suivante montre comment utiliser la commande create-function-definition-versionCLI pour configurer la découverte automatique du noyau de Greengrass.
-
Obtenez le IDs groupe Greengrass cible et la version du groupe. Cette procédure suppose qu'il s'agit de la dernière version du groupe et du groupe. La requête suivante renvoie le dernier groupe créé.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Vous pouvez également procéder à une interrogation par nom. Les noms de groupe ne devant pas nécessairement être uniques, plusieurs groupes peuvent être renvoyés.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Note
Vous pouvez également trouver ces valeurs dans la AWS IoT console. L'ID du groupe s'affiche sur la page Paramètres du groupe. IDs Les versions du groupe sont affichées dans l'onglet Déploiements du groupe.
-
Copiez les valeurs
LatestVersion
etId
du groupe cible dans la sortie. -
Obtenez la version de groupe la plus récente.
-
Remplacez
group-id
par l’Id
que vous avez copié. -
Remplacez
latest-group-version-id
par l’LatestVersion
que vous avez copié.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
À partir de l'
Definition
objet de la sortie, copiez leCoreDefinitionVersionArn
et ARNs de tous les autres composants du groupe, à l'exception deFunctionDefinitionVersionArn
. Vous utilisez ces valeurs lorsque vous créez une nouvelle version de groupe. -
Depuis
FunctionDefinitionVersionArn
dans la sortie, copiez l'ID de la définition de fonction et la version de la définition de fonction :arn:aws:greengrass:
region
:account-id
:/greengrass/groups/function-definition-id
/versions/function-definition-version-id
Note
Si vous le souhaitez, vous pouvez créer une définition de fonction en exécutant la commande
create-function-definition
, puis copier l'ID à partir de la sortie. -
Utilisez la commande
get-function-definition-version
pour obtenir l'état de la définition actuelle. Utilisez celui quefunction-definition-id
vous avez copié pour la définition de la fonction. Par exemple,4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
.aws greengrass get-function-definition-version --function-definition-id
function-definition-id
--function-definition-version-idfunction-definition-version-id
Notez les configurations de la fonction répertoriée. Vous devez inclure ces valeurs lorsque vous créez une nouvelle version de la définition de fonction. Vous évitez ainsi de perdre les paramètres de votre définition actuelle.
-
Ajoutez une version de définition de fonction à la définition de fonction.
-
function-definition-id
Remplacez-le par celuiId
que vous avez copié pour la définition de la fonction. Par exemple,4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
. -
arbitrary-function-id
Remplacez-le par un nom pour la fonction, tel queauto-detection-function
. -
Ajoutez au
functions
tableau toutes les fonctions Lambda que vous souhaitez inclure dans cette version, telles que celles répertoriées à l'étape précédente.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id
","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2 -
-
Copiez l'
Arn
de la version de définition de fonction à partir de la sortie. -
Créez une version de groupe contenant la fonction Lambda du système.
-
Remplacez
group-id
par leId
pour le groupe. -
core-definition-version-arn
Remplacez-le par celuiCoreDefinitionVersionArn
que vous avez copié à partir de la dernière version du groupe. -
function-definition-version-arn
Remplacez-le par celuiArn
que vous avez copié pour la nouvelle version de définition de fonction. -
Remplacez le ARNs pour les autres composants du groupe (par exemple,
SubscriptionDefinitionVersionArn
ouDeviceDefinitionVersionArn
) que vous avez copiés à partir de la dernière version du groupe. -
Supprimez tous les paramètres inutilisés. Par exemple, supprimez
--resource-definition-version-arn
si votre version de groupe ne contient aucune ressource.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copiez la
Version
à partir de la sortie. Il s'agit de l'ID de la nouvelle version de groupe. -
Déployez le groupe avec la nouvelle version de groupe.
-
group-id
Remplacez-le par celuiId
que vous avez copié pour le groupe. -
group-version-id
Remplacez-le par celuiVersion
que vous avez copié pour la nouvelle version du groupe.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Si vous souhaitez entrer manuellement l'adresse IP de votre noyau Greengrass, vous pouvez effectuer ce didacticiel avec une autre définition de fonction, qui n'inclut pas la fonction IPDetector
. Cela empêchera la fonction de détection de localiser et de saisir automatiquement votre adresse IP principale de Greengrass.
Cette fonction Lambda du système n'est pas visible dans la console Lambda. Lorsque la fonction est ajoutée à la version de groupe la plus récente, elle est incluse dans les déploiements que vous effectuez à partir de la console, sauf si vous utilisez l'API pour la remplacer ou la supprimer.
Configuration du système d'initialisation pour le lancement du démon Greengrass
Il est recommandé de configurer votre système d'initialisation de manière à lancer le démon Greengrass au démarrage système, en particulier lorsque vous gérez d'importantes flottes d'appareils.
Note
Si vous avez apt
déjà installé le logiciel AWS IoT Greengrass Core, vous pouvez utiliser les scripts systemd pour activer le démarrage au démarrage. Pour de plus amples informations, veuillez consulter Utiliser des scripts systemd pour gérer le cycle de vie du démon Greengrass.
Il existe différents types de système d'initialisation, par exemple initd, systemd et SystemV, qui utilisent des paramètres de configuration similaires. L'exemple suivant est un fichier de service pour systemd. Le paramètre Type
est défini sur forking
, car greengrassd (utilisé pour lancer Greengrass) duplique le processus du démon Greengrass, et le paramètre Restart
est défini sur on-failure
pour demander à systemd de relancer Greengrass si celui-ci entre dans un état d'échec.
Note
Pour voir si votre appareil utilise systemd, exécutez le script check_ggc_dependencies
comme décrit dans Module 1. Ensuite, pour utiliser systemd, assurez-vous que le paramètre useSystemd
dans config.json est défini sur yes
.
[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target