El bloqueo optimista 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.

El bloqueo optimista de las escrituras del modelo de activos

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

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

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

  3. Actualice 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 del modelo de activos X.

  • El usuario B lee la definición del modelo de activos X 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 optimista 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. AWS IoT SiteWise Esto evita que las actualizaciones accidentales sobrescriban las escrituras del modelo de activos.

Siga estos pasos para escribir el modelo de activos con un bloqueo optimista:

Realizar la escritura del modelo de activos con un bloqueo optimista (consola)

El siguiente procedimiento describe cómo escribir un modelo de activos con un enfoque optimista sobre la versión activa del modelo de activos en 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 los cambios en la página de edición del modelo.

  6. Seleccione Guardar.

    nota

    A veces, se han realizado correctamente una o varias actualizaciones 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 desactiva el botón Guardar y solicita al usuario que actualice la página de edición del modelo. El usuario debe volver a actualizar la nueva versión activa del modelo. El usuario debe realizar los siguientes pasos adicionales:

  7. Elija Actualizar.

  8. Vuelva a seguir los pasos 5 y 6.

El modelo de activos que se ejecuta escribe con un bloqueo optimista (AWS CLI)

El siguiente procedimiento describe cómo realizar escrituras de modelos de activos con un bloqueo optimista en el AWS CLI.

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

    ETages un token único que se genera para cada nueva representación de un modelo de activos. Llame DescribeAssetModelAPIpara obtener la definición del modelo de activos actual y la asociada ETag a la respuesta.

    Durante las actualizaciones simultáneas, los usuarios realizan actualizaciones correctas (modelo en ACTIVE estado) o actualizaciones incorrectas (modelo en FAILED estado). Para garantizar que un usuario no sobrescriba accidentalmente una actualización correcta, debe recuperar la versión activa del modelo de Versiones del modelo de activos activos y obtener el ETag valor.

    Ejecute 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 versión para no sobrescribir ninguna actualización.

  2. Realiza DELETE operaciones UPDATE y operaciones con condiciones de escritura

    El siguiente modelo de activos APIs admite un bloqueo optimista:

    nota

    Los siguientes escenarios UpdateAssetModel API se utilizan 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 ninguna actualización correcta. No debe existir una nueva versión activa desde la última versión activa leída. e-tagSustitúyala por la ETag devuelta en la API operación 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 porque se encuentra en un FAILED estado. Aún es 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 ninguna 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 las actualizaciones correctas o incorrectas. Este comando define una condición de escritura que garantiza que no se cree una versión más reciente desde la última versión leída por última vez. e-tagSustitúyalo por el ETag devuelto en la API operación 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 comoFALSE, la solicitud de escritura fallará con elPreconditionFailedException.