Préparation des AWS IoT emplois - AWS IoT Core

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.

Préparation des AWS IoT emplois

AWS IoT Device Management Le catalogue de packages logiciels étend les AWS IoT tâches grâce à des paramètres de substitution et à l'intégration avec l'indexation du AWS IoT parc, les groupes d'objets dynamiques et le nom réservé à l' AWS IoT objet nommé shadow.

Note

Pour utiliser toutes les fonctionnalités proposées par Software Package Catalog, vous devez créer ces AWS Identity and Access Management (IAM) rôles et politiques : les droits AWS IoT Jobs pour déployer les versions des packages et les droits AWS IoT Jobs pour mettre à jour le shadow nommé réservé. Pour de plus amples informations, veuillez consulter Preparing security.

Paramètres de substitution pour les AWS IoT tâches

Vous pouvez utiliser des paramètres de substitution comme espace réservé dans votre document de AWS IoT travail. Lorsque le service de tâches rencontre un paramètre de substitution, il pointe la tâche vers l'attribut d'une version logicielle nommée pour la valeur du paramètre. Vous pouvez utiliser ce processus pour créer un document de travail unique et transmettre les métadonnées au travail par le biais d'attributs à usage général. Par exemple, vous pouvez transmettre un Amazon Simple Storage Service (Amazon S3)URL, un package logiciel Amazon Resource Name (ARN) ou une signature dans le document de travail via les attributs de version du package.

Les paramètres de substitution doivent être formatés dans le document de travail comme suit :

  • Nom du package logiciel et version du package

    • La chaîne vide entre les deux package::version représente le paramètre de substitution du nom du package logiciel. La chaîne vide entre les deux version::attribute représente le paramètre de substitution de version du package logiciel. Reportez-vous à l'exemple suivant pour utiliser le nom du package et les paramètres de substitution de version du package dans un document de travail : ${aws:iot:package::version::attributes:<attributekey>}

    • Le document de travail remplira automatiquement ces paramètres de substitution en utilisant la version indiquée dans les détails ARN de la version du package. Si vous créez une tâche ou un modèle de tâche pour un déploiement à package unique à l'aide d'une CLI commande API ou, la version ARN d'une version de package est représentée par le destinationPackageVersions paramètre entre CreateJob etDescribeJob.

  • Tous les attributs d'une version de package logiciel

    • Reportez-vous à l'exemple suivant pour utiliser tous les attributs d'un paramètre de substitution de version de package logiciel dans un document de travail : ${aws:iot:package:<packageName>:version:<versionName>:attributes}

Note

Le nom du package, la version du package et tous les paramètres de substitution d'attributs peuvent être utilisés ensemble. Reportez-vous à l'exemple suivant pour utiliser les trois paramètres de substitution dans un document de travail : ${aws:iot:package::version::attributes}

Dans l'exemple suivant, il existe un package logiciel nommé samplePackage et sa version de package nommée possède 2.1.5 les attributs suivants :

  • nom : s3URL, valeur : https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile

    • Cet attribut identifie l'emplacement du fichier de code stocké dans Amazon S3.

  • Nom : signature, valeur : aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj

    • Cet attribut fournit une valeur de signature de code dont l'appareil a besoin comme mesure de sécurité. Pour plus d'informations, consultez Code Signing for Jobs. Remarque : Cet attribut est fourni à titre d'exemple et n'est pas obligatoire dans le cadre du catalogue logiciels ou des tâches.

Pours3URL, le paramètre du document de travail est écrit comme suit :

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }

Poursignature, le paramètre du document de travail est écrit comme suit :

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" }

Le document de travail complet est rédigé comme suit :

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }, ], "signature": [ "samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" ] } }

Une fois la substitution effectuée, le document de travail suivant est déployé sur les appareils :

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile" }, ], "signature": [ "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj" ] } }

Paramètres de substitution (affichage avant et après)

