更新资产模型、组件模型和接口 - 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. 选择 Save

注意

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

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

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

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

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

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

警告

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

注意

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

要更新资产模型或组件模型(AWS CLI),请执行以下步骤:
  1. 运行以下命令以检索现有模型定义。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. update-asset-model.json 中的 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/ALARMassetModelCompositeModels)类复合模型。警报会监控其他特性,以便您可以识别何时需要注意设备或流程。每个警报定义都是一个复合模型,用于标准化警报使用的属性集。有关更多信息,请参阅使用警报监控数据 AWS IoT SiteWise在中定义资产模型的警报 AWS IoT SiteWise

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

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

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