

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á.

# Atualizar ativos e modelos
<a name="update-assets-and-models"></a>

Você pode atualizar seus ativos, modelos de ativos, modelos de componentes e interfaces AWS IoT SiteWise para modificar seus nomes e definições. Essas operações de atualização são assíncronas e demoram para serem propagadas. AWS IoT SiteWise Verifique o status do ativo ou do modelo antes de fazer alterações adicionais. Você deve aguardar até que as alterações sejam propagadas para poder continuar a usar o ativo ou o modelo atualizado.

**Topics**
+ [Atualizar ativos em AWS IoT SiteWise](update-assets.md)
+ [Atualize modelos de ativos, modelos de componentes e interfaces](update-asset-models.md)
+ [Atualizar modelos compostos personalizados (componentes)](update-custom-composite-models.md)
+ [Bloqueio positivo para gravações do modelo de ativo](opt-locking-for-model.md)

# Atualizar ativos em AWS IoT SiteWise
<a name="update-assets"></a>

Você pode usar o AWS IoT SiteWise console ou a API para atualizar o nome de um ativo.

Ao atualizar um ativo, o status do ativo será `UPDATING` até que as alterações sejam propagadas. Para obter mais informações, consulte [Estados de ativos e modelos](asset-and-model-states.md).

**Topics**
+ [Atualizar um ativo (console)](#update-asset-console)
+ [Atualizar um ativo (AWS CLI)](#update-asset-cli)

## Atualizar um ativo (console)
<a name="update-asset-console"></a>

Você pode usar o AWS IoT SiteWise console para atualizar os detalhes do ativo.

**Como atualizar um ativo (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-assets"></a>No painel de navegação, selecione **Ativos**.

1. Escolha o ativo a ser atualizado.
**dica**  <a name="sitewise-expand-asset-hierarchy"></a>
Você pode escolher o ícone de seta para expandir uma hierarquia de ativos para localizar seu ativo.

1. Escolha **Editar**.

1. Atualize o **Nome**do ativo.

1. (Opcional) Nessa página, atualize outras informações para o ativo. Para obter mais informações, consulte:
   + [Gerencie fluxos de dados para AWS IoT SiteWise](manage-data-streams.md)
   + [Atualizar valores de atributo](update-attribute-values.md)
   + [Interaja com outros AWS serviços](interact-with-other-services.md)

1. Escolha **Salvar**.

## Atualizar um ativo (AWS CLI)
<a name="update-asset-cli"></a>

Você pode usar o AWS Command Line Interface (AWS CLI) para atualizar o nome de um ativo.

Use a [UpdateAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAsset.html)operação para atualizar um ativo. Especifique os seguintes parâmetros:
+ `assetId` – O ID do ativo. Esse é o ID real no formato UUID, ou `externalId:myExternalId` se ele tiver um. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.
+ `assetName` – o novo nome do ativo.

**Como atualizar o nome de um ativo (AWS CLI)**
+ Execute o seguinte comando para atualizar o nome de um ativo. *asset-id*Substitua pelo ID ou ID externo do ativo. Atualize o *asset-name* com o novo nome do ativo.

  ```
  aws iotsitewise update-asset \
    --asset-id asset-id \
    --asset-name asset-name
  ```

# Atualize modelos de ativos, modelos de componentes e interfaces
<a name="update-asset-models"></a>

Use o AWS IoT SiteWise console ou a API para atualizar um modelo de ativo, modelo de componente ou interface.

Não é possível alterar o tipo de uma propriedade existente ou o respectivo tipo de dado, ou ainda a janela de uma métrica existente. Você também não pode alterar o tipo do modelo de modelo de ativo para modelo de componente ou interface, ou vice-versa.

**Importante**  
Se você remover uma propriedade de um modelo de ativo ou modelo de componente, AWS IoT SiteWise excluirá todos os dados anteriores dessa propriedade. Para modelos de componente, isso afeta **todos os modelos de ativo que usam esse modelo de componente**, por isso tome muito cuidado e entenda até que ponto a alteração pode ser aplicada.
Se você remover uma definição de hierarquia de um modelo de ativo, AWS IoT SiteWise desassociará todos os ativos dessa hierarquia.

Quando você atualiza um modelo de ativo, cada ativo baseado nesse modelo reflete todas as alterações feitas no modelo subjacente. Até que as alterações se propaguem, cada ativo estará definido com o estado `UPDATING`. É necessário aguardar até que esses ativos retornem ao estado `ACTIVE` antes de interagir com eles. Durante esse período, o status do modelo de ativo atualizado será `PROPAGATING`.

Quando você atualiza um modelo de componente, todo modelo de ativo que incorpora esse modelo de componente reflete as alterações. Até que as alterações do modelo de componente se propaguem, cada modelo de ativo afetado tem o estado `UPDATING`, seguido de `PROPAGATING` à medida que ele atualiza os ativos associados, conforme descrito no parágrafo anterior. Aguarde até que esses modelos de ativo retornem ao estado `ACTIVE` para interagir com eles. Durante esse período, o status do modelo de componente atualizado será `PROPAGATING`.

Para obter mais informações, consulte [Estados de ativos e modelos](asset-and-model-states.md).

**Topics**
+ [Atualização de um modelo de ativo, modelo de componente ou interface (console)](#update-asset-model-console)
+ [Atualizar um modelo de ativo, modelo de componente ou interface (AWS CLI)](#update-asset-model-cli)

## Atualização de um modelo de ativo, modelo de componente ou interface (console)
<a name="update-asset-model-console"></a>

Você pode usar o AWS IoT SiteWise console para atualizar um modelo de ativo, modelo de componente ou interface.

**Para atualizar um modelo de ativo, modelo de componente ou interface (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 do ativo, o modelo do componente ou a interface a ser atualizada.

1. Escolha **Editar**.

1. Na página **Editar modelo** siga um destes procedimentos:
   + Em **Detalhes do modelo**, altere o **Nome** do modelo.
   + Altere qualquer uma das **Definições de atributos**. Não é possível alterar o **Tipo de dados** dos atributos existentes. Para obter mais informações, consulte [Definir dados estáticos (atributos)](attributes.md).
   + Altere qualquer uma das **Definições de medição**. Não é possível alterar o **Tipo de dados** das medições existentes. Para obter mais informações, consulte [Definir fluxos de dados de equipamentos (medições)](measurements.md).
   + Altere qualquer uma das **Definições de transformação**. Para obter mais informações, consulte [Transformar dados (transformações)](transforms.md).
   + Altere qualquer uma das **Definições de métrica**. Não é possível alterar o **Intervalo de tempo** das métricas existentes. Para obter mais informações, consulte [Agregar dados de propriedades e outros ativos (métricas)](metrics.md).
   + (Somente modelos de ativo) Altere qualquer uma das **Definições da hierarquia**. Não é possível alterar o **Modelo de hierarquia** das hierarquias existentes. Para obter mais informações, consulte [Definir hierarquias de modelos de ativo](define-asset-hierarchies.md).

1. Escolha **Salvar**.

**nota**  
 As solicitações de atualização feitas no console serão rejeitadas se outro usuário atualizar com êxito o modelo de ativo desde a última vez em que você abriu a página **Editar modelo**. O console solicita que o usuário clica em **Atualizar** na página **Editar modelo** para buscar o modelo atualizado. Você deve fazer as atualizações novamente e tentar salvar mais uma vez. Consulte [Bloqueio positivo para gravações do modelo de ativo](opt-locking-for-model.md) para obter mais detalhes. 

## Atualizar um modelo de ativo, modelo de componente ou interface (AWS CLI)
<a name="update-asset-model-cli"></a>

Use o AWS Command Line Interface (AWS CLI) para atualizar um modelo de ativo, modelo de componente ou interface.

Use a [UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API para atualizar o nome, a descrição e as propriedades de um modelo de ativo, modelo de componente ou interface. Somente para modelos de ativo, você pode atualizar as hierarquias. Para interfaces, você pode atualizar propriedades e hierarquias. Especifique os seguintes parâmetros:
+ `assetModelId` – O ID do ativo. Esse é o ID real no formato UUID, ou `externalId:myExternalId` se ele tiver um. Consulte mais informações em [Objetos de referência com objetos externos IDs](object-ids.md#external-id-references) no *Guia de Usuário AWS IoT SiteWise *.

Especifique o modelo atualizado na carga útil. Para saber mais sobre o formato esperado de um modelo de ativo ou de um modelo de componente, consulte [Crie modelos de ativos em AWS IoT SiteWise](create-asset-models.md). 

**Atenção**  
A [UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API substitui o modelo existente pelo modelo que você fornece na carga. Para evitar a exclusão das propriedades ou hierarquias do seu modelo, você deve incluir suas definições IDs e suas na carga útil atualizada do modelo. Para saber como consultar a estrutura existente do seu modelo, consulte a [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)operação.

**nota**  
O procedimento a seguir só pode atualizar modelos compostos do tipo `AWS/ALARM`. Se você quiser atualizar modelos `CUSTOM` compostos, use [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)em vez disso. Para obter mais informações, consulte [Atualizar modelos compostos personalizados (componentes)](update-custom-composite-models.md).

**Como atualizar um modelo de ativo ou um modelo de componente (AWS CLI)**

1. Execute o comando a seguir para recuperar a definição do modelo existente. *asset-model-id*Substitua pela ID ou pela ID externa do modelo de ativo ou modelo de componente a ser atualizado.

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id
   ```

   O comando acima retorna a definição do modelo correspondente à versão mais recente do modelo.

    Para um caso de uso em que um modelo de ativo está em um estado `FAILED`, recupere a definição de modelo válida correspondente à versão ativa para criar a solicitação de atualização. Para mais detalhes, consulte [Versões do modelo de ativo](model-active-version.md). Execute o seguinte comando para recuperar a definição de modelo válida:

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

   A operação retorna uma resposta que contém os detalhes do modelo. A resposta tem a seguinte estrutura:

   ```
   {
       "assetModelId": "String",
       "assetModelArn": "String",
       "assetModelName": "String",
       "assetModelDescription": "String",
       "assetModelProperties": Array of AssetModelProperty,
       "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
       "assetModelCompositeModels": Array of AssetModelCompositeModel,
       "assetModelCompositeModelSummaries": Array of AssetModelCompositeModelSummary,
       "assetModelCreationDate": "String",
       "assetModelLastUpdateDate": "String",
       "assetModelStatus": {
         "state": "String",
         "error": {
           "code": "String",
           "message": "String"
         },
       "assetModelType": "String"
       },
       "assetModelVersion": "String",
       "eTag": "String"
   }
   ```

   Para obter mais informações, consulte a operação [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html).

1. Crie um arquivo chamado `update-asset-model.json` e copie a resposta do comando anterior no arquivo.

1. Remova os seguintes pares de chave-valor do objeto JSON em `update-asset-model.json`:
   + `assetModelId`
   + `assetModelArn`
   + `assetModelCompositeModelSummaries`
   + `assetModelCreationDate`
   + `assetModelLastUpdateDate`
   + `assetModelStatus`
   + `assetModelType`
   + `assetModelVersion`
   + `eTag`

   A [UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)operação espera uma carga útil com a seguinte estrutura:

   ```
   {
     "assetModelName": "String",
     "assetModelDescription": "String",
     "assetModelProperties": Array of AssetModelProperty,
     "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
     "assetModelCompositeModels": Array of AssetModelCompositeModel
   }
   ```

1. Em `update-asset-model.json` proceda de uma das seguintes maneiras:
   + Altere o nome do modelo de ativo (`assetModelName`).
   + Altere, adicione ou remova a descrição do modelo de ativo (`assetModelDescription`).
   + Altere, adicione ou remova qualquer uma das propriedades do modelo de ativo (`assetModelProperties`). Não é possível alterar o `dataType` de propriedades existentes ou a `window` das métricas existentes. Para obter mais informações, consulte [Definir propriedades de dados](asset-properties.md).
   + Altere, adicione ou remova qualquer uma das hierarquias de modelos de ativo (`assetModelHierarchies`). Não é possível alterar o `childAssetModelId` das hierarquias existentes. Para obter mais informações, consulte [Definir hierarquias de modelos de ativo](define-asset-hierarchies.md).
   + Altere, adicione ou remova qualquer um dos modelos compostos do modelo de ativo do tipo `AWS/ALARM` (`assetModelCompositeModels`). Os alarmes monitoram outras propriedades para que você possa identificar quando equipamentos ou processos requerem atenção. Cada definição de alarme é um modelo composto que padroniza o conjunto de propriedades que o alarme usa. Para obter mais informações, consulte [Monitore dados com alarmes em AWS IoT SiteWise](industrial-alarms.md) e [Defina alarmes em modelos de ativos em AWS IoT SiteWise](define-alarms.md).

1. Execute o seguinte comando para atualizar o modelo de ativo com a definição armazenada no `update-asset-model.json`. *asset-model-id*Substitua pelo ID do modelo de ativo:

   ```
   aws iotsitewise update-asset-model \
     --asset-model-id asset-model-id \
     --cli-input-json file://model-payload.json
   ```

**Importante**  
 Quando vários usuários atualizam um modelo de ativo ao mesmo tempo, as alterações de um usuário podem ser inadvertidamente substituídas por outro. Para evitar isso, defina uma solicitação de atualização condicional. Consulte [Bloqueio positivo para gravações do modelo de ativo](opt-locking-for-model.md). 

# Atualizar modelos compostos personalizados (componentes)
<a name="update-custom-composite-models"></a>

Você pode usar a AWS IoT SiteWise API para atualizar um modelo composto personalizado ou o AWS IoT SiteWise console para atualizar componentes.

**Topics**
+ [Atualizar um componente (console)](#update-custom-composite-model-console)
+ [Atualizar um modelo composto personalizado (AWS CLI)](#update-custom-composite-model-cli)

## Atualizar um componente (console)
<a name="update-custom-composite-model-console"></a>

Você pode usar o AWS IoT SiteWise console para atualizar um componente.

**Como atualizar um componente (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 no qual o componente está.

1. Na guia **Propriedades**, escolha **Componentes**.

1. Selecione o componente que você deseja atualizar.

1. Escolha **Editar**.

1. Na página **Editar componente**, faça uma das seguintes ações:
   + Em **Detalhes do modelo**, altere o **Nome** do modelo.
   + Altere qualquer uma das **Definições de atributos**. Não é possível alterar o **Tipo de dados** dos atributos existentes. Para obter mais informações, consulte [Definir dados estáticos (atributos)](attributes.md).
   + Altere qualquer uma das **Definições de medição**. Não é possível alterar o **Tipo de dados** das medições existentes. Para obter mais informações, consulte [Definir fluxos de dados de equipamentos (medições)](measurements.md).
   + Altere qualquer uma das **Definições de transformação**. Para obter mais informações, consulte [Transformar dados (transformações)](transforms.md).
   + Altere qualquer uma das **Definições de métrica**. Não é possível alterar o **Intervalo de tempo** das métricas existentes. Para obter mais informações, consulte [Agregar dados de propriedades e outros ativos (métricas)](metrics.md).

1. Escolha **Salvar**.

## Atualizar um modelo composto personalizado (AWS CLI)
<a name="update-custom-composite-model-cli"></a>

Use o AWS Command Line Interface (AWS CLI) para atualizar um modelo composto personalizado.

Para atualizar o nome ou a descrição, use a [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)operação. Somente para modelos compostos personalizados em linha, você também pode atualizar as propriedades. Você não pode atualizar as propriedades de um modelo composto component-model-based personalizado, porque o modelo de componente referenciado fornece as propriedades associadas.

**Importante**  
Se você remover uma propriedade de um modelo composto personalizado, AWS IoT SiteWise excluirá todos os dados anteriores dessa propriedade. Não é possível alterar o tipo de uma propriedade existente ou o respectivo tipo de dado.  
Para substituir uma propriedade de modelo composto existente por uma nova com o mesmo `name`, faça o seguinte:  
Envie uma solicitação `UpdateAssetModelCompositeModel` com toda a propriedade existente removida.
Envie uma segunda solicitação `UpdateAssetModelCompositeModel` que inclua a nova propriedade. A nova propriedade do ativo terá a `name` mesma que a anterior e AWS IoT SiteWise gerará uma nova propriedade exclusiva`id`.

**Como atualizar um modelo composto personalizado (AWS CLI)**

1. Para recuperar a definição do modelo composto existente, execute o comando a seguir. *composite-model-id*Substitua pela ID ou pela ID externa do modelo composto personalizado a ser atualizado e *asset-model-id* pelo modelo de ativo ao qual o modelo composto personalizado está associado. Para obter mais informações, consulte o *Guia do usuário do AWS IoT SiteWise *.

   1. Execute o comando abaixo:

      ```
      aws iotsitewise describe-asset-model-composite-model \
      --asset-model-composite-model-id composite-model-id \
      --asset-model-id asset-model-id
      ```

   1.  O comando acima retorna a definição do modelo composto correspondente à versão mais recente do modelo associado. Para um caso de uso em que um modelo de ativo está em um estado `FAILED`, recupere a definição de modelo válida correspondente à versão ativa para criar a solicitação de atualização. Para mais detalhes, consulte [Versões do modelo de ativo](model-active-version.md). 

   1. Execute o seguinte comando para recuperar a definição de modelo válida:

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

   1. Para obter mais informações, consulte a operação [DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html).

1. Crie um arquivo chamado `update-custom-composite-model.json`, depois copie a resposta do comando anterior para o arquivo.

1. Remova todos os pares de chave/valor do objeto JSON em `update-custom-composite-model.json`, exceto os seguintes campos:
   + `assetModelCompositeModelName`
   + `assetModelCompositeModelDescription` (se presente)
   + `assetModelCompositeModelProperties` (se presente)

1. Em `update-custom-composite-model.json` proceda de uma das seguintes maneiras:
   + Altere o valor de `assetModelCompositeModelName`.
   + Adicione ou remova `assetModelCompositeModelDescription`, ou altere o valor.
   + Somente para modelos compostos personalizados em linha: altere, adicione ou remova qualquer uma das propriedades do modelo de ativo em `assetModelCompositeModelProperties`.

   Para obter mais informações sobre o formato necessário para esse arquivo, consulte a sintaxe da solicitação para [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html).

1. Execute o comando a seguir para atualizar o modelo composto personalizado com a definição armazenada em `update-custom-composite-model.json`. *composite-model-id*Substitua pelo ID do modelo composto e *asset-model-id* pelo ID do modelo de ativo em que ele está.

   ```
   aws iotsitewise update-asset-model-composite-model \
   --asset-model-composite-model-id composite-model-id \
   --asset-model-id asset-model-id \
   --cli-input-json file://update-custom-composite-model.json
   ```

**Importante**  
 Quando vários usuários atualizam um modelo de ativo ao mesmo tempo, as alterações de um usuário podem ser inadvertidamente substituídas por outro. Para evitar isso, defina uma solicitação de atualização condicional. Consulte [Bloqueio positivo para gravações do modelo de ativo](opt-locking-for-model.md). 

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