Configurez les paramètres IDT pour exécuter leAWS IoT Greengrasssuite de qualification - 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.

Configurez les paramètres IDT pour exécuter leAWS IoT Greengrasssuite de qualification

Avant d'exécuter des tests, vous devez configurer les paramètres pourAWSinformations d'identification et appareils sur votre ordinateur hôte.

Configuration de vos informations d'identification pour l'AWS

Vous devez configurer les informations d'identification utilisateur IAM dans le fichier<device-tester-extract-location> /configs/config.jsondans le fichier. Utilisez les informations d'identification pour l'IDT pour l'utilisateur AWS IoT Greengrass créé dans Créez et configurez un Compte AWS. Vous pouvez spécifier vos informations d'identification de deux manières :

  • Fichier d'informations d'identification.

  • Variables d’environnement

IDT utilise le même fichier d'informations d'identification que l'AWS CLI. Pour de plus amples informations, veuillez consulter Fichiers de configuration et d'informations d'identification.

L'emplacement du fichier d'informations d'identification varie en fonction du système d'exploitation que vous utilisez :

  • macOS, Linux : ~/.aws/credentials

  • Windows: C:\Users\UserName\.aws\credentials

Ajoutez votreAWSInformations d'identification pour le kitcredentialsfichier au format suivant :

[default] aws_access_key_id = <your_access_key_id> aws_secret_access_key = <your_secret_access_key>

Pour configurer IDT pourAWS IoT Greengrassà utiliserAWSInformations d'identification de votre fichiercredentials, modifiez votre fichierconfig.jsonfichier comme suit :

{ "awsRegion": "us-west-2", "auth": { "method": "file", "credentials": { "profile": "default" } } }
Note

Si vous n'utilisez pas le kitdefault AWSassurez-vous de changer le nom du profil dans votre profilconfig.jsondans le fichier. Pour de plus amples informations, veuillez consulter Profils nommés.

Les variables d'environnement sont des variables gérées par le système d'exploitation et utilisées par les commandes du système. Elles ne sont pas enregistrées si vous fermez la session SSH. IDT pourAWS IoT Greengrasspeut utiliser le kitAWS_ACCESS_KEY_IDetAWS_SECRET_ACCESS_KEYvariables d'environnement pour stocker votreAWSInformations d'identification .

Pour définir ces variables sous Linux, macOS ou Unix, utilisez export:

export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Pour définir ces variables sous Windows, utilisez set :

set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Pour configurer l'IDT afin que l'outil utilise les variables d'environnement, modifiez la section auth dans votre fichier config.json. Voici un exemple :

{ "awsRegion": "us-west-2", "auth": { "method": "environment" } }

Configurer device.json

Outre le kitAWSInformations d'identification, IDT pourAWS IoT Greengrassa besoin d'informations sur les appareils sur lesquels les tests sont effectués (par exemple, l'adresse IP, les informations de connexion, le système d'exploitation et l'architecture d'UC).

Vous pouvez fournir ces informations à l'aide du modèle device.json situé dans <device_tester_extract_location>/configs/device.json :

Physical device
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "container", "value": "yes | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "yes | no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "container | process | both" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for HSI *************** "hsm": { "p11Provider": "/path/to/pkcs11ProviderLibrary", "slotLabel": "<slot_label>", "slotUserPin": "<slot_pin>", "privateKeyLabel": "<key_label>", "openSSLEngine": "/path/to/openssl/engine" }, ******************************************************************************************** *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]
Note

Spécifiez privKeyPath uniquement si method est défini sur pki.

Spécifiez password uniquement si method est défini sur password.

Docker container
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64" }, { "name": "container", "value": "no" }, { "name": "docker", "value": "no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "process" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "docker", "containerId": "<container-name | container-id>", "containerUser": "<user>" } } ] } ]

Tous les champs qui contiennent des valeurs sont requis, comme indiqué ici :

id

