定义 AWS IoT Events 警报 - AWS IoT SiteWise

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

定义 AWS IoT Events 警报

创建 AWS IoT Events 警报时, AWS IoT SiteWise 会将资产属性值发送 AWS IoT Events 到以评估警报的状态。 AWS IoT Events 警报定义取决于您在中定义的警报模型 AWS IoT Events。要在资产模型上定义 AWS IoT Events 警报,您需要定义一个警报组合模型,该模型将 AWS IoT Events 警报模型指定为其警报源属性。

AWS IoT Events 警报取决于警报阈值和警报通知设置等输入。您可以将这些输入定义为资产模型的属性。然后,您可以根据模型在每个资产上自定义这些输入。 AWS IoT SiteWise 控制台可以为您创建这些属性。如果使用 AWS CLI 或定义警报API,则必须在资产模型上手动定义这些属性。

您还可以定义检测到警报时发生的其他操作,例如自定义警报通知操作。例如,您可以配置一个向 Amazon SNS 主题发送推送通知的操作。有关您可以定义的操作的更多信息,请参阅《AWS IoT Events 开发人员指南》中的使用其他 AWS 服务

更新或删除资产模型时, AWS IoT SiteWise 可以检查中的警报模型是否 AWS IoT Events 正在监视与该资产模型关联的资产属性。这可以防止您删除 AWS IoT Events 警报当前正在使用的资产属性。要在中启用此功能 AWS IoT SiteWise,您必须拥有iotevents:ListInputRoutings权限。此权限 AWS IoT SiteWise 允许调用所支持的ListInputRoutingsAPI操作 AWS IoT Events。有关更多信息,请参阅 (可选) ListInputRoutings 权限

注意

警报通知功能在中国(北京)区域中不可用。

定义 AWS IoT Events 警报(AWS IoT SiteWise 控制台)

您可以使用 AWS IoT SiteWise 控制台在现有资产模型上定义 AWS IoT Events 警报。要在新资产模型上定义 AWS IoT Events 警报,请创建资产模型,然后完成以下步骤。有关更多信息,请参阅 创建资产模型

重要

每个警报都需要一个属性,来指定要与警报进行比较的阈值。必须先在资产模型上定义阈值属性,然后才能定义警报。

举例说明,如果您想定义一个警报,用于检测风力涡轮机何时超过其最大额定风速 50 英里/小时。在定义警报之前,您必须定义一个默认值为 50 的属性(最大风速)。

