

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

# 使用警报监控数据 AWS IoT SiteWise
<a name="industrial-alarms"></a>

您可以为您的数据配置警报，以便在设备或流程运行不佳时提醒您的团队。计算机或进程的最佳性能意味着特定指标的值应在上限和下限的范围内。当这些指标超出其运作范围时，必须通知设备操作员以便修复问题。使用警报功能快速识别问题并通知操作员，以最大限度地提高设备和进程的性能。

**Topics**
+ [警报类型](#alarm-types)
+ [警报状态](#alarm-states)
+ [警报状态属性](#alarm-state-properties)
+ [在中定义资产模型的警报 AWS IoT SiteWise](define-alarms.md)
+ [在中配置资产警报 AWS IoT SiteWise](configure-alarms.md)
+ [回应中的警报 AWS IoT SiteWise](respond-to-alarms.md)
+ [摄取外部警报状态 AWS IoT SiteWise](ingest-external-alarm-state.md)

## 警报类型
<a name="alarm-types"></a>

您可以定义在 AWS 云端检测到的警报和通过外部进程检测到的警报。 AWS IoT SiteWise 支持以下类型的警报：
+ **AWS IoT Events 警报**
**注意**  
终止支持通知： AWS 已终止对的支持 AWS IoT Events。有关更多信息，请参阅[AWS IoT Events 终止支持](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

  AWS IoT Events 警报是检测到的警报 AWS IoT Events。 AWS IoT SiteWise 将资产属性值发送到中的警报模型 AWS IoT Events。然后， AWS IoT Events 将警报状态发送到 AWS IoT SiteWise。您可以配置选项，例如警报何时检测到以及在警报状态发生变化时通知谁。您还可以定义警报状态发生变化时发生的[AWS IoT Events 操作](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html)。

  中的警报 AWS IoT Events 是警报模型的实例。警报模型指定了警报的阈值和严重性、警报状态发生变化时该怎么做等等。配置警报模型的每个特征时，您可以指定警报监控的资产模型的特征属性。所有基于资产模型的资产在 AWS IoT Events 评估警报的特征时都使用该属性的值。有关更多信息，请参阅《[ 开发人员指南》](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-alarms.html)中的*AWS IoT Events 使用警报*。

  当 AWS IoT Events 警报状态发生变化时，您可以对其做出响应。例如，您可以在警报激活时确认或暂停警报。您还可以启用、禁用和重置警报。

  SiteWise 监控用户可以在 SiteWise 监控门户中对 AWS IoT Events 警报进行可视化、配置和响应。有关更多信息，请参阅*《AWS IoT SiteWise Monitor 应用程序指南*》中的[使用警报进行监控](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html)。
**注意**  
AWS IoT Events 评估这些警报并在 AWS IoT SiteWise 和之间传输数据需要付费 AWS IoT Events。有关更多信息，请参阅[AWS IoT Events 定价](https://aws.amazon.com/iot-events/pricing/)。
+ **外部警报**

  外部警报是您在外部评估的警报 AWS IoT SiteWise。如果您有报告警报状态的数据来源，请使用外部警报。外部警报包含一个测量属性，您可以从中提取警报状态数据。

  当外部警报改变状态时，您无法确认或暂停该警报。

  SiteWise 监控用户可以在 SiteWise 监控器门户中看到外部警报的状态，但他们无法配置或响应这些警报。

  AWS IoT SiteWise 不评估外部警报的状态。

## 警报状态
<a name="alarm-states"></a>

工业警报包括有关其监控的设备或流程状态的信息，以及有关操作员对警报状态的响应的信息（可选）。

定义 AWS IoT Events 警报时，您可以指定是否启用*确认流*。默认情况下，启用确认流。启用此选项后，操作员可以确认警报并留下备注，详细说明警报或其为解决警报采取的措施。如果操作员在活动警报变为非活动状态之前未确认该活动警报，则该警报将被锁定。锁定状态表示警报已激活且未被确认，因此操作员需要检查设备或流程，并确认已锁定的警报。

警报具有以下状态：
+ **正常** (`Normal`) - 警报已启用但处于非活动状态。工业流程或设备按预期运行。
+ **活动** (`Active`) - 警报处于活动状态。工业流程或设备超出了其操作范围，需要引起注意。
+ **已确认** (`Acknowledged`) - 操作员已确认警报的状态。

  此状态仅适用于您启用确认流的警报。
+ **已锁定** (`Latched`) - 警报恢复正常，但处于活动状态，没有操作员确认。工业流程或设备需要操作员注意才能将警报重置为正常。

  此状态仅适用于您启用确认流的警报。
+ **已暂停** (`SnoozeDisabled`) - 警报被停用，因为操作员暂停了警报。操作员定义警报暂停的持续时间。在该持续时间之后，警报将恢复正常状态。
+ **已禁用** (`Disabled`) - 警报已禁用，无法检测。

## 警报状态属性
<a name="alarm-state-properties"></a>

AWS IoT SiteWise 将警报状态数据存储为序列化为字符串的 JSON 对象。此对象包含警报的状态和其他信息，例如操作员的响应操作和警报评估的规则。

您可以通过名称和结构类型 `AWS/ALARM_STATE` 来识别警报状态属性。有关更多信息，请参阅 [在中定义资产模型的警报 AWS IoT SiteWise](define-alarms.md)。

警报状态数据对象包含以下信息：

`stateName`  
警报的状态。有关更多信息，请参阅 [警报状态](#alarm-states)。  
数据类型：`STRING`

`customerAction`  
（可选）包含有关操作员响应警报信息的对象。操作员可以启用、禁用、确认和暂停警报。当他们这样做时，警报状态数据包括他们的响应以及他们响应时可以留下的备注。该对象包含以下信息：    
`actionName`  
操作员为响应警报而采取的操作名称。此值包含以下字符串之一：  
+ `ENABLE`
+ `DISABLE`
+ `SNOOZE`
+ `ACKNOWLEDGE`
+ `RESET`
数据类型：`STRING`  
`enable`  
（可选）操作员启用警报时 `customerAction` 中存在的对象。当操作员启用警报时，警报状态将变为 `Normal`。该对象包含以下信息：    
`note`  
（可选）客户在启用警报时留下的备注。  
数据类型：`STRING`  
最大长度：128 个字符  
`disable`  
（可选）操作员禁用警报时 `customerAction` 中存在的对象。当操作员启用警报时，警报状态将变为 `Disabled`。该对象包含以下信息：    
`note`  
（可选）客户在禁用警报时留下的备注。  
数据类型：`STRING`  
最大长度：128 个字符  
`acknowledge`  
（可选）操作员确认警报时 `customerAction` 中存在的对象。当操作员启用警报时，警报状态将变为 `Acknowledged`。该对象包含以下信息：    
`note`  
（可选）客户在确认警报时留下的备注。  
数据类型：`STRING`  
最大长度：128 个字符  
`snooze`  
（可选）操作员暂停警报时 `customerAction` 中存在的对象。当操作员启用警报时，警报状态将变为 `SnoozeDisabled`。该对象包含以下信息：    
`snoozeDuration`  
操作员暂停警报的持续时间（以秒为单位）。在此持续时间之后，警报将变为 `Normal` 状态。  
数据类型：`INTEGER`  
`note`  
（可选）客户在暂停警报时留下的备注。  
数据类型：`STRING`  
最大长度：128 个字符

`ruleEvaluation`  
（可选）包含有关警报评估规则信息的对象。该对象包含以下信息：    
`simpleRule`  
包含有关简单规则信息的对象，该规则使用比较运算符将属性值与阈值进行比较。该对象包含以下信息：    
`inputProperty`  
此警报评估属性的值。  
数据类型：`DOUBLE`  
`operator`  
此警报用于将属性与阈值进行比较的比较运算符。此值包含以下字符串之一：  
+ `<` - 小于
+ `<=` - 小于或等于
+ `==` - 等于
+ `!=` - 不等于
+ `>=` - 大于或等于
+ `>` - 大于
数据类型：`STRING`  
`threshold`  
此警报与属性值进行比较的阈值。  
数据类型：`DOUBLE`

# 在中定义资产模型的警报 AWS IoT SiteWise
<a name="define-alarms"></a>

资产模型可推动您的工业数据和警报实现标准化。您可以在资产模型上规定警报定义，以标准化基于资产模型的所有资产的警报。

您可以使用*组合资产模型*来定义资产模型上的警报。复合资产模型是在另一种资产模型上标准化一组特定属性的资产模型。复合资产模型可确保资产模型上存在某些属性。警报具有类型、状态和（可选）源属性，因此警报复合模型强制这些属性存在。

每个复合模型都有一个类型，用于定义复合模型的属性。警报复合模型定义警报类型、警报状态和（可选）警报源的属性。当您使用复合模型从资产模型创建资产时，该资产将包括复合模型中的属性以及您在资产模型中指定的属性。

复合模型中的每个属性都必须具有用于标识其复合模型类型的名称。复合模型属性支持具有复杂数据类型的属性。这些属性具有 `STRUCT` 数据类型和 `dataTypeSpec` 特征，用于指定属性的复杂数据类型。复杂数据类型属性包含序列化为字符串的 JSON 数据。

警报复合模型具有以下属性。对于此类复合模型，每个属性都必须具有标识该属性的名称。

**警报类型**  
警报的类型。指定下列项之一：  
+ `IOT_EVENTS`— AWS IoT Events 警报。 AWS IoT SiteWise 向发送数据 AWS IoT Events 以评估此警报的状态。必须指定警报源属性才能定义此 AWS IoT Events 警报定义的警报模型。
**注意**  
终止支持通知： AWS 已终止对的支持 AWS IoT Events。有关更多信息，请参阅[AWS IoT Events 终止支持](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。
+ `EXTERNAL` – 外部警报。您摄取警报状态作为测量值。
属性名称：`AWS/ALARM_TYPE`  
属性类型：[属性](attributes.md)  
数据类型：`STRING`

**警报状态**  
警报状态的时间序列数据。这是一个序列化为字符串的对象，其中包含警报的状态和其他信息。有关更多信息，请参阅 [警报状态属性](industrial-alarms.md#alarm-state-properties)。  
属性名称：`AWS/ALARM_STATE`  
属性类型：[测量值](measurements.md)  
数据类型：`STRUCT`  
数据结构类型：`AWS/ALARM_STATE`

**警报源**  
（可选）评估警报状态的资源的 Amazon 资源名称（ARN）。对于 AWS IoT Events 警报，这是警报模型的 ARN。  
属性名称：`AWS/ALARM_SOURCE`  
属性类型：[属性](attributes.md)  
数据类型：`STRING`

**Example 警报复合模型示例**  
以下资产模型表示带有警报以监控其温度的锅炉。 AWS IoT SiteWise 将温度数据发送到 AWS IoT Events 以检测警报。  

```
{
  "assetModelName": "Boiler",
  "assetModelDescription": "A boiler that alarms when its temperature exceeds its limit.",
  "assetModelProperties": [
    {
      "name": "Temperature",
      "dataType": "DOUBLE",
      "unit": "Celsius",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "High Temperature",
      "dataType": "DOUBLE",
      "unit": "Celsius",
      "type": {
        "attribute": {
          "defaultValue": "105.0"
        }
      }
    }
  ],
  "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": {}
          }
        },
        {
          "name": "AWS/ALARM_SOURCE",
          "dataType": "STRING",
          "type": {
            "attribute": {}
          }
        }
      ]
    }
  ]
}
```

**Topics**
+ [中的警报通知要求 AWS IoT SiteWise](iot-events-alarm-notification-requirements.md)
+ [为以下 AWS IoT Events 对象定义警报 AWS IoT SiteWise](define-iot-events-alarms.md)
+ [在中定义外部警报 AWS IoT SiteWise](define-external-alarms.md)

# 中的警报通知要求 AWS IoT SiteWise
<a name="iot-events-alarm-notification-requirements"></a>

AWS IoT Events 使用您 AWS 账户中的 AWS Lambda 功能发送警报通知。您必须在警报所在的 AWS 区域创建此 Lambda 函数才能启用警报通知。此 Lambda 函数使用 [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 发送短信通知，使用 [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) 发送电子邮件通知。创建 AWS IoT Events 警报时，您需要配置警报用于发送通知的协议和设置。

**注意**  
终止支持通知： AWS 已终止对的支持 AWS IoT Events。有关更多信息，请参阅[AWS IoT Events 终止支持](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

AWS IoT Events 提供了一个 AWS CloudFormation 堆栈模板，您可以使用该模板在您的账户中创建此 Lambda 函数。有关更多信息，请参阅 *《AWS IoT Events 开发人员指南》*中的[警报通知 Lambda 函数](https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html)。

# 为以下 AWS IoT Events 对象定义警报 AWS IoT SiteWise
<a name="define-iot-events-alarms"></a>

**注意**  
终止支持通知： AWS 已终止对的支持 AWS IoT Events。有关更多信息，请参阅[AWS IoT Events 终止支持](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

创建 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 服务](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-other-aws-services.html)。

更新或删除资产模型时， AWS IoT SiteWise 可以检查中的警报模型是否 AWS IoT Events 正在监视与该资产模型关联的资产属性。这可以防止您删除 AWS IoT Events 警报当前正在使用的资产属性。要在中启用此功能 AWS IoT SiteWise，您必须拥有`iotevents:ListInputRoutings`权限。此权限 AWS IoT SiteWise 允许调用所支持[ListInputRoutings](https://docs.aws.amazon.com/iotevents/latest/apireference/API_ListInputRoutings.html)的 API 操作 AWS IoT Events。有关更多信息，请参阅 [（可选） ListInputRoutings 权限](alarms-iam-permissions.md#alarms-listInputRoutings-permissions)。

**注意**  
警报通知功能在中国（北京）区域中不可用。

**Topics**
+ [定义 AWS IoT Events 警报（AWS IoT SiteWise 控制台）](#define-iot-events-alarm-console)
+ [定义 AWS IoT Events 警报（AWS IoT Events 控制台）](#define-iot-events-alarm-console-ite-console)
+ [定义 AWS IoT Events 警报 (AWS CLI)](#define-iot-events-alarm-cli)

## 定义 AWS IoT Events 警报（AWS IoT SiteWise 控制台）
<a name="define-iot-events-alarm-console"></a>

您可以使用 AWS IoT SiteWise 控制台在现有资产模型上定义 AWS IoT Events 警报。要在新资产模型上定义 AWS IoT Events 警报，请创建资产模型，然后完成以下步骤。有关更多信息，请参阅 [在中创建资产模型 AWS IoT SiteWise](create-asset-models.md)。

**重要**  
每个警报都需要一个属性，来指定要与警报进行比较的阈值。必须先在资产模型上定义阈值属性，然后才能定义警报。  
举例说明，如果您想定义一个警报，用于检测风力涡轮机何时超过其最大额定风速 50 英里/小时。在定义警报之前，您必须定义一个默认值为 `50` 的属性（**最大风速**）。

**在资产模型上定义 AWS IoT Events 警报**

1. 导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. 在导航窗格中，选择**模型**。

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

1. 选择**警报**选项卡。

1. 选择**添加警报**。

1. 在**警报类型选项**部分，选择**AWS IoT Events 警报**。

1. 在**基本详细信息**部分中，执行以下操作：

   1. 输入警报的名称。

   1. （可选）输入警报的描述。

1. 在**阈值定义**部分，您可以定义警报何时检测以及警报的严重程度。执行以下操作：

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

   1. 选择用于将属性与阈值进行比较的**运算符**。从以下选项中进行选择：
      + **小于**
      + **小于或等于**
      + **= (等于)**
      + **\$1= 不等于**
      + **大于或等于**
      + **大于**

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

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

1. （可选）在**通知设置-*可选***部分中，执行以下操作：

   1. 选择**活动**。
**注意**  
如果您选择**非活动**，则您和您的团队将不会收到任何警报通知。

   1. 在 **接收人**中，选择接收人。
**重要**  <a name="alarm-notifications-sso-requirement"></a>
您可以向 AWS IAM Identity Center 用户发送警报通知。要使用此功能，您必须启用 IAM Identity Center。一次只能在一个 AWS 区域启用 IAM 身份中心。这意味着您只能在启用 IAM Identity Center 的区域中定义警报通知。有关更多信息，请参阅《AWS IAM Identity Center 用户指南》中的[入门](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。**

   1. 对于**协议**，请从以下选项中选择：
      + **电子邮件和短信** - 警报通过短信和电子邮件通知 IAM Identity Center 用户。
      + **电子邮件** - 警报通过电子邮件通知 IAM Identity Center用户。
      + **短信** - 警报通过短信通知 IAM Identity Center用户。

   1. 对于 **发送人**，请选择发送人。
**重要**  
您必须在 Amazon Simple Email Service (Amazon SES) 中验证发送人的电子邮件地址。有关更多信息，请参阅《Amazon Simple Email Service 开发人员指南》**中的[验证电子邮件地址身份](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc)。

1. 在**默认资产状态**部分，您可以设置从此资产模型创建的警报的默认状态。
**注意**  
您可以在后续步骤中为从此资产模型创建的资产激活或停用此警报。

1. 在**高级设置**部分，您可以配置权限、其他通知设置、警报状态操作、 SiteWise 监控器中的警报模式以及确认流。
**注意**  
AWS IoT Events 警报需要以下服务角色：  
 AWS IoT Events 假定向发送警报状态值的角色 AWS IoT SiteWise。
一个 AWS IoT Events 假定向 Lambda 发送数据的角色。只有当您的警报发送通知时，才需要此角色。

   在**附加权限策略**页面上，执行以下操作：

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

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

1. （可选）在**其他通知设置**部分，执行以下操作：

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

      您可以在资产模型上创建属性或使用现有属性。
      + 如果选择**创建新的接收人属性**，请指定该属性的**接收人属性名称**和**接收人默认值 - **可选****。
      + 如果选择**使用现有接收人属性**，请在**接收人属性名称**中选择该属性。警报使用您选择属性的默认值。

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

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

      您可以选择在资产模型上创建属性或使用现有属性。
      + 如果您选择**创建新的自定义消息属性**，请指定该属性的**自定义消息属性名称**和**自定义消息默认值 - *可选***。
      + 如果您选择**使用现有的自定义消息属性**，请在**自定义消息属性名称**中选择该属性。警报使用您选择属性的默认值。

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

   1. 对于 **Lambda 函数**，请执行下列操作之一：
      + 要 AWS IoT SiteWise 创建新的 Lambda 函数，请选择从 **AWS 托管模板创建新的 Lambda**。
      + 要使用现有 Lambda 函数，请选择**使用现有 Lambda **并选择该函数的名称。

      有关详细信息，请参阅 *AWS IoT Events 开发人员指南* 中的 [管理警报通知](https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html)。

1. （可选）在**设置状态操作**部分，执行以下操作：

   1. 选择**编辑操作**。

   1. 在**添加警报状态操作**下，添加操作。然后选择**保存**。

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

   AWS IoT Events 可以在警报处于活动状态时执行操作。您可以定义内置操作以使用计时器或设置变量，或者将数据发送到其他 AWS 资源。有关更多信息，请参阅 [AWS IoT Events 开发人员指南](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html) 中的 *支持的操作*。

1. （可选）在 “** SiteWise 监控器-可*选*” 中的 “管理警报模式**” 下，选择 “**活动**” 或 “**非活动**”。

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

1. 在**确认流**下，选择**活动**或**非活动**。有关确认流的更多信息，请参阅 [警报状态](industrial-alarms.md#alarm-states)。

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

## 定义 AWS IoT Events 警报（AWS IoT Events 控制台）
<a name="define-iot-events-alarm-console-ite-console"></a>

您可以使用 AWS IoT Events 控制台在现有资产模型上定义 AWS IoT Events 警报。要在新资产模型上定义 AWS IoT Events 警报，请创建资产模型，然后完成以下步骤。有关更多信息，请参阅 [在中创建资产模型 AWS IoT SiteWise](create-asset-models.md)。

**重要**  
每个警报都需要一个属性，来指定要与警报进行比较的阈值。必须先在资产模型上定义阈值属性，然后才能定义警报。  
举例说明，如果您想定义一个警报，用于检测风力涡轮机何时超过其最大额定风速 50 英里/小时。在定义警报之前，您必须定义一个默认值为 `50` 的属性（**最大风速**）。

**在资产模型上定义 AWS IoT Events 警报**

1. 导航至 [AWS IoT Events 控制台](https://console.aws.amazon.com/iotevents/)。

1. 在导航窗格中，选择**警报模型**。

1. 选择**创建警报模型**。

1. 输入警报的名称。

1. （可选）输入警报的描述。

1. 在 **警报目标** 部分，执行以下操作：

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

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

1. 在**阈值定义**部分，您可以定义警报何时检测以及警报的严重程度。执行以下操作：

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

   1. 选择用于将属性与阈值进行比较的**运算符**。从以下选项中进行选择：
      + **小于**
      + **小于或等于**
      + **= (等于)**
      + **\$1= 不等于**
      + **大于或等于**
      + **大于**

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

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

1. （可选）在**通知设置-*可选***部分中，执行以下操作：

   1. 对于**协议**，请从以下选项中选择：
      + **电子邮件和短信** - 警报通过短信和电子邮件通知 IAM Identity Center 用户。
      + **电子邮件** - 警报通过电子邮件通知 IAM Identity Center用户。
      + **短信** - 警报通过短信通知 IAM Identity Center用户。

   1. 对于 **发送人**，请选择发送人。
**重要**  
您必须在 Amazon Simple Email Service (Amazon SES) 中验证发送人的电子邮件地址。有关更多信息，请参阅 *Amazon Simple Email Service 开发人员指南* 中的 [在 Amazon SES 中验证电子邮件地址](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html)。

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

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

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

1. 在**高级设置**设置中，您可以配置权限、其他通知设置、警报状态操作、 SiteWise 监控器中的警报模式以及确认流。
**注意**  
AWS IoT Events 警报需要以下服务角色：  
 AWS IoT Events 假定向发送警报状态值的角色 AWS IoT SiteWise。
一个 AWS IoT Events 假定向 Lambda 发送数据的角色。只有当您的警报发送通知时，才需要此角色。

   1. 在**确认流**部分，选择**已启用**或**已禁用**。有关确认流的更多信息，请参阅 [警报状态](industrial-alarms.md#alarm-states)。

   1. 在**附加权限策略**页面上，执行以下操作：

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

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

   1. （可选）在**其他通知设置**窗格中，执行以下操作：

      1. 对于 **Lambda 函数**，请执行下列操作之一：
        + 要 AWS IoT Events 创建新的 Lambda 函数，请选择**创建新的 Lambda** 函数。
        + 要使用现有 Lambda 函数，请选择**使用现有 Lambda 函数**并选择该函数的名称。

        有关详细信息，请参阅 *AWS IoT Events 开发人员指南* 中的 [管理警报通知](https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html)。

   1. （可选）在**设置状态操作 - *可选***部分中，执行以下操作：

      1. 在**警报状态操作**下，添加操作，然后选择**保存**。

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

      AWS IoT Events 可以在警报处于活动状态时执行操作。您可以定义内置操作以使用计时器或设置变量，或者将数据发送到其他 AWS 资源。有关更多信息，请参阅 [AWS IoT Events 开发人员指南](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html) 中的 *支持的操作*。

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

## 定义 AWS IoT Events 警报 (AWS CLI)
<a name="define-iot-events-alarm-cli"></a>

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

**Topics**
+ [步骤 1：为资产模型定义警报](#define-iot-events-alarm-definition-cli)
+ [步骤 2：定义 AWS IoT Events 警报模型](#define-iot-events-alarm-model-cli)
+ [步骤 3：启用 AWS IoT SiteWise 和之间的数据流 AWS IoT Events](#define-iot-events-alarm-data-flow-cli)

### 步骤 1：为资产模型定义警报
<a name="define-iot-events-alarm-definition-cli"></a>

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

**在资产模型上定义警报 (CLI)**

1. 创建名为 `asset-model-payload.json` 的文件。按照其他部分中的步骤将资产模型的详细信息添加到文件中，但不要提交创建或更新资产模型的请求。在本节中，您将向 `asset-model-payload.json` 文件中的资产模型详细信息添加警报定义。
   + 有关如何创建资产模型的更多信息，请参阅[创建资产模型（AWS CLI）](create-asset-models.md#create-asset-model-cli)。
   + 有关如何更新现有资产模型的更多信息，请参阅 [更新资产模型、组件模型或接口 (AWS CLI)](update-asset-models.md#update-asset-model-cli)。
**注意**  
您的资产模型必须定义至少一个资产属性，包括要通过警报监控的资产属性。

1. 向资产模型添加警报复合模型 (`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": {}
             }
           }
         ]
       }
     ]
   }
   ```

1. 向资产模型添加警报阈值属性。指定用于此阈值的默认值。您可以基于此模型覆盖每个资产的此默认值。
**注意**  
警报阈值属性必须为 `INTEGER` 或 `DOUBLE`。

   ```
   {
     ...
     "assetModelProperties": [
       ...
       {
         "name": "Temperature Max Threshold",
         "dataType": "DOUBLE",
         "type": {
           "attribute": {
             "defaultValue": "105.0"
           }
         }
       }
     ]
   }
   ```

1. （可选）向资产模型添加警报通知属性。这些属性指定了 IAM Identity Center 的收件人和其他输入，这些输入 AWS IoT Events 用于在警报状态发生变化时发送通知。您可以基于此模型覆盖每个资产的这些默认值。
**重要**  <a name="alarm-notifications-sso-requirement"></a>
您可以向 AWS IAM Identity Center 用户发送警报通知。要使用此功能，您必须启用 IAM Identity Center。一次只能在一个 AWS 区域启用 IAM 身份中心。这意味着您只能在启用 IAM Identity Center 的区域中定义警报通知。有关更多信息，请参阅《AWS IAM Identity Center 用户指南》中的[入门](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。**

   执行以下操作：

   1. 添加一个属性来指定您的 IAM Identity Center 身份存储的 ID。您可以使用 IAM 身份中心 [ListInstances](https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListInstances.html)API 操作列出您的身份存储。此操作仅适用于您启用 IAM Identity Center的区域。

      ```
      aws sso-admin list-instances
      ```

      然后，将身份存储 ID（例如 `d-123EXAMPLE`）指定为该属性的默认值。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "identityStoreId",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "d-123EXAMPLE"
              }
            }
          }
        ]
      }
      ```

   1. 添加一个属性，指定接收通知的 IAM Identity Center 用户 ID。要定义默认通知接收人，请将 IAM Identity Center 用户 ID 添加为默认值。执行以下任一操作以获取 IAM Identity Center用户 ID：

      1. 您可以使用 IAM 身份中心 [ListUsers](https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_ListUsers.html)API 来获取您知道其用户名的用户的 ID。*d-123EXAMPLE*替换为您的身份存储的 ID，然后*Name*替换为用户的用户名。

         ```
         aws identitystore list-users \
           --identity-store-id d-123EXAMPLE \
           --filters AttributePath=UserName,AttributeValue=Name
         ```

      1. 使用[IAM Identity Center 控制台](https://console.aws.amazon.com/singlesignon)浏览您的用户并查找用户 ID。

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

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "userId",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE"
              }
            }
          }
        ]
      }
      ```

   1. （可选）添加一个属性，指定短信（文本）消息通知的默认发送人 ID。发送人 ID 在 Amazon Simple Notiﬁcation Service (Amazon SNS) 发送的消息上显示为消息发送人。有关更多信息，请参阅《*AWS End User Messaging SMS 用户指南》 AWS End User Messaging SMS*[中的申请发件人 ID](https://docs.aws.amazon.com/sms-voice/latest/userguide/sender-id-request.html)。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "senderId",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "MyFactory"
              }
            }
          }
        ]
      }
      ```

   1. （可选）添加一个属性，指定用作电子邮件通知中*发送人*地址的默认电子邮件地址。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "fromAddress",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "my.factory@example.com"
              }
            }
          }
        ]
      }
      ```

   1. （可选）添加一个属性，指定电子邮件通知中使用的默认主题。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "emailSubject",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "[ALERT] High boiler temperature"
              }
            }
          }
        ]
      }
      ```

   1. （可选）添加一个属性，指定要包含在通知中的其他消息。默认情况下，通知消息包含有关警报的信息。您还可以添加一条额外的消息，为用户提供更多信息。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "additionalMessage",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "Turn off the power before you check the alarm."
              }
            }
          }
        ]
      }
      ```

1. 创建资产模型或更新现有资产模型。请执行以下操作之一：
   + 要创建资源模型，请运行以下命令。

     ```
     aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
     ```
   + 要更新现有资源模型，请运行以下命令。*asset-model-id*替换为资产模型的 ID。

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

   运行命令之后，请记下响应中的 `assetModelId`。

#### 示例：锅炉资产模型
<a name="alarm-asset-model-example"></a>

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

```
{
  "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 警报模型
<a name="define-iot-events-alarm-model-cli"></a>

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

  要获取资产属性的值，请使用以下表达式。*assetModelId*替换为资产模型的 ID，*propertyId*替换为属性的 ID。

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

  要获取资产的 ID，请使用以下表达式。*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 Identity Center 身份存储 ID 属性
   + （可选）IAM Identity Center 用户 ID 属性
   + （可选）短信发送人 ID 属性
   + （可选）电子邮件*发送人*地址属性
   + （可选）电子邮件主题属性
   + （可选）附加消息属性

   运行以下命令以检索资产模型上的这些属性。 IDs *asset-model-id*替换为上一步中的资产模型的 ID。

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

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

1. 在中创建警报模型 AWS IoT Events。执行以下操作：

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

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

   1. 为您的警报输入名称（`alarmModelName`）、说明（`alarmModelDescription`）和严重性（`severity`）。对于严重性，请指定一个反映贵公司严重性级别的整数。
**重要**  
警报模型必须与您之前在资产模型上定义的警报复合模型同名。  
警报模型名称只能包含字母数字字符。

      ```
      {
        "alarmModelName": "BoilerTemperatureHighAlarm",
        "alarmModelDescription": "Detects when the boiler temperature is high.",
        "severity": 3
      }
      ```

   1. 将比较规则 (`alarmRule`) 添加到警报中。此规则定义了要监控的属性 (`inputProperty`)、要比较的阈值 (`threshold`) 和要使用的比较运算符 (`comparisonOperator`)。
      + *assetModelId*替换为资产模型的 ID。
      + *alarmPropertyId*替换为警报监控的属性的 ID。
      + *thresholdAttributeId*替换为阈值属性的 ID。
      + 替换*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"
          }
        }
      }
      ```

   1. 添加一个操作 (`alarmEventActions`)，当警报状态发生更改时将警报状态发送给 AWS IoT SiteWise 。
**注意**  
对于高级配置，您可以定义警报状态更改时要执行的其他操作。例如，您可以调用 AWS Lambda 函数或发布到 MQTT 主题。有关更多信息，请参阅《*AWS IoT Events 开发人员指南》*中的[使用其他 AWS 服务](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-other-aws-services.html)。
      + *assetModelId*替换为资产模型的 ID。
      + *alarmPropertyId*替换为警报监控的属性的 ID。
      + *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'"
              }
            }
          ]
        }
      }
      ```

   1. （可选）配置警报通知设置。警报通知操作使用您账户中的 Lambda 函数发送警报通知。有关更多信息，请参阅 [中的警报通知要求 AWS IoT SiteWise](iot-events-alarm-notification-requirements.md)。在警报通知设置中，您可以将短信和电子邮件通知配置为发送给 IAM Identity Center 用户。执行以下操作：

      1. 将警报通知配置 (`alarmNotification`) 添加到 `alarm-model-payload.json` 中的有效负载。
         + 替换为*alarmNotificationFunctionArn*处理警报通知的 Lambda 函数的 ARN。

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

      1. （可选）将短信通知 (`smsConfigurations`) 配置为在警报状态发生变化时发送给 IAM Identity Center 用户。
         + *identityStoreIdAttributeId*替换为包含 IAM Identity Center 身份存储 ID 的属性的 ID。
         + *userIdAttributeId*替换为包含 IAM 身份中心用户 ID 的属性的 ID。
         + *senderIdAttributeId*替换为包含 Amazon SNS 发件人编号的属性 ID，或者`senderId`从有效负载中删除。
         + *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"
                   }
                 ]
               }
             ]
           }
         }
         ```

      1. （可选）将电子邮件通知 (`emailConfigurations`) 配置为在警报状态发生变化时发送给 IAM Identity Center 用户。
         + *identityStoreIdAttributeId*替换为 IAM 身份中心身份存储 ID 属性属性的 ID。
         + *userIdAttributeId*替换为 IAM 身份中心用户 ID 属性的 ID。
         + *fromAddressAttributeId*替换为 “发件人” 地址属性的 ID，或者`from`从有效负载中移除。
         + *emailSubjectAttributeId*替换为电子邮件主题属性的 ID，或`subject`从有效负载中移除。
         + *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"
                     }
                   }
                 ]
               }
             ]
           }
         }
         ```

   1. （可选）将警报功能 (`alarmCapabilities`) 添加到 `alarm-model-payload.json` 的有效负载中。在此对象中，您可以根据资产模型指定是否启用确认流程以及资产的默认启用状态。有关确认流的更多信息，请参阅 [警报状态](industrial-alarms.md#alarm-states)。

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

   1. 添加 AWS IoT Events 可以假设向其发送数据的 IAM 服务角色 (`roleArn`) AWS IoT SiteWise。此角色需要 `iotsitewise:BatchPutAssetPropertyValue` 权限以及允许 `iotevents.amazonaws.com` 担任角色的信任关系。要发送通知，此角色还需要 `lambda:InvokeFunction` 和 `sso-directory:DescribeUser` 权限。有关更多信息，请参阅 *AWS IoT Events 开发人员指南* 中的 [警报服务角色](https://docs.aws.amazon.com/iotevents/latest/developerguide/security-iam.html)。
      + 将`roleArn`替换为 AWS IoT Events 可以代入执行这些操作的角色的 ARN。

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

   1. 运行以下命令从中的有效负载创建 AWS IoT Events 警报模型`alarm-model-payload.json`。

      ```
      aws iotevents create-alarm-model --cli-input-json file://alarm-model-payload.json
      ```

   1. 操作将返回响应，其中包含警报模型的 ARN，`alarmModelArn`。复制此 ARN，以便下一步在资产模型的警报定义中进行设置。

### 步骤 3：启用 AWS IoT SiteWise 和之间的数据流 AWS IoT Events
<a name="define-iot-events-alarm-data-flow-cli"></a>

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

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

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

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

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

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

  1. 从 `update-asset-model-payload.json` 文件中删除以下键/值对：
     + `assetModelId`
     + `assetModelArn`
     + `assetModelCreationDate`
     + `assetModelLastUpdateDate`
     + `assetModelStatus`

  1. 将警报源属性 (`AWS/ALARM_SOURCE`) 添加到您之前定义的警报复合模型中。*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"
                 }
               }
             }
           ]
         }
       ]
     }
     ```

  1. 运行以下命令，使用存储在 `update-asset-model-payload.json` 文件中的定义更新资产模型。*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中检测到的警报。报警根据该资产模型对所有资产中的目标属性进行监控。您可以为每项资产配置警报，以自定义每项资产的阈值或 IAM Identity Center 接收人等属性。有关更多信息，请参阅 [在中配置资产警报 AWS IoT SiteWise](configure-alarms.md)。

