

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à.

# Aggiorna risorse e modelli
<a name="update-assets-and-models"></a>

È possibile aggiornare gli asset, i modelli di asset, i modelli di componenti e le interfacce AWS IoT SiteWise per modificarne i nomi e le definizioni. Queste operazioni di aggiornamento sono asincrone e richiedono tempo per essere propagate. AWS IoT SiteWise Controllate lo stato della risorsa o del modello prima di apportare ulteriori modifiche. È necessario attendere la propagazione delle modifiche prima di poter continuare a utilizzare l'asset o il modello aggiornato.

**Topics**
+ [Aggiorna le risorse in AWS IoT SiteWise](update-assets.md)
+ [Aggiorna i modelli di asset, i modelli dei componenti e le interfacce](update-asset-models.md)
+ [Aggiorna modelli compositi personalizzati (componenti)](update-custom-composite-models.md)
+ [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md)

# Aggiorna le risorse in AWS IoT SiteWise
<a name="update-assets"></a>

Puoi utilizzare la AWS IoT SiteWise console o l'API per aggiornare il nome di una risorsa.

Quando aggiorni una risorsa, lo stato della risorsa rimane invariato `UPDATING` fino alla propagazione delle modifiche. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

**Topics**
+ [Aggiorna una risorsa (console)](#update-asset-console)
+ [Aggiorna una risorsa (AWS CLI)](#update-asset-cli)

## Aggiorna una risorsa (console)
<a name="update-asset-console"></a>

Puoi utilizzare la AWS IoT SiteWise console per aggiornare i dettagli della risorsa.

**Per aggiornare un asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Scegli l'asset da aggiornare.
**Suggerimento**  <a name="sitewise-expand-asset-hierarchy"></a>
Puoi scegliere l'icona a forma di freccia per espandere una gerarchia di asset e trovare il tuo asset.

1. Scegli **Modifica**.

1. Aggiorna il **nome**dell'asset.

1. (Facoltativo) In questa pagina aggiorna altre informazioni relative all'asset. Per ulteriori informazioni, consulta gli argomenti seguenti:
   + [Gestisci i flussi di dati per AWS IoT SiteWise](manage-data-streams.md)
   + [Aggiorna i valori degli attributi](update-attribute-values.md)
   + [Interagisci con altri AWS servizi](interact-with-other-services.md)

1. Scegli **Save** (Salva).

## Aggiorna una risorsa (AWS CLI)
<a name="update-asset-cli"></a>

Puoi usare il AWS Command Line Interface (AWS CLI) per aggiornare il nome di una risorsa.

Utilizzate l'[UpdateAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAsset.html)operazione per aggiornare una risorsa. Specifica i seguenti parametri:
+ `assetId`— L'ID della risorsa. Questo è l'ID effettivo in formato UUID, o `externalId:myExternalId` se ne ha uno. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.
+ `assetName`— Il nuovo nome della risorsa.

**Per aggiornare il nome di una risorsa (AWS CLI)**
+ Esegui il comando seguente per aggiornare il nome di un asset. Sostituisci *asset-id* con l'ID o l'ID esterno della risorsa. Aggiorna il *asset-name* con il nuovo nome della risorsa.

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

# Aggiorna i modelli di asset, i modelli dei componenti e le interfacce
<a name="update-asset-models"></a>

Utilizza la AWS IoT SiteWise console o l'API per aggiornare un modello di asset, un modello di componente o un'interfaccia.

Non puoi modificare il tipo o il tipo di dati di una proprietà esistente o la finestra di una metrica esistente. Inoltre, non è possibile modificare il tipo di modello da modello di asset a modello di componenti o interfaccia o viceversa.

**Importante**  
Se rimuovete una proprietà da un modello di asset o da un modello di componente, AWS IoT SiteWise elimina tutti i dati precedenti relativi a quella proprietà. Per quanto riguarda i modelli a componenti, ciò influisce su **tutti i modelli di asset che utilizzano quel modello di componenti**, quindi prestate particolare attenzione a capire in che misura la modifica può essere applicata.
Se rimuovete una definizione di gerarchia da un modello di asset, AWS IoT SiteWise dissocia tutti gli asset in quella gerarchia.

Quando aggiorni un modello, anche gli asset basati su quel modello assimilano le modifiche apportate. Fino a quando le modifiche non si propagano, ogni asset ha lo stato `UPDATING`. È necessario attendere fino a quando gli asset ritornano nello stato `ACTIVE` prima di poter interagire con loro. In questo lasso di tempo, lo stato del modello di asset aggiornato sarà `PROPAGATING`.

Quando aggiornate un modello di componente, ogni modello di asset che incorpora quel modello di componente riflette le modifiche. Fino a quando le modifiche al modello di componente non si propagano, ogni modello di asset interessato presenta `UPDATING` lo stato, seguito dall'`PROPAGATING`aggiornamento degli asset associati, come descritto nel paragrafo precedente. È necessario attendere che tali modelli di asset tornino allo `ACTIVE` stato precedente prima di interagire con essi. Durante questo periodo, lo stato del modello di componente aggiornato sarà`PROPAGATING`.

Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

**Topics**
+ [Aggiornamento di un modello di asset, di un modello di componente o di un'interfaccia (console)](#update-asset-model-console)
+ [Aggiornate un modello di asset, un modello di componente o un'interfaccia ()AWS CLI](#update-asset-model-cli)

## Aggiornamento di un modello di asset, di un modello di componente o di un'interfaccia (console)
<a name="update-asset-model-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per aggiornare un modello di asset, un modello di componente o un'interfaccia.

**Per aggiornare un modello di asset, un modello di componente o un'interfaccia (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset, il modello di componente o l'interfaccia da aggiornare.

1. Scegli **Modifica**.

1. Nella pagina **Modifica modello** esegui una delle operazioni seguenti:
   + In **Dettagli del modello** modifica il **nome** del modello.
   + Modifica una delle **definizioni degli attributi**. Non è possibile modificare il **tipo di dati** degli attributi esistenti. Per ulteriori informazioni, consulta [Definisci dati statici (attributi)](attributes.md).
   + Modifica una delle **definizioni di misurazione**. Non è possibile modificare il **tipo di dati** delle misurazioni esistenti. Per ulteriori informazioni, consulta [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md).
   + Modifica una delle **definizioni di trasformazione**. Per ulteriori informazioni, consulta [Trasforma i dati (trasformazioni)](transforms.md).
   + Modifica una delle **definizioni di parametro**. Non è possibile modificare l'**intervallo di tempo** dei parametri esistenti. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md).
   + (Solo modelli di asset) Modificate una qualsiasi **definizione della gerarchia**. Non è possibile modificare il **modello di gerarchia** delle gerarchie esistenti. Per ulteriori informazioni, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).

1. Scegli **Save** (Salva).

**Nota**  
 Le richieste di aggiornamento effettuate nella console vengono rifiutate se un altro utente aggiorna correttamente il modello di asset dall'ultima apertura della pagina **Modifica modello**. La console richiede all'utente di **aggiornare** la pagina **Modifica modello** per recuperare il modello aggiornato. È necessario effettuare nuovamente gli aggiornamenti e riprovare a salvare. Per ulteriori dettagli, consulta [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md). 

## Aggiornate un modello di asset, un modello di componente o un'interfaccia ()AWS CLI
<a name="update-asset-model-cli"></a>

Utilizzate AWS Command Line Interface (AWS CLI) per aggiornare un modello di asset, un modello di componente o un'interfaccia.

Utilizzate l'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API per aggiornare il nome, la descrizione e le proprietà di un modello di asset, di un modello di componente o di un'interfaccia. Solo per i modelli di asset, puoi aggiornare le gerarchie. Per quanto riguarda le interfacce, è possibile aggiornare proprietà e gerarchie. Specifica i seguenti parametri:
+ `assetModelId`— L'ID della risorsa. Questo è l'ID effettivo in formato UUID, o `externalId:myExternalId` se ne ha uno. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

Specificate il modello aggiornato nel payload. Per ulteriori informazioni sul formato previsto di un modello di asset o di un modello di componente, vedere[Crea modelli di asset in AWS IoT SiteWise](create-asset-models.md). 

**avvertimento**  
L'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API sovrascrive il modello esistente con il modello fornito nel payload. Per evitare di eliminare le proprietà o le gerarchie del modello, è necessario includere le relative definizioni nel payload IDs del modello aggiornato. Per informazioni su come interrogare la struttura esistente del modello, consultate l'operazione. [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)

**Nota**  
La procedura seguente può aggiornare solo modelli compositi di tipo`AWS/ALARM`. Se desideri aggiornare i modelli `CUSTOM` compositi, usa [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)invece. Per ulteriori informazioni, consulta [Aggiorna modelli compositi personalizzati (componenti)](update-custom-composite-models.md).

**Per aggiornare un modello di asset o un modello di componente (AWS CLI)**

1. Eseguite il comando seguente per recuperare la definizione del modello esistente. *asset-model-id*Sostituitelo con l'ID o l'ID esterno del modello di asset o del modello di componente da aggiornare.

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

   Il comando precedente restituisce la definizione del modello corrispondente alla versione più recente del modello.

    Per un caso d'uso in cui un modello di asset si trova in uno `FAILED` stato, recuperate la definizione di modello valida corrispondente alla sua versione attiva per creare la richiesta di aggiornamento. Per informazioni dettagliate, vedi [Versioni del modello di asset](model-active-version.md). Eseguite il comando seguente per recuperare la definizione attiva del modello:

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

   L'operazione restituisce una risposta che contiene i dettagli del modello. La risposta ha la seguente struttura.

   ```
   {
       "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"
   }
   ```

   Per maggiori informazioni, vedi l'operazione [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html).

1. Crea un file denominato `update-asset-model.json` e copia la risposta del comando precedente nel file.

1. Rimuovi le seguenti coppie chiave-valore dall'oggetto JSON in `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)operazione prevede un payload con la seguente struttura:

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

1. In `update-asset-model.json`, effettua una delle seguenti operazioni:
   + Modifica il nome del modello di asset (`assetModelName`).
   + Modifica, aggiungi o rimuovi la descrizione del modello di asset (`assetModelDescription`).
   + Modifica, aggiungi o rimuovi qualsiasi proprietà del modello di asset (`assetModelProperties`). Non è possibile modificare l'elemento `dataType` delle proprietà esistenti o l'elemento `window` dei parametri esistenti. Per ulteriori informazioni, consulta [Definite le proprietà dei dati](asset-properties.md).
   + Modifica, aggiungi o rimuovi una delle gerarchie del modello di asset (`assetModelHierarchies`). Non è possibile modificare l'elemento `childAssetModelId` delle gerarchie esistenti. Per ulteriori informazioni, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).
   + Modifica, aggiungi o rimuovi uno qualsiasi dei modelli compositi di type `AWS/ALARM` () `assetModelCompositeModels` del modello di asset. Gli allarmi monitorano altre proprietà in modo da poter identificare quando le apparecchiature o i processi richiedono attenzione. Ogni definizione di allarme è un modello composito che standardizza l'insieme di proprietà utilizzate dall'allarme. Per ulteriori informazioni, consultare [Monitora i dati con allarmi in AWS IoT SiteWise](industrial-alarms.md) e [Definisci gli allarmi sui modelli di asset in AWS IoT SiteWise](define-alarms.md).

1. Esegui il comando seguente per aggiornare il modello di asset con la definizione memorizzata in `update-asset-model.json`. Sostituisci *asset-model-id* con l'ID del modello di asset:

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

**Importante**  
 Quando più utenti aggiornano un modello di asset contemporaneamente, le modifiche di un utente possono essere inavvertitamente sovrascritte da un altro utente. Per evitare ciò, è necessario definire una richiesta di aggiornamento condizionale. Per informazioni, consulta [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md). 

# Aggiorna modelli compositi personalizzati (componenti)
<a name="update-custom-composite-models"></a>

È possibile utilizzare l' AWS IoT SiteWise API per aggiornare un modello composito personalizzato o la AWS IoT SiteWise console per aggiornare i componenti.

**Topics**
+ [Aggiorna un componente (console)](#update-custom-composite-model-console)
+ [Aggiornate un modello composito personalizzato (AWS CLI)](#update-custom-composite-model-cli)

## Aggiorna un componente (console)
<a name="update-custom-composite-model-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per aggiornare un componente.

**Per aggiornare un componente (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset in cui si trova il componente.

1. Nella scheda **Proprietà**, scegliete **Componenti**.

1. Scegliete il componente che desiderate aggiornare.

1. Scegli **Modifica**.

1. Nella pagina **Modifica componente**, effettuate una delle seguenti operazioni:
   + In **Dettagli del modello** modifica il **nome** del modello.
   + Modifica una delle **definizioni degli attributi**. Non è possibile modificare il **tipo di dati** degli attributi esistenti. Per ulteriori informazioni, consulta [Definisci dati statici (attributi)](attributes.md).
   + Modifica una delle **definizioni di misurazione**. Non è possibile modificare il **tipo di dati** delle misurazioni esistenti. Per ulteriori informazioni, consulta [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md).
   + Modifica una delle **definizioni di trasformazione**. Per ulteriori informazioni, consulta [Trasforma i dati (trasformazioni)](transforms.md).
   + Modifica una delle **definizioni di parametro**. Non è possibile modificare l'**intervallo di tempo** dei parametri esistenti. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md).

1. Scegli **Save** (Salva).

## Aggiornate un modello composito personalizzato (AWS CLI)
<a name="update-custom-composite-model-cli"></a>

Utilizzate il AWS Command Line Interface (AWS CLI) per aggiornare un modello composito personalizzato.

Per aggiornare il nome o la descrizione, utilizzate l'[UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)operazione. Solo per i modelli compositi personalizzati in linea, puoi anche aggiornare le proprietà. Non è possibile aggiornare le proprietà di un modello composito component-model-based personalizzato, poiché il modello di componente a cui fa riferimento fornisce le proprietà associate.

**Importante**  
Se rimuovete una proprietà da un modello composito personalizzato, AWS IoT SiteWise elimina tutti i dati precedenti relativi a quella proprietà. Non è possibile modificare il tipo o il tipo di dati di una proprietà esistente.  
Per sostituire una proprietà esistente del modello composito con una nuova con la stessa proprietà`name`, procedi come segue:  
Inviate una `UpdateAssetModelCompositeModel` richiesta con l'intera proprietà esistente rimossa.
Invia una seconda `UpdateAssetModelCompositeModel` richiesta che includa la nuova proprietà. La nuova proprietà dell'asset avrà la `name` stessa di quella precedente e AWS IoT SiteWise genererà una nuova proprietà univoca`id`.

**Per aggiornare un modello composito personalizzato (AWS CLI)**

1. Per recuperare la definizione del modello composito esistente, eseguite il comando seguente. Sostituitelo *composite-model-id* con l'ID o l'ID esterno del modello composito personalizzato da aggiornare e *asset-model-id* con il modello di asset a cui è associato il modello composito personalizzato. Per ulteriori informazioni, consulta la *Guida per l'utente AWS IoT SiteWise *.

   1. Eseguite il comando seguente:

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

   1.  Il comando precedente restituisce la definizione del modello composito corrispondente all'ultima versione del modello associato. Per un caso d'uso in cui un modello di asset si trova in uno `FAILED` stato, recuperate la definizione di modello valida corrispondente alla sua versione attiva per creare la richiesta di aggiornamento. Per informazioni dettagliate, vedi [Versioni del modello di asset](model-active-version.md). 

   1. Eseguite il comando seguente per recuperare la definizione attiva del modello:

      ```
      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. Per maggiori informazioni, vedi l'operazione [DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html).

1. Create un file chiamato`update-custom-composite-model.json`, quindi copiate la risposta del comando precedente nel file.

1. Rimuovi ogni coppia chiave-valore dall'oggetto JSON ad `update-custom-composite-model.json` eccezione dei seguenti campi:
   + `assetModelCompositeModelName`
   + `assetModelCompositeModelDescription`(se presente)
   + `assetModelCompositeModelProperties`(se presente)

1. In `update-custom-composite-model.json`, effettua una delle seguenti operazioni:
   + Modificare il valore di`assetModelCompositeModelName`.
   + Aggiungi o `assetModelCompositeModelDescription` rimuovi o modificane il valore.
   + Solo per i modelli compositi personalizzati in linea: modifica, aggiungi o rimuovi qualsiasi proprietà del modello di asset in`assetModelCompositeModelProperties`.

   Per ulteriori informazioni sul formato richiesto per questo file, consultate la sintassi della richiesta per. [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)

1. Eseguite il comando seguente per aggiornare il modello composito personalizzato con la definizione memorizzata in`update-custom-composite-model.json`. Sostituiscilo *composite-model-id* con l'ID del modello composito e *asset-model-id* con l'ID del modello di asset in cui si trova.

   ```
   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
   ```

**Importante**  
 Quando più utenti aggiornano un modello di asset contemporaneamente, le modifiche di un utente possono essere inavvertitamente sovrascritte da un altro utente. Per evitare ciò, è necessario definire una richiesta di aggiornamento condizionale. Per informazioni, consulta [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md). 

# Blocco ottimistico per le scritture dei modelli di asset
<a name="opt-locking-for-model"></a>

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

1. Leggete la definizione attuale del modello di asset.

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

1. 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:

**Topics**
+ [Esecuzione di scritture su modelli di asset con blocco ottimistico (console)](#opt-locking-for-model-console)
+ [Esecuzione di scritture su modelli di asset con optimistic lock ()AWS CLI](#opt-locking-for-model-cli)

## Esecuzione di scritture su modelli di asset con blocco ottimistico (console)
<a name="opt-locking-for-model-console"></a>

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. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

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

1. Scegli **Modifica**.

1. Apporta le modifiche nella pagina **Modifica modello**.

1. Scegli **Save** (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: 

1. Scegliere **Refresh (Aggiorna)**.

1. Segui nuovamente i passaggi 5 e 6.

## Esecuzione di scritture su modelli di asset con optimistic lock ()AWS CLI
<a name="opt-locking-for-model-cli"></a>

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 [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)l'API per recuperare la definizione corrente del modello di asset e la relativa definizione associata alla `ETag` 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](model-active-version.md) 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. 

1. **Esegui le operazioni UPDATE e DELETE con condizioni di scrittura**

   Il seguente modello di asset APIs supporta il blocco ottimistico:
   + [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)
**Nota**  
 Gli scenari seguenti utilizzano l'`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'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 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 l'operazione API `ETag` restituita 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 positivo`FALSE`, la richiesta di scrittura ha esito negativo e restituisce`PreconditionFailedException`.