定义一个Amazon IoT Events警报 (CLI) - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

定义一个Amazon IoT Events警报 (CLI)

您可以使用Amazon Command Line Interface(Amazon CLI) 来定义Amazon IoT Events监控资产属性的警报,用于监控资产属性。您可以在新的或现有的资产模型上定义警报。在资产模型上定义警报后,可以在中创建警报Amazon IoT Events并将其连接到资产模型。在此过程中,您将执行以下操作:

第 1 步:在资产模型上定义警报

向新的或现有的资产模型添加警报定义和关联属性。

在资产模型上定义警报 (CLI)
  1. 创建名为 asset-model-payload.json 的文件。按照其他部分中的步骤将资产模型的详细信息添加到文件中,但不要提交创建或更新资产模型的请求。在本节中,您将向资产模型详细信息添加警报定义asset-model-payload.json文件。

    注意

    您的资产模型必须定义至少一个资产属性,包括要通过警报监控的资产属性。

  2. 添加警报复合模型 (assetModelCompositeModels)到资产模型。网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon IoT Events警报组合模型指定了IOT_EVENTS键入并指定警报源属性。在中创建警报模型后,您可以添加警报源属性Amazon IoT Events.

    重要

    警报复合模型必须具有相同的名称Amazon IoT Events您稍后创建的警报模型。警报模型名称只能包含字母数字字符。指定一个唯一的字母数字名称,以便您可以为警报模型使用相同的名称。

    { ... "assetModelCompositeModels": [ { "name": "BoilerTemperatureHighAlarm", "type": "AWS/ALARM", "properties": [ { "name": "AWS/ALARM_TYPE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "IOT_EVENTS" } } }, { "name": "AWS/ALARM_STATE", "dataType": "STRUCT", "dataTypeSpec": "AWS/ALARM_STATE", "type": { "measurement": {} } } ] } ] }
  3. 向资产模型添加警报阈值属性。指定用于此阈值的默认值。您可以根据此模型在每项资产上覆盖此默认值。

    注意

    警报阈值属性必须是INTEGER或者一个DOUBLE.

    { ... "assetModelProperties": [ ... { "name": "Temperature Max Threshold", "dataType": "DOUBLE", "type": { "attribute": { "defaultValue": "105.0" } } } ] }
  4. 创建资产模型或更新现有资产模型。请执行下列操作之一:

    • 要创建资产模型,请运行以下命令。

      aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
    • 要更新现有资产模型,请运行以下命令。Replace(替换)asset-model-id使用资产模型的。

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

    运行命令之后,请注意assetModelId在回应中。

以下资产模型代表报告温度数据的锅炉。该资产模型定义了一个警报,用于检测锅炉何时过热。

{ "assetModelName": "Boiler Model", "assetModelDescription": "Represents a boiler.", "assetModelProperties": [ { "name": "Temperature", "dataType": "DOUBLE", "unit": "C", "type": { "measurement": {} } }, { "name": "Temperature Max Threshold", "dataType": "DOUBLE", "type": { "attribute": { "defaultValue": "105.0" } } }, { "name": "identityStoreId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "d-123EXAMPLE" } } }, { "name": "userId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE" } } }, { "name": "senderId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "MyFactory" } } }, { "name": "fromAddress", "dataType": "STRING", "type": { "attribute": { "defaultValue": "my.factory@example.com" } } }, { "name": "emailSubject", "dataType": "STRING", "type": { "attribute": { "defaultValue": "[ALERT] High boiler temperature" } } }, { "name": "additionalMessage", "dataType": "STRING", "type": { "attribute": { "defaultValue": "Turn off the power before you check the alarm." } } } ], "assetModelHierarchies": [ ], "assetModelCompositeModels": [ { "name": "BoilerTemperatureHighAlarm", "type": "AWS/ALARM", "properties": [ { "name": "AWS/ALARM_TYPE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "IOT_EVENTS" } } }, { "name": "AWS/ALARM_STATE", "dataType": "STRUCT", "dataTypeSpec": "AWS/ALARM_STATE", "type": { "measurement": {} } } ] } ] }

第 2 步:定义一个Amazon IoT Events警型号

在中创建告警报模型Amazon IoT Events. 中Amazon IoT Events,你使用表达式指定警报模型中的值。您可以使用表达式来指定来自的值Amazon IoT SiteWise进行评估并用作警报的输入。当Amazon IoT SiteWise将资产属性值发送到警报模型,Amazon IoT Events计算表达式以获取属性的值或资产的 ID。可以在警报模型中使用以下表达式:

  • 资产属性的

    要获取资产属性的值,请使用以下表达式。Replace(替换)assetModelId使用资产模型的。propertyId使用该物业的 ID。

    $sitewise.assetModel.`assetModelId`.`propertyId`.propertyValue.value
  • 资产编号

    要获取资产的 ID,请使用以下表达式。Replace(替换)assetModelId使用资产模型的。propertyId使用该物业的 ID。

    $sitewise.assetModel.`assetModelId`.`propertyId`.assetId
注意

创建警报模型时,您可以定义文字而不是计算结果为的表达式Amazon IoT SiteWisevalues。这可以减少您在资产模型上定义的属性的数量。但是,如果您将值定义为文字,则无法根据资产模型在资产上自定义该值。你的Amazon IoT SiteWise Monitor用户也无法自定义警报,因为他们只能在资产上配置警报设置。

创建Amazon IoT Events警报模型 (CLI)
  1. 当您在中创建警报模型时Amazon IoT Events,则必须指定警报使用的每个属性的 ID,其中包括以下内容:

    • 复合资产模型中的警报状态属性

    • 警报监控的属性

    • 阈值

    • (可选)IAM 身份中心身份存储 ID 属性

    • (可选)IAM 身份中心用户 ID 属性

    • (可选)短信发件人 ID 属性

    • (可选)电子邮件地址属性

    • (可选)电子邮件主题属性

    • (可选)附加消息属性

    运行以下命令以检索资产模型上这些属的 ID。Replace(替换)asset-model-id使用上一步资产模型的 ID。

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

    此操作将返回包含资产模型详细信息的响应。记下警报使用的每个属性的 ID。您在创建时使用这些 IDAmazon IoT Events警报模型将在下一个步骤中发布。

  2. 在中创建告警报模型Amazon IoT Events. 执行以下操作:

    1. 创建名为 alarm-model-payload.json 的文件。

    2. 将以下 JSON 对象复制到文件中。

    3. 输入一个名字 (alarmModelName),描述(alarmModelDescription) 和严重程度 (severity)用于警报。对于严重性,请指定一个反映贵公司严重性级别的整数。

      重要

      警报模型必须与您之前在资产模型上定义的警报组合模型同名。

      警报模型名称只能包含字母数字字符。

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3 }
    4. 添加比较规则 (alarmRule)到警报。此规则定义了要监控的属性 (inputProperty),要比较的阈值 (threshold),以及要使用的比较运算符 (comparisonOperator)。

      • Replace(替换)assetModelId使用资产模型的。

      • Replace(替换)alarmPropertyId使用警报监控的属性的 ID。

      • Replace(替换)thresholdAttributeId使用阈值属性属性的 ID。

      • Replace(替换)更大使用运算符将属性值与阈值进行比较。从以下选项中进行选择:

        • LESS

        • LESS_OR_EQUAL

        • EQUAL

        • NOT_EQUAL

        • GREATER_OR_EQUAL

        • GREATER

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } } }
    5. 添加动作 (alarmEventActions) 将警报状态发送到Amazon IoT SiteWise当警报状态发生变化时。

      注意

      对于高级配置,您可以定义警报状态发生变化时要执行的其他操作。例如,您可能会调用Amazon Lambda函数或发布 MQT 主题。有关更多信息,请参阅与他人合作Amazon服务Amazon IoT Events开发人员指南.

      • Replace(替换)assetModelId使用资产模型的。

      • Replace(替换)alarmPropertyId使用警报监控的属性的 ID。

      • Replace(替换)alarmStatePropertyId使用警报组合模型中警报状态属性的 ID。

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] } }
    6. (可选)添加警报功能(alarmCapabilities) 到有效载荷alarm-model-payload.json. 在此对象中,您可以根据资产模型指定确认流是否处于启用状态,以及资产的默认启用状态。有关确认流的更多信息,请参阅。警状态.

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] }, "alarmNotification": { "notificationActions": [ { "action": { "lambdaAction": { "functionArn": "alarmNotificationFunctionArn" } }, "smsConfigurations": [ { "recipients": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ], "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } ], "emailConfigurations": [ { "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value", "recipients": { "to": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ] }, "content": { "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } } ] } ] }, "alarmCapabilities": { "initializationConfiguration": { "disabledOnInitialization": false }, "acknowledgeFlow": { "enabled": true } } }
    7. 添加 IAM 服务角色 (roleArn)那个Amazon IoT Events可以假设将数据发送到Amazon IoT SiteWise. 此角色需要iotsitewise:BatchPutAssetPropertyValue允许的许可和信任关系iotevents.amazonaws.com来代入该角色。有关更多信息,请参阅警报服务角色Amazon IoT Events开发人员指南.

      • 替换roleArn使用该角色的 ARNAmazon IoT Events可以假设执行这些操作。

      { "alarmModelName": "BoilerTemperatureHighAlarm", "alarmModelDescription": "Detects when the boiler temperature is high.", "severity": 3, "alarmRule": { "simpleRule": { "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value", "comparisonOperator": "GREATER", "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value" } }, "alarmEventActions": { "alarmActions": [ { "iotSiteWise": { "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId", "propertyId": "'alarmStatePropertyId'" } } ] }, "alarmNotification": { "notificationActions": [ { "action": { "lambdaAction": { "functionArn": "alarmNotificationFunctionArn" } }, "smsConfigurations": [ { "recipients": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ], "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } ], "emailConfigurations": [ { "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value", "recipients": { "to": [ { "ssoIdentity": { "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value", "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value" } } ] }, "content": { "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value", "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value" } } ] } ] }, "alarmCapabilities": { "initializationConfiguration": { "disabledOnInitialization": false }, "acknowledgeFlow": { "enabled": false } }, "roleArn": "arn:aws:iam::123456789012:role/MyIoTEventsAlarmRole" }
    8. 运行以下命令以创建Amazon IoT Events来自有效载荷的警报模型alarm-model-payload.json.

      aws iotevents create-alarm-model --cli-input-json file://alarm-model-payload.json
    9. 操作将返回包含告的 ARN 的响应,alarmModelArn. 复制此 ARN,以便在下一步中在资产模型的警报定义中设置。

第 3 步:启用之间的数据流动Amazon IoT SiteWise和Amazon IoT Events

在中创建所需资源后Amazon IoT SiteWise和Amazon IoT Events,您可以启用资源之间的数据流以启用警报。在本节中,您将更新资产模型中的警报定义,以使用您在上一步中创建的警报模型。

启用之间的数据流动Amazon IoT SiteWise和Amazon IoT Events(CLI)
  • 在资产模型中将警报模型设置为警报来源。执行以下操作:

    1. 运行以下命令以检索现有资产模型定义。Replace(替换)asset-model-id使用资产模型的。

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

      此操作将返回包含资产模型详细信息的响应。

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

    3. 从中移除以下键/值对update-asset-model-payload.jsonfile:

      • assetModelId

      • assetModelArn

      • assetModelCreationDate

      • assetModelLastUpdateDate

      • assetModelStatus

    4. 添加警报源属性 (AWS/ALARM_SOURCE) 到您之前定义的警报复合模型。Replace(替换)alarmModelArn使用警报模型的 ARN,它设置警报源属性的值。

      { ... "assetModelCompositeModels": [ ... { "name": "BoilerTemperatureHighAlarm", "type": "AWS/ALARM", "properties": [ { "id": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "name": "AWS/ALARM_TYPE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "IOT_EVENTS" } } }, { "id": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE", "name": "AWS/ALARM_STATE", "dataType": "STRUCT", "dataTypeSpec": "AWS/ALARM_STATE", "type": { "measurement": {} } }, { "name": "AWS/ALARM_SOURCE", "dataType": "STRING", "type": { "attribute": { "defaultValue": "alarmModelArn" } } } ] } ] }
    5. 运行以下命令以更新资产模型,使用存储在update-asset-model-payload.json文件。Replace(替换)asset-model-id使用资产模型的。

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

您的资产模型现在定义了一个警报,该警报可以检测Amazon IoT Events. 警报根据此资产模型监控所有资产中的目标属性。您可以在每项资产上配置警报以自定义属性,例如每项资产的阈值或 IAM Identity Center 收件人。有关更多信息,请参阅 在资产上配置警报