# 在中定义外部警报 AWS IoT SiteWise
<a name="define-external-alarms"></a>

外部警报包含您在 AWS IoT SiteWise外部检测到的警报状态。

## 定义外部警报（控制台）
<a name="define-external-alarm-console"></a>

您可以使用 AWS IoT SiteWise 控制台在现有资产模型上定义外部警报。要在新资产模型上定义外部警报，请创建资产模型，然后完成以下步骤。有关更多信息，请参阅 [在中创建资产模型 AWS IoT SiteWise](create-asset-models.md)。

**在资产模型上定义警报**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-models"></a>在导航窗格中，选择**模型**。

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

1. 选择**警报定义**选项卡。

1. 选择**添加警报**。

1. 在**警报类型选项**中，选择**外部警报**。

1. 输入警报的名称。

1. （可选）输入警报的描述。

1. 选择**添加警报**。

## 定义外部警报（CLI）
<a name="define-external-alarm-cli"></a>

您可以使用在新资产模型或现有资产模型上定义外部警报。 AWS CLI 

要向资产模型添加外部警报，请向资产模型添加警报复合模型。外部警报复合模型指定 `EXTERNAL` 类型，但不指定警报源属性。以下复合警报示例定义了外部温度警报。

```
{
  ...
  "assetModelCompositeModels": [
    {
      "name": "BoilerTemperatureHighAlarm",
      "type": "AWS/ALARM",
      "properties": [
        {
          "name": "AWS/ALARM_TYPE",
          "dataType": "STRING",
          "type": {
            "attribute": {
              "defaultValue": "EXTERNAL"
            }
          }
        },
        {
          "name": "AWS/ALARM_STATE",
          "dataType": "STRUCT",
          "dataTypeSpec": "AWS/ALARM_STATE",
          "type": {
            "measurement": {}
          }
        }
      ]
    }
  ]
}
```

