更新资产模型和组件模型 - AWS IoT SiteWise

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

更新资产模型和组件模型

使用 AWS IoT SiteWise 控制台或API更新资产模型或组件模型。

您无法更改现有属性的类型或数据类型,也不能更改现有指标的窗口。您也无法将模型的类型从资产模型更改为组件模型,或者反之亦然。

重要
  • 如果您从资产模型或组件模型中移除某个属性,则 AWS IoT SiteWise 会删除该属性之前的所有数据。对于组件模型,这会影响使用该组件模型的所有资产模型,因此请特别注意了解您的更改可能应用的范围。

  • 如果从资产模型中移除层次结构定义,则 AWS IoT SiteWise 取消关联该层次结构中的所有资产。

更新资产模型时,基于该模型的每个资产都会反映您对基础模型所做的任何更改。在更改传播之前,每个资产都具有 UPDATING 状态。您必须等待这些资产恢复到 ACTIVE 状态,然后才能与它们进行交互。在此期间,更新的资产模型的状态将为 PROPAGATING

更新组件模型时,包含该组件模型的每个资产模型都会反映所做的更改。在组件模型的变化传播之前,每个受影响的资产模型都具有UPDATING状态,然后是更新其关联资产时的状态,如前一段所述。PROPAGATING必须等到这些资产模型恢复到ACTIVE状态后才能与它们进行交互。在此期间,更新的组件模型的状态将为PROPAGATING

有关更多信息,请参阅 资产和模型状态

更新资产或组件模型(控制台)

您可以使用 AWS IoT SiteWise 控制台更新资产模型或组件模型。

更新资产模型或组件模型(控制台)
  1. 导航到 AWS IoT SiteWise 控制台

  2. 在导航窗格中,选择 模型

  3. 选择要更新的资产模型或组件模型。

  4. 选择编辑

  5. 编辑模型 页面上,执行以下任何操作:

  6. 选择保存

注意

如果自您上次打开 “编辑模型” 页面以来其他用户成功更新了资产模型,则在控制台中发出的更新请求将被拒绝。控制台提示用户刷新 “编辑模型” 页面,以获取更新的模型。您必须重新进行更新,然后重试保存。有关更多信息,请参阅资产模型写入的乐观锁定

更新资产或组件模型 (AWS CLI)

使用 AWS Command Line Interface (AWS CLI) 更新资产模型或组件模型。

UpdateAssetModelAPI使用更新资产模型或组件模型的名称、描述和属性。仅对于资产模型,您可以更新层次结构。指定以下参数:

  • assetModelId – 资产的 ID。这是UUID格式上的实际 ID,externalId:myExternalId如果有,则为。有关更多信息,请参阅《AWS IoT SiteWise 用户指南》中的 使用外部引用对象 IDs

在有效载荷中指定更新的模型。要了解资产模型或组件模型的预期格式,请参阅创建资产模型

警告

使用您在有效载荷中提供的模型UpdateAssetModelAPI覆盖现有模型。为避免删除模型的属性或层次结构,您必须在更新的模型负载中包含它们的IDs和定义。要了解如何查询模型的现有结构,请参阅DescribeAssetModel操作。

注意

以下过程只能更新类型的复合模型AWS/ALARM。如果要更新CUSTOM复合模型,请UpdateAssetModelCompositeModel改用。有关更多信息,请参阅 更新自定义复合模型(组件)

更新资产模型或组件模型 (AWS CLI)
  1. 运行以下命令以检索现有模型定义。Replace(替换) asset-model-id 使用要更新的资产模型或组件模型的 ID 或外部 ID。

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

    上面的命令返回与模型的最新版本相对应的模型定义。

    对于资产模型处于FAILED状态的用例,请检索与其活动版本相对应的有效模型定义以构建您的更新请求。有关详细信息,请参阅 资产模型版本。运行以下命令以检索活动模型定义:

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

    该操作返回包含模型详细信息的响应。该响应具有以下结构。

    { "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" }

    有关更多信息,请参阅DescribeAssetModel操作。

  2. 创建一个名为 update-asset-model.json 的文件,并将上一命令的响应复制到该文件中。

  3. 从中的JSON对象中移除以下键值对:update-asset-model.json

    • assetModelId

    • assetModelArn

    • assetModelCompositeModelSummaries

    • assetModelCreationDate

    • assetModelLastUpdateDate

    • assetModelStatus

    • assetModelType

    • assetModelVersion

    • eTag

    UpdateAssetModel操作需要具有以下结构的有效负载:

    { "assetModelName": "String", "assetModelDescription": "String", "assetModelProperties": Array of AssetModelProperty, "assetModelHierarchies": Array of AssetModelHierarchyDefinition, "assetModelCompositeModels": Array of AssetModelCompositeModel }
  4. update-asset-model.json 中,执行以下任何操作:

    • 更改资产模型的名称 (assetModelName)。

    • 更改、添加或删除资产模型的描述 (assetModelDescription)。

    • 更改、添加或删除资产模型的任何属性 (assetModelProperties)。您无法更改现有属性的 dataType 或现有指标的 window。有关更多信息,请参阅 定义数据属性

    • 更改、添加或删除资产模型的任何层次结构 (assetModelHierarchies)。您无法更改现有层次结构的 childAssetModelId。有关更多信息,请参阅 定义资产模型层次结构

    • 更改、添加或移除资产模型中任何类型为 AWS/ALARM (assetModelCompositeModels) 的复合模型。警报会监控其他特性,以便您可以识别何时需要注意设备或流程。每个警报定义都是一个复合模型,用于标准化警报使用的属性集。有关更多信息,请参阅使用警报监控数据在资产模型上定义警报

  5. 运行以下命令,使用存储在 update-asset-model.json 中的定义更新资产模型。Replace(替换) asset-model-id 使用资产模型的 ID:

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

当多个用户同时更新一个资产模型时,一个用户的更改可能会无意中被另一个用户覆盖。为防止出现这种情况,您必须定义一个有条件的更新请求。请参阅 资产模型写入的乐观锁定