在资产模型上定义 AWS IoT Events 警报
  1. 导航到 AWS IoT SiteWise 控制台

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

  3. 选择要为其定义警报的资产模型。

  4. 选择警报选项卡。

  5. 选择添加警报

  6. 警报类型选项部分,选择AWS IoT Events 警报

  7. 基本详细信息部分中,执行以下操作:

    1. 输入警报的名称。

    2. (可选)输入警报的描述。

  8. 阈值定义部分,您可以定义警报何时检测以及警报的严重程度。执行以下操作:

    1. 选择警报检测的属性。每次此属性收到新值时,都会 AWS IoT SiteWise 将该值发送 AWS IoT Events 到以评估警报的状态。

    2. 选择用于将属性与阈值进行比较的运算符。从以下选项中进行选择:

      • 小于

      • 小于或等于

      • = (等于)

      • != 不等于

      • 大于或等于

      • 大于

    3. 对于 “”,选择要用作阈值的属性属性。 AWS IoT Events 将属性的值与该属性的值进行比较。

    4. 输入警报的严重程度。使用您的团队能理解的数字来反映此警报的严重程度。

  9. (可选)在通知设置-可选部分中,执行以下操作:

    1. 选择活动

      注意

      如果您选择非活动,则您和您的团队将不会收到任何警报通知。

    2. 接收人中,选择接收人。

      重要

      您可以向 AWS IAM Identity Center 用户发送警报通知。要使用此功能,必须启用IAM身份中心。一次只能在一个 AWS 区域启用IAM身份中心。这意味着您只能在启用 Ident IAM ity Center 的区域中定义警报通知。有关更多信息,请参阅《AWS IAM Identity Center 用户指南》中的入门

    3. 对于协议,请从以下选项中选择:

      • 电子邮件和短信-警报通过SMS消息和电子邮件通知 IAM Identity Center 用户。

      • 电子邮件-警报通过电子邮件通知IAM身份中心用户。

      • 文本-警报通过SMS消息通知IAM身份中心用户。

    4. 对于 发送人,请选择发送人。

      重要

      您必须在亚马逊简单电子邮件服务 (AmazonSES) 中验证发件人的电子邮件地址。有关更多信息,请参阅《Amazon 简单电子邮件服务开发者指南》中的验证电子邮件地址身份

  10. 默认资产状态部分,您可以设置从此资产模型创建的警报的默认状态。

    注意

    您可以在后续步骤中为从此资产模型创建的资产激活或停用此警报。

  11. 高级设置部分,您可以配置权限、其他通知设置、警报状态操作、 SiteWise 监控器中的警报模式以及确认流。

    注意

    AWS IoT Events 警报需要以下服务角色:

    • AWS IoT Events 假定向发送警报状态值的角色 AWS IoT SiteWise。

    • 一个 AWS IoT Events 假定向 Lambda 发送数据的角色。只有当您的警报发送通知时,才需要此角色。

    附加权限策略页面上,执行以下操作:

    1. 对于 AWS IoT Events 角色,请使用现有角色或创建具有所需权限的角色。此角色需要允许 iotevents.amazonaws.com 担任角色的 iotsitewise:BatchPutAssetPropertyValue 许可和信任关系。

    2. 对于 AWS IoT Events Lambda 角色,请使用现有角色或创建具有所需权限的角色。此角色需要 lambda:InvokeFunctionsso-directory:DescribeUser 权限以及允许担任 iotevents.amazonaws.com 角色的信任关系。

  12. (可选)在其他通知设置部分,执行以下操作:

    1. 接收人属性中,您可以定义一个属性,其值指定通知的接收人。您可以选择 IAM Identity Center 用户作为收件人。

      您可以在资产模型上创建属性或使用现有属性。

      • 如果选择创建新的接收人属性,请指定该属性的接收人属性名称接收人默认值 - 可选

      • 如果选择使用现有接收人属性,请在接收人属性名称中选择该属性。警报使用您选择属性的默认值。

      您可以改写从此资产模型创建的每个资产的默认值。

    2. 对于自定义消息属性,您可以定义一个属性,该属性的值指定除了默认状态更改消息之外还要发送的自定义消息。例如,您可以指定一条消息,以帮助您的团队了解如何处理此警报。

      您可以选择在资产模型上创建属性或使用现有属性。

      • 如果您选择创建新的自定义消息属性,请指定该属性的自定义消息属性名称自定义消息默认值 - 可选

      • 如果您选择使用现有的自定义消息属性,请在自定义消息属性名称中选择该属性。警报使用您选择属性的默认值。

      您可以改写从此资产模型创建的每个资产的默认值。

    3. 对于 Lambda 函数,请执行下列操作之一:

      • 要 AWS IoT SiteWise 创建新的 Lambda 函数,请选择从托管模板创建新的 Lambda。AWS

      • 要使用现有 Lambda 函数,请选择使用现有 Lambda 并选择该函数的名称。

      有关详细信息,请参阅 AWS IoT Events 开发人员指南 中的 管理警报通知

  13. (可选)在设置状态操作部分,执行以下操作:

    1. 选择编辑操作

    2. 添加警报状态操作下,添加操作。然后选择保存

      您最多可以添加 10 个操作。

    AWS IoT Events 可以在警报处于活动状态时执行操作。您可以定义内置操作以使用计时器或设置变量,或者将数据发送到其他 AWS 资源。有关更多信息,请参阅 AWS IoT Events 开发人员指南 中的 支持的操作

  14. (可选)在 “ SiteWise 监控器-可” 中的 “管理警报模式” 下,选择 “活动” 或 “非活动”。

    使用此选项可以在 M SiteWise onitorss 中更新警报模型。默认情况下,此选项处于启用状态。

  15. 确认流下,选择活动非活动。有关确认流的更多信息,请参阅 警报状态

  16. 选择添加警报

    注意

    AWS IoT SiteWise 控制台多次API请求将警报添加到资产模型中。当您选择 Add alar m 时,控制台会打开一个对话框,显示这些API请求的进度。在每个API请求成功或API请求失败之前,请停留在此页面。如果请求失败,请关闭对话框,修复问题,然后选择添加警报重试。

定义 AWS IoT Events 警报(AWS IoT Events 控制台)

您可以使用 AWS IoT Events 控制台在现有资产模型上定义 AWS IoT Events 警报。要在新资产模型上定义 AWS IoT Events 警报,请创建资产模型,然后完成以下步骤。有关更多信息,请参阅 创建资产模型

重要

每个警报都需要一个属性,来指定要与警报进行比较的阈值。必须先在资产模型上定义阈值属性,然后才能定义警报。

举例说明,如果您想定义一个警报,用于检测风力涡轮机何时超过其最大额定风速 50 英里/小时。在定义警报之前,您必须定义一个默认值为 50 的属性(最大风速)。

