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.
Configurations d'exportation pour prises en chargeAWS Clouddestinations
Utilisation des fonctions Lambda définies par l'utilisateurStreamManagerClient
dans leAWS IoT GreengrassKit SDK principal pour interagir avec le gestionnaire de flux. Quand une fonction Lambdacrée un fluxoumet à jour un flux, il passe unMessageStreamDefinition
objet qui représente les propriétés du flux, y compris la définition d'exportation. LeExportDefinition
contient les configurations d'exportation définies pour le flux. Stream Manager utilise ces configurations d'exportation pour déterminer où et comment exporter le flux.
Vous pouvez définir zéro configuration d'exportation ou plus sur un flux, y compris plusieurs configurations d'exportation pour un seul type de destination. Par exemple, vous pouvez exporter un flux vers deuxAWS IoT Analyticset un flux de données Kinesis.
En cas d'échec des tentatives d'exportation, le gestionnaire de flux tente continuellement d'exporter des données vers leAWS Cloudà intervalles allant jusqu'à cinq minutes. Le nombre de nouvelles tentatives n'a pas de limite maximale.
Note
StreamManagerClient
fournit également une destination cible que vous pouvez utiliser pour exporter des flux vers un serveur HTTP. Cette cible n'est destinée qu'à des fins de test. Il n'est pas stable ni pris en charge pour une utilisation dans des environnements de production.
prises en chargeAWS Clouddestinations
Vous êtes responsable de la maintenance de cesAWS CloudAWS.
Canaux AWS IoT Analytics
Stream Manager prend en charge les exportations automatiques versAWS IoT Analytics.AWS IoT Analyticsvous permet d'effectuer des analyses avancées de vos données pour aider à prendre des décisions commerciales et à améliorer les modèles d'apprentissage automatique. Pour de plus amples informations, veuillez consulterPrésentation d'AWS IoT Analytics?dans leAWS IoT AnalyticsGuide de l'utilisateur.
DansAWS IoT GreengrassSDK Core, vos fonctions Lambda utilisent leIoTAnalyticsConfig
pour définir la configuration d'exportation pour ce type de destination. Pour plus d'informations, consultez la référence SDK de votre langue cible :
-
Configuration IoAnalytics
dans le kit SDK Python SDK -
Configuration IoAnalytics
dans le kit SDK Java -
Configuration IoAnalytics
dans le kit SDK Node.js
Prérequis
Cette destination d'exportation possède les critères suivants :
-
Canaux cibles dansAWS IoT Analyticsdoivent se trouver dans la mêmeCompte AWSetRégion AWScomme le groupe Greengrass.
-
LeRôle de groupe Greengrassdoit permettre à la
iotanalytics:BatchPutMessage
autorisation de cibler les chaînes. Par exemple :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotanalytics:BatchPutMessage" ], "Resource": [ "arn:aws:iotanalytics:
region
:account-id
:channel/channel_1_name
", "arn:aws:iotanalytics:region
:account-id
:channel/channel_2_name
" ] } ] }Vous pouvez octroyer un accès précis ou conditionnel aux ressources, par exemple, en utilisant un caractère générique
*
méthode de dénomination. Pour de plus amples informations, veuillez consulterAjout et suppression de politiques IAMdans leIAM User Guide.
Exportation vers AWS IoT Analytics
Pour créer un flux qui exporte versAWS IoT Analytics, vos fonctions LambdaCréer un fluxavec une définition d'exportation comprenant une ou plusieursIoTAnalyticsConfig
objets. Cet objet définit les paramètres d'exportation, tels que le canal cible, la taille du lot, l'intervalle de lot et la priorité.
Lorsque vos fonctions Lambda reçoivent des données provenant d'appareils, ellesAjouter des messagesqui contiennent un blob de données vers le flux cible.
Le gestionnaire de flux exporte ensuite les données en fonction des paramètres de lot et de la priorité définis dans les configurations d'exportation du flux.
Amazon Kinesis Data Streams
Le gestionnaire de flux prend en charge les exportations automatiques vers Amazon Kinesis Data Streams. Kinesis Data Streams est couramment utilisé pour agréger des données à volume élevé et les charger dans un entrepôt de données ou un cluster de réduction de mappe. Pour de plus amples informations, veuillez consulterQu'est-ce qu'Amazon Kinesis Data Streams ?dans leManuel du développeur Amazon Kinesis.
DansAWS IoT GreengrassSDK Core, vos fonctions Lambda utilisent leKinesisConfig
pour définir la configuration d'exportation pour ce type de destination. Pour plus d'informations, consultez la référence SDK de votre langue cible :
-
Configuration Kinesis
dans le kit SDK Python SDK -
Configuration Kinesis
dans le kit SDK Java -
Configuration Kinesis
dans le kit SDK Node.js
Prérequis
Cette destination d'exportation possède les critères suivants :
-
Les flux cibles dans Kinesis Data Streams doivent se trouver dans le mêmeCompte AWSetRégion AWScomme le groupe Greengrass.
-
LeRôle de groupe Greengrassdoit permettre à la
kinesis:PutRecords
autorisation de cibler les flux de données. Par exemple :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:
region
:account-id
:stream/stream_1_name
", "arn:aws:kinesis:region
:account-id
:stream/stream_2_name
" ] } ] }Vous pouvez octroyer un accès précis ou conditionnel aux ressources, par exemple, en utilisant un caractère générique
*
méthode de dénomination. Pour de plus amples informations, veuillez consulterAjout et suppression de politiques IAMdans leIAM User Guide.
Exporter vers Kinesis Data Streams
Pour créer un flux qui exporte vers Kinesis Data Streams, votre Lambda fonctionneCréer un fluxavec une définition d'exportation comprenant une ou plusieursKinesisConfig
objets. Cet objet définit les paramètres d'exportation, tels que le flux de données cible, la taille du lot, l'intervalle de lot et la priorité.
Lorsque vos fonctions Lambda reçoivent des données provenant d'appareils, ellesAjouter des messagesqui contiennent un blob de données vers le flux cible. Le gestionnaire de flux exporte ensuite les données en fonction des paramètres de lot et de la priorité définis dans les configurations d'exportation du flux.
Stream Manager génère un UUID aléatoire unique en tant que clé de partition pour chaque enregistrement téléchargé sur Amazon Kinesis.
AWS IoT SiteWisepropriétés des ressources
Stream Manager prend en charge les exportations automatiques versAWS IoT SiteWise.AWS IoT SiteWisevous permet de collecter, d'organiser et d'analyser à grande échelle les données provenant d'équipements industriels. Pour de plus amples informations, veuillez consulterPrésentation d'AWS IoT SiteWise?dans leAWS IoT SiteWiseGuide de l'utilisateur.
DansAWS IoT GreengrassSDK Core, vos fonctions Lambda utilisent leIoTSiteWiseConfig
pour définir la configuration d'exportation pour ce type de destination. Pour plus d'informations, consultez la référence SDK de votre langue cible :
-
Configuration IoT SiteWise
dans le kit SDK Python SDK -
Configuration IoT SiteWise
dans le kit SDK Java -
Configuration IoT SiteWise
dans le kit SDK Node.js
Note
AWSfournit également le SiteWise Connecteur IoT, une solution prédéfinie que vous pouvez utiliser avec des sources OPC-UA.
Prérequis
Cette destination d'exportation possède les critères suivants :
-
Propriétés des ressources cibles dansAWS IoT SiteWisedoivent se trouver dans la mêmeCompte AWSetRégion AWScomme le groupe Greengrass.
Note
Pour obtenir la liste des régions quiAWS IoT SiteWisesupports, voirAWS IoT SiteWisePoints de terminaison et quotasdans leAWSRéférence générale.
-
LeRôle de groupe Greengrassdoit permettre à la
iotsitewise:BatchPutAssetPropertyValue
autorisation de cibler les propriétés des ressources. L'exemple de stratégie suivant utilise leiotsitewise:assetHierarchyPath
afin d'octroyer l'accès à une ressource racine cible et à ses enfants. Vous pouvez supprimer l'optionCondition
depuis la stratégie pour permettre l'accès à tous vosAWS IoT SiteWiseou spécifiez les ARN des actifs individuels.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*", "Condition": { "StringLike": { "iotsitewise:assetHierarchyPath": [ "/
root node asset ID
", "/root node asset ID
/*" ] } } } ] }Vous pouvez octroyer un accès précis ou conditionnel aux ressources, par exemple, en utilisant un caractère générique
*
méthode de dénomination. Pour de plus amples informations, veuillez consulterAjout et suppression de politiques IAMdans leIAM User Guide.Pour plus d'informations importantes sur la sécurité, consultez BatchPutAssetPropertyValue autorisationdans leAWS IoT SiteWiseGuide de l'utilisateur.
Exportation vers AWS IoT SiteWise
Pour créer un flux qui exporte versAWS IoT SiteWise, vos fonctions LambdaCréer un fluxavec une définition d'exportation comprenant une ou plusieursIoTSiteWiseConfig
objets. Cet objet définit les paramètres d'exportation, tels que la taille du lot, l'intervalle de lot et la priorité.
Lorsque vos fonctions Lambda reçoivent des données de propriété de ressources provenant d'appareils, elles ajoutent des messages contenant les données au flux cible. Les messages sont sérialisés en JSONPutAssetPropertyValueEntry
objets contenant des valeurs de propriétés pour une ou plusieurs propriétés d'actifs. Pour de plus amples informations, veuillez consulterAjouter un messagepourAWS IoT SiteWisedestinations d'exportation.
Note
Lorsque vous envoyez des données àAWS IoT SiteWise, vos données doivent répondre aux exigences de laBatchPutAssetPropertyValue
action. Pour de plus amples informations, veuillez consulter BatchPutasSetPropertyValue dans la référence de l'API AWS IoT SiteWise.
Le gestionnaire de flux exporte ensuite les données en fonction des paramètres de lot et de la priorité définis dans les configurations d'exportation du flux.
Vous pouvez ajuster les paramètres de votre gestionnaire de flux et la logique des fonctions Lambda pour concevoir votre stratégie d'exportation. Par exemple :
-
Pour les exportations quasi en temps réel, définissez des paramètres de taille de lot et d'intervalle faibles et ajoutez les données au flux lors de leur réception.
-
Pour optimiser le traitement par lots, atténuer les contraintes de bande passante ou réduire les coûts, vos fonctions Lambda peuvent regrouper les timestamp-quality-value (TQV) reçus pour une propriété d'actif unique avant d'ajouter les données au flux. Une stratégie consiste à regrouper des entrées pour un maximum de 10 combinaisons de propriétés et d'actifs différents, ou alias de propriété, dans un message au lieu d'envoyer plusieurs entrées pour la même propriété. Cela permet au gestionnaire de flux de rester dansAWS IoT SiteWisequotas.
Objets Amazon S3
Le gestionnaire de flux prend en charge les exportations automatiques vers Amazon S3. Vous pouvez utiliser Amazon S3 pour stocker et récupérer de grandes quantités de données. Pour de plus amples informations, veuillez consulterQu'est-ce qu'Amazon S3 ?dans leManuel du développeur Amazon Simple Storage Service.
DansAWS IoT GreengrassSDK Core, vos fonctions Lambda utilisent leS3ExportTaskExecutorConfig
pour définir la configuration d'exportation pour ce type de destination. Pour plus d'informations, consultez la référence SDK de votre langue cible :
-
Configuration de l'exécuteur de tâches d'exportation S3
dans le kit SDK Python SDK -
Configuration de l'exécuteur de tâches d'exportation S3
dans le kit SDK Java -
Configuration de l'exécuteur de tâches d'exportation S3
dans le kit SDK Node.js
Prérequis
Cette destination d'exportation possède les critères suivants :
-
Les compartiments Amazon S3 ciblés doivent se trouver dans le même compartimentCompte AWScomme le groupe Greengrass.
-
Si l'icôneconteneurisation par défautpour le groupe Greengrass estConteneur Greengrass, vous devez définir le paramètreSTREAM_MANAGER_READ_ONLY_DIRSpour utiliser un répertoire de fichiers d'entrée situé sous
/tmp
ou n'est pas sur le système de fichiers racine. -
Si une fonction Lambda s'exécute dansConteneur Greengrassmode écrit les fichiers d'entrée dans le répertoire du fichier d'entrée, vous devez créer une ressource de volume local pour le répertoire et monter le répertoire dans le conteneur avec des autorisations d'écriture. Cela garantit que les fichiers sont écrits dans le système de fichiers racine et visibles en dehors du conteneur. Pour plus d'informations, consultez Accédez à des ressources locales avec des fonctions et des connecteurs Lambda.
-
LeRôle de groupe Greengrassdoit autoriser les autorisations suivantes sur les compartiments cibles. Par exemple :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::
bucket-1-name
/*", "arn:aws:s3:::bucket-2-name
/*" ] } ] }Vous pouvez octroyer un accès précis ou conditionnel aux ressources, par exemple, en utilisant un caractère générique
*
méthode de dénomination. Pour de plus amples informations, veuillez consulterAjout et suppression de politiques IAMdans leIAM User Guide.
Exporter vers Amazon S3
Pour créer un flux qui exporte vers Amazon S3, vos fonctions Lambda utilisent leS3ExportTaskExecutorConfig
pour configurer la stratégie d'exportation. La stratégie définit les paramètres d'exportation, tels que le seuil de chargement partitionné et la priorité. Pour les exportations Amazon S3, Stream Manager télécharge les données qu'il lit à partir de fichiers locaux sur le périphérique principal. Pour lancer un chargement, vos fonctions Lambda ajoutent une tâche d'exportation au flux cible. La tâche d'exportation contient des informations sur le fichier d'entrée et l'objet Amazon S3 cible. Le gestionnaire de flux exécute les tâches dans la séquence dans laquelle elles sont ajoutées au flux.
Note
Le compartiment cible doit déjà exister dans votreCompte AWS. Si un objet pour la clé spécifiée n'existe pas, le gestionnaire de flux crée l'objet pour vous.
Ce flux de travail de haut niveau est illustré dans le diagramme suivant.
Le gestionnaire de flux utilise la propriété seuil de chargement partitionné,Taille de partie minimumet la taille du fichier d'entrée pour déterminer comment charger les données. Le seuil de téléchargement partitionné doit être supérieur ou égal à la taille d'article minimale. Si vous souhaitez télécharger des données en parallel, vous pouvez créer plusieurs flux.
Les clés qui spécifient vos objets Amazon S3 cibles peuvent inclure des clés validesDateTimeFormatter datetimeJava!{timestamp:
espaces réservés. Vous pouvez utiliser ces espaces réservés à l'horodatage pour partitionner les données dans Amazon S3 en fonction de l'heure à laquelle les données du fichier d'entrée ont été téléchargées. Par exemple, le nom de clé suivant se résout en une valeur telle quevalue
}my-key/2020/12/31/data.txt
.
my-key/!{timestamp:YYYY}/!{timestamp:MM}/!{timestamp:dd}/data.txt
Note
Si vous souhaitez surveiller l'état d'exportation d'un flux, commencez par créer un flux d'état, puis configurez le flux d'exportation pour l'utiliser. Pour plus d'informations, consultez Surveillance des tâches d'exportation.
Gérer les données d'entrée
Vous pouvez créer du code utilisé par les applications IoT pour gérer le cycle de vie des données d'entrée. L'exemple de flux de travail suivant montre comment utiliser les fonctions Lambda pour gérer ces données.
-
Un processus local reçoit des données provenant de périphériques ou de périphériques, puis les écrit dans des fichiers situés dans un répertoire sur le périphérique principal. Il s'agit des fichiers d'entrée du gestionnaire de flux.
Note
Pour déterminer si vous devez configurer l'accès au répertoire des fichiers d'entrée, consultez leSTREAM_MANAGER_READ_ONLY_DIRS Paramètre .
Le processus dans lequel le gestionnaire de flux exécute hérite de toutes les autorisations de système de fichiers duidentité d'accès par défautpour le groupe. Le gestionnaire de flux doit avoir l'autorisation d'accéder aux fichiers d'entrée. Vous pouvez utiliser le plugin
chmod(1)
pour modifier l'autorisation des fichiers, si nécessaire. -
Une fonction Lambda analyse le répertoire etajoute une tâche d'exportationvers le flux cible lorsqu'un nouveau fichier est créé. La tâche est sérialisée par JSON
S3ExportTaskDefinition
qui spécifie l'URL du fichier d'entrée, le compartiment et la clé Amazon S3 cible, ainsi que les métadonnées utilisateur facultatives. -
Le gestionnaire de flux lit le fichier d'entrée et exporte les données vers Amazon S3 dans l'ordre des tâches ajoutées. Le compartiment cible doit déjà exister dans votreCompte AWS. Si un objet pour la clé spécifiée n'existe pas, le gestionnaire de flux crée l'objet pour vous.
-
La fonction Lambdalit des messagesà partir d'un flux d'état pour surveiller l'état de l'exportation. Une fois les tâches d'exportation terminées, la fonction Lambda peut supprimer les fichiers d'entrée correspondants. Pour plus d'informations, consultez Surveillance des tâches d'exportation.
Surveillance des tâches d'exportation
Vous pouvez créer du code que les applications IoT utilisent pour surveiller l'état de vos exportations Amazon S3. Vos fonctions Lambda doivent créer un flux d'état, puis configurer le flux d'exportation pour écrire des mises à jour d'état dans le flux d'état. Un flux d'état unique peut recevoir des mises à jour de statut provenant de plusieurs flux exportés vers Amazon S3.
Premiers,Créer un fluxà utiliser comme flux d'état. Vous pouvez configurer les stratégies de taille et de rétention du flux afin de contrôler la durée de vie des messages d'état. Par exemple :
-
Définir
Persistence
pourMemory
si vous ne voulez pas stocker les messages d'état. -
Définir
StrategyOnFull
pourOverwriteOldestData
afin que les nouveaux messages d'état ne soient pas perdus.
Ensuite, créez ou mettez à jour le flux d'exportation pour utiliser le flux d'état. Spécifiquement, définissez la propriété de configuration d'état du fluxS3ExportTaskExecutorConfig
configuration d'exportation. Cela indique au gestionnaire de flux d'écrire des messages d'état concernant les tâches d'exportation vers le flux d'état. DansStatusConfig
, spécifiez le nom du flux d'état et le niveau de verbosité. Les valeurs prises en charge suivantes vont des valeurs les moins détaillées (ERROR
) au plus verbeux (TRACE
). La valeur par défaut est INFO
.
-
ERROR
-
WARN
-
INFO
-
DEBUG
-
TRACE
L'exemple de flux de travail suivant montre comment les fonctions Lambda peuvent utiliser un flux d'état pour surveiller l'état de l'exportation.
-
Comme décrit dans le flux de travail précédent, une fonction Lambdaajoute une tâche d'exportationvers un flux configuré pour écrire des messages d'état concernant les tâches d'exportation vers un flux d'état. L'opération d'ajout renvoie un numéro de séquence qui représente l'ID de la tâche.
-
Une fonction Lambdalit des messagesde manière séquentielle à partir du flux d'état, puis filtre les messages en fonction du nom du flux et de l'ID de tâche ou en fonction d'une propriété de tâche d'exportation à partir du contexte de message. Par exemple, la fonction Lambda peut filtrer en fonction de l'URL du fichier d'entrée de la tâche d'exportation, qui est représentée par le
S3ExportTaskDefinition
objet dans le contexte du message.Les codes d'état suivants indiquent qu'une tâche d'exportation a atteint son état terminé :
-
Success
. Le téléchargement s'est terminé avec succès. -
Failure
. Le gestionnaire de flux a rencontré une erreur, par exemple, le compartiment spécifié n'existe pas. Une fois le problème résolu, vous pouvez ajouter à nouveau la tâche d'exportation au flux. -
Canceled
. La tâche a été abandonnée parce que la définition du flux ou de l'exportation a été supprimée, ou le time-to-live (TTL) de la tâche a expiré.
Note
La tâche peut également avoir le statut de
InProgress
ouWarning
. Le gestionnaire de flux émet des avertissements lorsqu'un événement renvoie une erreur qui n'affecte pas l'exécution de la tâche. Par exemple, l'échec du nettoyage d'un chargement partiel interrompu renvoie un avertissement. -
-
Une fois les tâches d'exportation terminées, la fonction Lambda peut supprimer les fichiers d'entrée correspondants.
L'exemple suivant montre comment une fonction Lambda peut lire et traiter les messages d'état.