本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
更新资产模型和组件模型
使用 AWS IoT SiteWise 控制台或API更新资产模型或组件模型。
您无法更改现有属性的类型或数据类型,也不能更改现有指标的窗口。您也无法将模型的类型从资产模型更改为组件模型,或者反之亦然。
重要
-
如果您从资产模型或组件模型中移除某个属性,则 AWS IoT SiteWise 会删除该属性之前的所有数据。对于组件模型,这会影响使用该组件模型的所有资产模型,因此请特别注意了解您的更改可能应用的范围。
-
如果从资产模型中移除层次结构定义,则 AWS IoT SiteWise 取消关联该层次结构中的所有资产。
更新资产模型时,基于该模型的每个资产都会反映您对基础模型所做的任何更改。在更改传播之前,每个资产都具有 UPDATING
状态。您必须等待这些资产恢复到 ACTIVE
状态,然后才能与它们进行交互。在此期间,更新的资产模型的状态将为 PROPAGATING
。
更新组件模型时,包含该组件模型的每个资产模型都会反映所做的更改。在组件模型的变化传播之前,每个受影响的资产模型都具有UPDATING
状态,然后是更新其关联资产时的状态,如前一段所述。PROPAGATING
必须等到这些资产模型恢复到ACTIVE
状态后才能与它们进行交互。在此期间,更新的组件模型的状态将为PROPAGATING
。
有关更多信息,请参阅 资产和模型状态。
更新资产或组件模型(控制台)
您可以使用 AWS IoT SiteWise 控制台更新资产模型或组件模型。
更新资产模型或组件模型(控制台)
导航到 AWS IoT SiteWise 控制台
。 在导航窗格中,选择 模型。
-
选择要更新的资产模型或组件模型。
-
选择编辑。
-
在 编辑模型 页面上,执行以下任何操作:
-
在 模型详细信息 中,更改模型的 名称。
-
更改任何 属性定义。您无法更改现有属性的 数据类型。有关更多信息,请参阅 定义静态数据(属性)。
-
更改任何 测量值定义。您无法更改现有测量值的 数据类型。有关更多信息,请参阅 定义来自设备的数据流(测量)。
-
更改任何 转换定义。有关更多信息,请参阅 转换数据(变换)。
-
更改任何 指标定义。您无法更改现有指标的 时间间隔。有关更多信息,请参阅 汇总来自房产和其他资产(指标)的数据。
-
(仅限资产模型)更改任何层次结构定义。您无法更改现有层次结构的 层次结构模型。有关更多信息,请参阅 定义资产模型层次结构。
-
-
选择保存。
注意
如果自您上次打开 “编辑模型” 页面以来其他用户成功更新了资产模型,则在控制台中发出的更新请求将被拒绝。控制台提示用户刷新 “编辑模型” 页面,以获取更新的模型。您必须重新进行更新,然后重试保存。有关更多信息,请参阅资产模型写入的乐观锁定。
更新资产或组件模型 (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)
-
运行以下命令以检索现有模型定义。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操作。
-
创建一个名为
update-asset-model.json
的文件,并将上一命令的响应复制到该文件中。 -
从中的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
} -
-
在
update-asset-model.json
中,执行以下任何操作:-
更改资产模型的名称 (
assetModelName
)。 -
更改、添加或删除资产模型的描述 (
assetModelDescription
)。 -
更改、添加或删除资产模型的任何属性 (
assetModelProperties
)。您无法更改现有属性的dataType
或现有指标的window
。有关更多信息,请参阅 定义数据属性。 -
更改、添加或删除资产模型的任何层次结构 (
assetModelHierarchies
)。您无法更改现有层次结构的childAssetModelId
。有关更多信息,请参阅 定义资产模型层次结构。 -
更改、添加或移除资产模型中任何类型为
AWS/ALARM
(assetModelCompositeModels
) 的复合模型。警报会监控其他特性,以便您可以识别何时需要注意设备或流程。每个警报定义都是一个复合模型,用于标准化警报使用的属性集。有关更多信息,请参阅使用警报监控数据 和在资产模型上定义警报。
-
-
运行以下命令,使用存储在
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
重要
当多个用户同时更新一个资产模型时,一个用户的更改可能会无意中被另一个用户覆盖。为防止出现这种情况,您必须定义一个有条件的更新请求。请参阅 资产模型写入的乐观锁定。