有关如何向新的或现有的资产模型添加复合模型的更多信息，请参阅以下内容：
+ [创建资产模型（AWS CLI）](create-asset-models.md#create-asset-model-cli)
+ [更新资产模型、组件模型或接口 (AWS CLI)](update-asset-models.md#update-asset-model-cli)

定义外部警报后，您可以根据资产模型将警报状态推送到资产。有关更多信息，请参阅 [摄取外部警报状态 AWS IoT SiteWise](ingest-external-alarm-state.md)。

# 在中配置资产警报 AWS IoT SiteWise
<a name="configure-alarms"></a>

在资产模型上定义 AWS IoT Events 警报后，您可以根据资产模型为每项资产配置警报。您可以编辑警报的阈值和通知设置。其中每个值都是资产的一个属性，因此您可以更新属性的默认值来配置这些值。

**注意**  
您可以为 AWS IoT Events 警报配置这些值，但不能为外部警报配置这些值。

**Topics**
+ [配置阈值（控制台）](#configure-alarm-threshold-value-console)
+ [配置阈值（AWS CLI）](#configure-alarm-threshold-value-cli)
+ [在中配置通知设置 AWS IoT SiteWise](configure-alarm-notification-settings.md)

## 配置阈值（控制台）
<a name="configure-alarm-threshold-value-console"></a>

您可以使用 AWS IoT SiteWise 控制台更新指定警报阈值的属性的值。

**更新警报阈值（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要更新警报阈值的资产。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以选择箭头图标来展开资产层次结构以查找资产。

1. 选择**编辑**。

1. 找到警报用于其阈值的属性，然后输入其新值。

1. 选择**保存**。

## 配置阈值（AWS CLI）
<a name="configure-alarm-threshold-value-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 更新指定警报阈值的属性的值。

您必须知道资产的 `assetId` 和属性的 `propertyId` 才能完成此过程。您还可以使用外部 ID。如果您创建了资产但不知道该资产`assetId`，请使用 [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)API 列出特定模型的所有资产。使用该[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)操作查看资产的属性，包括财产 IDs。

使用 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 操作将属性值分配给您的资产。您可以使用此操作一次设置多个属性。此操作的负载包含条目列表，每个条目都包含资产 ID、属性 ID 和属性值。<a name="attribute-id-update-cli"></a>

**要更新属性值（AWS CLI），请执行以下步骤：**

1. 创建一个名为 `batch-put-payload.json` 的文件，并将以下 JSON 对象复制到该文件中。此示例负载演示如何设置风力涡轮机的纬度和经度。更新 IDs、值和时间戳以修改您的用例的有效负载。

   ```
   {
     "entries": [
       {
         "entryId": "windfarm3-turbine7-latitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 47.6204
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       },
       {
         "entryId": "windfarm3-turbine7-longitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-55555EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 122.3491
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       }
     ]
   }
   ```
   + 负载中的每个条目都包含一个 `entryId`，您可以将其定义为任何唯一的字符串。如果任何请求条目失败，则每个错误都将包含相应请求的 `entryId`，以便您知道要重试的请求。
   + 要设置属性值，可以在每个属性属性的列表中包含一个 timestamp-quality-value (TQV) 结构。`propertyValues`此结构必须包含新的 `value` 和当前的 `timestamp`。
     + `value` – 包含下列字段之一的结构，具体取决于要设置的属性的类型：
       + `booleanValue`
       + `doubleValue`
       + `integerValue`
       + `stringValue`
       + `nullValue`
     + `timestamp`— 一种包含当前 Unix 纪元时间（以秒为单位）的结构，`timeInSeconds`。 AWS IoT SiteWise 拒绝任何时间戳在过去存在超过 7 天或将来超过 5 分钟的数据点。

   有关如何为 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 准备负载的更多信息，请查阅[使用摄取数据 AWS IoT SiteWise APIs](ingest-api.md)。

1. 运行以下命令以将属性值发送到 AWS IoT SiteWise：

   ```
   aws iotsitewise batch-put-asset-property-value -\-cli-input-json file://batch-put-payload.json
   ```

# 在中配置通知设置 AWS IoT SiteWise
<a name="configure-alarm-notification-settings"></a>

您可以使用 AWS IoT SiteWise 控制台或 AWS Command Line Interface (AWS CLI) 配置警报通知设置。

## 配置通知设置（控制台）
<a name="configure-alarm-notification-settings-console"></a>

您可以使用 AWS IoT SiteWise 控制台更新为警报指定通知设置的属性的值。

**更新警报的通知设置（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要更新其警报设置的资产。

1. 选择**编辑**。

1. 找到警报用于要更改的通知设置的属性，然后输入其新值。

1. 选择**保存**。

## 配置通知设置（CLI）
<a name="configure-alarm-notification-settings-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 更新为警报指定通知设置的属性的值。

您必须知道资产的 `assetId` 和属性的 `propertyId` 才能完成此过程。您还可以使用外部 ID。如果您创建了资产但不知道该资产`assetId`，请使用 [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)API 列出特定模型的所有资产。使用该[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)操作查看资产的属性，包括财产 IDs。

使用 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 操作将属性值分配给您的资产。您可以使用此操作一次设置多个属性。此操作的负载包含条目列表，每个条目都包含资产 ID、属性 ID 和属性值。<a name="attribute-id-update-cli"></a>

**要更新属性值（AWS CLI），请执行以下步骤：**

1. 创建一个名为 `batch-put-payload.json` 的文件，并将以下 JSON 对象复制到该文件中。此示例负载演示如何设置风力涡轮机的纬度和经度。更新 IDs、值和时间戳以修改您的用例的有效负载。

   ```
   {
     "entries": [
       {
         "entryId": "windfarm3-turbine7-latitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 47.6204
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       },
       {
         "entryId": "windfarm3-turbine7-longitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-55555EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 122.3491
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       }
     ]
   }
   ```
   + 负载中的每个条目都包含一个 `entryId`，您可以将其定义为任何唯一的字符串。如果任何请求条目失败，则每个错误都将包含相应请求的 `entryId`，以便您知道要重试的请求。
   + 要设置属性值，可以在每个属性属性的列表中包含一个 timestamp-quality-value (TQV) 结构。`propertyValues`此结构必须包含新的 `value` 和当前的 `timestamp`。
     + `value` – 包含下列字段之一的结构，具体取决于要设置的属性的类型：
       + `booleanValue`
       + `doubleValue`
       + `integerValue`
       + `stringValue`
       + `nullValue`
     + `timestamp`— 一种包含当前 Unix 纪元时间（以秒为单位）的结构，`timeInSeconds`。 AWS IoT SiteWise 拒绝任何时间戳在过去存在超过 7 天或将来超过 5 分钟的数据点。

   有关如何为 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 准备负载的更多信息，请查阅[使用摄取数据 AWS IoT SiteWise APIs](ingest-api.md)。

1. 运行以下命令以将属性值发送到 AWS IoT SiteWise：

   ```
   aws iotsitewise batch-put-asset-property-value -\-cli-input-json file://batch-put-payload.json
   ```

# 回应中的警报 AWS IoT SiteWise
<a name="respond-to-alarms"></a>

当 AWS IoT Events 警报状态发生变化时，您可以执行以下操作来响应警报：
+ 确认警报以表明您正在处理问题。
+ 暂停警报以将其暂时停用。
+ 禁用警报可将其永久禁用，直到您再次启用警报。
+ 启用已禁用的警报以检测警报状态。
+ 重置警报以清除其状态和最新值。

您可以使用 AWS IoT SiteWise 控制台或 AWS IoT Events API 来响应警报。

**注意**  
您可以响应 AWS IoT Events 警报，但不能响应外部警报。

**Topics**
+ [响应警报（控制台）](#respond-to-alarm-console)
+ [响应警报（API）](#respond-to-alarm-cli)

## 响应警报（控制台）
<a name="respond-to-alarm-console"></a>

您可以使用 AWS IoT SiteWise 控制台确认、暂停、禁用或启用警报。

**Topics**
+ [确认警报（控制台）](#acknowledge-alarm-console)
+ [暂停警报（控制台）](#snooze-alarm-console)
+ [禁用警报（控制台）](#disable-alarm-console)
+ [启用警报（控制台）](#enable-alarm-console)
+ [重置警报（控制台）](#reset-alarm-console)

### 确认警报（控制台）
<a name="acknowledge-alarm-console"></a>

您可以确认警报以表明您正在处理问题。

**注意**  
您必须在警报上启用确认流，这样才能确认警报。如果您从 AWS IoT SiteWise 控制台定义警报，则默认情况下会启用此选项。

**确认警报（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要确认警报的资产。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以选择箭头图标来展开资产层次结构以查找资产。

1. 选择 **警报** 选项卡。

1. 选择要确认的警报，然后选择 **操作** 以打开响应操作菜单。

1. 选择**确认**。警报的状态更改为 **已确认**。

### 暂停警报（控制台）
<a name="snooze-alarm-console"></a>

您可以暂停警报以将其暂时停用。指定暂停警报的持续时间。

**对警报设置稍后提醒 (控制台)**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要对警报设置稍后提醒的资产。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以选择箭头图标来展开资产层次结构以查找资产。

1. 选择 **警报** 选项卡。

1. 选择要设置稍后提醒的警报，然后选择**操作**以打开响应操作菜单。

1. 选择**暂停**。将打开一个模型，您可以在其中指定暂停的持续时间。

1. 选择 **暂停时长**或输入 **自定义暂停时长**。

1. 选择**保存**。警报的状态更改为 **已暂停**。

### 禁用警报（控制台）
<a name="disable-alarm-console"></a>

您可以禁用警报，使其不再检测。禁用警报后，如果您希望警报检测，则必须重新启用警报。

**禁用警报（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要禁用其警报的资产。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以选择箭头图标来展开资产层次结构以查找资产。

1. 选择 **警报** 选项卡。

1. 选择要禁用的警报，然后选择**操作**以打开响应操作菜单。

1. 选择 **禁用**。警报的状态更改为 **已禁用**。

### 启用警报（控制台）
<a name="enable-alarm-console"></a>

您可以启用警报，使其在禁用或暂停后再次检测。

**若要启用警报（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要启用警报的资产。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以选择箭头图标来展开资产层次结构以查找资产。

1. 选择 **警报** 选项卡。

1. 选择要启用的警报，然后选择**操作**以打开响应操作菜单。

1. 请选择 **启用**。警报的状态更改为 **正常**。

### 重置警报（控制台）
<a name="reset-alarm-console"></a>

您可以重置警报以清除其状态和最新值。

**若要重置警报 (控制台)**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要重置警报的资产。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以选择箭头图标来展开资产层次结构以查找资产。

1. 选择 **警报** 选项卡。

1. 选择要启用的警报，然后选择**操作**以打开响应操作菜单。

1. 选择 **重置**。警报的状态更改为 **正常**。

## 响应警报（API）
<a name="respond-to-alarm-cli"></a>

您可以使用 AWS IoT Events API 来确认、暂停、禁用、启用或重置警报。有关更多信息，请参阅 *AWS IoT Events API 参考* 中的以下操作：
+ [BatchAcknowledgeAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchAcknowledgeAlarm.html)
+ [BatchSnoozeAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchSnoozeAlarm.html)
+ [BatchDisableAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchDisableAlarm.html)
+ [BatchEnableAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchEnableAlarm.html)
+ [BatchResetAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchResetAlarm.html)

有关更多信息，请参阅 *AWS IoT Events 开发人员指南* 中的 [响应警报](https://docs.aws.amazon.com/iotevents/latest/developerguide/respond-to-alarms.html)。

# 摄取外部警报状态 AWS IoT SiteWise
<a name="ingest-external-alarm-state"></a>

外部警报是您在外部评估的警报 AWS IoT SiteWise。当您有一个数据来源报告您想要获取到 AWS IoT SiteWise的警报状态时，您可以使用外部警报。

警报状态属性要求警报状态数据值采用特定的格式。每个数据值都必须是序列化为字符串的 JSON 对象。然后，将序列化的字符串作为字符串值提取。有关更多信息，请参阅 [警报状态属性](industrial-alarms.md#alarm-state-properties)。

**Example 警报状态数据值示例（未序列化）**  

```
{
  "stateName": "Active"
}
```

**Example 警报状态数据值示例（序列化）**  

```
{\"stateName\":\"Active\"}
```

**注意**  
如果您的数据来源无法报告这种格式的数据，或者您无法在采集数据之前将其转换为此格式，则可以选择不使用警报属性。相反，例如，您可以将数据作为具有字符串数据类型的测量属性进行获取。有关更多信息，请参阅[定义来自设备的数据流（测量值）](measurements.md)和[将数据摄取到 AWS IoT SiteWise](industrial-data-ingestion.md)。

# 映射外部警报状态流 AWS IoT SiteWise
<a name="connect-alarm-data-streams"></a>

您可以定义属性别名，将数据流映射到警报状态属性。这有助于您在获取或检索数据时轻松识别警报状态属性。有关属性别名的更多信息，请参阅 [管理数据流 AWS IoT SiteWise](manage-data-streams.md)。

**Topics**
+ [映射外部警报状态流（控制台）](#connect-alarm-data-stream-console)
+ [映射外部警报状态流（AWS CLI）](#connect-alarm-data-stream-cli)

## 映射外部警报状态流（控制台）
<a name="connect-alarm-data-stream-console"></a>

您可以定义属性别名，将数据流映射到警报状态属性。这有助于您在获取或检索数据时轻松识别警报状态属性。有关属性别名的更多信息，请参阅 [管理数据流 AWS IoT SiteWise](manage-data-streams.md)。

您可以使用 AWS IoT SiteWise 控制台为警报状态属性设置别名。

**为警报状态属性设置属性别名（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-assets"></a>在导航窗格中，选择**资产**。

1. 选择要为其设置属性别名的资产。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以选择箭头图标来展开资产层次结构以查找资产。

1. 选择**编辑**。

1. 滚动到**警报**并展开该部分。

1. 在**外部警报**下，在**属性别名 - *可选***中输入别名。

1. 选择**保存**。

## 映射外部警报状态流（AWS CLI）
<a name="connect-alarm-data-stream-cli"></a>

您可以定义属性别名，将数据流映射到警报状态属性。这有助于您在获取或检索数据时轻松识别警报状态属性。有关属性别名的更多信息，请参阅 [管理数据流 AWS IoT SiteWise](manage-data-streams.md)。

您可以使用 AWS Command Line Interface (AWS CLI) 为警报状态属性设置别名。

您必须知道资产的 `assetId` 和属性的 `propertyId` 才能完成此过程。您还可以使用外部 ID。如果您创建了资产但不知道该资产`assetId`，请使用 [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)API 列出特定模型的所有资产。使用该[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)操作查看资产的属性，包括财产 IDs。

**注意**  
[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)响应包括该资产的复合资产模型列表。每个警报都是一个复合模型。要查找 `propertyId`，请找到警报的复合模型，然后在该复合模型中找到 `AWS/ALARM_STATE` 属性。

有关如何设置属性别名的更多信息，请参阅 [更新资产属性的别名](update-data-streams-method.md)。

# 摄取警报状态数据 AWS IoT SiteWise
<a name="ingest-alarm-state-data"></a>

警报状态属性期望警报状态为序列化的 JSON 字符串。要将警报状态引入外部警报 AWS IoT SiteWise，请将此序列化字符串作为带时间戳的字符串值提取。以下示例演示了活动警报的状态数据值。

```
{\"stateName\":\"Active\"}
```

要标识警报状态属性，您可以指定以下项之一：
+ 您要向其发送数据的警报属性的 `assetId` 和 `propertyId` 。
+ `propertyAlias`，这是一个数据流别名（例如，`/company/windfarm/3/turbine/7/temperature/high`）。要使用此选项，您必须首先设置警报属性的别名。要了解如何为警报状态属性设置属性别名，请参阅 [映射外部警报状态流 AWS IoT SiteWise](connect-alarm-data-streams.md)。

以下 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)API 负载示例，演示了如何格式化外部警报的状态。当风力涡轮机的每分钟转速 (RPM) 读数过高时，此外部警报会报告。

**Example 警报状态数据的 BatchPutAssetPropertyValue 有效负载示例**  

```
{
    "entries": [
      {
        "entryId": "unique entry ID",
        "propertyAlias": "/company/windfarm/3/turbine/7/temperature/high",
        "propertyValues": [
          {
            "value": {
              "stringValue": "{\"stateName\":\"Active\"}"
            },
            "timestamp": {
              "timeInSeconds": 1607550262
            }
          }
        ]
      }
    ]
  }
```
有关如何使用 `BatchPutAssetPropertyValue` API 获取数据的更多信息，请参阅 [使用摄取数据 AWS IoT SiteWise APIs](ingest-api.md)。  
要进一步了解有关采集数据的其他方式，请参阅 [将数据摄取到 AWS IoT SiteWise](industrial-data-ingestion.md)。