

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.

# Mettre à jour les actifs et les modèles
<a name="update-assets-and-models"></a>

Vous pouvez mettre à jour vos actifs, modèles d'actifs, modèles de composants et interfaces AWS IoT SiteWise afin de modifier leurs noms et leurs définitions. Ces opérations de mise à jour sont asynchrones et leur propagation prend du temps. AWS IoT SiteWise Vérifiez l'état de l'actif ou du modèle avant d'apporter des modifications supplémentaires. Vous devez attendre que les modifications soient propagées avant de continuer à utiliser la ressource ou le modèle mis à jour.

**Topics**
+ [Mettre à jour les actifs dans AWS IoT SiteWise](update-assets.md)
+ [Mettre à jour les modèles d'actifs, les modèles de composants et les interfaces](update-asset-models.md)
+ [Mettre à jour des modèles composites personnalisés (composants)](update-custom-composite-models.md)
+ [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md)

# Mettre à jour les actifs dans AWS IoT SiteWise
<a name="update-assets"></a>

Vous pouvez utiliser la AWS IoT SiteWise console ou l'API pour mettre à jour le nom d'un actif.

Lorsque vous mettez à jour une ressource, son statut est maintenu `UPDATING` jusqu'à ce que les modifications se propagent. Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

**Topics**
+ [Mettre à jour un actif (console)](#update-asset-console)
+ [Mettre à jour un actif (AWS CLI)](#update-asset-cli)

## Mettre à jour un actif (console)
<a name="update-asset-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour mettre à jour les détails des actifs.

**Pour mettre à jour une ressource (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Dans le panneau de navigation, choisissez **Ressources**.

1. Choisissez la ressource à mettre à jour.
**Astuce**  <a name="sitewise-expand-asset-hierarchy"></a>
Vous pouvez cliquer sur l'icône en forme de flèche pour développer une hiérarchie de ressources afin de trouver votre ressource.

1. Choisissez **Modifier**.

1. Mettez à jour le **nom**de la ressource.

1. (Facultatif) Sur cette page, mettez à jour les autres informations relatives à la ressource. Pour plus d’informations, consultez les ressources suivantes :
   + [Gérez les flux de données pour AWS IoT SiteWise](manage-data-streams.md)
   + [Mettre à jour les valeurs des attributs](update-attribute-values.md)
   + [Interagissez avec d'autres AWS services](interact-with-other-services.md)

1. Choisissez **Enregistrer**.

## Mettre à jour un actif (AWS CLI)
<a name="update-asset-cli"></a>

Vous pouvez utiliser le AWS Command Line Interface (AWS CLI) pour mettre à jour le nom d'un actif.

Utilisez cette [UpdateAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAsset.html)opération pour mettre à jour un actif. Spécifiez les paramètres suivants :
+ `assetId`— L'ID de l'actif. Il s'agit de l'identifiant réel au format UUID, ou du `externalId:myExternalId` s'il en possède un. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.
+ `assetName`— Le nouveau nom de l'actif.

**Pour mettre à jour le nom d'un actif (AWS CLI)**
+ Exécutez la commande suivante pour mettre à jour le nom d'une ressource. Remplacez *asset-id* par l'ID ou l'ID externe de la ressource. Mettez à jour le *asset-name* avec le nouveau nom de l'actif.

  ```
  aws iotsitewise update-asset \
    --asset-id asset-id \
    --asset-name asset-name
  ```

# Mettre à jour les modèles d'actifs, les modèles de composants et les interfaces
<a name="update-asset-models"></a>

Utilisez la AWS IoT SiteWise console ou l'API pour mettre à jour un modèle d'actif, un modèle de composant ou une interface.

Vous ne pouvez pas modifier le type ou le type de données d'une propriété existante, ni la fenêtre d'une métrique existante. Vous ne pouvez pas non plus modifier le type du modèle d'actif en modèle de composant ou d'interface, ou inversement.

**Important**  
Si vous supprimez une propriété d'un modèle de ressource ou d'un modèle de composant, toutes les AWS IoT SiteWise données précédentes relatives à cette propriété sont supprimées. Pour les modèles de composants, cela concerne **tous les modèles d'actifs utilisant ce modèle de composant**. Veillez donc particulièrement à comprendre dans quelle mesure votre modification peut s'appliquer.
Si vous supprimez une définition de hiérarchie d'un modèle d'actifs, AWS IoT SiteWise dissociez tous les actifs de cette hiérarchie.

Lorsque vous mettez à jour un modèle de ressource, chaque ressource basée sur ce modèle reflète toutes les modifications que vous apportez au modèle sous-jacent. Jusqu'à ce que les modifications se propagent, l'état de chaque ressource est `UPDATING`. Attendez que l'état des ressources passe à `ACTIVE` pour pouvoir interagir avec elles. Pendant ce temps, le statut du modèle de ressource mis à jour est `PROPAGATING`.

Lorsque vous mettez à jour un modèle de composant, chaque modèle d'actif qui intègre ce modèle de composant reflète les modifications. Jusqu'à ce que les modifications du modèle de composant se propagent, chaque modèle d'actif concerné possède l'`UPDATING`état, suivi `PROPAGATING` de la mise à jour de ses actifs associés, comme décrit dans le paragraphe précédent. Vous devez attendre que ces modèles d'actifs reviennent à leur `ACTIVE` état normal avant d'interagir avec eux. Pendant ce temps, le statut du modèle de composant mis à jour sera`PROPAGATING`.

Pour de plus amples informations, veuillez consulter [État des ressources et des modèles](asset-and-model-states.md).

**Topics**
+ [Mise à jour d'un modèle d'actif, d'un modèle de composant ou d'une interface (console)](#update-asset-model-console)
+ [Mettre à jour un modèle d'actif, un modèle de composant ou une interface (AWS CLI)](#update-asset-model-cli)

## Mise à jour d'un modèle d'actif, d'un modèle de composant ou d'une interface (console)
<a name="update-asset-model-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour mettre à jour un modèle de ressource, un modèle de composant ou une interface.

**Pour mettre à jour un modèle d'actif, un modèle de composant ou une interface (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle de ressource, le modèle de composant ou l'interface à mettre à jour.

1. Choisissez **Modifier**.

1. Sur la page **Modifier le modèle**, effectuez l'une des opérations suivantes :
   + Dans **Informations relatives au modèle**, modifiez le **nom** du modèle.
   + Modifiez l'une des **définitions d'attribut**. Vous ne pouvez pas modifier le **type de données** des attributs existants. Pour de plus amples informations, veuillez consulter [Définir des données statiques (attributs)](attributes.md).
   + Modifiez l'une des **définitions de mesure**. Vous ne pouvez pas modifier le **type de données** des mesures existantes. Pour de plus amples informations, veuillez consulter [Définir les flux de données provenant de l'équipement (mesures)](measurements.md).
   + Modifiez l'une des **définitions de transformation**. Pour de plus amples informations, veuillez consulter [Transformer les données (transformations)](transforms.md).
   + Modifiez l'une des **définitions de métrique**. Vous ne pouvez pas modifier l'**intervalle de temps** des métriques existantes. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).
   + (Modèles d'actifs uniquement) Modifiez l'une des **définitions de hiérarchie**. Vous ne pouvez pas modifier le **modèle de hiérarchie** des hiérarchies existantes. Pour de plus amples informations, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).

1. Choisissez **Enregistrer**.

**Note**  
 Les demandes de mise à jour effectuées dans la console sont rejetées si un autre utilisateur met à jour le modèle de ressource avec succès depuis que vous avez ouvert la page **Modifier le modèle** pour la dernière fois. La console invite l'utilisateur à **actualiser** la page **Modifier le modèle** pour récupérer le modèle mis à jour. Vous devez effectuer à nouveau vos mises à jour, puis réessayer de sauvegarder. Pour plus d’informations, consultez [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md). 

## Mettre à jour un modèle d'actif, un modèle de composant ou une interface (AWS CLI)
<a name="update-asset-model-cli"></a>

Utilisez le AWS Command Line Interface (AWS CLI) pour mettre à jour un modèle d'actif, un modèle de composant ou une interface.

Utilisez l'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API pour mettre à jour le nom, la description et les propriétés d'un modèle d'actif, d'un modèle de composant ou d'une interface. Pour les modèles d'actifs uniquement, vous pouvez mettre à jour les hiérarchies. Pour les interfaces, vous pouvez mettre à jour les propriétés et les hiérarchies. Spécifiez les paramètres suivants :
+ `assetModelId`— L'ID de l'actif. Il s'agit de l'identifiant réel au format UUID, ou du `externalId:myExternalId` s'il en possède un. Pour plus d’informations, consultez [Objets de référence avec interface externe IDs](object-ids.md#external-id-references) dans le *Guide de l’utilisateur AWS IoT SiteWise *.

Spécifiez le modèle mis à jour dans la charge utile. Pour en savoir plus sur le format attendu d'un modèle d'actif ou d'un modèle de composant, voir[Créez des modèles d'actifs dans AWS IoT SiteWise](create-asset-models.md). 

**Avertissement**  
L'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API remplace le modèle existant par le modèle que vous fournissez dans la charge utile. Pour éviter de supprimer les propriétés ou les hiérarchies de votre modèle, vous devez inclure leurs définitions IDs et leurs propriétés dans la charge utile du modèle mise à jour. Pour savoir comment interroger la structure existante de votre modèle, consultez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération.

**Note**  
La procédure suivante ne permet de mettre à jour que les modèles composites de type`AWS/ALARM`. Si vous souhaitez mettre à jour des modèles `CUSTOM` composites, utilisez [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)plutôt. Pour de plus amples informations, veuillez consulter [Mettre à jour des modèles composites personnalisés (composants)](update-custom-composite-models.md).

**Pour mettre à jour un modèle d'actif ou un modèle de composant (AWS CLI)**

1. Exécutez la commande suivante pour récupérer la définition du modèle existant. *asset-model-id*Remplacez-le par l'ID ou l'ID externe du modèle d'actif ou du modèle de composant à mettre à jour.

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id
   ```

   La commande ci-dessus renvoie la définition du modèle correspondant à la dernière version du modèle.

    Dans le cas d'utilisation où un modèle d'actif est dans un `FAILED` état, récupérez la définition de modèle valide correspondant à sa version active pour créer votre demande de mise à jour. Consultez [Versions du modèle d'actifs](model-active-version.md) pour plus de détails. Exécutez la commande suivante pour récupérer la définition du modèle actif :

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id --asset-model-version ACTIVE 
   ```

   L'opération renvoie une réponse contenant les détails du modèle. La réponse présente la structure suivante.

   ```
   {
       "assetModelId": "String",
       "assetModelArn": "String",
       "assetModelName": "String",
       "assetModelDescription": "String",
       "assetModelProperties": Array of AssetModelProperty,
       "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
       "assetModelCompositeModels": Array of AssetModelCompositeModel,
       "assetModelCompositeModelSummaries": Array of AssetModelCompositeModelSummary,
       "assetModelCreationDate": "String",
       "assetModelLastUpdateDate": "String",
       "assetModelStatus": {
         "state": "String",
         "error": {
           "code": "String",
           "message": "String"
         },
       "assetModelType": "String"
       },
       "assetModelVersion": "String",
       "eTag": "String"
   }
   ```

   Pour plus d'informations, consultez l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)opération.

1. Créez un fichier appelé `update-asset-model.json` et copiez la réponse de la commande précédente dans le fichier.

1. Supprimez les paires clé-valeur suivantes de l'objet JSON dans `update-asset-model.json` :
   + `assetModelId`
   + `assetModelArn`
   + `assetModelCompositeModelSummaries`
   + `assetModelCreationDate`
   + `assetModelLastUpdateDate`
   + `assetModelStatus`
   + `assetModelType`
   + `assetModelVersion`
   + `eTag`

   L'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)opération attend une charge utile dont la structure est la suivante :

   ```
   {
     "assetModelName": "String",
     "assetModelDescription": "String",
     "assetModelProperties": Array of AssetModelProperty,
     "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
     "assetModelCompositeModels": Array of AssetModelCompositeModel
   }
   ```

1. Dans `update-asset-model.json`, effectuez l’une des actions suivantes :
   + Modifiez le nom du modèle de ressource (`assetModelName`).
   + Modifiez, ajoutez ou supprimez la description du modèle de ressource (`assetModelDescription`).
   + Modifiez, ajoutez ou supprimez les propriétés du modèle de ressource (`assetModelProperties`). Vous ne pouvez pas modifier le `dataType` des propriétés existantes ou le `window` des métriques existantes. Pour de plus amples informations, veuillez consulter [Définir les propriétés des données](asset-properties.md).
   + Modifiez, ajoutez ou supprimez les hiérarchies du modèle de ressource (`assetModelHierarchies`). Vous ne pouvez pas modifier le `childAssetModelId` des hiérarchies existantes. Pour de plus amples informations, veuillez consulter [Définir les hiérarchies des modèles d'actifs](define-asset-hierarchies.md).
   + Modifiez, ajoutez ou supprimez l'un des modèles composites de type `AWS/ALARM` (`assetModelCompositeModels`) du modèle d'actifs. Les alarmes surveillent d'autres propriétés afin que vous puissiez identifier les équipements ou les processus nécessitant une attention particulière. Chaque définition d'alarme est un modèle composite qui normalise l'ensemble de propriétés utilisées par l'alarme. Pour plus d’informations, consultez [Surveillez les données avec des alarmes AWS IoT SiteWise](industrial-alarms.md) et [Définissez des alarmes sur les modèles d'actifs dans AWS IoT SiteWise](define-alarms.md).

1. Exécutez la commande suivante pour mettre à jour le modèle de ressource avec la définition stockée dans `update-asset-model.json`. Remplacez *asset-model-id* par l'ID du modèle d'actif :

   ```
   aws iotsitewise update-asset-model \
     --asset-model-id asset-model-id \
     --cli-input-json file://model-payload.json
   ```

**Important**  
 Lorsque plusieurs utilisateurs mettent à jour un modèle d'actif en même temps, les modifications apportées par un utilisateur peuvent être annulées par inadvertance par un autre utilisateur. Pour éviter cela, vous devez définir une demande de mise à jour conditionnelle. Consultez [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md). 

# Mettre à jour des modèles composites personnalisés (composants)
<a name="update-custom-composite-models"></a>

Vous pouvez utiliser l' AWS IoT SiteWise API pour mettre à jour un modèle composite personnalisé ou la AWS IoT SiteWise console pour mettre à jour les composants.

**Topics**
+ [Mettre à jour un composant (console)](#update-custom-composite-model-console)
+ [Mettre à jour un modèle composite personnalisé (AWS CLI)](#update-custom-composite-model-cli)

## Mettre à jour un composant (console)
<a name="update-custom-composite-model-console"></a>

Vous pouvez utiliser la AWS IoT SiteWise console pour mettre à jour un composant.

**Pour mettre à jour un composant (console)**

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle d'actif dans lequel se trouve le composant.

1. Dans l'onglet **Propriétés**, sélectionnez **Composants**.

1. Choisissez le composant que vous souhaitez mettre à jour.

1. Choisissez **Modifier**.

1. Sur la page **Modifier le composant**, effectuez l'une des opérations suivantes :
   + Dans **Informations relatives au modèle**, modifiez le **nom** du modèle.
   + Modifiez l'une des **définitions d'attribut**. Vous ne pouvez pas modifier le **type de données** des attributs existants. Pour de plus amples informations, veuillez consulter [Définir des données statiques (attributs)](attributes.md).
   + Modifiez l'une des **définitions de mesure**. Vous ne pouvez pas modifier le **type de données** des mesures existantes. Pour de plus amples informations, veuillez consulter [Définir les flux de données provenant de l'équipement (mesures)](measurements.md).
   + Modifiez l'une des **définitions de transformation**. Pour de plus amples informations, veuillez consulter [Transformer les données (transformations)](transforms.md).
   + Modifiez l'une des **définitions de métrique**. Vous ne pouvez pas modifier l'**intervalle de temps** des métriques existantes. Pour de plus amples informations, veuillez consulter [Données agrégées provenant de propriétés et d'autres actifs (métriques)](metrics.md).

1. Choisissez **Enregistrer**.

## Mettre à jour un modèle composite personnalisé (AWS CLI)
<a name="update-custom-composite-model-cli"></a>

Utilisez le AWS Command Line Interface (AWS CLI) pour mettre à jour un modèle composite personnalisé.

Pour mettre à jour le nom ou la description, utilisez l'[UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)opération. Pour les modèles composites personnalisés en ligne uniquement, vous pouvez également mettre à jour les propriétés. Vous ne pouvez pas mettre à jour les propriétés d'un modèle composite component-model-based personnalisé, car son modèle de composant référencé fournit les propriétés associées.

**Important**  
Si vous supprimez une propriété d'un modèle composite personnalisé, toutes les données précédentes relatives à cette propriété sont AWS IoT SiteWise supprimées. Vous ne pouvez pas modifier le type ou le type de données d'une propriété existante.  
Pour remplacer une propriété de modèle composite existante par une nouvelle propriété identique`name`, procédez comme suit :  
Soumettez une `UpdateAssetModelCompositeModel` demande en supprimant l'intégralité de la propriété existante.
Soumettez une deuxième `UpdateAssetModelCompositeModel` demande qui inclut la nouvelle propriété. La nouvelle propriété de l'actif sera la même `name` que la précédente et AWS IoT SiteWise générera une nouvelle propriété unique`id`.

**Pour mettre à jour un modèle composite personnalisé (AWS CLI)**

1. Pour récupérer la définition du modèle composite existant, exécutez la commande suivante. Remplacez-le *composite-model-id* par l'ID ou l'ID externe du modèle composite personnalisé à mettre à jour, et *asset-model-id* par le modèle d'actif auquel le modèle composite personnalisé est associé. Pour plus d’informations, consultez le *Guide de l’utilisateur AWS IoT SiteWise *.

   1. Exécutez la commande ci-dessous :

      ```
      aws iotsitewise describe-asset-model-composite-model \
      --asset-model-composite-model-id composite-model-id \
      --asset-model-id asset-model-id
      ```

   1.  La commande ci-dessus renvoie la définition du modèle composite correspondant à la dernière version du modèle associé. Dans le cas d'utilisation où un modèle d'actif est dans un `FAILED` état, récupérez la définition de modèle valide correspondant à sa version active pour créer votre demande de mise à jour. Consultez [Versions du modèle d'actifs](model-active-version.md) pour plus de détails. 

   1. Exécutez la commande suivante pour récupérer la définition du modèle actif :

      ```
      aws iotsitewise describe-asset-model-composite-model \
      --asset-model-composite-model-id composite-model-id \
      --asset-model-id asset-model-id \
      --asset-model-version ACTIVE
      ```

   1. Pour plus d'informations, consultez l'[DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html)opération.

1. Créez un fichier appelé`update-custom-composite-model.json`, puis copiez la réponse de la commande précédente dans le fichier.

1. Supprimez toutes les paires clé-valeur de l'objet JSON, à `update-custom-composite-model.json` l'exception des champs suivants :
   + `assetModelCompositeModelName`
   + `assetModelCompositeModelDescription`(si présent)
   + `assetModelCompositeModelProperties`(si présent)

1. Dans `update-custom-composite-model.json`, effectuez l’une des actions suivantes :
   + Modifiez la valeur de`assetModelCompositeModelName`.
   + Ajoutez`assetModelCompositeModelDescription`, supprimez ou modifiez sa valeur.
   + Pour les modèles composites personnalisés en ligne uniquement : modifiez, ajoutez ou supprimez l'une des propriétés du modèle d'actif dans`assetModelCompositeModelProperties`.

   Pour plus d'informations sur le format requis pour ce fichier, consultez la syntaxe de demande pour [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html).

1. Exécutez la commande suivante pour mettre à jour le modèle composite personnalisé avec la définition stockée dans`update-custom-composite-model.json`. *composite-model-id*Remplacez-le par l'ID du modèle composite et *asset-model-id* par l'ID du modèle d'actif dans lequel il se trouve.

   ```
   aws iotsitewise update-asset-model-composite-model \
   --asset-model-composite-model-id composite-model-id \
   --asset-model-id asset-model-id \
   --cli-input-json file://update-custom-composite-model.json
   ```

**Important**  
 Lorsque plusieurs utilisateurs mettent à jour un modèle d'actif en même temps, les modifications apportées par un utilisateur peuvent être annulées par inadvertance par un autre utilisateur. Pour éviter cela, vous devez définir une demande de mise à jour conditionnelle. Consultez [Verrouillage optimiste pour les écrits sur le modèle d'actifs](opt-locking-for-model.md). 

# Verrouillage optimiste pour les écrits sur le modèle d'actifs
<a name="opt-locking-for-model"></a>

 Lors de la mise à jour d'un modèle d'actif, l'utilisateur effectue les opérations suivantes : 

1. Lisez la définition actuelle du modèle d'actifs.

1. Modifiez la définition du modèle d'actif avec les modifications requises.

1. Mettez à jour le modèle d'actif avec la nouvelle définition.

 Dans un scénario où deux utilisateurs mettent à jour un modèle, les opérations suivantes sont possibles : 
+ L'utilisateur A lit la définition du modèle d'actif X.
+ L'utilisateur B lit la définition du modèle d'actif X et valide les modifications, modifiant ainsi la définition de X.
+ L'utilisateur A valide et remplace les modifications apportées par l'utilisateur B pour le modèle d'actif X, sans vérifier ni intégrer les modifications apportées par l'utilisateur B.

 Le verrouillage optimiste est un mécanisme utilisé AWS IoT SiteWise pour empêcher les remplacements accidentels, comme dans le scénario ci-dessus. Le verrouillage optimiste est une stratégie visant à garantir que la version actuelle du modèle d'actif mise à jour ou supprimée est la même que sa version actuelle dans AWS IoT SiteWise. Cela empêche les écritures du modèle d'actifs d'être remplacées par des mises à jour accidentelles. 

Procédez comme suit pour effectuer des écritures de modèles d'actifs avec un verrouillage optimiste :

**Topics**
+ [Exécution d'écritures sur le modèle d'actifs avec un verrouillage optimiste (console)](#opt-locking-for-model-console)
+ [Exécution d'écritures sur le modèle d'actifs avec un verrou optimiste (AWS CLI)](#opt-locking-for-model-cli)

## Exécution d'écritures sur le modèle d'actifs avec un verrouillage optimiste (console)
<a name="opt-locking-for-model-console"></a>

La procédure ci-dessous décrit comment effectuer des écritures de modèles d'actifs avec un verrou optimiste sur la version active du modèle d'actif dans la console.

1. <a name="sitewise-open-console"></a>Accédez à la [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Dans le panneau de navigation, choisissez **Models (Modèles)**.

1. Choisissez le modèle d'actif ou le modèle de composant à mettre à jour.

1. Choisissez **Modifier**.

1. Apportez des modifications sur la page **Modifier le modèle**.

1. Choisissez **Enregistrer**.
**Note**  
Parfois, une ou plusieurs mises à jour réussies du modèle ont eu lieu entre le moment où l'utilisateur commence à modifier le modèle et celui où il enregistre les modifications apportées au modèle.  
Pour éviter que l'utilisateur ne remplace accidentellement les nouvelles mises à jour réussies, l'écriture de l'utilisateur est rejetée. La console désactive le bouton **Enregistrer** et invite l'utilisateur à actualiser la page **Modifier le modèle**. L'utilisateur doit à nouveau mettre à jour la nouvelle version active du modèle. L'utilisateur doit effectuer les étapes supplémentaires suivantes : 

1. Choisissez **Refresh**.

1. Suivez à nouveau les étapes 5 et 6.

## Exécution d'écritures sur le modèle d'actifs avec un verrou optimiste (AWS CLI)
<a name="opt-locking-for-model-cli"></a>

La procédure ci-dessous décrit comment effectuer des écritures de modèles d'actifs avec un verrouillage optimiste dans le AWS CLI.

1. **Récupère la ETag définition du modèle actuel associée**

    `ETag`est un jeton unique généré pour chaque nouvelle représentation d'un modèle d'actif. Appelez [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)l'API pour récupérer la définition du modèle d'actif actuel et l'associer à `ETag` partir de la réponse. 

    Lors de mises à jour simultanées, les utilisateurs effectuent soit des mises à jour réussies (modèle dans `ACTIVE` l'état), soit des mises à jour infructueuses (modèle dans `FAILED` l'état). Pour éviter qu'un utilisateur ne remplace accidentellement une mise à jour réussie, vous devez récupérer la version active du modèle d'[Versions du modèle d'actifs](model-active-version.md)actif et en obtenir la `ETag` valeur. 

   Exécutez la commande suivante :

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id \
   --asset-model-version ACTIVE
   ```

    La réponse renvoie la structure suivante : 

   ```
   {
     "assetModelId": "String",
     "assetModelArn": "String",
     "assetModelName": "String",
     ...
     "eTag": "String"
   }
   ```
**Note**  
 Vous devez récupérer la dernière version du modèle d'actif et sa version `ETag` afin de ne pas remplacer les mises à jour. 

1. **Exécuter les opérations UPDATE et DELETE avec des conditions d'écriture**

   Les modèles d'actifs suivants APIs favorisent un verrouillage optimiste :
   + [UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)
   + [DeleteAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModel.html)
   + [CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)
   + [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)
   + [DeleteAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModelCompositeModel.html)
**Note**  
 Les scénarios ci-dessous utilisent `UpdateAssetModel` l'API comme référence. Les conditions s'appliquent à toutes les opérations listées ci-dessus. 

   Les scénarios ci-dessous décrivent les différentes conditions d'écriture en fonction des exigences de contrôle de simultanéité :
   +  Exécutez la commande suivante afin de ne pas remplacer les mises à jour réussies. Aucune nouvelle version active ne doit exister depuis la dernière version active lue. Remplacez `e-tag` par le `ETag` renvoyé dans l'opération d'API utilisée lors de la lecture de la version active. 

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-match e-tag \
       --match-for-version-type ACTIVE \
       --cli-input-json file://model-payload.json
     ```
   +  Lorsque la création d'un modèle échoue, il n'existe pas encore de version active pour ce modèle, car il est dans un `FAILED` état. Il est toujours possible de remplacer une nouvelle version active déjà présente, avant que vos modifications ne soient validées. Exécutez la commande suivante pour ne pas remplacer une nouvelle version active lorsqu'aucune version active n'existe lors de votre dernière lecture.

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-none-match "*" \
       --match-for-version-type ACTIVE \
       --cli-input-json file://model-payload.json
     ```
   +  Exécutez la commande suivante pour éviter de remplacer les mises à jour réussies ou infructueuses. Cette commande définit une condition d'écriture qui garantit qu'aucune dernière version n'est créée depuis votre dernière lecture de la dernière version. Remplacez `e-tag` par le `ETag` renvoyé dans l'opération d'API utilisée lors de la lecture de la version active.

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-match eTag \
       --match-for-version-type LATEST \
       --cli-input-json file://model-payload.json
     ```

     Si la condition d'écriture est évaluée à`FALSE`, la demande d'écriture échoue avec le`PreconditionFailedException`.