IoT Analytics - AWS IoT Greengrass

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'BatchPutMessageAPI 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

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/4

3

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3

2

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/2

1

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/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 :

Version 3 - 4
  • Logiciel AWS IoT Greengrass Core 1.9.3 ou version ultérieure.

  • Python version 3.7 ou 3.8 installée sur le périphérique principal et ajoutée à la variable d'environnement PATH.

    Note

    Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique depuis le dossier d'installation par défaut de Python 3.7 vers les fichiers binaires Python 3.8 installés.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.

  • Ce connecteur ne peut être utilisé que dans les régions Amazon Web Services où les deux AWS IoT Greengrasset AWS IoT Analyticssont pris en charge.

  • Toutes les entités et flux de travail AWS IoT Analytics associés sont créés et configurés. Les entités comprennent les canaux, le pipeline, les banques de données et les ensembles de données. Pour plus d'informations, consultez les procédures AWS CLI ou console dans le Guide de l'utilisateur AWS IoT Analytics.

    Note

    LesAWS IoT Analytics chaînes de destination doivent utiliser le même compte et se trouver dansRégion AWS le même connecteur.

  • Le rôle de groupe Greengrass est configuré pour autoriser l'iotanalytics:BatchPutMessageaction sur les canaux de destination, comme indiqué dans l'exemple de politique IAM suivant. Les chaînes doivent se trouver dans la actuelleCompte AWS et la région

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "iotanalytics:BatchPutMessage" ], "Effect": "Allow", "Resource": [ "arn:aws:iotanalytics:region:account-id:channel/channel_1_name", "arn:aws:iotanalytics:region:account-id:channel/channel_2_name" ] } ] }

    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).

Versions 1 - 2
  • AWS IoT GreengrassLogiciel de base v1.7 ou version ultérieure.

  • Python version 2.7 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.

  • Ce connecteur ne peut être utilisé que dans les régions Amazon Web Services où les deux AWS IoT Greengrasset AWS IoT Analyticssont pris en charge.

  • Toutes les entités et flux de travail AWS IoT Analytics associés sont créés et configurés. Les entités comprennent les canaux, le pipeline, les banques de données et les ensembles de données. Pour plus d'informations, consultez les procédures AWS CLI ou console dans le Guide de l'utilisateur AWS IoT Analytics.

    Note

    LesAWS IoT Analytics chaînes de destination doivent utiliser le même compte et se trouver dansRégion AWS le même connecteur.

  • Le rôle de groupe Greengrass est configuré pour autoriser l'iotanalytics:BatchPutMessageaction sur les canaux de destination, comme indiqué dans l'exemple de politique IAM suivant. Les chaînes doivent se trouver dans la actuelleCompte AWS et la région

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "iotanalytics:BatchPutMessage" ], "Effect": "Allow", "Resource": [ "arn:aws:iotanalytics:region:account-id:channel/channel_1_name", "arn:aws:iotanalytics:region:account-id:channel/channel_2_name" ] } ] }

    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).

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 ou DROP_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 ou NoContainer

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
  1. 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).

  2. 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.

  3. Configurez votre groupe Greengrass.

    1. 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).

    2. Ajoutez le connecteur et configurez ses paramètres.

    3. 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.

  4. Déployez le groupe.

  5. 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 Analyticsbatch_put_messageaction.

  • 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 :

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 leIsolationMode paramètre permettant de configurer le mode de conteneurisation pour le connecteur.

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