Étape 5 : Créez votre composant dans le AWS IoT Greengrass service - AWS IoT Greengrass

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.

Étape 5 : Créez votre composant dans le AWS IoT Greengrass service

Lorsque vous avez terminé de développer un composant sur votre appareil principal, vous pouvez le télécharger vers le AWS IoT Greengrass service dans le AWS Cloud. Vous pouvez également créer le composant directement dans la AWS IoT Greengrass console. AWS IoT Greengrass fournit un service de gestion des composants qui héberge vos composants afin que vous puissiez les déployer sur des appareils individuels ou des flottes d'appareils. Pour télécharger un composant vers le AWS IoT Greengrass service, vous devez suivre les étapes suivantes :

  • Téléchargez les artefacts des composants dans un compartiment S3.

  • Ajoutez l'Amazon Simple Storage Service (Amazon S3) de chaque artefact à la URI recette du composant.

  • Créez un composant à AWS IoT Greengrass partir de la recette du composant.

Dans cette section, vous devez effectuer ces étapes sur votre appareil principal Greengrass pour télécharger votre composant Hello World sur le AWS IoT Greengrass service.

  1. Utilisez un compartiment S3 dans votre AWS compte pour héberger les artefacts des AWS IoT Greengrass composants. Lorsque vous déployez le composant sur un périphérique principal, celui-ci télécharge les artefacts du composant depuis le compartiment.

    Vous pouvez utiliser un compartiment S3 existant ou en créer un nouveau.

    1. Dans la console Amazon S3, sous Buckets, choisissez Create bucket.

    2. Pour Nom du compartiment, entrez un nom de compartiment unique. Par exemple, vous pouvez utiliser greengrass-component-artifacts-region-123456789012. Remplacez 123456789012 avec votre identifiant de AWS compte et region avec celui Région AWS que vous utilisez pour ce didacticiel.

    3. Pour AWS la région, sélectionnez la AWS région que vous utilisez pour ce didacticiel.

    4. Choisissez Créer un compartiment.

    5. Sous Buckets, choisissez le bucket que vous avez créé, téléchargez le hello_world.py script dans le artifacts/com.example.HelloWorld/1.0.0 dossier du bucket. Pour plus d'informations sur le téléchargement d'objets vers des compartiments S3, consultez la section Chargement d'objets dans le guide de l'utilisateur d'Amazon Simple Storage Service.

    6. Copiez le S3 URI de l'hello_world.pyobjet dans le compartiment S3. Cela URI devrait ressembler à l'exemple suivant. Remplacez amzn-s3-demo-bucket par le nom du compartiment S3.

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. Autorisez le périphérique principal à accéder aux artefacts des composants dans le compartiment S3.

    Chaque appareil principal a un IAMrôle central qui lui permet d'interagir avec le AWS cloud AWS IoT et d'envoyer des journaux vers celui-ci. Ce rôle de périphérique n'autorise pas l'accès aux compartiments S3 par défaut. Vous devez donc créer et associer une politique permettant au périphérique principal de récupérer les artefacts des composants du compartiment S3.

    Si le rôle de votre appareil autorise déjà l'accès au compartiment S3, vous pouvez ignorer cette étape. Sinon, créez une IAM politique autorisant l'accès et associez-la au rôle, comme suit :

    1. Dans le menu de navigation de la IAMconsole, choisissez Politiques, puis choisissez Créer une politique.

    2. JSONDans l'onglet, remplacez le contenu de l'espace réservé par la politique suivante. Remplacez amzn-s3-demo-bucket par le nom du compartiment S3 contenant les artefacts des composants à télécharger par le périphérique principal.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    3. Choisissez Suivant.

    4. Dans la section Détails de la politique, pour Nom, entrezMyGreengrassV2ComponentArtifactPolicy.

    5. Choisissez Create Policy (Créer une politique).

    6. Dans le menu de navigation de la IAMconsole, choisissez Rôle, puis choisissez le nom du rôle pour le périphérique principal. Vous avez spécifié ce nom de rôle lors de l'installation du logiciel AWS IoT Greengrass Core. Si vous n'avez pas spécifié de nom, le nom par défaut estGreengrassV2TokenExchangeRole.

    7. Sous Autorisations, choisissez Ajouter des autorisations, puis choisissez Joindre des politiques.

    8. Sur la page Ajouter des autorisations, cochez la case à côté de la MyGreengrassV2ComponentArtifactPolicy politique que vous avez créée, puis choisissez Ajouter des autorisations.

  3. Utilisez la recette du composant pour créer un composant dans la AWS IoT Greengrass console.

    1. Dans le menu de navigation de la AWS IoT Greengrass console, choisissez Composants, puis sélectionnez Créer un composant.

    2. Sous Informations sur le composant, sélectionnez Entrer la recette en tant que JSON. La recette de remplacement doit ressembler à l'exemple suivant.

      { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    3. Remplacez l'espace réservé URI dans chaque Artifacts section par le S3 URI de votre hello_world.py objet.

    4. Choisissez Créer un composant.

    5. Sur le com.example. HelloWorldpage du composant, vérifiez que l'état du composant est déployable.

Pour télécharger votre composant Hello World
  1. Utilisez un compartiment S3 dans votre compartiment Compte AWS pour héberger les artefacts des AWS IoT Greengrass composants. Lorsque vous déployez le composant sur un périphérique principal, celui-ci télécharge les artefacts du composant depuis le compartiment.

    Vous pouvez utiliser un compartiment S3 existant ou exécuter la commande suivante pour créer un compartiment. Cette commande crée un compartiment avec votre Compte AWS identifiant et Région AWS pour former un nom de compartiment unique. Remplacez 123456789012 avec votre Compte AWS identifiant et region avec celui Région AWS que vous utilisez pour ce didacticiel.

    aws s3 mb s3://greengrass-component-artifacts-123456789012-region

    La commande affiche les informations suivantes si la demande aboutit.

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. Autorisez le périphérique principal à accéder aux artefacts des composants dans le compartiment S3.

    Chaque appareil principal a un IAMrôle central qui lui permet AWS IoT d'interagir avec le AWS Cloud. Ce rôle de périphérique n'autorise pas l'accès aux compartiments S3 par défaut. Vous devez donc créer et associer une politique permettant au périphérique principal de récupérer les artefacts des composants du compartiment S3.

    Si le rôle du périphérique principal autorise déjà l'accès au compartiment S3, vous pouvez ignorer cette étape. Sinon, créez une IAM politique autorisant l'accès et associez-la au rôle, comme suit :

    1. Créez un fichier appelé component-artifact-policy.json et copiez ce qui suit JSON dans le fichier. Cette politique permet d'accéder à tous les fichiers d'un compartiment S3. Remplacez amzn-s3-demo-bucket par le nom du compartiment S3.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. Exécutez la commande suivante pour créer la politique à partir du document de stratégie danscomponent-artifact-policy.json.

      Linux or Unix
      aws iam create-policy \\ --policy-name MyGreengrassV2ComponentArtifactPolicy \\ --policy-document file://component-artifact-policy.json
      Windows Command Prompt (CMD)
      aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
      PowerShell
      aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

      Copiez la politique Amazon Resource Name (ARN) à partir des métadonnées de la politique dans la sortie. Vous l'ARNutiliserez pour associer cette politique au rôle principal de l'appareil à l'étape suivante.

    3. Exécutez la commande suivante pour associer la politique au rôle principal de l'appareil. Remplacez GreengrassV2TokenExchangeRole avec le nom du rôle du périphérique principal. Vous avez spécifié ce nom de rôle lors de l'installation du logiciel AWS IoT Greengrass Core. Remplacez la politique ARN par celle ARN de l'étape précédente.

      Linux or Unix
      aws iam attach-role-policy \\ --role-name GreengrassV2TokenExchangeRole \\ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      Windows Command Prompt (CMD)
      aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      PowerShell
      aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

      Si la commande n'a aucune sortie, elle a réussi. Le périphérique principal peut désormais accéder aux artefacts que vous téléchargez dans ce compartiment S3.

  3. Téléchargez l'artefact du script Python Hello World dans le compartiment S3.

    Exécutez la commande suivante pour télécharger le script sur le même chemin dans le compartiment où le script existe sur votre AWS IoT Greengrass cœur. Remplacez amzn-s3-demo-bucket par le nom du compartiment S3.

    Linux or Unix
    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    Windows Command Prompt (CMD)
    aws s3 cp ^ artifacts/com.example.HelloWorld/1.0.0/hello_world.py ^ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    PowerShell
    aws s3 cp ` artifacts/com.example.HelloWorld/1.0.0/hello_world.py ` s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    La commande affiche une ligne qui commence par upload: si la demande aboutit.

  4. Ajoutez l'Amazon S3 de l'artefact URI à la recette du composant.

    L'Amazon S3 URI est composé du nom du compartiment et du chemin d'accès à l'objet artefact contenu dans le compartiment. L'Amazon S3 de votre artefact de script URI est URI celui sur lequel vous avez chargé l'artefact à l'étape précédente. Cela URI devrait ressembler à l'exemple suivant. Remplacez amzn-s3-demo-bucket par le nom du compartiment S3.

    s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Pour ajouter l'artefact à la recette, ajoutez une liste Artifacts contenant une structure avec Amazon S3URI.

    JSON
    "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    Ouvrez le fichier de recette dans un éditeur de texte.

    Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour créer le fichier.

    nano recipes/com.example.HelloWorld-1.0.0.json

    Ajoutez l'artefact à la recette. Votre fichier de recette doit ressembler à l'exemple suivant.

    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    YAML
    Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Ouvrez le fichier de recette dans un éditeur de texte.

    Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour créer le fichier.

    nano recipes/com.example.HelloWorld-1.0.0.yaml

    Ajoutez l'artefact à la recette. Votre fichier de recette doit ressembler à l'exemple suivant.

    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  5. Créez une ressource de composant à AWS IoT Greengrass partir de la recette. Exécutez la commande suivante pour créer le composant à partir de la recette, que vous fournissez sous forme de fichier binaire.

    JSON
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
    YAML
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml

    La réponse ressemble à l'exemple suivant si la demande aboutit.

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    Copiez le arn depuis la sortie pour vérifier l'état du composant à l'étape suivante.

    Note

    Vous pouvez également voir votre composant Hello World dans la AWS IoT Greengrass console sur la page Composants.

  6. Vérifiez que le composant est créé et qu'il est prêt à être déployé. Lorsque vous créez un composant, son état estREQUESTED. AWS IoT Greengrass Vérifie ensuite que le composant est déployable. Vous pouvez exécuter la commande suivante pour connaître l'état du composant et vérifier que celui-ci est déployable. Remplacez le arn par celui ARN de l'étape précédente.

    aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"

    Si le composant est validé, la réponse indique que l'état du composant estDEPLOYABLE.

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }

Votre composant Hello World est désormais disponible en AWS IoT Greengrass. Vous pouvez le redéployer sur cet appareil principal de Greengrass ou sur d'autres appareils principaux.