ID alphanumérique défini par l'utilisateur qui identifie de façon unique un ensemble d'appareils appelé un groupe d'appareils. Le matériel doit être identique pour les appareils d'un même groupe. Lorsque vous exécutez une suite de tests, les appareils du groupe sont utilisés pour paralléliser la charge de travail. Plusieurs appareils sont utilisés pour exécuter différents tests.

sku

Valeur alphanumérique qui identifie de façon unique l'appareil que vous testez. La référence est utilisée pour effectuer le suivi des cartes qualifiées.

Note

Si vous souhaitez ajouter votre carte dans le catalogue d'appareils AWS Partner, la référence que vous indiquez ici doit correspondre à celle indiquée pendant le processus d'élaboration de la liste.

features

Un tableau contenant les fonctions prises en charge de l'appareil. Toutes les fonctionnalités sont requises.

os et arch

Combinaisons d'architecture et de systèmes d'exploitation (OS) prises en charge :

  • linux, x86_64

  • linux, armv6l

  • linux, armv7l

  • linux, aarch64

  • ubuntu, x86_64

  • openwrt, armv7l

  • openwrt, aarch64

Note

Si vous utilisez IDT pour testerAWS IoT Greengrasss'exécutant dans un conteneur Docker, seule l'architecture Docker x86_64 est prise en charge.

container

Valide que l'appareil répond à toutes les exigences logicielles et matérielles requises pour exécuter des fonctions Lambda en mode conteneur sur un noyau Greengrass.

La valeur valide estyesouno.

docker

Valide que l'appareil répond à toutes les dépendances techniques requises pour pouvoir utiliser le connecteur de déploiement d'application Greengrass Docker pour exécuter des conteneurs.

La valeur valide estyesouno.

streamManagement

Valide que l'appareil est conforme à toutes les dépendances techniques requises pour pouvoir exécuter le gestionnaire de flux AWS IoT Greengrass.

La valeur valide estyesouno.

hsi

Vérifie que la bibliothèque partagée HSI fournie peut interagir avec le module de sécurité matérielle (HSM) et qu'elle implémente correctement les API PKCS # 11 requises. La bibliothèque partagée/HSM doit signer une CSR, effectuer des opérations TLS et fournir les longueurs de clé et l'algorithme de clé publique corrects.

La valeur valide estyesouno.

ml

Valide que l'appareil est conforme à toutes les dépendances techniques requises pour pouvoir exécuter une inférence ML localement.

La valeur valide peut être une combinaison quelconque demxnet,tensorflow,dlr, etno(par exemple,mxnet,mxnet,tensorflow,mxnet,tensorflow,dlr, ouno).

mlLambdaContainerizationMode

Valide que l'appareil est conforme à toutes les dépendances techniques requises pour pouvoir exécuter une inférence ML en mode conteneur sur un appareil Greengrass.

La valeur valide estcontainer,process, ouboth.

processor

Valide que l'appareil répond à toutes les exigences matérielles requises pour le type de processeur spécifié.

La valeur valide estcpuougpu.

Note

Si vous ne souhaitez pas utiliser la stratégiecontainer,docker,streamManager,hsi, ouml, vous pouvez définir la fonction correspondantevaluepourno.

Docker prend uniquement en charge la qualification des fonctionnalités pourstreamManagementetml.

machineLearning

Facultatif. Informations de configuration pour les tests de qualification ML. Pour plus d'informations, consultez Configurer device.json pour la qualification ML.

hsm

Facultatif. Informations de configuration pour les tests avec un module de sécurité matérielle (HSM) AWS IoT Greengrass. Sinon, la propriété hsm doit être omise. Pour plus d'informations, consultez Intégration de sécurité matérielle.

Cette propriété s'applique uniquement si connectivity.protocol est défini sur ssh.

hsm.p11Provider

Chemin absolu vers la bibliothèque libdl-loadable d'implémentation PKCS # 11.

hsm.slotLabel

Étiquette d'emplacement utilisée pour identifier le module matériel.

hsm.slotUserPin

PIN de l'utilisateur utilisé pour authentifier le fichierAWS IoT Greengrassau cœur du module.

hsm.privateKeyLabel

Étiquette utilisée pour identifier la clé dans le module matériel.

