자산 모델 쓰기에 대한 낙관적 잠금 - AWS IoT SiteWise

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자산 모델 쓰기에 대한 낙관적 잠금

자산 모델을 업데이트할 때 사용자는 다음을 수행합니다.

  1. 현재 자산 모델 정의를 읽어보십시오.

  2. 필요한 변경 내용을 포함하여 자산 모델 정의를 편집합니다.

  3. 새 정의로 자산 모델을 업데이트하십시오.

두 명의 사용자가 모델을 업데이트하는 시나리오에서는 다음이 가능합니다.

  • 사용자 A는 자산 모델 X 정의를 읽습니다.

  • 사용자 B는 자산 모델 X 정의를 읽고 변경 사항을 적용하여 X의 정의를 수정합니다.

  • 사용자 A는 사용자 B의 변경 내용을 확인하거나 통합하지 않고 자산 모델 X에 대해 사용자 B가 변경한 내용을 커밋하고 덮어씁니다.

낙관적 잠금은 위의 시나리오와 같이 실수로 인한 AWS IoT SiteWise 덮어쓰기를 방지하기 위해 사용하는 메커니즘입니다. 낙관적 잠금은 업데이트 또는 삭제되는 자산 모델의 현재 버전을 현재 버전과 동일하게 유지하기 위한 전략입니다. AWS IoT SiteWise이렇게 하면 실수로 인한 업데이트로 인해 자산 모델 쓰기가 덮어쓰여지는 것을 방지할 수 있습니다.

옵티미스틱 락킹을 사용하여 자산 모델 쓰기를 수행하려면 다음 단계를 따르십시오.

낙관적 잠금을 사용하여 자산 모델 쓰기 수행 (콘솔)

아래 절차는 콘솔에서 자산 모델의 활성 버전을 낙관적으로 잠그고 자산 모델 작성을 수행하는 방법을 설명합니다.

  1. AWS IoT SiteWise 콘솔로 이동합니다.

  2. 탐색 창에서 모델을 선택합니다.

  3. 업데이트할 자산 모델 또는 구성 요소 모델을 선택합니다.

  4. 편집을 선택합니다.

  5. 모델 편집 페이지에서 변경하십시오.

  6. 저장(Save)을 선택합니다.

    참고

    사용자가 모델 편집을 시작하고 모델에 편집한 내용을 저장하는 시점 사이에 한 번 이상의 모델 업데이트가 성공적으로 이루어진 경우가 있습니다.

    새로 성공한 업데이트를 사용자가 실수로 덮어쓰지 않도록 하기 위해 사용자의 쓰기 작업은 거부됩니다. 콘솔은 저장 버튼을 비활성화하고 사용자에게 모델 편집 페이지를 새로 고치라는 메시지를 표시합니다. 사용자는 모델의 새 활성 버전을 다시 업데이트해야 합니다. 사용자는 다음과 같은 추가 단계를 수행해야 합니다.

  7. [Refresh]를 선택합니다.

  8. 5단계와 6단계를 다시 수행하십시오.

옵티미스틱 락 ()AWS CLI을 사용하여 에셋 모델 쓰기 수행

아래 절차에서는 낙관적 잠금을 사용하여 자산 모델 작성을 수행하는 방법을 설명합니다. AWS CLI

  1. 현재 모델 정의와 ETag 관련된 내용을 가져옵니다.

    ETag자산 모델을 새로 표현할 때마다 생성되는 고유한 토큰입니다. DescribeAssetModelAPI호출하여 현재 자산 모델 정의를 가져오고 ETag 응답에서 관련 정보를 가져옵니다.

    동시 업데이트 중에 사용자는 업데이트 성공 (모델 ACTIVE 상태) 또는 업데이트 실패 (모델 상태) 를 수행합니다. FAILED 사용자가 성공적인 업데이트를 실수로 덮어쓰지 않도록 하려면 에서 에셋 모델 버전 자산 모델의 활성 버전을 검색하고 값을 가져와야 합니다. ETag

    다음 명령 실행:

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

    응답은 다음과 같은 구조를 반환합니다.

    { "assetModelId": "String", "assetModelArn": "String", "assetModelName": "String", ... "eTag": "String" }
    참고

    업데이트를 덮어쓰지 않으려면 최신 버전의 에셋 모델과 해당 ETag 모델을 검색해야 합니다.

  2. 쓰기 조건에 UPDATE 따른 DELETE 작업 수행 및 작업

    낙관적 잠금을 APIs 지원하는 자산 모델은 다음과 같습니다.

    참고

    아래 시나리오를 UpdateAssetModel API 참조로 사용합니다. 조건은 위에 나열된 모든 작업에 적용됩니다.

    아래 시나리오는 동시성 제어 요구 사항에 따른 다양한 쓰기 조건을 설명합니다.

    • 성공적인 업데이트를 덮어쓰지 않으려면 다음 명령을 실행합니다. 마지막으로 읽은 액티브 버전 이후 새 활성 버전이 존재해서는 안 됩니다. 활성 버전 읽기에 사용된 API 작업에서 ETag 반환된 값으로 e-tag 바꾸십시오.

      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
    • 모델 생성에 실패하는 경우, 모델이 현재 FAILED 상태이기 때문에 해당 모델의 활성 버전이 아직 존재하지 않습니다. 변경 사항이 커밋되기 전에 존재하는 새 활성 버전을 덮어쓰는 것은 여전히 가능합니다. 마지막 읽기 시 활성 버전이 없는 경우 다음 명령을 실행하여 새 활성 버전을 덮어쓰지 않도록 합니다.

      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
    • 성공하거나 실패한 업데이트를 덮어쓰지 않으려면 다음 명령을 실행하십시오. 이 명령은 최신 버전을 마지막으로 읽은 이후 최신 버전이 생성되지 않도록 하는 쓰기 조건을 정의합니다. 활성 버전 읽기에 사용된 API 작업에서 ETag 반환된 값으로 e-tag 바꾸십시오.

      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

      쓰기 조건이 로 FALSE 평가되면 와 함께 쓰기 요청이 실패합니다. PreconditionFailedException