在资产模型上定义 AWS IoT Events 警报
  1. 导航到 AWS IoT Events 控制台

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

  3. 选择创建警报模型

  4. 输入警报的名称。

  5. (可选)输入警报的描述。

  6. 警报目标 部分,执行以下操作:

    1. 对于目标选项,选择AWS IoT SiteWise 资产属性

    2. 选择要为其添加警报的资产模型。

  7. 阈值定义部分,您可以定义警报何时检测以及警报的严重程度。执行以下操作:

    1. 选择警报检测的属性。每次此属性收到新值时,都会 AWS IoT SiteWise 将该值发送 AWS IoT Events 到以评估警报的状态。

    2. 选择用于将属性与阈值进行比较的运算符。从以下选项中进行选择:

      • 小于

      • 小于或等于

      • = (等于)

      • != 不等于

      • 大于或等于

      • 大于

    3. 对于 “”,选择要用作阈值的属性属性。 AWS IoT Events 将属性的值与该属性的值进行比较。

    4. 输入警报的严重程度。使用您的团队能理解的数字来反映此警报的严重程度。

  8. (可选)在通知设置-可选部分中,执行以下操作:

    1. 对于协议,请从以下选项中选择:

      • 电子邮件和短信-警报通过SMS消息和电子邮件通知 IAM Identity Center 用户。

      • 电子邮件-警报通过电子邮件通知IAM身份中心用户。

      • 文本-警报通过SMS消息通知IAM身份中心用户。

    2. 对于 发送人,请选择发送人。

      重要

      您必须在亚马逊简单电子邮件服务 (AmazonSES) 中验证发件人的电子邮件地址。有关更多信息,请参阅《亚马逊SES简单电子邮件服务开发者指南》中的 “在亚马逊中验证电子邮件地址”。

    3. 接收人属性 - 可选中选择属性。警报使用您选择属性的默认值。

    4. 自定义消息属性 - 可选中选择属性。警报使用您选择属性的默认值。

  9. 实例部分,指定此警报的默认状态。您可以在稍后的步骤中为通过该资产模型创建的所有资产激活或停用此警报。

  10. 高级设置设置中,您可以配置权限、其他通知设置、警报状态操作、 SiteWise 监控器中的警报模式以及确认流。

    注意

    AWS IoT Events 警报需要以下服务角色:

    • AWS IoT Events 假定向发送警报状态值的角色 AWS IoT SiteWise。

    • 一个 AWS IoT Events 假定向 Lambda 发送数据的角色。只有当您的警报发送通知时,才需要此角色。

    1. 确认流部分,选择已启用已禁用。有关确认流的更多信息,请参阅 警报状态

    2. 附加权限策略页面上,执行以下操作:

      1. 对于 AWS IoT Events 角色,请使用现有角色或创建具有所需权限的角色。此角色需要允许 iotevents.amazonaws.com 担任角色的 iotsitewise:BatchPutAssetPropertyValue 许可和信任关系。

      2. 对于 Lambda 角色,请使用现有角色或创建具有所需权限的角色。此角色需要 lambda:InvokeFunctionsso-directory:DescribeUser 权限以及允许担任 iotevents.amazonaws.com 角色的信任关系。

    3. (可选)在其他通知设置窗格中,执行以下操作:

      1. 对于 Lambda 函数,请执行下列操作之一:

        • 要 AWS IoT Events 创建新的 Lambda 函数,请选择创建新的 Lambda 函数。

        • 要使用现有 Lambda 函数,请选择使用现有 Lambda 函数并选择该函数的名称。

        有关详细信息,请参阅 AWS IoT Events 开发人员指南 中的 管理警报通知

    4. (可选)在设置状态操作 - 可选部分中,执行以下操作:

      1. 警报状态操作下,添加操作,然后选择保存

        您最多可以添加 10 个操作。

      AWS IoT Events 可以在警报处于活动状态时执行操作。您可以定义内置操作以使用计时器或设置变量,或者将数据发送到其他 AWS 资源。有关更多信息,请参阅 AWS IoT Events 开发人员指南 中的 支持的操作

  11. 选择创建

    注意

    AWS IoT Events 控制台多次API请求将警报添加到资产模型中。当您选择 Add alar m 时,控制台会打开一个对话框,显示这些API请求的进度。在每个API请求成功或API请求失败之前,请停留在此页面。如果请求失败,请关闭对话框,修复问题,然后选择添加警报重试。

