Verrouillage optimiste pour les écrits sur le modèle d'actifs - AWS IoT SiteWise

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.

Verrouillage optimiste pour les écrits sur le modèle d'actifs

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.

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

  3. 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 en cours de mise à jour ou de suppression 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 :

Exécution d'écritures sur le modèle d'actifs avec un verrouillage optimiste (console)

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. Accédez à la console AWS IoT SiteWise.

  2. Dans le panneau de navigation, choisissez Models (Modèles).

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

  4. Choisissez Modifier.

  5. Apportez des modifications sur la page Modifier le modèle.

  6. Choisissez Save (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 :

  7. Choisissez Refresh.

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

Exécution d'écritures sur le modèle d'actifs avec un verrou optimiste (AWS CLI)

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

    ETagest un jeton unique généré pour chaque nouvelle représentation d'un modèle d'actif. Appel DescribeAssetModelAPIpour 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'actifsactif 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.

  2. Exécution UPDATE et DELETE opérations avec des conditions d'écriture

    Les modèles d'actifs suivants APIs favorisent un verrouillage optimiste :

    Note

    Les scénarios ci-dessous sont utilisés UpdateAssetModel 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'APIopération 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'APIopération 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 lePreconditionFailedException.