

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.

# AWS IoT Device Management Catalogue de packages logiciels
<a name="software-package-catalog"></a>

Avec AWS IoT Device Management Software Package Catalog, vous pouvez conserver un inventaire des packages logiciels et de leurs versions. Vous pouvez associer des versions de package à des objets individuels et à des groupes d'objets AWS IoT dynamiques, et les déployer par le biais de processus ou de [AWS IoT tâches](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) internes. 

Un package logiciel contient une ou plusieurs versions de package, qui constituent un ensemble de fichiers qui peuvent être déployés en tant qu'une unité unique. Les versions du package peuvent contenir le microprogramme, les mises à jour du système d'exploitation, les applications de l'appareil, les configurations et les correctifs de sécurité. Au fur et à mesure que le logiciel évolue, vous pouvez créer une nouvelle version du package et la déployer dans votre flotte. 

Le hub de AWS IoT progiciels se trouve à l'intérieur AWS IoT Core. Vous pouvez utiliser le hub pour enregistrer et gérer de manière centralisée l'inventaire et les métadonnées de vos progiciels, ce qui crée un catalogue des packages logiciels et de leurs versions. Vous pouvez choisir de regrouper les appareils en fonction des packages logiciels et des versions de packages déployés sur l'appareil. Cette fonctionnalité permet de conserver l'inventaire des packages côté appareil sous la forme d'une ombre nommée, d'associer et de regrouper les appareils en fonction des versions, et de visualiser la distribution des versions de packages au sein du flotte à l'aide des métriques de la flotte.

