Bloqueo positivo de las escrituras del modelo de activos - AWS IoT SiteWise

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

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

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

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

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

Realización de escrituras del modelo de activos con bloqueo positivo (consola)

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. Vaya a la consola de AWS IoT SiteWise.

  2. En el panel de navegación, elija Models (Modelos).

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

  4. Elija Editar.

  5. Realice cambios en la página Editar modelo.

  6. Seleccione Guardar.

    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:

  7. Elija Actualizar.

  8. Siga los pasos 5 y 6 de nuevo.

Realización de escrituras del modelo de activos con bloqueo positivo (AWS CLI)

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 DescribeAssetModelAPI 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 y obtener el valor de ETag.

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

  2. Realice las operaciones UPDATE y DELETE con condiciones de escritura

    El siguiente modelo de activos APIs apoya un bloqueo optimista:

    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.