hsm.openSSLEngine

Chemin d'accès absolu au fichier .so du moteur OpenSSL qui active la prise en charge PKCS # 11 sur OpenSSL. C'est l'approche utilisée par l'agent des mises à jour OTA AWS IoT Greengrass.

devices.id

Un identificateur unique défini par l'utilisateur pour l'appareil testé.

connectivity.protocol

Le protocole de communication utilisé pour communiquer avec cet appareil. Actuellement, les seules valeurs prises en charge concernent ssh pour les appareils physiques et docker pour les conteneurs Docker.

connectivity.ip

L'adresse IP de l'appareil testé.

Cette propriété s'applique uniquement si connectivity.protocol est défini sur ssh.

connectivity.containerId

ID de conteneur ou nom du conteneur Docker en cours de test.

Cette propriété s'applique uniquement si connectivity.protocol est défini sur docker.

connectivity.auth

Informations d'authentification pour la connexion.

Cette propriété s'applique uniquement si connectivity.protocol est défini sur ssh.

connectivity.auth.method

Méthode d'authentification utilisée pour accéder à un appareil sur le protocole de connectivité donné.

Les valeurs prises en charge sont :

  • pki

  • password

connectivity.auth.credentials

Informations d'identification utilisées pour l'authentification.

connectivity.auth.credentials.password

Mot de passe utilisé pour se connecter à l'appareil à tester.

Cette valeur s'applique uniquement si connectivity.auth.method est défini sur password.

connectivity.auth.credentials.privKeyPath

Chemin complet de la clé privée utilisée pour se connecter à l'appareil testé.

Cette valeur s'applique uniquement si connectivity.auth.method est défini sur pki.

connectivity.auth.credentials.user

Nom d'utilisateur pour la connexion à l'appareil testé.

connectivity.auth.credentials.privKeyPath

Chemin complet à la clé privée utilisée pour se connecter à l'appareil testé.

connectivity.port

Facultatif. Numéro de port à utiliser pour les connexions SSH.

La valeur par défaut est 22.

Cette propriété s'applique uniquement siconnectivity.protocola la valeurssh.

greengrassLocation

Emplacement du logiciel AWS IoT Greengrass Core sur vos appareils.

Pour les appareils physiques, cette valeur est utilisée uniquement lorsque vous utilisez une installation de AWS IoT Greengrass. Utilisez cet attribut pour indiquer à IDT qu'il doit utiliser le logiciel AWS IoT Greengrass Core installé sur vos appareils.

Lorsque vous exécutez des tests dans un conteneur Docker à partir de l'image Docker ou de Dockerfile fourni par AWS IoT Greengrass, définissez cette valeur sur /greengrass.

kernelConfigLocation

Facultatif. Chemin d'accès au fichier de configuration du noyau.AWS IoT Device Tester utilise ce fichier pour vérifier si les fonctions de noyau requises sont activées sur les appareils. S'il n'est pas spécifié, IDT utilise les chemins suivants pour rechercher le fichier de configuration du noyau :/proc/config.gzet/boot/config-<kernel-version>.AWS IoT Device Tester utilise le premier chemin qu'il trouve.

Configurer device.json pour la qualification ML

Cette section décrit les propriétés facultatives du fichier de configuration d'appareil qui s'appliquent à la qualification ML. Si vous prévoyez d'exécuter des tests pour la qualification ML, vous devez définir les propriétés qui s'appliquent à votre cas d'utilisation.

Vous pouvez utiliser le modèle device-ml.json pour définir les paramètres de configuration de votre appareil. Ce modèle contient les propriétés ML facultatives. Vous pouvez également utiliser device.json et ajouter les propriétés de qualification ML. Ces fichiers se trouvent dans <device-tester-extract-location>/configs et incluent les propriétés de qualification ML. Si vous utilisez device-ml.json, vous devez renommer le fichier device.json avant d'exécuter des tests IDT.

Pour de plus amples informations sur les propriétés de configuration d'appareil qui ne s'appliquent pas à la qualification ML, veuillez consulter Configurer device.json.

 

