Optimistisches Sperren für Asset-Modell-Schreibvorgänge - AWS IoT SiteWise

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Optimistisches Sperren für Asset-Modell-Schreibvorgänge

Beim Aktualisieren eines Asset-Modells geht ein Benutzer wie folgt vor:

  1. Lesen Sie die aktuelle Definition des Anlagenmodells.

  2. Bearbeiten Sie die Definition des Anlagenmodells mit den erforderlichen Änderungen.

  3. Aktualisieren Sie das Asset-Modell mit der neuen Definition.

In einem Szenario, in dem zwei Benutzer ein Modell aktualisieren, ist Folgendes möglich:

  • Benutzer A liest die Definition des Assetmodells X.

  • Benutzer B liest die Definition des Anlagenmodells X und überträgt die Änderungen, wodurch die Definition von X geändert wird.

  • Benutzer A übernimmt und überschreibt die von Benutzer B am Anlagenmodell X vorgenommene Änderung, ohne die Änderungen von Benutzer B zu überprüfen oder zu übernehmen.

Optimistisches Sperren ist ein Mechanismus, der verwendet wird AWS IoT SiteWise , um versehentliche Überschreibungen wie im obigen Szenario zu verhindern. Optimistisches Sperren ist eine Strategie, mit der sichergestellt werden soll, dass die aktuelle Version eines Asset-Modells, das aktualisiert oder gelöscht wird, mit der aktuellen Version in AWS IoT SiteWiseübereinstimmt. Dadurch wird verhindert, dass Schreibvorgänge im Asset-Modell durch versehentliche Aktualisierungen überschrieben werden.

Gehen Sie wie folgt vor, um Schreibvorgänge im Assetmodell mit optimistischem Sperren durchzuführen:

Ausführen von Schreibvorgängen im Asset-Modell mit optimistischer Sperre (Konsole)

Im Folgenden wird beschrieben, wie Sie Schreibvorgänge am Objektmodell mit einer optimistischen Sperre für die aktive Version des Objektmodells in der Konsole durchführen.

  1. Navigieren Sie zur AWS IoT SiteWise -Konsole.

  2. Klicken Sie im Navigationsbereich auf Models (Modelle).

  3. Wählen Sie das zu aktualisierende Asset- oder Komponentenmodell aus.

  4. Wählen Sie Edit (Bearbeiten) aus.

  5. Nehmen Sie auf der Seite Modell bearbeiten Änderungen vor.

  6. Wählen Sie Save (Speichern) aus.

    Anmerkung

    Manchmal wurden zwischen dem Beginn der Bearbeitung des Modells und dem Speichern der vorgenommenen Änderungen am Modell eine oder mehrere erfolgreiche Modellaktualisierungen durchgeführt.

    Um sicherzustellen, dass der Benutzer neue erfolgreiche Aktualisierungen nicht versehentlich überschreibt, wird der Schreibvorgang des Benutzers zurückgewiesen. Die Konsole deaktiviert die Schaltfläche Speichern und fordert den Benutzer auf, die Seite Modell bearbeiten zu aktualisieren. Der Benutzer muss die neue aktive Version des Modells erneut aktualisieren. Der Benutzer muss die folgenden zusätzlichen Schritte ausführen:

  7. Wählen Sie Refresh aus.

  8. Folgen Sie erneut den Schritten 5 und 6.

Ausführung von Schreibvorgängen im Asset-Modell mit optimistischem Lock (AWS CLI)

Im Folgenden wird beschrieben, wie Sie Schreibvorgänge im Assetmodell mit optimistischer Sperrung in durchführen AWS CLI.

  1. Ruft die mit dem aktuellen Modell ETag verknüpfte Definition ab

    ETagist ein eindeutiges Token, das für jede neue Darstellung eines Asset-Modells generiert wird. Rufen Sie DescribeAssetModelAPIauf, um die aktuelle Definition des Anlagenmodells und die zugehörige Definition ETag aus der Antwort abzurufen.

    Bei gleichzeitigen Aktualisierungen führen Benutzer entweder erfolgreiche Aktualisierungen (Model in ACTIVE State) oder erfolglose Updates (Model in FAILED State) durch. Um sicherzustellen, dass ein Benutzer ein erfolgreiches Update nicht versehentlich überschreibt, müssen Sie die aktive Version des Objektmodells abrufen Versionen von Asset-Modellen und den ETag Wert abrufen.

    Führen Sie den folgenden Befehl aus:

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

    Die Antwort gibt die folgende Struktur zurück:

    { "assetModelId": "String", "assetModelArn": "String", "assetModelName": "String", ... "eTag": "String" }
    Anmerkung

    Sie müssen die neueste Version des Asset-Modells und seiner ETag Version abrufen, um keine Aktualisierungen zu überschreiben.

  2. Führen Sie UPDATE DELETE Operationen mit Schreibbedingungen durch

    Das folgende Anlagemodell APIs unterstützt optimistisches Sperren:

    Anmerkung

    Die folgenden Szenarien dienen UpdateAssetModel API als Referenz. Die Bedingungen gelten für alle oben aufgeführten Operationen.

    In den folgenden Szenarien werden die unterschiedlichen Schreibbedingungen je nach den Anforderungen an die Parallelitätssteuerung beschrieben:

    • Führen Sie den folgenden Befehl aus, um erfolgreiche Updates nicht zu überschreiben. Eine neue aktive Version darf seit der zuletzt gelesenen aktiven Version nicht existieren. e-tagErsetzen Sie es durch den in der API Operation ETag zurückgegebenen Wert, der beim Lesen der aktiven Version verwendet wurde.

      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
    • Wenn eine Modellerstellung fehlschlägt, ist für das Modell noch keine aktive Version vorhanden, da es sich in einem FAILED Status befindet. Es ist immer noch möglich, eine neue aktive Version zu überschreiben, die bereits vorhanden ist, bevor Ihre Änderungen übernommen werden. Führen Sie den folgenden Befehl aus, um eine neue aktive Version nicht zu überschreiben, wenn beim letzten Lesevorgang keine aktive Version vorhanden war.

      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
    • Führen Sie den folgenden Befehl aus, um zu verhindern, dass erfolgreiche oder erfolglose Updates überschrieben werden. Dieser Befehl definiert eine Schreibbedingung, die sicherstellt, dass seit Ihrer letzten gelesenen letzten Version keine neueste Version erstellt wurde. Ersetzt e-tag durch den ETag Wert, der in der API Operation zurückgegeben wurde, die beim Lesen der aktiven Version verwendet wurde.

      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

      Ergibt die Schreibbedingung das ErgebnisFALSE, schlägt die Schreibanforderung mit dem PreconditionFailedException fehl.