

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Bloqueo positivo de las escrituras del modelo de activos
<a name="opt-locking-for-model"></a>

 Al actualizar un modelo de activos, el usuario hace lo siguiente: 

1. Lee la definición del modelo de activos actual.

1. Edita la definición del modelo de activos con los cambios necesarios.

1. Actualiza el modelo de activos con la nueva definición.

 En un escenario en el que dos usuarios actualizan un modelo, es posible hacer lo siguiente: 
+ El usuario A lee la definición X del modelo de activos.
+ El usuario B lee la definición X del modelo de activos y confirma los cambios, modificando la definición de X.
+ El usuario A confirma y sobrescribe el cambio realizado por el usuario B para el modelo de activos X, sin verificar ni incorporar los cambios del usuario B.

 El bloqueo optimista es un mecanismo que se utiliza AWS IoT SiteWise para evitar sobrescrituras accidentales, como en el escenario anterior. El bloqueo positivo es una estrategia para garantizar que la versión actual del modelo de activos que se está actualizando o eliminando sea la misma que la versión actual de AWS IoT SiteWise. Esto evita que las actualizaciones accidentales sobrescriban las escrituras del modelo de activos. 

Siga estos pasos para realizar escrituras del modelo de activos con bloqueo positivo:

**Topics**
+ [Realización de escrituras del modelo de activos con bloqueo positivo (consola)](#opt-locking-for-model-console)
+ [Realización de escrituras del modelo de activos con bloqueo positivo (AWS CLI)](#opt-locking-for-model-cli)

## Realización de escrituras del modelo de activos con bloqueo positivo (consola)
<a name="opt-locking-for-model-console"></a>

El siguiente procedimiento describe cómo realizar escrituras del modelo de activos con bloqueo positivo sobre la versión activa del modelo de activos de la consola.

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

1. <a name="sitewise-choose-models"></a>En el panel de navegación, elija **Models (Modelos)**.

1. Elija el modelo de activos o el modelo de componentes que desee actualizar.

1. Elija **Edit (Edición de)**.

1. Realice cambios en la página **Editar modelo**.

1. Seleccione **Save**.
**nota**  
Algunas veces se han producido una o varias actualizaciones correctas del modelo entre el momento en que el usuario comienza a editar el modelo y el momento en que guarda las modificaciones realizadas en el modelo.  
Para garantizar que el usuario no sobrescriba accidentalmente las nuevas actualizaciones realizadas correctamente, se rechaza la escritura del usuario. La consola deshabilita el botón **Guardar** y solicita al usuario que actualice la página **Editar modelo**. El usuario debe volver a actualizar la nueva versión activa del modelo. El usuario debe dar los siguientes pasos adicionales: 

1. Elija **Actualizar**.

1. Siga los pasos 5 y 6 de nuevo.

## Realización de escrituras del modelo de activos con bloqueo positivo (AWS CLI)
<a name="opt-locking-for-model-cli"></a>

El siguiente procedimiento describe cómo realizar escrituras del modelo de activos con bloqueo positivo en la AWS CLI.

1. **Obtenga la definición del modelo ETag asociada al modelo actual**

    `ETag` es un token único que se genera para cada nueva representación de un modelo de activos. Llame a la [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)API para obtener la definición del modelo de activos actual y la asociada `ETag` a la respuesta. 

    En actualizaciones simultáneas los usuarios realizan actualizaciones correctas (modelo en estado `ACTIVE`) o actualizaciones incorrectas (modelo en estado `FAILED`). Para garantizar que un usuario no sobrescriba accidentalmente una actualización correcta, debe recuperar la versión activa del modelo de activos de [Versiones de modelos de activos](model-active-version.md) y obtener el valor de `ETag`. 

   Use el siguiente comando:

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

    La respuesta devuelve la siguiente estructura: 

   ```
   {
     "assetModelId": "String",
     "assetModelArn": "String",
     "assetModelName": "String",
     ...
     "eTag": "String"
   }
   ```
**nota**  
 Debe recuperar la última versión del modelo de activos y su `ETag` para no sobrescribir ninguna actualización. 

1. **Realice las operaciones UPDATE y DELETE con condiciones de escritura**

   El siguiente modelo de activos APIs apoya un bloqueo optimista:
   + [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**  
 Los siguientes escenarios utilizan la API `UpdateAssetModel` como referencia. Las condiciones se aplican a todas las operaciones enumeradas anteriormente. 

   Los siguientes escenarios describen las diferentes condiciones de escritura en función de los requisitos de control de simultaneidad:
   +  Ejecute el siguiente comando para no sobrescribir actualizaciones correctas. No debe existir una nueva versión activa desde la última versión activa leída. Sustituya `e-tag` por la `ETag` devuelta en la operación de la API utilizada en la lectura de la versión activa. 

     ```
     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
     ```
   +  Cuando se produce un error en la creación de un modelo, todavía no existe una versión activa para él, porque se encuentra en estado `FAILED`. Todavía sigue siendo posible sobrescribir una nueva versión activa que esté presente antes de que se confirmen los cambios. Ejecute el siguiente comando para no sobrescribir una nueva versión activa cuando no haya una versión activa durante la última lectura.

     ```
     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
     ```
   +  Ejecute el siguiente comando para evitar sobrescribir actualizaciones correctas o fallidas. Este comando define una condición de escritura que garantiza que no se cree una versión más reciente desde la versión más reciente leída por última vez. Sustituya `e-tag` por la `ETag` devuelta en la operación de la API utilizada en la lectura de la versión activa.

     ```
     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 condición de escritura se evalúa como `FALSE`, la solicitud de escritura fallará con la `PreconditionFailedException`.