Si vous disposez d'un système interne de déploiement de logiciels, vous pouvez continuer à utiliser ce processus pour déployer les versions de vos packages. Si vous n'avez pas établi de processus de déploiement ou si vous préférez, nous vous recommandons d'utiliser des [AWS IoT tâches](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) pour utiliser les fonctionnalités du catalogue des packages logiciels. Pour plus d'informations, consultez la section [Préparation AWS IoT des tâches](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

**Topics**
+ [Préparation à l'utilisation du Catalogue de Logiciels](preparing-to-use-software-package-catalog.md)
+ [Préparation de la sécurité](preparing-security.md)
+ [Préparation de l'indexation de la flotte](preparing-fleet-indexing.md)
+ [Préparation des AWS IoT emplois](preparing-jobs-for-service-package-catalog.md)
+ [Démarrage avec le Catalogue de Logiciels](getting-started-with-software-package-catalog.md)

# Préparation à l'utilisation du Catalogue de Logiciels
<a name="preparing-to-use-software-package-catalog"></a>

La section suivante fournit une vue d'ensemble du cycle de vie des versions du package et des informations sur l'utilisation du catalogue de packages AWS IoT Device Management logiciels. 

## Cycle de vie des versions du package
<a name="package-version-lifecycle"></a>

Une version d'un package peut évoluer selon les états du cycle de vie suivants : `draft``published`, et `deprecated`. Cela peut aussi l'être `deleted`.

![\[Le cycle de vie de la version du package avec le brouillon, la publication et la version obsolète. Il peut également être supprimé.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/package-catalog-version-lifecycle.png)

+ **Ébauche**

  Lorsque vous créez une version de package, elle est dans un `draft` état. Cet état indique que le package logiciel est en cours de préparation ou qu'il est incomplet.

  Tant que la version du package est dans cet état, vous ne pouvez pas la déployer. Vous pouvez modifier la description, les attributs et les balises de la version du package.

  Vous pouvez effectuer la transition d'une version de package `draft` existante `published` ou existante en `deleted` utilisant la console, ou en exécutant des opérations d'[DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)ou d'API.
+ **Publié**

  Lorsque la version de votre package est prête à être déployée, passez de la version du package à un `published` état. Dans cet état, vous pouvez choisir d'identifier la version du package comme version par défaut en modifiant le package logiciel dans la console ou via l'opération [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API. Dans cet état, vous ne pouvez modifier que la description et les balises.

  Vous pouvez effectuer la transition d'une version de package `published` existante `deprecated` ou existante en `deleted` utilisant la console ou en exécutant des opérations d'[DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)ou d'API.
+ **Obsolète**

  Si une nouvelle version de package est disponible, vous pouvez transférer les versions antérieures de package vers `deprecated`. Vous pouvez toujours déployer des tâches avec une version de package obsolète. Vous pouvez également nommer une version de package obsolète comme version par défaut et modifier uniquement la description et les balises. 

  Envisagez de transférer la version d'un package vers une version obsolète, mais que vous avez toujours des appareils sur le terrain qui utilisent l'ancienne version ou que vous devez la maintenir en raison d'une dépendance au `deprecated` moment de l'exécution. 

  Vous pouvez effectuer la transition d'une version de package `deprecated ` existante `published` ou existante en `deleted` utilisant la console ou en exécutant des opérations d'[DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)ou d'API.
+ **Supprimé**

  Lorsque vous n'avez plus l'intention d'utiliser une version de package, vous pouvez la supprimer à l'aide de la console ou en lançant l'opération [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
**Note**  
Si vous supprimez une version de package alors que des tâches en attente y font référence, vous recevrez un message d'erreur lorsque la tâche sera terminée avec succès et que vous tenterez de mettre à jour l'ombre réservée nommée.  
 Si la version du package logiciel que vous souhaitez supprimer est nommée version du package par défaut, vous devez d'abord mettre à jour le package pour nommer une autre version par défaut ou laisser le champ anonyme. Vous pouvez le faire à l'aide de la console ou de l'opération [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. (Pour supprimer une version de package nommée par défaut, définissez le [unsetDefaultVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html#iot-UpdatePackage-request-unsetDefaultVersion)paramètre sur true lorsque vous lancez l'opération [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)d'API).

  Si vous supprimez un package logiciel via la console, toutes les versions du package associées à ce package sont supprimées, sauf si l'une d'entre elles est désignée comme version par défaut.

## Conventions de dénomination des versions du package
<a name="package-version-naming"></a>

Lorsque vous nommez des versions de package, il est important de planifier et d'appliquer une stratégie de dénomination logique afin que vous et les autres puissiez facilement identifier la dernière version du package et la progression des versions. Vous devez fournir un nom de version lors de la création de la version du package, mais la stratégie et le format dépendent en grande partie de votre analyse de rentabilisation.

À titre de bonne pratique, nous vous recommandons d'utiliser le format de versionnement [SemVer](https://semver.org/)sémantique. Par exemple, `1.2.3` où `1` se trouve la version majeure pour les modifications fonctionnellement incompatibles, `2` la version majeure pour les modifications fonctionnellement compatibles et `3` la version corrective (pour les corrections de bogues). Pour plus d'informations, veuillez consulter la rubrique [Gestion des versions sémantique 2.0.0](https://semver.org/). Pour plus d'informations sur les exigences relatives au nom de version du package, consultez [VersionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax) dans le guide de référence de l' AWS IoT API.

## Version par défaut
<a name="default-version"></a>

La définition d'une version par défaut est facultative. Vous pouvez ajouter ou supprimer des versions de package par défaut. Vous pouvez également déployer une version de package qui n'est pas nommée version par défaut.

Lorsque vous créez une version de package, elle est placée dans un `draft` état et ne peut pas être nommée version par défaut tant que vous n'avez pas fait passer la version du package à la version publiée. Le Catalogue de Logiciels ne sélectionne pas automatiquement une version par défaut ni ne met à jour une version de package plus récente par défaut. Vous devez nommer intentionnellement la version du package que vous choisissez via la console ou en lançant l'opération [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)d'API.

## Attributs de version
<a name="version-attributes"></a>

Les attributs de version et leurs valeurs contiennent des informations importantes sur les versions de vos packages. Nous vous recommandons de définir des attributs généraux pour un package ou une version de package. Par exemple, vous pouvez créer une paire nom-valeur pour la plate-forme, l'architecture, le système d'exploitation, la date de sortie, l'auteur ou l'URL Amazon S3.

 Lorsque vous créez une AWS IoT tâche avec un document de tâche, vous pouvez également choisir d'utiliser une variable de substitution (`$parameter`) qui fait référence à la valeur d'un attribut. Pour plus d'informations, consultez la section [Préparation AWS IoT des tâches](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

Les attributs de version utilisés dans les versions de package ne seront pas automatiquement ajoutés à l'ombre nommée réservée et ne peuvent pas être indexés ou interrogés directement via Fleet Indexing. Pour indexer ou interroger les attributs de version d'un package via Fleet Indexing, vous pouvez renseigner l'attribut de version dans l'ombre nommée réservée.

Nous recommandons que le paramètre d'attribut de version figurant dans le périphérique de capture d'ombres réservé indique les propriétés, telles que le système d'exploitation et l'heure d'installation. Ils peuvent également être indexés et interrogés via Fleet Indexing.

Les attributs de version ne sont pas tenus de respecter une convention de dénomination spécifique. Vous pouvez créer des paires nom-valeur pour répondre aux besoins de votre entreprise. La taille combinée de tous les attributs d'une version de package est limitée à 3KB. Pour plus d'informations, veillez consultez [Software Package Catalog software package and package versions limits](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#software_package_catalog_limits).

**Utilisation de tous les attributs dans un document de travail**

Vous pouvez faire en sorte que tous les attributs de version du package soient automatiquement ajoutés à votre déploiement de tâches pour les appareils sélectionnés. Pour utiliser automatiquement tous les attributs de version du package par programmation dans une API ou une commande CLI, reportez-vous à l'exemple de document de tâche suivant :

```
"TestPackage": "${aws:iot:package:TestPackage:version:PackageVersion:attributes}"
```

## Nomenclature logicielle
<a name="software-bill-of-materials"></a>

La nomenclature logicielle (SBOM) fournit un référentiel central pour tous les aspects de votre progiciel. Outre le stockage des packages logiciels et des versions des packages, vous pouvez stocker la nomenclature logicielle (SBOM) associée à chaque version de AWS IoT Device Management package dans le catalogue des packages logiciels. Un package logiciel contient une ou plusieurs versions de package et chaque version de package comprend un ou plusieurs composants. Chacun de ces composants prenant en charge la composition d'une version de package spécifique peut être décrit et catalogué à l'aide d'une nomenclature logicielle. Les normes industrielles relatives aux nomenclatures logicielles prises en charge sont SPDX et CycloneDX. Lorsqu'un SBOM est créé pour la première fois, il est validé par rapport aux formats standard du secteur SPDX et CycloneDX. Pour plus d'informations sur le SPDX, consultez System [Package Data Exchange](https://spdx.dev/). [Pour plus d'informations sur CycloneDx, voir CycloneDx.](https://cyclonedx.org/)

La nomenclature du logiciel décrit tous les aspects des composants d'une version de package spécifique, tels que les informations sur le package, les informations sur les fichiers et les autres métadonnées pertinentes. Consultez l'exemple ci-dessous de structure de document de nomenclature logicielle au format SPDX :

![\[Exemple de SBOM au format SPDX.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/spdx-2.3-document.png)


### Avantages de la nomenclature logicielle
<a name="spc-sbom-benefits"></a>

L'un des principaux avantages de l'ajout de votre nomenclature logicielle pour une version de package dans le catalogue de packages logiciels est la gestion des vulnérabilités.

**Gestion des vulnérabilités**

L'évaluation et l'atténuation de votre vulnérabilité aux risques de sécurité apparents liés aux composants logiciels restent essentiels pour protéger l'intégrité de votre parc d'appareils. En ajoutant la nomenclature logicielle stockée dans le catalogue des packages logiciels pour chaque version de package, vous pouvez identifier de manière proactive les failles de sécurité en identifiant les appareils à risque en fonction de la version de leur package et du SBOM à l'aide de votre propre solution de gestion des vulnérabilités interne. Vous pouvez déployer des correctifs sur les appareils concernés et protéger votre parc d'appareils.

### Stockage de la nomenclature logicielle
<a name="spc-sbom-storage"></a>

La nomenclature logicielle (SBOM) de chaque version du package logiciel est stockée dans un compartiment Amazon S3 à l'aide de la fonctionnalité de gestion des versions d'Amazon S3. Le compartiment Amazon S3 stockant le SBOM doit être situé dans la même région que celle où la version du package a été créée. Un compartiment Amazon S3 utilisant la fonctionnalité de gestion des versions conserve plusieurs variantes d'un objet dans le même compartiment. Pour plus d'informations sur l'utilisation de la gestion des versions dans un compartiment Amazon S3, consultez [Utilisation de la gestion des versions dans les compartiments Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html).

**Note**  
Chaque version du progiciel peut être associée à plusieurs fichiers SBOM, mais les fichiers SBOM doivent être stockés dans un seul fichier d'archive zip.

La clé Amazon S3 et l'ID de version spécifiques à votre compartiment sont utilisés pour identifier de manière unique chaque version d'une nomenclature logicielle pour une version de package.

**Note**  
Pour une version de package contenant un seul fichier SBOM, vous pouvez stocker ce fichier SBOM dans votre compartiment Amazon S3 sous forme de fichier d'archive zip.  
Pour une version de package contenant plusieurs fichiers SBOM, vous devez placer tous les fichiers SBOM dans un seul fichier d'archive zip, puis stocker ce fichier d'archive zip dans votre compartiment Amazon S3.  
Tous les fichiers SBOM stockés dans le fichier d'archive zip unique dans les deux scénarios sont formatés sous forme de fichiers SPDX ou CyclonedX .json.

**Politique d'autorisations**

Pour AWS IoT agir en tant que principal désigné pour accéder aux fichiers d'archive zip SBOM stockés dans le compartiment Amazon S3, vous avez besoin d'une politique d'autorisation basée sur les ressources. Reportez-vous à l'exemple suivant pour connaître la bonne politique d'autorisation basée sur les ressources :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "iot.amazonaws.com"
                ]
        },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucketName/*"
        }
    ]
}
```

Pour plus d'informations sur les politiques d'autorisation basées sur les ressources, voir [AWS IoT politiques basées sur les ressources](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies)

**Mettre à jour le SBOM**

Vous pouvez mettre à jour la nomenclature logicielle aussi souvent que nécessaire pour protéger et améliorer votre parc d'appareils. Chaque fois que la nomenclature du logiciel est mise à jour dans votre compartiment Amazon S3, l'ID de version change et vous devez associer la nouvelle URL du compartiment Amazon S3 à la version du package logiciel appropriée. Vous verrez le nouvel ID de version dans la colonne **Amazon S3 Object version ID** sur la page de version du package dans le AWS Management Console. En outre, vous pouvez utiliser l'opération API `[GetPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_GetPackageVersion.html)` ou la commande CLI `[get-package-version](https://docs.aws.amazon.com/cli/latest/reference/iot/get-package-version.html)` pour afficher le nouvel ID de version.

**Note**  
La mise à jour de votre nomenclature logicielle, qui entraînera l'attribution d'un nouvel identifiant de version, n'entraînera pas la création d'une nouvelle version du package.

Pour plus d'informations sur les clés d'objet Amazon S3, consultez [Création de noms de clés d'objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

## Activation de l'indexation AWS IoT de la flotte
<a name="enable-fleet-indexing"></a>

L'activation AWS IoT de l'indexation du parc est obligatoire pour utiliser le catalogue de packages AWS IoT Device Management logiciels. Pour tirer parti de l'indexation du AWS IoT parc avec Software Package Catalog, définissez le nom réservé shadow (`$package`) comme source de données pour chaque appareil sur lequel vous souhaitez indexer et recueillir des métriques. Pour plus d'informations sur les ombres nommées réservées, consultez[Ombre nommée réservée](#reserved-named-shadow).

L'indexation du parc fournit un support qui permet de regrouper AWS IoT les objets par le biais de groupes d'objets dynamiques filtrés par version de progiciel. Par exemple, l'indexation de la flotte peut identifier les éléments pour lesquels une version de package spécifique est installée ou non, pour laquelle aucune version de package n'est installée ou qui correspondent à des paires nom-valeur spécifiques. Enfin, l'indexation du parc fournit des indicateurs standard et personnalisés que vous pouvez utiliser pour avoir un aperçu de l'état de votre parc d'appareils. Pour de plus amples informations, veuillez consulter [Préparation de l'indexation de la flotte](preparing-fleet-indexing.md).

**Note**  
L'activation de l'indexation du parc pour le Catalogue de Logiciels entraîne des coûts de service standard. Pour plus d'informations, consultez [AWS IoT Device Management Pricing](https://aws.amazon.com/iot-device-management/pricing/) 

## Ombre nommée réservée
<a name="reserved-named-shadow"></a>

Le Ombre nommée réservée`$package`, reflète l'état des packages logiciels et des versions de packages installés sur l'appareil. L'indexation de flotte utilise l'ombre nommée réservée comme source de données pour créer des métriques standard et personnalisées afin que vous puissiez interroger l'état de votre flotte. Pour de plus amples informations, veuillez consulter [Preparing fleet indexing](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html).

Une ombre nommée réservée est similaire à une [ombre nommée](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html), sauf que son nom est prédéfini et que vous ne pouvez pas le modifier. En outre, l'ombre nommée réservée n'est pas mise à jour avec les métadonnées et utilise uniquement les `attributes` et `version` mots clés.

Les demandes de mise à jour qui incluent d'autres mots clés, tels que `description`, recevront une réponse d'erreur dans le `rejected` sujet. Pour plus d'informations, consultez [Device Shadow error messages](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-error-messages.html).

Il peut être créé lorsque vous créez un AWS IoT objet via la console, lorsqu'une AWS IoT tâche se termine avec succès et met à jour le shadow, et si vous lancez l'opération d'[https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)API. Pour plus d'informations, consultez [UpdateThingShadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_UpdateThingShadow)le guide du AWS IoT Core développeur. 

**Note**  
L'indexation de l'ombre nommée réservée n'est pas prise en compte dans le nombre d'ombres nommées que l'indexation de flotte peut indexer. Pour plus d'informations, consultez [AWS IoT Device Management fleet indexing limits and quotas](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). En outre, si vous choisissez de faire en sorte que les AWS IoT jobs mettent à jour l'ombre nommée réservée lorsqu'une tâche est terminée avec succès, l'appel d'API est comptabilisé dans votre Device Shadow et vos opérations de registre et peut entraîner un coût. Pour plus d'informations, consultez les rubriques [Limites et quotas des AWS IoT Device Management tâches](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits) ainsi que le type de données de l'[IndexingFilter](https://docs.aws.amazon.com/iot/latest/apireference/API_IndexingFilter.html)API.

**Structure de l'`$package`ombre**

L'ombre nommée réservée contient les éléments suivants :

```
{
    "state": {
        "reported": {
            "<packageName>": {
                "version": "",
                "attributes": {
                }
            }
        }
    },
    "version" : 1
    "timestamp" : 1672531201
}
```

Les propriétés de l'ombre sont mises à jour avec les informations suivantes :
+  `<packageName>` : nom du package logiciel installé, qui est mis à jour avec le paramètre [PackageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html#API_CreatePackage_RequestSyntax). 
+  `version` : nom de la version du package installé, qui est mise à jour avec le paramètre [versionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax). 
+  `attributes` : métadonnées facultatives stockées par l'appareil et indexées par l'indexation de la flotte. Cela permet aux clients d'interroger leurs index en fonction des données stockées. 
+ `version` : le numéro de version de l’ombre. Elle est automatiquement incrémentée chaque fois que l'ombre est mise à jour et commence à `1`. 
+ `timestamp` :Indique quand l'ombre a été mise à jour pour la dernière fois et est enregistrée à l'[heure Unix.](https://en.wikipedia.org/wiki/Unix_time)

Pour plus d'informations sur le format et le comportement d'une ombre nommée, consultez [Service AWS IoT Device Shadow Ordre des messages](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html#message-ordering). 

## Suppression d'un package logiciel et de ses versions
<a name="deleting-packages-and-versions"></a>

Avant de supprimer un package logiciel, effectuez les opérations suivantes :
+ Vérifiez que le package et ses versions ne sont pas activement déployés. 
+ Supprimez d'abord toutes les versions associées. Si l'une des versions est désignée comme **version par défaut**, vous devez supprimer la version par défaut nommée du package. La désignation d'une version par défaut étant facultative, il n'y a aucun conflit lors de sa suppression. Pour supprimer la version par défaut du package logiciel, modifiez le package via la console ou utilisez l'opération [ UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

Tant qu'il n'existe pas de version de package par défaut nommée, vous pouvez utiliser la console pour supprimer un package logiciel et toutes ses versions de package seront également supprimées. Si vous utilisez un appel d'API pour supprimer des packages logiciels, vous devez d'abord supprimer les versions des packages, puis le package logiciel. 

# Préparation de la sécurité
<a name="preparing-security"></a>

Cette section décrit les principales exigences de sécurité pour le catalogue de packages AWS IoT Device Management logiciels.

## Authentification basée sur les ressources
<a name="resource-based-authorization"></a>

Le Catalogue de Logiciels utilise une autorisation basée sur les ressources pour renforcer la sécurité lors de la mise à jour des logiciels de votre flotte. Cela signifie que vous devez créer une politique Gestion des identités et des accès AWS (IAM) qui accorde les droits d'exécution`create`,, `read` `update``delete`, et d'`list`actions pour les packages logiciels et les versions de packages, et référencer les packages logiciels et les versions de package spécifiques que vous souhaitez déployer dans la `Resources` section. Vous avez également besoin de ces droits pour pouvoir mettre à jour l'[ombre nommée réservée](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow). Vous référencez les packages logiciels et les versions des packages en incluant un Amazon Resource Name (ARN) pour chaque entité.

**Note**  
Si vous souhaitez que la politique accorde des droits pour les appels d'API de version de package (tels que [CreatePackageVersion[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html),, [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)), vous devez inclure à la *fois* le package logiciel et la version du package ARNs dans la politique. Si vous souhaitez que la politique accorde des droits pour les appels d'API des packages logiciels (tels que [CreatePackage[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html), et [DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html)), vous devez inclure uniquement l'ARN du package logiciel dans la politique.

Structurez le package logiciel et la version du package ARNs comme suit :
+ Package logiciel : `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ Version du package : `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**Note**  
Il existe d'autres droits connexes que vous pouvez inclure dans cette politique. Par exemple, vous pouvez inclure un ARN pour le `job`, `thinggroup`, et`jobtemplate`. Pour plus d'informations et une liste complète des options de politique, consultez la section [Sécurisation des utilisateurs et des appareils avec AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html).

Par exemple, si vous disposez d'un package logiciel et d'une version de package nommés comme suit :
+ AWS IoT chose : `myThing`
+ Nom du package : `samplePackage`
+ Version `1.0.0`

La politique doit ressembler à l'exemple suivant :

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:createPackage",
                "iot:createPackageVersion",
                "iot:updatePackage",
                "iot:updatePackageVersion"
            ],
            "Resource": [
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage",
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
        }
    ]
}
```

## AWS IoT Droits de travail pour déployer des versions de packages
<a name="job-rights-deploy-versions"></a>

Pour des raisons de sécurité, il est important que vous accordiez les droits de déploiement de packages et de versions de packages, et que vous nommiez les packages et versions de packages spécifiques qu'ils sont autorisés à déployer. Pour ce faire, vous créez un rôle et une politique IAM qui autorisent le déploiement de tâches avec des versions de package. La politique doit spécifier les versions du package de destination en tant que ressource.

**Politique IAM**

La politique IAM accorde le droit de créer une tâche qui inclut le package et la version nommés dans la `Resource` section.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:CreateJob",
                "iot:CreateJobTemplate"
            ],
            "Resource":[
                "arn:aws:iot:*:111122223333:job/<jobId>",
                "arn:aws:iot:*:111122223333:thing/<thingName>/$package",
                "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>",
                "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>",
                "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
            ]
        }
    ]
}
```

**Note**  
Si vous souhaitez déployer une tâche qui désinstalle un package logiciel et une version de package, vous devez autoriser un ARN contenant la version du package`$null`, comme dans le cas suivant :

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

## AWS IoT Droits de travail pour mettre à jour l'ombre nommée réservée
<a name="job-rights-update-reserved-named-shadow"></a>

Pour permettre aux tâches de mettre à jour le nom réservé de l'objet lorsque la tâche est terminée avec succès, vous devez créer un rôle et une politique IAM. Il existe deux manières de procéder dans la AWS IoT console. La première consiste à créer un package logiciel dans la console. Si la boîte de dialogue **Activer les dépendances pour la gestion des packages** s'affiche, vous pouvez choisir d'utiliser un rôle existant ou d'en créer un nouveau. Dans la AWS IoT console, vous pouvez également choisir **Gérer l'indexation** dans **Paramètres**, puis **Gérer l'indexation pour les packages et les versions des appareils**. 

**Note**  
Si vous choisissez de demander au service AWS IoT Job de mettre à jour l'ombre nommée réservée lorsqu'une tâche est terminée avec succès, l'appel d'API est pris en compte dans vos **opérations de Device Shadow et de registre** et peut entraîner un coût. Pour en savoir plus, consultez [Pricing AWS IoT Core](https://aws.amazon.com/iot-core/pricing/) (Tarification).

Lorsque vous utilisez l'option **Créer un rôle**, le nom du rôle généré commence par `aws-iot-role-update-shadows` et contient les politiques suivantes :

 **Configuration de rôles**

**Permissions**  
La politique d'autorisation accorde le droit d'interroger et de mettre à jour l’ombre d’objet. Le `$package` paramètre de l'ARN de la ressource cible l'ombre nommée réservée.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:DescribeEndpoint",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:111122223333:thing/<thingName>/$package"
            ]
        }
    ]
}
```

**Relation d’approbation**  
Outre la politique d'autorisations, le rôle nécessite une relation de confiance avec AWS IoT Core enfin que entité peut assumer le rôle et mettre à jour le nom d'ombre réservé.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**Configuration d'une politique utilisateur**

**iam : autorisation PassRole **  
Enfin, vous devez être autorisé à transmettre le rôle AWS IoT Core lorsque vous appelez l'opération [ UpdatePackageConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html)d'API.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iot:UpdatePackageConfiguration"
            ],
            "Resource": "arn:aws:iam::111122223333:role/<roleName>"
        }
    ]
}
```

## AWS IoT Autorisations de téléchargement des jobs depuis Amazon S3
<a name="job-rights-download-job-document"></a>

Le document de travail est enregistré dans Amazon S3. Vous vous référez à ce fichier lorsque vous expédiez via AWS IoT Jobs. Vous devez fournir à AWS IoT Jobs le droit de télécharger le fichier (`s3:GetObject`). Vous devez également établir une relation de confiance entre Amazon S3 et AWS IoT Jobs. Pour obtenir des instructions sur la création de ces politiques, voir [Presigned URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) dans [Gestion des tâches](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html).

## Autorisations de mise à jour de la nomenclature du logiciel pour une version de package
<a name="job-rights-update-sbom"></a>

Pour mettre à jour la nomenclature logicielle d'une version de package dans l'état `Draft``Published`, ou dans l'état `Deprecated` du cycle de vie, vous avez besoin d'un Gestion des identités et des accès AWS rôle et de politiques permettant de localiser la nouvelle nomenclature logicielle dans Amazon S3 et de mettre à jour la version du package dans AWS IoT Core.

Tout d'abord, vous allez placer la nomenclature logicielle mise à jour dans votre compartiment Amazon S3 versionné et appeler l'opération d'`[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)`API avec le `sboms` paramètre inclus. Ensuite, votre principal autorisé assumera le rôle IAM que vous avez créé, localisera la nomenclature logicielle mise à jour dans Amazon S3 et mettra à jour la version du package dans le catalogue AWS IoT Core de packages logiciels.

Les règles suivantes sont requises pour effectuer cette mise à jour :

**Stratégies**
+ Politique de **confiance Politique** établissant une relation de confiance avec le principal autorisé assumant le rôle IAM afin qu'il puisse localiser la nomenclature logicielle mise à jour depuis votre compartiment versionné dans Amazon S3 et mettre à jour la version du package dans. AWS IoT Core
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "s3.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "iot.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
+ **Politique d'autorisations** : politique d'accès au compartiment versionné Amazon S3 dans lequel la nomenclature logicielle est stockée pour une version de package et de mise à jour de la version du package dans AWS IoT Core.
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::awsexamplebucket1"
                ]
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iot:UpdatePackageVersion"
                ],
                "Resource": [
                    "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
                ]
            }
        ]
    }
    ```
+ **Transmettre les autorisations de rôle** : politique octroyant l'autorisation de transmettre le rôle IAM à Amazon S3 et AWS IoT Core lorsque vous appelez l'opération `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` d'API.
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::awsexamplebucket1"
          ]
        }
      ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:PassRole",
                    "iot:UpdatePackageVersion"
                ],
                "Resource": "arn:aws:iam::111122223333:role/<roleName>"
            }
        ]
    }
    ```

**Note**  
Vous ne pouvez pas mettre à jour la nomenclature du logiciel sur une version du package qui est passée à l'état de `Deleted` cycle de vie.

Pour plus d'informations sur la création d'un rôle IAM pour un AWS service, consultez la section [Création d'un rôle pour déléguer des autorisations à un AWS service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Pour plus d'informations sur la création d'un compartiment Amazon S3 et le téléchargement d'objets dans celui-ci, consultez les sections [Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) et [Chargement](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) d'objets.

# Préparation de l'indexation de la flotte
<a name="preparing-fleet-indexing"></a>

Avec l'indexation de AWS IoT flotte, vous pouvez rechercher et agréger des données en utilisant le nom réservé shadow (`$package`). Vous pouvez également regrouper AWS IoT des objets en interrogeant les [groupes [Ombre nommée réservée](preparing-to-use-software-package-catalog.md#reserved-named-shadow) d'objets dynamiques](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html). Par exemple, vous pouvez trouver des informations sur AWS IoT les éléments qui utilisent une version de package spécifique, sur lesquels aucune version de package spécifique n'est installée ou sur lesquels aucune version de package n'est installée. Vous pouvez obtenir des informations supplémentaires en combinant les attributs. Par exemple, identifier les objets dotés d'une version spécifique et d'un type d'objet spécifique (tels que la version 1.0.0 et le type d'objet pump\$1sensor). Pour plus d'informations, veuillez consulter la rubrique [Fleet indexing](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html).

## Définir l'`$package`ombre comme source de données
<a name="shadow-as-data-source"></a>

Pour utiliser l'indexation de flotte avec le Catalogue de Logiciels, vous devez activer l'indexation de flotte, définir l'ombre nommée comme source de données et définir `$package` comme filtre d'ombre nommé. Si vous n'avez pas activé l'indexation de la flotte, vous pouvez l'activer dans le cadre de ce processus. A partir de[AWS IoT Core](https://console.aws.amazon.com/iot/home) dans la console, ouvrez **Paramètres**, choisissez **Gérer l'indexation**, puis **Ajouter des ombres nommées**, **Ajouter des packages logiciels et des versions de l'appareil**, et **Mettre à jour**. Pour de plus amples informations, veuillez consulter la section [Gestion de l'indexation des objets.](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#thing-index) 

Vous pouvez également activer l'indexation de la flotte lorsque vous créez votre premier package. Lorsque la boîte de dialogue **Activer les dépendances pour la gestion des packages** apparaît, choisissez l'option permettant d'ajouter les packages logiciels et les versions des appareils en tant que sources de données pour l'indexation de la flotte. En sélectionnant cette option, vous activez également l'indexation de la flotte.

**Note**  
L'activation de l'indexation de la flotte pour le Catalogue de Logiciels entraîne des coûts de service standard. Pour plus d'informations, consultez [AWS IoT Device Management Pricing](https://aws.amazon.com/iot-device-management/pricing/) 

## Métriques affichées dans la console
<a name="metrics-displayed-in-console"></a>

![\[Image des métriques standard\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/package-catalog-discovery-metrics.png)


Sur la page de détails du package logiciel de la AWS IoT console, le panneau **Discovery** affiche les métriques standard ingérées dans l'`$package`ombre.
+ Le tableau de **distribution des versions actuelles** indique le nombre d'appareils et le pourcentage des 10 versions de package les plus récentes associées à un AWS IoT objet parmi tous les appareils associés à ce package logiciel. **Remarque :** Si le package logiciel comporte plus de versions que celles indiquées dans le tableau, vous pouvez les trouver regroupées dans la section **Autres**.
+ Le **graphique historique** indique le nombre d'appareils associés aux versions de package sélectionnées sur une période donnée. Le graphique est initialement vide jusqu'à ce que vous sélectionniez jusqu'à 5 versions de package et que vous définissiez la plage de dates et l'intervalle de temps. Pour sélectionner les paramètres du graphique, choisissez **Réglages**. Les données affichées dans le **graphique historique** peuvent être différentes de celles du graphique de **distribution des versions actuelles** en raison de la différence entre le nombre de versions de package affichées et également parce que vous pouvez choisir les versions de package à analyser dans le **graphique historique**. **Remarque :** Lorsque vous sélectionnez une version de package à visualiser, elle est prise en compte dans le nombre maximum de limites de métriques de flotte. Pour plus d'informations, consultez [Limites et quotas d'indexation de la flotte.](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits).

Pour une autre méthode permettant de mieux comprendre la collecte de la distribution des versions de packages, voir [Collecte de la distribution des versions de packages via `getBucketsAggregation`](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html#package-version-distribution).

## Modèles de requête
<a name="query-patterns"></a>

L'indexation de flottes avec Software Package Catalog utilise la plupart des fonctionnalités standard prises en charge (telles que les termes, les phrases et les champs de recherche). Cependant, les opérateurs de comparaison (par exemple, inférieur à `<` et supérieur à`>`) et les `range` requêtes ne sont pas disponibles pour la `version` clé nommée shadow (`$package`) réservée. Ces requêtes sont disponibles pour la `attributes` clé. Pour plus d'informations, consultez [Syntaxe de requête.](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html).

### Exemple de données
<a name="query-patterns-example-data"></a>

**Remarque :** pour plus d'informations sur l'ombre nommée réservée et sa structure, consultez [Ombre nommée réservée](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

Dans cet exemple, un premier périphérique est nommé `AnyThing` et les packages suivants sont installés : 
+ Package logiciel : `SamplePackage`

  Version du package : `1.0.0`

  Un ID de package : `1111`

L'ombre ressemble à ce qui suit :

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                    }
            }
        }
    }
}
```

Un deuxième périphérique est nommé `AnotherThing` et le package suivant est installé : 
+ Package logiciel : `SamplePackage`

  Version du package : `1.0.0`

  Un ID de package : `1111`
+ Package logiciel : `OtherPackage`

  Version du package : `1.2.5`

  Un ID de package : `2222`

L'ombre ressemble à ce qui suit :

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                }
            },
            "OtherPackage": {
                "version": "1.2.5",
                "attributes": {
                    "s3UrlForOtherPackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile2",
                    "packageID": "2222"
                    }
            },
        }
    }
}
```

### Exemples de requêtes
<a name="sample-queries"></a>

Le tableau suivant répertorie des exemples de requêtes basés sur les exemples d'ombres du périphérique pour `AnyThing` et`AnotherThing`. Pour plus d'informations, consultez [Exemples de requêtes](https://docs.aws.amazon.com/iot/latest/developerguide/example-queries.html). 


**Dernière version de AWS IoT Device Tester for FreeRTOS**  

| **Informations demandées** | **Interrogation** | **Result** | 
| --- | --- | --- | 
|  Éléments sur lesquels une version de package spécifique est installée  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0`  |  `AnyThing`, `OtherThing`  | 
|  Éléments pour lesquels aucune version de package spécifique n'est installée  |  `NOT shadow.name.$package.reported.OtherPackage.version:1.2.5`  |  `AnyThing`  | 
|  Tout appareil utilisant une version de package dont l'ID de package est supérieur à 1500  |  `shadow.name.$package.reported.*.attributes.packageID>1500"`  |  `OtherThing`  | 
|  Éléments sur lesquels un package spécifique est installé et sur lesquels plusieurs packages sont installés  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0 AND shadow.name.$package.reported.totalCount:2`  |  `OtherThing`  | 

## Collecte de la distribution des versions de packages via `getBucketsAggregation`
<a name="package-version-distribution"></a>

Outre le panneau **Discovery** de la AWS IoT console, vous pouvez également obtenir des informations sur la distribution des versions de packages à l'aide de l'opération [https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html)API. Pour obtenir des informations de distribution de la version du package, vous devez procéder comme suit :
+ Définissez un champ personnalisé dans l'indexation de la flotte pour chaque progiciel. **Remarque :** La création de champs personnalisés est prise en compte dans les [AWS IoT quotas du service d'indexation de la flotte](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). 
+ Formatez le champ personnalisé comme suit :

  `shadow.name.$package.reported.<packageName>.version`

Pour plus d'informations, consultez la section [Champs personnalisés](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#custom-field) dans l'indexation des AWS IoT flottes.

# Préparation des AWS IoT emplois
<a name="preparing-jobs-for-service-package-catalog"></a>

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 les rôles et politiques Gestion des identités et des accès AWS (IAM) suivants : les [droits AWS IoT Jobs pour déployer les versions des packages et les](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-deploy-versions) [droits AWS IoT Jobs pour mettre à jour le shadow nommé réservé](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-update-reserved-named-shadow). Pour de plus amples informations, veuillez consulter [Preparing security](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html).

## Paramètres de substitution pour les AWS IoT tâches
<a name="substitution-parameters"></a>

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 une URL Amazon Simple Storage Service (Amazon S3), un package logiciel Amazon Resource Name(ARN) ou une signature dans le document de tâche par le biais des 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 à l'aide de l'*ARN de version indiqué dans les détails* 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 API ou d'une commande CLI, l'*ARN de version* d'une version de package est représenté par le `destinationPackageVersions` paramètre entre `CreateJob` et`DescribeJob`.
+ **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](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-code-signing). **Remarque :** Cet attribut est fourni à titre d'exemple et n'est pas obligatoire dans le cadre du catalogue logiciels ou des tâches.

Pour`s3URL`, le paramètre du document de travail est écrit comme suit :

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

Pour`signature`, 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, consultez[Préparation du document de travail et de la version du package pour le déploiement](#preparing-to-deploy).

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.

À l'aide du paramètre « before-substitution » dans le `DescribeJob` et `GetJobDocument` APIs, vous pouvez afficher la réponse de l'API 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](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html).

## Préparation du document de travail et de la version du package pour le déploiement
<a name="preparing-to-deploy"></a>

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 commande d'API telle que `CreatePackageVersion``GetPackageVersion`, ou`UpdatePackageVersion`, `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, consultez[Concepts de base](key-concepts-jobs.md#basic-concepts-jobs).

  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.

**`Artifact`attribut 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'espace réservé d'URL présigné ` ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url}` dans le document de travail 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 version du package doit se trouver dans la même région que celle dans laquelle 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 de version sur votre compartiment. Pour plus d'informations, consultez la section [Activation du versionnement sur les buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html).

  Pour accéder aux artefacts de version du package dans le compartiment Amazon S3 lorsque vous utilisez l'opération `CreatePackageVersion` ou `UpdatePackageVersion` API, vous devez disposer des autorisations suivantes :  
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:GetObjectVersion",
              "Resource": "arn:aws:s3:::bucket-name/key-name"
          }
      ]
  }
  ```

  Pour plus d'informations sur l'attribut version `artifact` dans les opérations `UpdatePackageVersion` d'API `CreatePackageVersion` et, consultez [CreatePackageVersion](https://amazonaws.com/iot/latest/apireference/API_CreatePackageVersion.html)et [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html).

  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 `destinationPackageVersions` les commandes d'API et de CLI 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'`$default`indicateur dans la commande `CreateJob` ou `CreateJobTemplate` API, 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 de détails du package logiciel dans la AWS IoT console ou en lançant l'opération [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. Vous pouvez ensuite référencer la version du package lorsque vous créez la tâche via la AWS IoT console ou en lançant l'opération [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)d'API.

## Nommer les packages et les versions lors du déploiement
<a name="naming-package-versions"></a>

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'opération d'`CreateJob`API. 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, consultez[Messages d'erreur généraux relatifs au dépannage](software-package-catalog-troubleshooting.md#spc-general-troubleshooting).

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'opération d'`CreateJob`API non référencées 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 le fonctionnement de l'`CreateJob `API, consultez [CreateJob](https://amazonaws.com/iot/latest/apireference/API_CreateJob.html).

## Cibler les emplois par le biais de groupes d'objets AWS IoT dynamiques
<a name="jobs-and-dynamic-groups"></a>

Le catalogue de logiciels fonctionne avec l'[indexation de la flotte](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html), [AWS IoT les tâches](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) et les [AWS IoT groupes d'objets dynamiques](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) 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](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).

## Ombre nommée réservée et versions de package
<a name="reserved-shadow-and-package-versions"></a>

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'`$package`ombre par le biais d'autres processus (tels que des appels d'API 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 sur un objet ombre nommée réservée (`$package`) via la console ou l'opération [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)API. Pour plus d'informations, consultez [Associer une version de package à un AWS IoT objet](https://docs.aws.amazon.com/iot/latest/developerguide/associating-package-version.html).

**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
<a name="uninstalling-packages-and-versions"></a>

`$null`est 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.](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow)

Pour utiliser cette fonctionnalité, remplacez le nom de version à la fin de l'[destinationPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html#iot-CreateJobTemplate-request-destinationPackageVersions)Amazon Resource Name (ARN) par`$null`. Ensuite, vous devez demander à votre service de supprimer le logiciel de l'appareil.

L'ARN autorisé 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"]
```

# Démarrage avec le Catalogue de Logiciels
<a name="getting-started-with-software-package-catalog"></a>

Vous pouvez créer et gérer le catalogue des packages AWS IoT Device Management logiciels via AWS Management Console les opérations d' AWS IoT Core API et AWS Command Line Interface (AWS CLI).

**Note**  
L'activation AWS IoT de l'indexation du parc est obligatoire pour utiliser le catalogue de packages logiciels. Les opérations de base telles que la création d'une version de package logiciel dans AWS Management Console et l'utilisation de la commande `CreatePackage` API échoueront si l'indexation du AWS IoT parc n'est pas activée.  
Pour plus d'informations sur l'utilisation de l'indexation du AWS IoT parc avec le Software Package Catalog, consultez[Préparation de l'indexation de la flotte](preparing-fleet-indexing.md).

**Utilisation de la console**

Pour utiliser le AWS Management Console, connectez-vous à votre AWS compte et accédez à [AWS IoT Core](https://console.aws.amazon.com/iot/home). Dans le volet de navigation, choisissez **Software packages**. Vous pouvez ensuite créer et gérer des packages et leurs versions à partir de cette section.

**Utilisation des opérations d'API ou de CLI**

Vous pouvez utiliser les opérations de l' AWS IoT Core API pour créer et gérer les fonctionnalités du catalogue de packages logiciels. Pour plus d'informations, consultez les [AWS IoT sections Référence des API AWS](https://docs.aws.amazon.com/iot/latest/apireference/) [SDKs et boîtes à outils](https://aws.amazon.com/developer/tools/). Les AWS CLI commandes gèrent également votre catalogue. Pour plus d'informations, consultez la [AWS IoT Référence de commande CLI;](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

**Topics**
+ [Création d'un package logiciel et d'une version de package](creating-package-and-version.md)
+ [Déploiement d'une version de package via AWS IoT des tâches](deploying-package-version.md)
+ [Associer une version de package à un AWS IoT objet](associating-package-version.md)

# Création d'un package logiciel et d'une version de package
<a name="creating-package-and-version"></a>

Vous pouvez utiliser les étapes suivantes pour créer un package et une version initiale via le AWS Management Console.

**Pour créer un progiciel**

1. Connectez-vous à votre AWS compte et accédez à la [AWS IoT console](https://console.aws.amazon.com/iot/home). 

1.  Dans le panneau de navigation, choisissez **Progiciel**. 

1.  Sur la page du **AWS IoT package logiciel**, choisissez **Créer un package**. La boîte de dialogue **Activer les dépendances pour la gestion des packages** s'affiche. 

1.  Sous **Indexation du parc**, sélectionnez **Ajouter des packages logiciels et une version de l'appareil**. Cela est nécessaire pour le catalogue des packages logiciels et fournit une indexation de la flotte et des mesures relatives à votre flotte. 

1. [Facultatif] Si vous souhaitez que les AWS IoT tâches mettent à jour l'ombre nommée réservée une fois les tâches terminées avec succès, sélectionnez **Mettre à jour automatiquement les ombres des tâches**. Si vous ne souhaitez pas que les AWS IoT jobs soient mis à jour, ne cochez pas cette case.

1.  [Facultatif] Pour accorder aux AWS IoT jobs le droit de mettre à jour l'ombre nommée réservée, sous **Sélectionner un rôle**, choisissez **Créer un rôle**. Si vous ne souhaitez pas que les AWS IoT jobs effectuent cette mise à jour, ce rôle n'est pas obligatoire. 

1. Créez ou sélectionnez un rôle.

   1. Si vous **n'avez pas de rôle** à cette fin : lorsque la boîte de dialogue **Créer un rôle** apparaît, entrez un **nom de rôle**, puis choisissez **Créer**.

   1. Si vous **avez un rôle** à cette fin : dans **Sélectionner un rôle**, choisissez votre rôle, puis assurez-vous que la case **Attacher la politique au rôle IAM** est cochée.

1. Choisissez **Confirmer**. La page **Créer un nouveau package** apparaît.

1. Sous **Détails du package**, entrez un **nom de package**.

1. Sous **Description du package**, entrez les informations qui vous aideront à identifier et à gérer ce package.

1. [Facultatif] Vous pouvez utiliser des balises pour vous aider à classer et gérer ce package. Pour ajouter des balises, développez les **balises**, choisissez la balise **Ajouter** et entrez une paire clé-valeur. Vous pouvez ajouter jusqu'à 50 balises. Pour plus d'informations, consultez la section [Marquage de vos AWS IoT ressources](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

**Pour ajouter une version de package lors de la création d'un nouveau package**

1. Dans **Version initiale**, entrez un **nom de version**.

   Nous vous recommandons d'utiliser le [SemVer format](https://semver.org/) (par exemple,`1.0.0.0`) pour identifier de manière unique la version de votre package. Vous pouvez également utiliser une stratégie de formatage différente mieux adaptée à votre cas d'utilisation. Pour de plus amples informations, veuillez consulter [Cycle de vie des versions du package](preparing-to-use-software-package-catalog.md#package-version-lifecycle). 

1. Sous **Description de la version**, entrez les informations qui vous aideront à identifier et à gérer cette version du package.
**Note**  
La case à cocher **Version par défaut** est désactivée car les versions de package sont créées dans un `draft` état. Vous pouvez attribuer un nom à la version par défaut une fois que vous avez créé la version du package et que vous avez modifié l'état en`published`. Pour de plus amples informations, veuillez consulter [Cycle de vie des versions du package](preparing-to-use-software-package-catalog.md#package-version-lifecycle).

1. [Facultatif] Pour vous aider à gérer cette version ou à communiquer des informations à vos appareils, entrez une ou plusieurs paires nom-valeur pour les **attributs de version**. Choisissez **Ajouter un attribut** pour chaque paire nom-valeur que vous entrez. Pour de plus amples informations, veuillez consulter [Attributs de version](preparing-to-use-software-package-catalog.md#version-attributes).

1. [Facultatif] Vous pouvez utiliser des balises pour vous aider à classer et gérer ce package. Pour ajouter des balises, développez les **balises**, choisissez la balise **Ajouter** et entrez une paire clé-valeur. Vous pouvez ajouter jusqu'à 50 balises. Pour plus d'informations, consultez la section [Marquage de vos AWS IoT ressources](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

1. Choisissez **Suivant**.

**Associer la nomenclature du logiciel à une version du package (facultatif)**

1. À **l'étape 3 : Version SBOMs (facultatif)**, dans la fenêtre des **configurations SBOM**, choisissez le format de fichier SBOM par défaut et le mode de validation utilisés pour valider votre nomenclature logicielle avant qu'elle ne soit associée à la version de votre package.

1. Dans la fenêtre **Ajouter un fichier SBOM**, entrez le nom de ressource Amazon (ARN) représentant votre bucket Amazon S3 versionné et le format de fichier SBOM préféré si le type par défaut ne fonctionne pas.
**Note**  
Vous pouvez ajouter un seul fichier SBOM ou un seul fichier zip en contenant plusieurs SBOMs si vous avez plusieurs nomenclatures logicielles pour la version de votre package. 

1. Dans la fenêtre **Fichier SBOM ajouté, vous pouvez afficher le fichier** SBOM que vous avez ajouté pour la version de votre package.

1. Choisissez **Créer un package et une version**. La page de version du package apparaît et vous pouvez voir l'état de validation de votre fichier SBOM dans la fenêtre du fichier **SBOM ajouté**. L'état initial sera celui où `In progress` le fichier SBOM est en cours de validation. 
**Note**  
Les statuts de validation des fichiers SBOM sont`Invalid file`,,, `Not started` `In progress` `Validated (SPDX)``Validated (CycloneDX)`, et les raisons de l'échec de la validation.

# Déploiement d'une version de package via AWS IoT des tâches
<a name="deploying-package-version"></a>

Vous pouvez utiliser les étapes suivantes pour déployer une version de package via le AWS Management Console.

**Prérequis :**

Avant de commencer, vous devez exécuter les actions suivantes :
+ Enregistrez AWS IoT des choses avec AWS IoT Core. Pour savoir comment ajouter vos appareils AWS IoT Core, voir [Créer un objet](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).
+ [Facultatif] Créez un AWS IoT groupe d'objets ou un groupe d'objets dynamique pour cibler les appareils sur lesquels vous allez déployer la version du package. Pour savoir comment créer un groupe d'objets, voir [Création d'un groupe d'objets statique](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html#create-thing-group). Pour savoir comment créer un groupe d'objets dynamique, voir [Création d'un groupe d'objets dynamique](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).
+ Créez un package logiciel et une version de package. Pour de plus amples informations, veuillez consulter [Création d'un package logiciel et d'une version de package](creating-package-and-version.md).
+ Création d'un document de tâche Pour plus d'informations, consultez [Préparation du document de travail et de la version du package pour le déploiement](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#preparing-to-deploy).

**Pour déployer une AWS IoT tâche**

1. Sur la [AWS IoT console](https://console.aws.amazon.com/iot/home), sélectionnez **Packages logiciels**.

1. Choisissez le package logiciel que vous souhaitez déployer. La page de **détails du package logiciel** s'affiche.

1. Choisissez la version du package que vous souhaitez déployer, sous **Versions**, puis choisissez **Deploy job version**.

1. Si c'est la première fois que vous déployez une tâche via ce portail, une boîte de dialogue décrivant les exigences s'affiche. Vérifiez ces informations, puis choisissez **Acknowledge**.

1. Entrez un nom pour le déploiement ou laissez le nom généré automatiquement dans le champ **Nom**.

1. [Facultatif] Dans le champ **Description**, entrez une description identifiant l'objectif ou le contenu du déploiement, ou laissez les informations générées automatiquement. 

   **Remarque :** Nous vous recommandons de ne pas utiliser d'informations personnellement identifiables dans les champs Nom et description du Job.

1. [Facultatif] Ajoutez les balises à associer à cette tâche.

1. Choisissez **Suivant**.

1. Sous **Objectifs du travail**, choisissez les objets ou les groupes d'objets qui devraient recevoir le travail.

1. Dans le champ **Fichier de travail**, spécifiez le fichier JSON du document de travail.

1. Ouvrez **Jobs integration with the Package Catalog service**.

1. Sélectionnez les packages et les versions spécifiés dans votre document de travail.
**Note**  
Vous devez choisir les mêmes packages et versions de package que ceux spécifiés dans le document de travail. Vous pouvez en inclure d'autres, mais la tâche émettra des instructions uniquement pour les packages et les versions inclus dans le document de tâche. Pour plus d'informations, voir [Nommer les packages et les versions lors du déploiement](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#naming-package-versions).

1. Choisissez **Suivant**.

1. Sur la page de configuration du job, sélectionnez l'un des types de job suivants dans la boîte de dialogue de configuration du job :
   + **Tâche de capture instantanée :** une tâche de capture instantanée est terminée lorsqu'elle est terminée sur les appareils et les groupes cibles.
   + **Tâche continue :** une tâche continue s'applique aux groupes d'objets et s'exécute sur tout appareil que vous ajoutez ultérieurement à un groupe cible spécifique.

1. Dans la boîte de dialogue **Configurations supplémentaires - facultatives**, passez en revue les configurations de tâche facultatives suivantes et effectuez vos sélections en conséquence. Pour plus d'informations, consultez les sections [Configurations de déploiement, de planification et d'abandon des tâches](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-rollout-abort-scheduling) et [Configurations du délai d'exécution des tâches et des nouvelles tentatives.](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-timeout-retry)
   + Configuration du déploiement
   + Planification d’une Configuration.
   + Configuration du délai d'expiration des exécutions de tâches
   + Exécutions de tâches nouvelle tentative de configuration
   + Interruption de la configuration

1. Passez en revue les offres d'emploi, puis choisissez **Soumettre**.

Une fois que vous avez créé la tâche, la console génère une signature JSON et la place dans votre document de tâche. Vous pouvez utiliser la AWS IoT console pour consulter le statut d'une tâche, annuler ou supprimer une tâche. Pour gérer les tâches, accédez au [hub de tâche de la console](https://console.aws.amazon.com/iot/home#/jobhub).

# Associer une version de package à un AWS IoT objet
<a name="associating-package-version"></a>

Après avoir installé le logiciel sur votre appareil, vous pouvez associer une version de package à un AWS IoT objet réservé nommé shadow. Si les AWS IoT tâches ont été configurées pour mettre à jour l'ombre nommée réservée à l'objet une fois la tâche déployée et terminée avec succès, vous n'avez pas besoin de suivre cette procédure. Pour de plus amples informations, veuillez consulter [Ombre nommée réservée](preparing-to-use-software-package-catalog.md#reserved-named-shadow). 

**Prérequis :**

Avant de commencer, vous devez exécuter les actions suivantes :
+ Créez un ou AWS IoT plusieurs objets et établissez la télémétrie à travers. AWS IoT Core Pour plus d'informations, consultez la section [Mise en route avec AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html). 
+  Créez un package logiciel et une version de package. Pour de plus amples informations, veuillez consulter [Création d'un package logiciel et d'une version de package](creating-package-and-version.md). 
+  Installez la version logicielle du package sur l'appareil. 

**Note**  
L'association d'une version de package à un AWS IoT objet ne met pas à jour ni n'installe le logiciel sur le périphérique physique. La version du package doit être déployée sur l'appareil. 

**Pour associer une version de package à un AWS IoT objet**

1. Surle volet de navigation de la [AWS IoT console](https://console.aws.amazon.com/iot/home), développez le menu **Tous les appareils** et choisissez **Objets**.

1. Identifiez l' AWS IoT objet que vous souhaitez mettre à jour dans la liste et choisissez le nom de l'objet pour afficher sa page de détails.

1. Dans la section **Détails**, sélectionnez **Packages et versions**.

1.  Choisissez **Ajouter au package et à la version**. 

1.  Pour **Choisir un package d'appareil**, choisissez le package logiciel de votre choix. 

1.  Pour **Choisir une version**, choisissez la version logicielle de votre choix. 

1.  Choisissez **Ajouter un package d'appareil**. 

    Le package et la version apparaissent dans la liste **des packages et versions sélectionnés**. 

1.  Répétez ces étapes pour chaque package et version que vous souhaitez associer à cet élément. 

1.  Lorsque vous avez terminé, choisissez **Ajouter les détails du package et de la version**. La page de **détails de l'objet** s'ouvre et vous pouvez voir le nouveau package et la nouvelle version dans la liste. 