ml dans le tableau features

Les frameworks ML que votre carte prend en charge. Cette propriété nécessite IDT v3.1.0 ou version ultérieure.

  • Si votre carte ne prend en charge qu'un seul framework, spécifiez le framework. Par exemple :

    { "name": "ml", "value": "mxnet" }
  • Si votre carte prend en charge plusieurs frameworks, spécifiez les frameworks sous la forme d'une liste séparée par des virgules. Par exemple :

    { "name": "ml", "value": "mxnet,tensorflow" }
mlLambdaContainerizationMode dans le tableau features

Mode de conteneurisation que vous souhaitez utiliser pour le test. Cette propriété nécessite IDT v3.1.0 ou version ultérieure.

  • Choisissezprocesspour exécuter le code d'inférence ML avec une fonction Lambda non conteneurisée. Cette option nécessite AWS IoT Greengrass v1.10.x ou version ultérieure.

  • Choisissezcontainerpour exécuter le code d'inférence ML avec une fonction Lambda conteneurisée.

  • Choisissez both pour exécuter le code d'inférence ML avec les deux modes. Cette option nécessite AWS IoT Greengrass v1.10.x ou version ultérieure.

processor dans le tableau features

Indique l'accélérateur matériel pris en charge par votre carte. Cette propriété nécessite IDT v3.1.0 ou version ultérieure.

  • Choisissez cpu si votre carte utilise un processeur de type CPU.

  • Choisissez gpu si votre carte utilise un processeur de type GPU.

machineLearning

Facultatif. Informations de configuration pour les tests de qualification ML. Cette propriété nécessite IDT v3.1.0 ou version ultérieure.

dlrModelPath

Requis pour utiliser le framework dlr. Chemin absolu vers le répertoire de votre modèle compilé DLR, qui doit être nommé resnet18. Pour plus d'informations, consultez Compilation du modèle DLR.

Note

Voici un exemple de chemin d'accès sur macOS : /Users/<user>/Downloads/resnet18.

environmentVariables

Tableau de paires clé-valeur qui peuvent transmettre dynamiquement des paramètres aux tests d'inférence ML. Facultatif pour les appareils avec processeur de type CPU. Vous pouvez utiliser cette section pour ajouter des variables d'environnement spécifiques au framework requises par votre type d'appareil. Pour de plus amples informations sur ces exigences, veuillez consulter le site Web officiel du framework ou de l'appareil. Par exemple, pour exécuter des tests d'inférence MxNet sur certains appareils, les variables d'environnement suivantes peuvent être requises.

"environmentVariables": [ ... { "key": "PYTHONPATH", "value": "$MXNET_HOME/python:$PYTHONPATH" }, { "key": "MXNET_HOME", "value": "$HOME/mxnet/" }, ... ]
Note

Le champ value peut varier en fonction de votre installation MxNet.

Si vous testez des fonctions Lambda exécutées avecconteneurisationSur les appareils GPU, ajoutez des variables d'environnement pour la bibliothèque GPU. Cela permet au GPU d'effectuer des calculs. Pour utiliser des bibliothèques GPU différentes, veuillez consulter la documentation officielle de la bibliothèque ou de l'appareil.

Note

Configurez les clés suivantes si la fonction mlLambdaContainerizationMode est définie sur container ou both.

"environmentVariables": [ { "key": "PATH", "value": "<path/to/software/bin>:$PATH" }, { "key": "LD_LIBRARY_PATH", "value": "<path/to/ld/lib>" }, ... ]
deviceResources

Requis par les appareils GPU. Contientressources localesaccessibles par les fonctions Lambda. Utilisez cette section pour ajouter des ressources d'appareil et de volume locales.

  • Pour les ressources d'appareil, spécifiez "type": "device". Pour les appareils GPU, les ressources d'appareil doivent être des fichiers d'appareil liés au GPU sous /dev.

    Note

    Le répertoire /dev/shm est une exception. Il peut être configuré en tant que ressource de volume uniquement.

  • Pour les ressources de volume, spécifiez "type": "volume".