View a markdown version of this page

Blocco ottimistico per le scritture del modello di asset - AWS IoT SiteWise

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Blocco ottimistico per le scritture del modello di asset

Quando si aggiorna un modello di asset, un utente effettua le seguenti operazioni:

  1. Leggete la definizione corrente del modello di asset.

  2. Modificate la definizione del modello di asset con le modifiche necessarie.

  3. Aggiorna il modello di asset con la nuova definizione.

In uno scenario in cui due utenti aggiornano un modello, è possibile quanto segue:

  • L'utente A legge la definizione X del modello di asset.

  • L'utente B legge la definizione del modello di asset X e apporta le modifiche, modificando la definizione di X.

  • L'utente A esegue il commit e sovrascrive la modifica apportata dall'utente B per il modello di asset X, senza verificare o incorporare le modifiche dell'utente B.

Il blocco ottimistico è un meccanismo utilizzato per prevenire sovrascritture accidentali AWS IoT SiteWise come nello scenario precedente. Il blocco ottimistico è una strategia per garantire che la versione corrente del modello di asset da aggiornare o eliminare sia la stessa della versione corrente in. AWS IoT SiteWise Questo protegge le scritture del modello di asset dall'essere sovrascritte da aggiornamenti accidentali.

Segui questi passaggi per eseguire la scrittura del modello di asset con blocco ottimistico:

Esecuzione di scritture di modelli di asset con optimistic lock (console)

La procedura seguente descrive come eseguire la scrittura del modello di asset con un blocco ottimistico sulla versione attiva del modello di asset nella console.

  1. Passare alla console AWS IoT SiteWise.

  2. Nel riquadro di navigazione selezionare Models (Modelli).

  3. Scegliete il modello di asset o il modello di componente da aggiornare.

  4. Scegli Modifica.

  5. Apportate le modifiche nella pagina Modifica modello.

  6. Selezionare Salva.

    Nota

    A volte, uno o più aggiornamenti del modello sono riusciti tra il momento in cui l'utente inizia a modificare il modello e il salvataggio delle modifiche apportate al modello.

    Per garantire che l'utente non sovrascriva accidentalmente nuovi aggiornamenti riusciti, la scrittura dell'utente viene rifiutata. La console disabilita il pulsante Salva e richiede all'utente di aggiornare la pagina Modifica modello. L'utente deve aggiornare nuovamente la nuova versione attiva del modello. L'utente deve eseguire i seguenti passaggi aggiuntivi:

  7. Scegliere Refresh (Aggiorna).

  8. Segui nuovamente i passaggi 5 e 6.

Esecuzione della scrittura del modello di asset con optimistic lock (AWS CLI)

La procedura seguente descrive come eseguire la scrittura del modello di asset con un blocco ottimistico in. AWS CLI

  1. Recupera l'ETag associato alla definizione corrente del modello

    ETagè un token univoco generato per ogni nuova rappresentazione di un modello di asset. Chiama l'DescribeAssetModelAPI per recuperare la definizione del modello di asset corrente e associata ETag dalla risposta.

    Durante gli aggiornamenti simultanei, gli utenti eseguono aggiornamenti riusciti (modello in ACTIVE stato) o aggiornamenti non riusciti (modello in FAILED stato). Per garantire che un utente non sovrascriva accidentalmente un aggiornamento riuscito, è necessario recuperare la versione attiva del modello di asset da Versioni del modello di asset e ottenere il valore. ETag

    Esegui il comando seguente:

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

    La risposta restituisce la seguente struttura:

    { "assetModelId": "String", "assetModelArn": "String", "assetModelName": "String", ... "eTag": "String" }
    Nota

    È necessario recuperare l'ultima versione del modello di asset e la relativa ETag versione per non sovrascrivere alcun aggiornamento.

  2. Eseguite le operazioni UPDATE e DELETE con condizioni di scrittura

    Le seguenti API per i modelli di asset supportano il blocco ottimistico:

    Nota

    Gli scenari seguenti utilizzano l'UpdateAssetModelAPI come riferimento. Le condizioni si applicano a tutte le operazioni sopra elencate.

    Gli scenari seguenti descrivono le diverse condizioni di scrittura in base ai requisiti di controllo della concorrenza:

    • Esegui il comando seguente per non sovrascrivere gli aggiornamenti riusciti. Una nuova versione attiva non deve esistere dopo l'ultima versione attiva letta. Sostituisci e-tag con quello ETag restituito nell'operazione API utilizzata nella lettura della versione attiva.

      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
    • Quando la creazione di un modello fallisce, non esiste ancora una versione attiva, perché è in uno FAILED stato. È ancora possibile sovrascrivere una nuova versione attiva presente, prima che le modifiche vengano confermate. Esegui il comando seguente per non sovrascrivere una nuova versione attiva, quando una versione attiva non esiste durante l'ultima lettura.

      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
    • Eseguite il comando seguente per evitare di sovrascrivere eventuali aggiornamenti riusciti o meno. Questo comando definisce una condizione di scrittura che garantisce che non venga creata una versione più recente dopo l'ultima versione letta. Sostituisci e-tag con quello ETag restituito nell'operazione API utilizzata nella lettura della versione attiva.

      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

      Se la condizione di scrittura restituisce il risultatoFALSE, la richiesta di scrittura ha esito negativo con. PreconditionFailedException