Les paramètres de substitution rationalisent la création d'un document de travail à l'aide de divers indicateurs, par exemple $default pour la version du package par défaut. Il n'est donc plus nécessaire de saisir manuellement des métadonnées de version de package spécifiques pour chaque déploiement de tâches, car ces indicateurs sont remplis automatiquement avec les métadonnées référencées dans la version de package spécifique. Pour plus d'informations sur les attributs de version de package, par exemple $default pour la version de package par défaut, consultezPréparation du document de travail et de la version du package pour le déploiement.

Dans le AWS Management Console, cliquez sur le bouton Aperçu de la substitution dans la fenêtre de l'éditeur de fichier d'instructions de déploiement lors du déploiement d'une tâche pour une version de package afin d'afficher le document de tâche avec et sans les paramètres de substitution.

En utilisant le paramètre « before substitution » dans le DescribeJob et GetJobDocumentAPIs, vous pouvez afficher la API réponse avant et après la suppression des paramètres de substitution. Reportez-vous aux exemples suivants avec le DescribeJob et GetJobDocument APIs :

  • DescribeJob

    • Vue par défaut

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"] }
    • Avant la vue de substitution

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"] }
  • GetJobDocument

    • Vue par défaut

      { "attributes": { "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core", "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI", "streamName": "mqtt-core", "fileId": "0" }, }
    • Avant la vue de substitution

      { "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}", }

Pour plus d'informations sur les AWS IoT tâches, la création de documents de tâches et le déploiement de tâches, consultez la section Tâches.

Préparation du document de travail et de la version du package pour le déploiement

