Blocco ottimistico per le scritture dei modelli 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 dei modelli di asset

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

  1. Leggete la definizione attuale del modello di asset.

  2. Modifica la definizione del modello di asset con le modifiche richieste.

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

In uno scenario con due utenti che 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 da 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 venga aggiornata o eliminata e che corrisponda alla versione attuale. AWS IoT SiteWise In questo modo si evita che le scritture del modello di asset vengano sovrascritte da aggiornamenti accidentali.

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

Esecuzione di scritture su modelli di asset con blocco ottimistico (console)

La procedura riportata di seguito descrive come eseguire le scritture dei modelli 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. Apporta le modifiche nella pagina Modifica modello.

  6. Seleziona Salva.

    Nota

    A volte, uno o più aggiornamenti del modello sono stati eseguiti correttamente 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 i nuovi aggiornamenti riusciti, la scrittura dell'utente viene rifiutata. La console disattiva 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 di scritture su modelli di asset con optimistic lock ()AWS CLI

La procedura riportata di seguito descrive come eseguire la scrittura di modelli di asset con blocco ottimistico in. AWS CLI

  1. Recupera la definizione del modello ETag associata alla definizione corrente

    ETagè un token unico generato per ogni nuova rappresentazione di un modello di asset. Chiama DescribeAssetModelAPIper recuperare la definizione corrente del modello di asset e la relativa definizione ETag dalla risposta.

    Durante gli aggiornamenti simultanei, gli utenti eseguono aggiornamenti con successo (modello in ACTIVE stato) o aggiornamenti non riusciti (modello in FAILED stato). Per evitare che un utente sovrascriva accidentalmente un aggiornamento riuscito, dovete recuperare la versione attiva del modello di asset da Versioni del modello di asset e ottenerne 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 la versione più recente del modello di asset e la relativa ETag per non sovrascrivere gli aggiornamenti.

  2. Esegui qualsiasi UPDATE DELETE operazione con condizioni di scrittura

    Il seguente modello di asset APIs supporta il blocco ottimistico:

    Nota

    Gli scenari seguenti vengono utilizzati UpdateAssetModel API come riferimento. Le condizioni si applicano a tutte le operazioni sopra elencate.

    Gli scenari seguenti descrivono le diverse condizioni di scrittura a seconda dei requisiti di controllo della concorrenza:

    • Esegui il comando seguente per non sovrascrivere eventuali aggiornamenti riusciti. Non deve esistere una nuova versione attiva, a partire dall'ultima versione attiva letta. Sostituisci e-tag con quella ETag restituita nell'APIoperazione 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 del modello, perché è in uno FAILED stato. È comunque 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
    • Esegui 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'APIoperazione 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 un risultato positivoFALSE, la richiesta di scrittura ha esito negativo e restituiscePreconditionFailedException.