View a markdown version of this page

Optimistische Sperrung für Schreibvorgänge im Asset-Modell - 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.

Optimistische Sperrung für Schreibvorgänge im Asset-Modell

Beim Aktualisieren eines Anlagenmodells geht ein Benutzer wie folgt vor:

  1. Lesen Sie die aktuelle Anlagenmodelldefinition.

  2. Bearbeiten Sie die Anlagenmodelldefinition mit den erforderlichen Änderungen.

  3. Aktualisieren Sie das Anlagenmodell mit der neuen Definition.

In einem Szenario mit zwei Benutzern, die ein Modell aktualisieren, ist Folgendes möglich:

  • Benutzer A liest die X-Definition des Anlagenmodells.

  • Benutzer B liest die X-Definition des Anlagenmodells und schreibt Änderungen fest, wodurch die Definition von X geändert wird.

  • Benutzer A bestätigt und überschreibt die von Benutzer B für Asset-Modell 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 wird, dass die aktuelle Version des Anlagenmodells, die aktualisiert oder gelöscht wird, mit der aktuellen Version in AWS IoT SiteWise identisch ist. Dadurch wird verhindert, dass Schreibvorgänge im Asset-Modell durch versehentliche Aktualisierungen überschrieben werden.

Gehen Sie wie folgt vor, um Asset-Modell-Schreibvorgänge mit optimistischer Sperrung durchzuführen:

Durchführen von Schreibvorgängen für Asset-Modelle mit optimistischer Sperre (Konsole)

Das folgende Verfahren beschreibt, wie Sie Asset-Modell-Schreibvorgänge mit einer optimistischen Sperre für die aktive Version des Asset-Modells 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 Asset- oder Komponentenmodell aus, das aktualisiert werden soll.

  4. Wählen Sie Bearbeiten aus.

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

  6. Wählen Sie Speichern.

    Anmerkung

    Manchmal sind zwischen dem Beginn der Bearbeitung des Modells durch den Benutzer und dem Speichern der vorgenommenen Änderungen am Modell eine oder mehrere erfolgreiche Modellaktualisierungen erfolgt.

    Um sicherzustellen, dass der Benutzer nicht versehentlich neue erfolgreiche Aktualisierungen überschreibt, wird der Schreibvorgang des Benutzers abgelehnt. 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 den Schritten 5 und 6 erneut.

Durchführen von Asset-Model-Schreibvorgängen mit optimistischer Sperre (AWS CLI)

Das folgende Verfahren beschreibt, wie Sie Asset-Modell-Schreibvorgänge mit optimistischem Sperren in der durchführen AWS CLI.

  1. Ruft das ETag ab, das der aktuellen Modelldefinition zugeordnet ist

    ETagist ein eindeutiges Token, das für jede neue Darstellung eines Asset-Modells generiert wird. Rufen Sie die DescribeAssetModel API auf, um die aktuelle Asset-Modell-Definition und die zugehörigen Daten ETag aus der Antwort abzurufen.

    Bei gleichzeitigen Aktualisierungen führen Benutzer entweder erfolgreiche Aktualisierungen (Modell im ACTIVE Status) oder erfolglose Aktualisierungen (Modell im FAILED Status) durch. Um sicherzustellen, dass ein Benutzer ein erfolgreiches Update nicht versehentlich überschreibt, müssen Sie die aktive Version des Anlagenmodells von Versionen des Anlagenmodells abrufen 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 Anlagenmodells und der zugehörigen ETag Version abrufen, um keine Aktualisierungen zu überschreiben.

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

    Die folgenden Asset-Model-APIs unterstützen optimistisches Sperren:

    Anmerkung

    In den folgenden Szenarien wird die UpdateAssetModel API als Referenz verwendet. Die Bedingungen gelten für alle oben aufgeführten Operationen.

    In den folgenden Szenarien werden die unterschiedlichen Schreibbedingungen beschrieben, die von den Anforderungen an die Parallelitätskontrolle abhängen:

    • Führen Sie den folgenden Befehl aus, um erfolgreiche Updates nicht zu überschreiben. Eine neue aktive Version darf seit der letzten gelesenen aktiven Version nicht mehr existieren. e-tagErsetzen Sie durch den in der API ETag zurückgegebenen Vorgang, 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, existiert für das Modell noch keine aktive Version, da es sich in einem FAILED Status befindet. Es ist immer noch möglich, eine neue aktive Version zu überschreiben, die 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 Lesen 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 Leseversion keine neueste Version erstellt wird. e-tagErsetzen Sie durch den in der API ETag zurückgegebenen Vorgang, der 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

      Wenn die Schreibbedingung wie folgt ausgewertet wirdFALSE, schlägt die Schreibanforderung mit dem PreconditionFailedException fehl.