定义 AWS IoT Events 警报 (AWS CLI)

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

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

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

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

    注意

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

  2. 向资产模型添加警报复合模型 (assetModelCompositeModels)。 AWS IoT Events 警报组合模型指定警报IOT_EVENTS类型并指定警报源属性。在中创建警报模型后,您可以添加警报源属性 AWS IoT Events。

    重要

    警报组合模型必须与您稍后创建的 AWS 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. 向资产模型添加警报阈值属性。指定用于此阈值的默认值。您可以基于此模型覆盖每个资产的此默认值。

    注意

    警报阈值属性必须为 INTEGERDOUBLE

    { ... "assetModelProperties": [ ... { "name": "Temperature Max Threshold", "dataType": "DOUBLE", "type": { "attribute": { "defaultValue": "105.0" } } } ] }
  4. (可选)向资产模型添加警报通知属性。这些属性指定了警报状态发生变化时用于发送通知的 AWS IoT Events Ident IAM ity Center 收件人和其他输入。您可以基于此模型覆盖每个资产的这些默认值。

    重要

    您可以向 AWS IAM Identity Center 用户发送警报通知。要使用此功能,必须启用IAM身份中心。一次只能在一个 AWS 区域启用IAM身份中心。这意味着您只能在启用 Ident IAM ity Center 的区域中定义警报通知。有关更多信息,请参阅《AWS IAM Identity Center 用户指南》中的入门

    执行以下操作:

    1. 添加一个用于指定您的IAM身份中心身份存储的 ID 的属性。您可以使用IAM身份中心ListInstancesAPI操作列出您的身份存储。此操作仅适用于您启用IAM身份中心的区域。

      aws sso-admin list-instances

      然后,将身份存储 ID(例如 d-123EXAMPLE)指定为该属性的默认值。

      { ... "assetModelProperties": [ ... { "name": "identityStoreId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "d-123EXAMPLE" } } } ] }
    2. 添加一个属性,指定接收通知的IAM身份中心用户的 ID。要定义默认的通知收件人,请将 Ident IAM ity Center 用户 ID 添加为默认值。执行以下任一操作以获取IAM身份中心用户 ID:

      1. 您可以使用IAM身份中心ListUsersAPI获取您知道其用户名的用户的 ID。Replace(替换) d-123EXAMPLE 使用您的身份存储的 ID,然后替换 Name 使用用户的用户名。

        aws identitystore list-users \ --identity-store-id d-123EXAMPLE \ --filters AttributePath=UserName,AttributeValue=Name
      2. 使用 Id ent IAM ity Center 控制台浏览您的用户并查找用户 ID。

      然后,将用户 ID(例如 123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE)指定为属性的默认值,或者定义不带默认值的属性。

      { ... "assetModelProperties": [ ... { "name": "userId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE" } } } ] }
    3. (可选)添加一个属性,用于指定SMS(文本)消息通知的默认发件人 ID。在亚马逊简单通知服务 (AmazonSNS) 发送的消息中,发件人 ID 显示为消息发件人。有关更多信息,请参阅《亚马逊简单通知服务开发者指南》SNS中的请求发件人IDs向亚马逊发送SMS消息

      { ... "assetModelProperties": [ ... { "name": "senderId", "dataType": "STRING", "type": { "attribute": { "defaultValue": "MyFactory" } } } ] }
    4. (可选)添加一个属性,指定用作电子邮件通知中发送人地址的默认电子邮件地址。

      { ... "assetModelProperties": [ ... { "name": "fromAddress", "dataType": "STRING", "type": { "attribute": { "defaultValue": "my.factory@example.com" } } } ] }
    5. (可选)添加一个属性,指定电子邮件通知中使用的默认主题。

      { ... "assetModelProperties": [ ... { "name": "emailSubject", "dataType": "STRING", "type": { "attribute": { "defaultValue": "[ALERT] High boiler temperature" } } } ] }
    6. (可选)添加一个属性,指定要包含在通知中的其他消息。默认情况下,通知消息包含有关警报的信息。您还可以添加一条额外的消息,为用户提供更多信息。

      { ... "assetModelProperties": [ ... { "name": "additionalMessage", "dataType": "STRING", "type": { "attribute": { "defaultValue": "Turn off the power before you check the alarm." } } } ] }
  5. 创建资产模型或更新现有资产模型。请执行以下操作之一:

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

      aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
    • 要更新现有资源模型,请运行以下命令。Replace(替换) asset-model-id 带有资产模型的 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:定义 AWS IoT Events 警报模型

在中创建警报模型 AWS IoT Events。在中 AWS IoT Events,您可以使用表达式来指定警报模型中的值。您可以使用表达式来指定 AWS IoT SiteWise 要评估的值,并将其用作警报的输入。向警报模型 AWS IoT SiteWise 发送资产属性值时, AWS IoT Events 会评估表达式以获取该属性的值或资产的 ID。您可以在警报模型中使用以下表达式:

  • 资产属性值

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

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

    要获取资产的 ID,请使用以下表达式。Replace(替换) assetModelId 使用资产模型的 ID 并替换 propertyId 并附上房产的 ID。

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

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

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

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

    • 警报监控的属性

    • 阈值属性

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

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

    • (可选)发SMS件人 ID 属性

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

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

    • (可选)附加消息属性

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

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

    此操作将返回包含资产模型详细信息的响应。记下警报使用的每个属性的 ID。在下一步中创建 AWS IoT Events 警报模型IDs时,您将使用它们。

  2. 在中创建警报模型 AWS 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 带有资产模型的 ID。

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

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

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

        • 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),当警报状态发生更改时将警报状态发送给 AWS IoT SiteWise 。

      注意

      对于高级配置,您可以定义警报状态更改时要执行的其他操作。例如,您可以调用 AWS Lambda 函数或发布到某个MQTT主题。有关更多信息,请参阅《AWS IoT Events 开发人员指南》中的使用其他 AWS 服务

      • Replace(替换) assetModelId 带有资产模型的 ID。

      • 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. (可选)配置警报通知设置。警报通知操作使用您账户中的 Lambda 函数发送警报通知。有关更多信息,请参阅 警报通知的要求。在警报通知设置中,您可以配置通知SMS并通过电子邮件发送给 Ident IAM ity Center 用户。执行以下操作:

      1. 将警报通知配置 (alarmNotification) 添加到 alarm-model-payload.json 中的有效负载。

        • Replace(替换) alarmNotificationFunctionArn 使用处理警ARN报通知的 Lambda 函数。

        { "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" } } } ] } }
      2. (可选)将SMS通知(smsConfigurations)配置为在警报状态发生变化时发送给IAM身份中心用户。

        • Replace(替换) identityStoreIdAttributeId 使用包含身份中心IAM身份存储的 ID 的属性的 ID。

        • Replace(替换) userIdAttributeId 使用包含IAM身份中心用户 ID 的属性的 ID。

        • Replace(替换) senderIdAttributeId 使用包含 Amazon SNS 发件人 ID 的属性 ID,或者senderId从有效负载中移除。

        • Replace(替换) additionalMessageAttributeId 使用包含附加消息的属性的 ID,或者additionalMessage从有效负载中移除。

        { "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" } ] } ] } }
      3. (可选)配置电子邮件通知(emailConfigurations),使其在警报状态发生变化时发送给IAM身份中心用户。

        • Replace(替换) identityStoreIdAttributeId 使用IAM身份中心身份存储 ID 属性属性的 ID。

        • Replace(替换) userIdAttributeId 使用IAM身份中心用户 ID 属性属性的 ID。

        • Replace(替换) fromAddressAttributeId 使用 “发件人” 地址属性的 ID,或者from从有效负载中移除。

        • Replace(替换) emailSubjectAttributeId 使用电子邮件主题属性属性的 ID,或者subject从有效负载中移除。

        • Replace(替换) additionalMessageAttributeId 使用附加消息属性的 ID,或者additionalMessage从有效负载中移除。

        { "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" } } ] } ] } }
    7. (可选)将警报功能 (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 } } }
    8. 添加 AWS IoT Events 可以假设向其发送数据的IAM服务角色 (roleArn) AWS IoT SiteWise。此角色需要 iotsitewise:BatchPutAssetPropertyValue 权限以及允许 iotevents.amazonaws.com 担任角色的信任关系。要发送通知,此角色还需要 lambda:InvokeFunctionsso-directory:DescribeUser 权限。有关更多信息,请参阅 AWS IoT Events 开发人员指南 中的 警报服务角色

      • roleArn替换ARN为 AWS 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" }
    9. 运行以下命令从中的有效负载创建 AWS IoT Events 警报模型alarm-model-payload.json

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

步骤 3:启用 AWS IoT SiteWise 和之间的数据流 AWS IoT Events

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

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

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

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

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

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

    3. update-asset-model-payload.json 文件中删除以下键/值对:

      • 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 带有资产模型的 ID。

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

现在,您的资产模型定义了一个在 AWS IoT Events中检测到的警报。报警根据该资产模型对所有资产中的目标属性进行监控。您可以为每项资产配置警报,以自定义每项资产的阈值或 Ident IAM ity Center 收件人等属性。有关更多信息,请参阅 为资产配置警报