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.
Comment créer une ressource de secret (console)
Cette fonctionnalité est disponible pour AWS IoT Greengrass Core v1.7 et versions ultérieures.
Ce didacticiel montre comment utiliser la AWS Management Console pour ajouter une ressource de secret à un groupe Greengrass. Une ressource de secret est une référence à un secret de AWS Secrets Manager. Pour plus d'informations, veuillez consulter Déployer des secrets sur AWS IoT Greengrass Core.
Sur le périphérique AWS IoT Greengrass principal, les connecteurs et les fonctions Lambda peuvent utiliser la ressource secrète pour s'authentifier auprès des services et des applications, sans avoir à coder en dur des mots de passe, des jetons ou d'autres informations d'identification.
Dans ce didacticiel, vous commencez par créer une information secrète dans la console AWS Secrets Manager. Ensuite, dans la AWS IoT Greengrass console, vous ajoutez une ressource secrète à un groupe Greengrass depuis la page Ressources du groupe. Cette ressource secrète fait référence au secret du Secrets Manager. Plus tard, vous associez la ressource secrète à une fonction Lambda, ce qui permet à la fonction d'obtenir la valeur du secret local.
Note
La console vous permet également de créer une ressource secrète et secrète lorsque vous configurez un connecteur ou une fonction Lambda. Vous pouvez le faire depuis la page Configurer les paramètres du connecteur ou depuis la page Ressources de la fonction Lambda.
Seuls les connecteurs qui contiennent les paramètres des secrets peuvent accéder aux secrets. Pour un didacticiel qui montre comment le connecteur Twilio Notifications utilise un jeton d'authentification stocké localement, voirMise en route avec les connecteurs Greengrass (console).
Le didacticiel contient les étapes détaillées suivantes :
Le didacticiel devrait prendre environ 20 minutes.
Prérequis
Pour suivre ce didacticiel, vous devez disposer des éléments suivants :
-
Un groupe Greengrass et un noyau Greengrass (v1.7 ou version ultérieure). Pour savoir comment créer un groupe et un service principal Greengrass, consultez Commencer avec AWS IoT Greengrass. Le didacticiel Mise en route comprend également les étapes d'installation du logiciel AWS IoT Greengrass Core.
-
AWS IoT Greengrass doit être configuré pour prendre en charge les secrets locaux. Pour plus d'informations, consultez les exigences liées aux ressources de secret.
Note
Cette exigence inclut l'autorisation d'accéder aux secrets de votre Gestionnaire de Secrets. Si vous utilisez le rôle de service Greengrass par défaut, Greengrass est autorisé à obtenir les valeurs des secrets dont le nom commence par greengrass-.
-
Pour obtenir les valeurs des secrets locaux, vos fonctions Lambda définies par l'utilisateur doivent AWS IoT Greengrass utiliser le SDK Core v1.3.0 ou version ultérieure.
Étape 1 : Création d'un secret du Gestionnaire de Secrets
Au cours de cette étape, vous utilisez la console AWS Secrets Manager pour créer un secret.
-
Connectez-vous à la console AWS Secrets Manager
. Note
Pour plus d'informations sur ce processus, voir Étape 1 : Création et stockage de votre secret AWS Secrets Manager dans le guide de AWS Secrets Manager l'utilisateur.
-
Choisissez Store a new secret (Stocker un nouveau secret).
-
Sous Choisir le type de secret, choisissez Autre type de secret.
-
Dans Spécifier les paires clé/valeur à stocker pour ce secret :
-
Pour Clé, entrez
test
. -
Pour le champ Value (Valeur), entrez
abcdefghi
.
-
-
Gardez aws/secretsmanager sélectionné pour la clé de chiffrement, puis choisissez Next.
Note
Vous n'êtes pas débité AWS KMS si vous utilisez la clé AWS gérée par défaut créée par Secrets Manager dans votre compte.
-
Pour Secret name, entrez
greengrass-TestSecret
et choisissez Next.Note
Par défaut, le rôle de service Greengrass permet d'AWS IoT Greengrassobtenir la valeur des secrets dont le nom commence par greengrass -. Pour plus d'informations, consultez les exigences liées aux secrets.
-
Ce didacticiel ne nécessite pas de rotation. Choisissez donc désactiver la rotation automatique, puis cliquez sur Suivant.
-
Dans la page Révision, passez en revue vos paramètres, puis choisissez Stocker.
Ensuite, vous créez une ressource de secret dans votre groupe Greengrass qui référence le secret.
Étape 2 : Ajouter une ressource de secret à un groupe Greengrass
Au cours de cette étape, vous configurez une ressource de groupe qui fait référence au secret de Secrets Manager.
Dans le volet de navigation de la AWS IoT console, sous Gérer, développez les appareils Greengrass, puis choisissez Groups (V1).
-
Choisissez le groupe auquel vous souhaitez ajouter la ressource de secret.
-
Sur la page de configuration du groupe, choisissez l'onglet Ressources, puis faites défiler la page jusqu'à la section Secrets. La section Secrets affiche les ressources secrètes appartenant au groupe. Vous pouvez ajouter, modifier et supprimer des ressources secrètes dans cette section.
Note
La console vous permet également de créer une ressource secrète et secrète lorsque vous configurez un connecteur ou une fonction Lambda. Vous pouvez le faire depuis la page Configurer les paramètres du connecteur ou depuis la page Ressources de la fonction Lambda.
-
Choisissez Ajouter dans la section Secrets.
-
Sur la page Ajouter une ressource secrète, entrez
MyTestSecret
le nom de la ressource. -
Sous Secret, choisissez greengrass- TestSecret.
-
Dans la section Sélectionner les étiquettes (facultatif), AWSCURRENT l'étiquette intermédiaire représente la dernière version du secret. Cette étiquette est toujours incluse dans une ressource de secret.
Note
Ce didacticiel nécessite uniquement l' AWSCURRENT étiquette. Vous pouvez éventuellement inclure des étiquettes requises par votre fonction ou connecteur Lambda.
-
Choisissez Add resource (Ajouter ressource).
Étape 3 : Création d'un package de déploiement de fonctions Lambda
Pour créer une fonction Lambda, vous devez d'abord créer un package de déploiement de fonction Lambda contenant le code de la fonction et les dépendances. Les fonctions Lambda de Greengrass nécessitent le SDK AWS IoT Greengrass principal pour des tâches telles que la communication avec les messages MQTT dans l'environnement principal et l'accès aux secrets locaux. Ce didacticiel crée une fonction Python afin que vous utilisiez la version Python du SDK dans le package de déploiement.
Note
Pour obtenir les valeurs des secrets locaux, vos fonctions Lambda définies par l'utilisateur doivent AWS IoT Greengrass utiliser le SDK Core v1.3.0 ou version ultérieure.
-
Sur la page de téléchargement du SDK AWS IoT Greengrass Core, téléchargez le SDK AWS IoT Greengrass Core pour Python sur votre ordinateur.
-
Décompressez le package téléchargé pour obtenir le kit SDK. Le kit SDK est représenté par le dossier
greengrasssdk
. -
Enregistrez la fonction de code Python suivante dans un fichier local nommé
secret_test.py
.import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") iot_client = greengrasssdk.client("iot-data") secret_name = "greengrass-TestSecret" send_topic = "secrets/output" def function_handler(event, context): """ Gets a secret and publishes a message to indicate whether the secret was successfully retrieved. """ response = secrets_client.get_secret_value(SecretId=secret_name) secret_value = response.get("SecretString") message = ( f"Failed to retrieve secret {secret_name}." if secret_value is None else f"Successfully retrieved secret {secret_name}." ) iot_client.publish(topic=send_topic, payload=message) print("Published: " + message)
La
get_secret_value
fonction prend en charge le nom ou l'ARN du secret du Secrets Manager pour laSecretId
valeur. Cet exemple utilise le nom du secret. Pour cet exemple, AWS IoT Greengrass renvoie la paire clé-valeur :{"test":"abcdefghi"}
.Important
Assurez-vous que les fonctions Lambda définies par l'utilisateur gèrent les secrets de manière sécurisée et n'enregistrent aucune donnée sensible stockée dans le secret. Pour plus d'informations, consultez la section Atténuer les risques liés à la journalisation et au débogage de votre fonction Lambda dans AWS Secrets Managerle guide de l'utilisateur. Bien que cette documentation fasse spécifiquement référence aux fonctions de rotation, la recommandation s'applique également aux fonctions Greengrass Lambda.
-
Compressez les éléments suivants dans un fichier nommé
secret_test_python.zip
. Lorsque vous créez le fichier ZIP, insérez uniquement le code et ses dépendances, pas le dossier dans lequel il se trouve.-
secret_test.py. Logique d'application.
-
greengrasssdk. Bibliothèque requise pour toutes les fonctions Lambda de Python Greengrass.
Il s'agit de votre package de déploiement de fonctions Lambda.
-
Étape 4 : Créer une fonction Lambda
Au cours de cette étape, vous allez utiliser la AWS Lambda console pour créer une fonction Lambda et la configurer pour utiliser votre package de déploiement. Vous publiez ensuite une version de fonction et créez un alias.
-
Créez d'abord la fonction Lambda.
-
Dans AWS Management Console, choisissez Services et ouvrez la console AWS Lambda.
-
Choisissez Créer une fonction, puis sélectionnez Auteur à partir de zéro.
-
Dans la section Informations de base, spécifiez les valeurs suivantes :
-
Sous Nom de la fonction, saisissez
SecretTest
. -
Pour Runtime, sélectionnez Python 3.7.
-
Pour les autorisations, conservez le paramètre par défaut. Cela crée un rôle d'exécution qui accorde des autorisations Lambda de base. Ce rôle n'est pas utilisé parAWS IoT Greengrass.
-
-
Dans le bas de la page, choisissez Create function.
-
-
Enregistrez ensuite le gestionnaire et téléchargez le package de déploiement de votre fonction Lambda.
-
Dans l'onglet Code, sous Source du code, choisissez Télécharger depuis. Dans le menu déroulant, sélectionnez le fichier .zip.
-
Choisissez Upload, puis choisissez votre package
secret_test_python.zip
de déploiement. Ensuite, choisissez Enregistrer. -
Dans l'onglet Code de la fonction, sous Paramètres d'exécution, choisissez Modifier, puis entrez les valeurs suivantes.
-
Pour Runtime, sélectionnez Python 3.7.
-
Pour Handler (Gestionnaire), entrez
secret_test.function_handler
.
-
-
Choisissez Save (Enregistrer).
Note
Le bouton Test de la AWS Lambda console ne fonctionne pas avec cette fonction. Le SDK AWS IoT Greengrass principal ne contient pas les modules nécessaires pour exécuter vos fonctions Greengrass Lambda de manière indépendante dans la console. AWS Lambda Ces modules (par exemple
greengrass_common
) sont fournis aux fonctions après leur déploiement sur votre noyau Greengrass.
-
-
À présent, publiez la première version de votre fonction Lambda et créez un alias pour cette version.
Note
Les groupes Greengrass peuvent référencer une fonction Lambda par alias (recommandé) ou par version. L'utilisation d'un alias facilite la gestion des mises à jour du code, car vous n'avez pas à modifier votre table d'abonnement ou la définition de groupe lorsque le code de fonction est mis à jour. Au lieu de cela, il vous suffit de pointer l'alias vers la nouvelle version de la fonction.
-
Sur la page de configuration SecretTest: 1, dans le menu Actions, choisissez Créer un alias.
-
Sur la page Create a new alias, utilisez les valeurs suivantes :
-
Pour Name (Nom), saisissez
GG_SecretTest
. -
Pour Version, choisissez 1.
Note
AWS IoT Greengrassne prend pas en charge les alias Lambda pour les versions $LATEST.
-
-
Sélectionnez Create (Créer).
-
Vous êtes maintenant prêt à ajouter la fonction Lambda à votre groupe Greengrass et à joindre la ressource secrète.
Étape 5 : ajouter la fonction Lambda au groupe Greengrass
Au cours de cette étape, vous allez ajouter la fonction Lambda au groupe Greengrass dans la console. AWS IoT
-
Sur la page de configuration du groupe, choisissez l'onglet Fonctions Lambda.
-
Dans la section Mes fonctions Lambda, choisissez Ajouter.
-
Pour la fonction Lambda, choisissez. SecretTest
-
Pour la version de la fonction Lambda, choisissez l'alias de la version que vous avez publiée.
Configurez ensuite le cycle de vie de la fonction Lambda.
-
Dans la section Configuration de la fonction Lambda, effectuez les mises à jour suivantes.
Note
Nous vous recommandons d'exécuter votre fonction Lambda sans conteneurisation, sauf si votre analyse de rentabilisation l'exige. Cela permet d'accéder au processeur graphique et à la caméra de votre appareil sans configurer les ressources de l'appareil. Si vous exécutez sans conteneurisation, vous devez également accorder un accès root à vos fonctions LambdaAWS IoT Greengrass.
-
Pour exécuter sans conteneurisation :
-
Pour Utilisateur et groupe du système, sélectionnez
Another user ID/group ID
. Dans le champ ID utilisateur du système, entrez0
. Pour l'ID du groupe de systèmes, entrez0
.Cela permet à votre fonction Lambda de s'exécuter en tant que root. Pour plus d'informations sur l'exécution en tant que root, consultezDéfinition de l'identité d'accès par défaut pour les fonctions Lambda dans un groupe.
Astuce
Vous devez également mettre à jour votre
config.json
fichier pour accorder un accès root à votre fonction Lambda. Pour la procédure, voirExécution d'une fonction Lambda en tant que root. -
Pour la conteneurisation de la fonction Lambda, sélectionnez Aucun conteneur.
Pour plus d'informations sur l'exécution sans conteneurisation, consultez. Considérations à prendre en compte lors du choix de la conteneurisation des fonctions Lambda
-
Pour Expiration, entrez
10 seconds
. -
Pour Épinglé, choisissez True.
Pour plus d'informations, veuillez consulter Configuration du cycle de vie pour les fonctions Greengrass Lambda.
-
Sous Paramètre supplémentaire, pour l'accès en lecture au répertoire /sys, choisissez Enabled.
-
-
Pour exécuter plutôt en mode conteneurisé :
Note
Nous vous déconseillons de l'exécuter en mode conteneurisé, sauf si votre analyse de rentabilisation l'exige.
-
Pour Utilisateur et groupe du système, choisissez Utiliser le groupe par défaut.
-
Pour la conteneurisation de la fonction Lambda, choisissez Utiliser le groupe par défaut.
-
Pour Limite de mémoire, entrez
1024 MB
. -
Pour Expiration, entrez
10 seconds
. -
Pour Épinglé, choisissez True.
Pour plus d'informations, veuillez consulter Configuration du cycle de vie pour les fonctions Greengrass Lambda.
-
Sous Paramètres supplémentaires, pour l'accès en lecture au répertoire /sys, sélectionnez Activé.
-
-
-
Choisissez Ajouter une fonction Lambda.
Associez ensuite la ressource secrète à la fonction.
Étape 6 : associer la ressource secrète à la fonction Lambda
Au cours de cette étape, vous associez la ressource secrète à la fonction Lambda de votre groupe Greengrass. Cela associe la ressource à la fonction, ce qui permet à la fonction d'obtenir la valeur du secret local.
-
Sur la page de configuration du groupe, choisissez l'onglet Fonctions Lambda.
-
Choisissez la SecretTestfonction.
-
Sur la page de détails de la fonction, sélectionnez Ressources.
-
Accédez à la section Secrets et choisissez Associer.
-
Choisissez MyTestSecret, puis choisissez Associer.
Étape 7 : Ajouter des abonnements au groupe Greengrass
Au cours de cette étape, vous ajoutez des abonnements qui permettent à AWS IoT la fonction Lambda d'échanger des messages. Un abonnement permet à AWS IoT d'appeler la fonction et à la fonction d'envoyer des données de sortie vers AWS IoT.
-
Créez un abonnement qui permet à AWS IoT de publier des messages à la fonction.
Sur la page de configuration du groupe, choisissez l'onglet Abonnements, puis choisissez Ajouter un abonnement.
-
Sur la page Créer un abonnement, configurez la source et la cible comme suit :
-
Dans Type de source, sélectionnez Fonction Lambda, puis IoT Cloud.
-
Dans Type de cible, choisissez Service, puis choisissez SecretTest.
-
Dans le filtre de rubrique, entrez
secrets/input
, puis choisissez Créer un abonnement.
-
-
Ajoutez un second abonnement. Choisissez l'onglet Abonnements, choisissez Ajouter un abonnement et configurez la source et la cible comme suit :
-
Dans Type de source, choisissez Services, puis sélectionnez SecretTest.
-
Dans Type de cible, choisissez la fonction Lambda, puis sélectionnez IoT Cloud.
-
Dans le filtre de rubrique, entrez
secrets/output
, puis choisissez Créer un abonnement.
-
Étape 8 : Déployer le groupe Greengrass
Déployer le groupe sur l'appareil principal (noyau) Pendant le déploiementAWS IoT Greengrass, extrait la valeur du secret depuis Secrets Manager et crée une copie cryptée locale sur le noyau.
Test de la fonction Lambda
-
Sur la page d'accueil de la AWS IoT console, choisissez Test.
-
Pour S'abonner à la rubrique, utilisez les valeurs suivantes, puis choisissez S'abonner.
Propriété
Valeur
rubrique abonnement
secrets/sortie
Affichage de la charge utile MQTT
Affichage des charges utiles sous forme de chaînes
-
Pour Publier dans le sujet, utilisez les valeurs suivantes, puis choisissez Publier pour appeler la fonction.
Propriété
Valeur
Sujet
secrets/entrée
Message
Conserver le message par défaut. La publication d'un message appelle la fonction Lambda, mais la fonction décrite dans ce didacticiel ne traite pas le corps du message.
En cas de réussite, la fonction publie un message « Success ».