Lorsqu'une version de package est créée, son draft état indique qu'elle est en cours de préparation pour le déploiement. Pour préparer la version du package en vue du déploiement, vous devez créer un document de tâche, enregistrer le document dans un emplacement accessible à la tâche (tel qu'Amazon S3) et confirmer que la version du package possède les valeurs d'attribut que vous souhaitez que le document de tâche utilise. (Remarque : vous ne pouvez mettre à jour les attributs d'une version de package que lorsqu'elle est dans l'draftétat.)

Lorsque vous créez un AWS IoT Job ou un modèle de Job pour un déploiement à package unique, vous disposez des options suivantes pour personnaliser votre document de travail :

Fichier d'instructions de déploiement (recipe)

  • Le fichier d'instructions de déploiement pour une version de package contient les instructions de déploiement, y compris un document de travail intégré, pour déployer une version de package sur plusieurs appareils. Le fichier associe des instructions de déploiement spécifiques à une version de package pour un déploiement rapide et efficace des tâches.

    Dans le AWS Management Console, vous pouvez créer le fichier dans la fenêtre d'aperçu du fichier d'instructions de déploiement, dans l'onglet Configurations de déploiement des versions du flux de travail de création d'un nouveau package. Vous pouvez en tirer parti AWS IoT pour générer automatiquement un fichier d'instructions à partir des attributs de la version de votre package en utilisant Démarrer à partir du fichier AWS IoT recommandé ou en utilisant votre document de travail existant stocké dans un compartiment Amazon S3 en utilisant votre propre fichier d'instructions de déploiement.

    Note

    Si vous utilisez votre propre document de travail, vous pouvez le mettre à jour directement dans la fenêtre d'aperçu du fichier d'instructions de déploiement, mais il ne mettra pas automatiquement à jour votre document de travail d'origine stocké dans votre compartiment Amazon S3.

    Lorsque vous utilisez la commande AWS CLI ou, une API commande telle que CreatePackageVersionGetPackageVersion, ouUpdatePackageVersion, recipe représente le fichier d'instructions de déploiement, qui inclut un document de travail intégré.

    Pour plus d'informations sur ce qu'est un document de travail, consultezConcepts de base.

    Reportez-vous à l'exemple suivant pour le fichier d'instructions de déploiement représenté par recipe :

    { "packageName": "sample-package-name", "versionName": "sample-package-version", ... "recipe": "{...}" }
    Note

    Le fichier d'instructions de déploiement représenté par recipe peut être mis à jour lorsqu'une version de package est dans l'publishedétat d'état, car il est distinct des métadonnées de version de package. Il devient immuable lors du déploiement des tâches.

Artifactattribut de version

  • À l'aide de l'attribut artifact version de la version de votre package logiciel, vous pouvez ajouter l'emplacement Amazon S3 pour les artefacts de version de votre package. Lorsqu'un déploiement de tâche pour la version de votre package est déclenché à l'aide de AWS IoT Jobs, l'URLespace réservé présigné ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url} dans le document de tâche est mis à jour à l'aide du compartiment Amazon S3, de la clé du compartiment et de la version du fichier stocké dans le compartiment Amazon S3. Le compartiment Amazon S3 stockant les artefacts de la version du package doit être situé dans la même région que celle où la version du package a été créée.

    Note

    Pour stocker plusieurs versions d'objets d'un même fichier dans votre compartiment Amazon S3, vous devez activer le contrôle des versions sur votre compartiment. Pour plus d'informations, consultez la section Activation du versionnement sur les buckets.

    Pour accéder aux artefacts de version du package dans le compartiment Amazon S3 lorsque vous utilisez l'UpdatePackageVersionAPIopération CreatePackageVersion or, vous devez disposer des autorisations suivantes :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "arn:<partition>:s3:::<bucket>/<key>" } ] }

    Pour plus d'informations sur l'attribut version artifact dans les UpdatePackageVersion API opérations CreatePackageVersion et, reportez-vous aux sections CreatePackageVersionet UpdatePackageVersion.

    Reportez-vous à l'exemple suivant qui montre l'attribut de version artifact prenant en charge l'emplacement de l'artefact dans Amazon S3 lors de la création d'une nouvelle version de package :

    { "packageName": "sample package name", "versionName": "1.0", "artifact": { "s3Location": { "bucket": "firmware", "key": "image.bin", "version": "12345" } } }
    Note

    Lorsqu'une version de package passe d'un draft état d'état à un published état de statut, les attributs de version du package et l'emplacement des artefacts deviennent immuables. Pour mettre à jour ces informations, vous devez créer une nouvelle version du package et effectuer ces mises à jour alors que vous êtes dans l'draftétat d'état.

Version du package

  • Une version de package logiciel par défaut peut être indiquée dans les versions disponibles du package logiciel fournissant une version de package sécurisée et stable. Il s'agit de la version de base du package logiciel lors du déploiement de la version par défaut du package sur votre parc d'appareils à l'aide de AWS IoT Jobs. Lorsque vous créez une tâche pour déployer la version $default du package d'un package logiciel, la version du package figurant dans le document de tâche et dans le nouveau déploiement de la tâche doit correspondre à$default. La version du package dans le déploiement de la tâche est représentée par CLI les commandes destinationPackageVersions for API et VersionARN dans le AWS Management Console. La version du package dans le document de tâche est représentée par l'espace réservé de document de tâche suivant, illustré ci-dessous :

    arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$default

    Pour créer une tâche ou un modèle de tâche à l'aide de la version du package par défaut, utilisez l'$defaultindicateur dans la CreateJobTemplate API commande CreateJob ou, comme indiqué ci-dessous :

    "$ aws iot create-job \ --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default" --document file://jobdoc.json
    Note

    L'attribut de version $default du package faisant référence à la version par défaut est un attribut facultatif qui n'est requis que pour référencer la version du package par défaut pour un déploiement de tâche via AWS IoT Jobs.

Lorsque vous êtes satisfait de la version du package, publiez-la via la page des détails du package logiciel dans la AWS IoT console ou en lançant l'UpdatePackageVersionAPIopération. Vous pouvez ensuite référencer la version du package lorsque vous créez la tâche via la AWS IoT console ou en exécutant l'CreateJobAPIopération.

Nommer les packages et les versions lors du déploiement

Pour déployer une version de package logiciel sur un appareil, vérifiez que le package logiciel et la version du package référencés dans le document de travail correspondent au package logiciel et à la version du package indiqués dans le destinationPackageVersions paramètre de l'CreateJobAPIopération. S'ils ne correspondent pas, vous recevrez un message d'erreur vous demandant de faire correspondre les deux références. Pour plus d'informations sur les messages d'erreur du catalogue de packages logiciels, consultezMessages d'erreur généraux relatifs au dépannage.

Outre les packages logiciels et les versions de package référencés dans le document de tâche, vous pouvez inclure des packages logiciels et des versions de package supplémentaires dans le destinationPackageVersions paramètre de l'CreateJobAPIopération non référencé dans le document de tâche. Assurez-vous que les informations d'installation nécessaires sont incluses dans le document de travail pour que les appareils installent correctement les versions supplémentaires du package logiciel. Pour plus d'informations sur l'CreateJob APIopération, consultez CreateJob.

Cibler les emplois par le biais de groupes d'objets AWS IoT dynamiques

Le catalogue de logiciels fonctionne avec l'indexation de la flotte, AWS IoT les tâches et les AWS IoT groupes d'objets dynamiques pour filtrer et cibler les appareils de votre flotte afin de sélectionner la version du package à déployer sur vos appareils. Vous pouvez exécuter une requête d'indexation du parc en fonction des informations relatives au package actuel de votre appareil et cibler ces éléments pour une AWS IoT tâche. Vous pouvez également publier des mises à jour logicielles, mais uniquement pour les appareils cibles éligibles. Par exemple, vous pouvez spécifier que vous souhaitez déployer une configuration uniquement sur les appareils qui exécutent actuellement le iot-device-client 1.5.09. Pour plus d'informations, consultez Create a dynamic thing group.

Ombre nommée réservée et versions de package

S'il est configuré, les AWS IoT tâches peuvent mettre à jour le nom réservé à un objet nommé shadow ($package) lorsque la tâche est terminée avec succès. Dans ce cas, vous n'avez pas besoin d'associer manuellement une version de package à l’Ombre réservée nommée d’un objet.

Vous pouvez choisir d'associer ou de mettre à jour manuellement une version de package à l'ombre nommée réservée à l'objet dans les situations suivantes :

  • Vous enregistrez un objet AWS IoT Core sans associer la version du package installé.

  • AWS IoT Jobs n'est pas configuré pour mettre à jour le nom réservé à l'objet nommé shadow.

  • Vous utilisez un processus interne pour expédier les versions des colis à votre flotte et ce processus n'est pas mis à jour AWS IoT Core une fois terminé.

Note

Nous vous recommandons d'utiliser AWS IoT Jobs pour mettre à jour la version du package dans le nom réservé shadow ($package). La mise à jour du paramètre de version dans l'$packageombre par le biais d'autres processus (tels que des API appels manuels ou programmatiques) lorsque AWS IoT Jobs est également configuré pour mettre à jour l'ombre peut entraîner des incohérences entre la version réelle sur l'appareil et la version signalée à l'ombre nommée réservée.

Vous pouvez ajouter ou mettre à jour une version de package pour un objet réservé nommé shadow ($package) par le biais de la console ou de l'UpdateThingShadowAPIopération. Pour plus d'informations, consultez Associer une version de package à un AWS IoT objet.

Note

L'association d'une version de package à un AWS IoT objet ne met pas directement à jour le logiciel de l'appareil. Vous devez déployer la version du package sur l'appareil pour mettre à jour le logiciel de l'appareil.

Désinstallation d'un progiciel et de sa version

$nullest un espace réservé qui invite le service AWS IoT Jobs à supprimer le package logiciel et la version du package existants de l'ombre nommée réservée à l'appareil. $package Pour plus d'informations, veuillez consulter Ombre nommée réservée.

Pour utiliser cette fonctionnalité, remplacez le nom de version à la fin du nom de ressource destinationPackageVersionAmazon (ARN) par$null. Ensuite, vous devez demander à votre service de supprimer le logiciel de l'appareil.

L'autorisation ARN utilise le format suivant :

arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null

Par exemple,

$ aws iot create-job \ ... \ --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]