

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Bloqueio positivo para gravações do modelo de ativo
<a name="opt-locking-for-model"></a>

 Ao atualizar um modelo de ativo, o usuário faz o seguinte: 

1. Lê a definição do modelo de ativo atual.

1. Edita a definição do modelo de ativo com as alterações necessárias.

1. Atualiza o modelo de ativo com a nova definição.

 Em um cenário com dois usuários atualizando um modelo, pode acontecer o seguinte: 
+ O usuário A lê a definição do modelo de ativo X.
+ O usuário B lê a definição do modelo de ativo X e confirma alterações, modificando a definição de X.
+ O usuário A confirma alterações e substitui a alteração feita no modelo de ativo X pelo usuário B, sem verificar ou incorporar as alterações do usuário B.

 O bloqueio otimista é um mecanismo usado AWS IoT SiteWise para evitar substituições acidentais, como no cenário acima. O bloqueio positivo é uma estratégia para garantir que a versão atual do modelo de ativo que esteja sendo atualizada ou excluída seja igual à versão atual no AWS IoT SiteWise. Isso evita que gravações do modelo de ativo sejam substituídas por atualizações acidentais. 

Siga estas etapas para realizar gravações do modelo de ativo com bloqueio positivo:

**Topics**
+ [Realizar gravações do modelo de ativo com bloqueio positivo (console)](#opt-locking-for-model-console)
+ [Realizar gravações do modelo de ativo com bloqueio positivo (AWS CLI)](#opt-locking-for-model-cli)

## Realizar gravações do modelo de ativo com bloqueio positivo (console)
<a name="opt-locking-for-model-console"></a>

O procedimento abaixo descreve como realizar gravações do modelo de ativo com um bloqueio positivo na versão ativa do modelo de ativo no console.

1. <a name="sitewise-open-console"></a>Navegue até o [console do AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>No painel de navegação, selecione **Modelos**.

1. Escolha o modelo de ativo ou o modelo de componente a ser atualizado.

1. Escolha **Editar**.

1. Faça alterações na página **Editar modelo**.

1. Escolha **Salvar**.
**nota**  
Às vezes, pode ocorrer uma ou mais atualizações de modelo bem-sucedidas entre o momento em que o usuário começa a editar o modelo e o momento em que salva as edições feitas no modelo.  
Para garantir que o usuário não substitua acidentalmente novas atualizações bem-sucedidas, a gravação do usuário é rejeitada. O console desabilita o botão **Salvar** e solicita que o usuário atualize a página **Editar modelo**. O usuário deve atualizar novamente a nova versão ativa do modelo. O usuário deve realizar as seguintes etapas adicionais: 

1. Escolha **Refresh**.

1. Siga novamente as etapas 5 e 6.

## Realizar gravações do modelo de ativo com bloqueio positivo (AWS CLI)
<a name="opt-locking-for-model-cli"></a>

O procedimento abaixo descreve como realizar gravações do modelo de ativo com bloqueio positivo na AWS CLI.

1. **Busque o ETag associado à definição do modelo atual**

    `ETag` é um token exclusivo gerado para cada nova representação de um modelo de ativo. Chame a [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)API para buscar a definição atual do modelo de ativo e a associada a `ETag` partir da resposta. 

    Durante atualizações simultâneas, os usuários realizam atualizações bem-sucedidas (modelo no estado `ACTIVE`) ou atualizações malsucedidas (modelo no estado `FAILED`). Para garantir que um usuário não substitua acidentalmente uma atualização bem-sucedida, você deve recuperar a versão ativa do modelo de ativo de [Versões do modelo de ativo](model-active-version.md) e encontrar o valor da `ETag`. 

   Execute este comando: .

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

    A resposta retorna a seguinte estrutura: 

   ```
   {
     "assetModelId": "String",
     "assetModelArn": "String",
     "assetModelName": "String",
     ...
     "eTag": "String"
   }
   ```
**nota**  
 Você deve recuperar a versão mais recente do modelo de ativo e a respectiva `ETag` para não substituir nenhuma atualização. 

1. **Realizar operações UPDATE e DELETE com condições de gravação**

   O seguinte modelo de ativos APIs oferece suporte ao bloqueio otimista:
   + [UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)
   + [DeleteAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModel.html)
   + [CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)
   + [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)
   + [DeleteAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModelCompositeModel.html)
**nota**  
 Os cenários abaixo usam a API `UpdateAssetModel` como referência. As condições se aplicam a todas as operações listadas acima. 

   Os cenários abaixo descrevem as diferentes condições de gravação, dependendo dos requisitos de controle da simultaneidade:
   +  Execute o comando a seguir para não substituir nenhuma atualização bem-sucedida. Não deve existir nenhuma nova versão ativa desde a última versão ativa lida. Substitua `e-tag` pela `ETag` retornada na operação de API usada na leitura da versão ativa. 

     ```
     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
     ```
   +  Quando a criação de um modelo falha, ainda não existe uma versão ativa para ele, pois ele está em um estado `FAILED`. Ainda é possível substituir uma nova versão ativa que esteja presente, antes que as alterações sejam confirmadas. Execute o comando a seguir para não substituir uma nova versão ativa quando não existir uma versão ativa durante a leitura mais recente.

     ```
     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
     ```
   +  Execute o comando a seguir para evitar a substituição de atualizações bem-sucedidas ou malsucedidas. Esse comando define uma condição de gravação que garante que uma versão mais recente não seja criada desde a última versão lida. Substitua `e-tag` pela `ETag` retornada na operação de API usada na leitura da versão ativa.

     ```
     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
     ```

     Se a condição de gravação for avaliada como `FALSE`, a solicitação de gravação falhará com `PreconditionFailedException`.