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.
IoT Analytics
Avertissement
Ce connecteur est entré dans sa phase de durée de vie prolongée etAWS IoT Greengrass ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations aux fonctionnalités existantes, des correctifs de sécurité ou des corrections de bogues. Pour plus d'informations, veuillez consulter AWS IoT Greengrass Version 1politique de maintenance.
Le connecteur IoT Analytics envoie les données des appareils locaux àAWS IoT Analytics. Vous pouvez utiliser ce connecteur comme hub central pour collecter des données à partir des capteurs du périphérique principal Greengrass et des appareils clients connectés. Le connecteur envoie les données auxAWS IoT Analytics canaux de la zone actuelleCompte AWS et de la région. Il peut envoyer des données vers un canal de destination par défaut et des canaux spécifiés dynamiquement.
Note
AWS IoT Analytics est un service entièrement géré qui vous permet de collecter, de stocker, de traiter et d'interroger des données IoT. Dans AWS IoT Analytics, les données peuvent être analysées et traitées. Par exemple, elles peuvent être utilisées pour former des modèles ML pour surveiller l'état des machines ou pour tester de nouvelles stratégies de modélisation. Pour plus d'informations, consultez Présentation d’AWS IoT Analytics dans le Guide de l'utilisateur AWS IoT Analytics.
Le connecteur accepte les données formatées et non formatées sur les rubriques d'entrée MQTT. Il prend en charge deux rubriques prédéfinies où le canal de destination est spécifié en ligne. Il peut également recevoir des messages sur des rubriques définies par le client qui sont configurées dans les abonnements. Cela peut être utilisé pour acheminer des messages provenant d'appareils clients qui publient sur des sujets fixes ou qui gèrent des données non structurées ou dépendantes d'une pile provenant de périphériques aux ressources limitées.
Ce connecteur utilise l'BatchPutMessage
API pour envoyer des données (sous forme de chaîne codée en JSON ou en base64) au canal de destination. Le connecteur peut traiter les données brutes dans un format conforme aux exigences de l'API. Le connecteur met en tampon les messages d'entrée dans des files d'attente par canal et traite les lots de façon asynchrone. Il fournit des paramètres qui vous permettent de contrôler le comportement de traitement par lots et de mise en file d'attente, et de limiter la consommation de mémoire. Par exemple, vous pouvez configurer la taille maximale de la file d'attente, l'intervalle des lots, la taille de la mémoire et le nombre de canaux actifs.
Ce connecteur possède les versions suivantes.
Version |
ARN |
---|---|
4 |
|
3 |
|
2 |
|
1 |
|
Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le Journal des modifications.
Prérequis
Ce connecteur possède les critères suivants :
Paramètres
MemorySize
-
Quantité de mémoire (en Ko) allouée à ce connecteur.
Nom d'affichage dans laAWS IoT console : Taille de la mémoire
Obligatoire :
true
Type:
string
Schéma valide :
^[0-9]+$
PublishRegion
-
Celui dansRégion AWS lequel vosAWS IoT Analytics chaînes sont créées. Utilisez la même région que le connecteur.
Note
Cela doit également correspondre à la région pour les canaux qui sont spécifiés dans le rôle de groupe.
Nom d'affichage dans laAWS IoT console : Région de publication
Obligatoire :
false
Type:
string
Schéma valide :
^$|([a-z]{2}-[a-z]+-\\d{1})
PublishInterval
-
Intervalle (en secondes) pour publier un lot de données reçues dans AWS IoT Analytics.
Nom d'affichage dans laAWS IoT console : Intervalle de publication
Obligatoire :
false
Type:
string
Valeur par défaut :
1
Schéma valide :
$|^[0-9]+$
IotAnalyticsMaxActiveChannels
-
Nombre maximal de canaux AWS IoT Analytics surveillés activement par le connecteur. Ce nombre doit être supérieur à 0 et au moins égal au nombre de canaux que le connecteur publiera à un moment donné.
Vous pouvez utiliser ce paramètre pour restreindre la consommation de mémoire en limitant le nombre total de files d'attente que le connecteur peut gérer à un moment donné. Une file d'attente est supprimée lorsque tous les messages en file d'attente sont envoyés.
Nom d'affichage dans laAWS IoT console : Nombre maximum de chaînes actives
Obligatoire :
false
Type:
string
Valeur par défaut :
50
Schéma valide :
^$|^[1-9][0-9]*$
IotAnalyticsQueueDropBehavior
-
Comportement pour supprimer des messages d'une file d'attente de canal lorsque la file d'attente est pleine.
Nom d'affichage dans laAWS IoT console : comportement de suppression de la file d'attente
Obligatoire :
false
Type:
string
Valeurs valides :
DROP_NEWEST
ouDROP_OLDEST
Valeur par défaut :
DROP_NEWEST
Schéma valide :
^DROP_NEWEST$|^DROP_OLDEST$
IotAnalyticsQueueSizePerChannel
-
Nombre maximal de messages à conserver en mémoire (par canal) avant que les messages soient soumis ou abandonnés. Ce nombre doit être supérieur à 0.
Nom d'affichage dans laAWS IoT console : Taille de file d'attente maximale par canal
Obligatoire :
false
Type:
string
Valeur par défaut :
2048
Schéma valide :
^$|^[1-9][0-9]*$
IotAnalyticsBatchSizePerChannel
-
Nombre maximal de messages à envoyer à un canal AWS IoT Analytics dans une demande par lot. Ce nombre doit être supérieur à 0.
Nom affiché dans laAWS IoT console : nombre maximum de messages à regrouper par canal
Obligatoire :
false
Type:
string
Valeur par défaut :
5
Schéma valide :
^$|^[1-9][0-9]*$
IotAnalyticsDefaultChannelName
-
Nom du canal AWS IoT Analytics que ce connecteur utilise pour les messages qui sont envoyés à une rubrique d'entrée définie par le client.
Nom d'affichage dans laAWS IoT console : nom de la chaîne par défaut
Obligatoire :
false
Type:
string
Schéma valide :
^[a-zA-Z0-9_]$
IsolationMode
-
Mode conteneurisation de ce connecteur. La valeur par défaut est
GreengrassContainer
, ce qui signifie que le connecteur s'exécute dans un environnement d'exécution isolé à l'intérieur du conteneur AWS IoT Greengrass.Note
Le paramètre de conteneurisation par défaut pour le groupe ne s'applique pas aux connecteurs.
Nom d'affichage dans laAWS IoT console : mode d'isolation du conteneur
Obligatoire :
false
Type:
string
Valeurs valides :
GreengrassContainer
ouNoContainer
Schéma valide :
^NoContainer$|^GreengrassContainer$
Exemple de création de connecteur (AWS CLI)
La commande CLI suivante crée unConnectorDefinition
avec une version initiale contenant le connecteur IoT Analytics.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyIoTAnalyticsApplication", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/IoTAnalytics/versions/3", "Parameters": { "MemorySize": "65535", "PublishRegion": "us-west-1", "PublishInterval": "2", "IotAnalyticsMaxActiveChannels": "25", "IotAnalyticsQueueDropBehavior": "DROP_OLDEST", "IotAnalyticsQueueSizePerChannel": "1028", "IotAnalyticsBatchSizePerChannel": "5", "IotAnalyticsDefaultChannelName": "my_channel" } } ] }'
Note
La fonction Lambda de ce connecteur a une longue durée de vie.
Dans laAWS IoT Greengrass console, vous pouvez ajouter un connecteur depuis la page Connecteurs du groupe. Pour plus d'informations, veuillez consulter Mise en route avec les connecteurs Greengrass (console).
Données d'entrée
Ce connecteur accepte les données sur des rubriques MQTT prédéfinies et définies par le client. Les éditeurs peuvent être des appareils clients, des fonctions Lambda ou d'autres connecteurs.
- Rubriques prédéfinies
-
Le connecteur prend en charge deux rubriques MQTT structurées qui permettent aux éditeurs de spécifier le nom du canal en ligne.
-
Un message formaté sur la rubrique
iotanalytics/channels/+/messages/put
. Les données IoT dans ces messages d'entrée doivent se présenter sous la forme d'un fichier JSON ou d'une chaîne encodée en base64. -
Un message non formaté sur la rubrique
iotanalytics/channels/+/messages/binary/put
. Les messages d'entrée reçus sur cette rubrique sont traités comme des données binaires et peuvent contenir n'importe quel type de données.Pour publier dans des rubriques prédéfinies, remplacez le caractère générique
+
par le nom du canal. Par exemple :iotanalytics/channels/my_channel/messages/put
-
- Rubriques définies par le client
-
Le connecteur prend en charge la syntaxe de rubrique
#
, ce qui lui permet d'accepter les messages d'entrée sur n'importe quelle rubrique MQTT que vous configurez dans un abonnement. Nous vous recommandons de spécifier un chemin de rubrique au lieu d'utiliser uniquement le#
caractère générique dans vos abonnements. Ces messages sont envoyés au canal par défaut que vous spécifiez pour le connecteur.Les messages d'entrée sur les rubriques définies par le client sont traités comme des données binaires. Ils peuvent utiliser n'importe quel format de message et peuvent contenir n'importe quel type de données. Vous pouvez utiliser les rubriques définies par le client pour acheminer les messages à partir des appareils qui publient dans des rubriques fixes. Vous pouvez également les utiliser pour accepter des données d'entrée provenant de périphériques clients qui ne peuvent pas les transformer en un message formaté à envoyer au connecteur.
Pour plus d'informations sur les abonnements et les rubriques MQTT, consultez Entrées et sorties.
Le rôle de groupe doit autoriser l'action iotanalytics:BatchPutMessage
sur tous les canaux de destination. Pour plus d'informations, veuillez consulter Prérequis.
- Filtre de rubriques :
iotanalytics/channels/+/messages/put
-
Utilisez cette rubrique pour envoyer des messages formatés au connecteur et spécifier dynamiquement un canal de destination. Cette rubrique vous permet également de spécifier un ID qui est renvoyé dans la réponse. Le connecteur vérifie que les ID sont uniques pour chaque message dans la demande
BatchPutMessage
de sortie qu'il envoie à AWS IoT Analytics. Un message qui a un ID dupliqué est abandonné.Les données d'entrée envoyées à cette rubrique doivent utiliser le format de message suivant.
- Propriétés des messages
-
request
-
Données à envoyer au canal spécifié.
Obligatoire :
true
Le type suivant.
object
message
-
Données de l'appareil ou du capteur au format JSON ou sous forme de chaîne encodée en base64.
Obligatoire :
true
Type:
string
id
-
ID arbitraire de la demande. Cette propriété est utilisée pour mapper une demande d'entrée à une réponse de sortie. Lorsque spécifiée, la propriété
id
dans l'objet de réponse est définie sur cette valeur. Si vous omettez cette propriété, le connecteur génère un ID.Obligatoire :
false
Type:
string
Schéma valide :
.*
- Exemple d'entrée
-
{ "request": { "message" : "{\"temp\":23.33}" }, "id" : "req123" }
- Filtre de rubriques :
iotanalytics/channels/+/messages/binary/put
-
Utilisez cette rubrique pour envoyer des messages non formatés au connecteur et spécifier dynamiquement un canal de destination.
Les données du connecteur n'analysent pas les messages d'entrée reçus dans cette rubrique. Elles sont traitées comme des données binaires. Avant d'envoyer les messages à AWS IoT Analytics, le connecteur les code et les formate pour respecter les exigences de l'API
BatchPutMessage
:Le connecteur en base64 code les données brutes et inclut la charge utile codée dans une demande
BatchPutMessage
sortante.Le connecteur génère et attribue un ID à chaque message d'entrée.
Note
La réponse du connecteur n'inclut pas de corrélation d'ID pour ces messages d'entrée.
- Propriétés des messages
-
Aucun.
- Filtre de rubriques :
#
-
Utilisez cette rubrique pour envoyer n'importe quel format de message au canal par défaut. Cela est particulièrement utile lorsque vos appareils clients publient sur des sujets fixes ou lorsque vous souhaitez envoyer des données vers le canal par défaut depuis des appareils clients qui ne peuvent pas traiter les données dans le format de message pris en charge par le connecteur.
Vous définissez la syntaxe du sujet dans l'abonnement que vous créez pour connecter ce connecteur à la source de données. Nous vous recommandons de spécifier un chemin de rubrique au lieu d'utiliser uniquement le
#
caractère générique dans vos abonnements.Les données du connecteur n'analysent pas les messages qui sont publiés dans cette rubrique d'entrée. Tous les messages d'entrée sont traités comme des données binaires. Avant d'envoyer les messages à AWS IoT Analytics, le connecteur les code et les formate pour respecter les exigences de l'API
BatchPutMessage
:Le connecteur en base64 code les données brutes et inclut la charge utile codée dans une demande
BatchPutMessage
sortante.Le connecteur génère et attribue un ID à chaque message d'entrée.
Note
La réponse du connecteur n'inclut pas de corrélation d'ID pour ces messages d'entrée.
- Propriétés des messages
-
Aucun.
Données de sortie
Ce connecteur publie des informations d'état sous forme de données de sortie dans une rubrique MQTT. Ces informations contiennent la réponse renvoyée parAWS IoT Analytics pour chaque message d'entrée qu'elle reçoit et auquel elle est envoyéeAWS IoT Analytics.
- Filtre de rubrique dans l'abonnement
-
iotanalytics/messages/put/status
- Exemple de sortie : réussite
-
{ "response" : { "status" : "success" }, "id" : "req123" }
- Exemple de sortie : échec
-
{ "response" : { "status" : "fail", "error" : "ResourceNotFoundException", "error_message" : "A resource with the specified name could not be found." }, "id" : "req123" }
Note
Si le connecteur détecte une erreur pouvant être réessayée (par exemple, des erreurs de connexion), il réessaie de publier dans le lot suivant. Le retard exponentiel est géré par leAWS SDK. Les demandes qui échouent avec des erreurs pouvant être retentées sont ajoutées à la file d'attente des canaux pour la publication en fonction du paramètre
IotAnalyticsQueueDropBehavior
.
Exemple d'utilisation
Suivez les étapes de haut niveau suivantes pour configurer un exemple de fonction Lambda Python 3.7 que vous pouvez utiliser pour tester le connecteur.
Note
-
Si vous utilisez d'autres environnements d'exécution Python, vous pouvez créer un lien symbolique entre Python3.x et Python 3.7.
-
Les rubriques Démarrer avec les connecteurs (console) et Démarrer avec les connecteurs (CLI) contiennent des étapes détaillées qui vous montrent comment configurer et déployer un exemple de connecteur Twilio Notifications.
Veillez à répondre aux conditions requises pour le connecteur.
Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d'informations, consultez Gestion du rôle de groupe Greengrass (console) ou Gestion du rôle de groupe Greengrass (interface de ligne de commande).
-
Créez et publiez une fonction Lambda qui envoie des données d'entrée au connecteur.
Enregistrez l'exemple de code en tant que fichier PY. Téléchargez et décompressez le SDKAWS IoT Greengrass Core pour Python. Ensuite, créez un package zip contenant le fichier PY et le dossier
greengrasssdk
au niveau racine. Ce package zip est le package de déploiement vers lequel vous importezAWS Lambda.Après avoir créé la fonction Lambda Python 3.7, publiez une version de la fonction et créez un alias.
-
Configurez votre groupe Greengrass.
-
Ajoutez la fonction Lambda par son alias (recommandé). Configurez le cycle de vie Lambda de manière à ce qu'il dure longtemps (ou
"Pinned": true
dans la CLI). -
Ajoutez le connecteur et configurez ses paramètres.
-
Ajoutez des abonnements qui permettent au connecteur de recevoir des données d'entrée et d'envoyer des données de sortie sur des filtres de rubrique pris en charge.
Définissez la fonction Lambda comme source, le connecteur comme cible et utilisez un filtre de rubrique d'entrée compatible.
Définissez le connecteur en tant que source, AWS IoT Core en tant que cible et utilisez un filtre de rubrique de sortie pris en charge. Cet abonnement vous permet de consulter les messages d'état dans laAWS IoT console.
-
-
Déployez le groupe.
-
Dans laAWS IoT console, sur la page Test, abonnez-vous à la rubrique sur les données de sortie pour consulter les messages d'état du connecteur. L'exemple de fonction Lambda a une longue durée de vie et commence à envoyer des messages immédiatement après le déploiement du groupe.
Lorsque vous avez terminé les tests, vous pouvez définir le cycle de vie Lambda à la demande (ou
"Pinned": false
dans la CLI) et déployer le groupe. Cela empêche la fonction d'envoyer des messages.
Exemple
L'exemple de fonction Lambda suivant envoie un message d'entrée au connecteur.
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'iotanalytics/channels/my_channel/messages/put' def create_request_with_all_fields(): return { "request": { "message" : "{\"temp\":23.33}" }, "id" : "req_123" } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return
Limites
Ce connecteur est soumis aux limites suivantes.
Toutes les limites imposées par leAWS SDK for Python (Boto3) pour l'AWS IoT Analytics
batch_put_message
action. Tous les quotas imposés par l'AWS IoT Analytics BatchPutMessageAPI. Pour plus d'informations, consultez la section Service Quotas pourAWS IoT Analytics le Références générales AWS.
100 000 messages par seconde par canal.
100 messages par lot.
128 Ko par message.
Cette API utilise les noms des canaux (et non leurs ARN), ce qui signifie que l'envoi des données vers des canaux couvrant plusieurs régions ou comptes n'est pas pris en charge.
Tous les quotas imposés par le AWS IoT Greengrass Core. Pour plus d'informations, consultez la section Service Quotas pour leAWS IoT Greengrass noyau dans le Références générales AWS.
Les quotas suivants peuvent être plus particulièrement applicables :
La taille maximale des messages envoyés par un appareil est de 128 Ko.
La taille maximale de la file d'attente des messages du routeur principal Greengrass est de 2,5 Mo.
La longueur maximale d'une chaîne de rubrique est de 256 octets de caractères codés UTF-8.
Licences
Le connecteur IoT Analytics inclut les logiciels/licences tiers suivants :
-
AWS SDK for Python (Boto3)
/Licence Apache 2.0 -
botocore
/Licence Apache 2.0 -
dateutil
/Licence PSF -
docutils
/Licence BSD, licence GPL (General Public License) GNU, licence Python Software Foundation, domaine public -
jmespath
/Licence MIT -
s3transfer
/Licence Apache 2.0 -
urllib3
/Licence MIT
Ce connecteur est publié dans le cadre du contrat de licence du logiciel Greengrass Core
Journal des modifications
Le tableau suivant décrit les modifications dans chaque édition du connecteur
Version |
Modifications |
---|---|
4 |
Ajoute le |
3 |
Mise à niveau du runtime Lambda vers Python 3.7, ce qui modifie les exigences en matière d'exécution. |
2 |
Correctif pour réduire la journalisation excessive. |
1 |
Première version. |
Un groupe Greengrass ne peut contenir qu'une seule version du connecteur à la fois. Pour de plus amples informations sur la mise à niveau d'une version de connecteur, veuillez consulter Mise à niveau des versions du connecteur.
Consulter aussi
-
Intégrer à des services et protocoles à l'aide de connecteurs Greengrass
-
Qu'est-ce que AWS IoT Analytics ? dans le Guide de l'utilisateur AWS IoT Analytics