

终止支持通知：2026 年 5 月 20 日， AWS 将终止对的支持。 AWS IoT Events 2026 年 5 月 20 日之后，您将无法再访问 AWS IoT Events 控制台或 AWS IoT Events 资源。有关更多信息，请参阅[AWS IoT Events 终止支持](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

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

# 中 AWS IoT SiteWise 警报的迁移程序 AWS IoT Events
<a name="eos-procedure-alarms"></a>

本节介绍替代解决方案，这些解决方案在您迁移后可提供类似的警报功能 AWS IoT Events。

对于使用 AWS IoT Events 警报的 AWS IoT SiteWise 属性，您可以使用警 CloudWatch报迁移到解决方案。这种方法提供了强大的监控功能，以及诸如异常检测 SLAs 和分组警报之类的既定功能和其他功能。

## 比较架构
<a name="eos-architecture-comparison-alarms"></a>

当前 AWS IoT SiteWise 属性的 AWS IoT Events 警报配置需要`AssetModelCompositeModels`在资产模型中创建，如*AWS IoT SiteWise 用户指南*中的[定义外部警报](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/define-external-alarms.html)中所述。 AWS IoT SiteWise对新解决方案的修改通常通过 AWS IoT Events 控制台进行管理。

新的解决方案利用警报提供 CloudWatch 警报管理。此方法使用 AWS IoT SiteWise 通知将属性数据点发布到 AWS IoT Core MQTT 主题，然后由 Lambda 函数进行处理。该功能将这些通知转换为 CloudWatch 指标，从而通过 CloudWatch的警报框架实现警报监控。


| 用途 | 解决方案 | 差异 | 
| --- | --- | --- | 
|  **数据源**-属性数据来自 AWS IoT SiteWise  |  AWS IoT SiteWise MQTT 通知  |  将直接的 IoT Events 集成替换为来自 AWS IoT SiteWise 属性的 MQTT 通知  | 
|  **数据处理**-转换属性数据  |  Lambda 函数  |  处理 AWS IoT SiteWise 属性通知并将其转换为 CloudWatch 指标  | 
|  **警报评估**-监控指标并触发警报  |  亚马逊 CloudWatch 警报  |  用 AWS IoT Events 警报取代 CloudWatch 警报，提供其他功能，例如异常检测  | 
|  **集成** — 连接 AWS IoT SiteWise  |  AWS IoT SiteWise 外部警报  |  可选功能，可将 CloudWatch 警报 AWS IoT SiteWise 作为外部警报导回去  | 

## 步骤 1：在资产属性上启用 MQTT 通知
<a name="eos-alarms-mqtt-asset-property"></a>

如果您使用 AWS IoT Events 集成的 AWS IoT SiteWise 警报，则可以为要监控的每个属性启用 MQTT 通知。

1. 按照[中的配置资产警报 AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-alarms.html#configure-alarm-threshold-value-console)程序进行操作，直到完成**编辑**资产模型属性的步骤。

1. 对于要迁移的每个属性，将 **MQTT 通知状态**更改为 “**活动**”。  
![\[屏幕截图显示 MQTT 通知状态下拉列表在 AWS IoT SiteWise 控制台中的位置。\]](http://docs.aws.amazon.com/zh_cn/iotevents/latest/developerguide/images/events-eos-sw-asset-mqtt.png)

1. 记下每个修改后的警报属性的警报发布到的主题路径。

有关更多信息，请参阅以下文档资源：
+ 在《*AWS IoT SiteWise 用户指南*[》中了解 MQTT 主题中的资产属性](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/mqtt-topics.html)。
+ 《*AWS IoT 开发人员指南》*中的 [MQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

## 步骤 2：创建 AWS Lambda 函数
<a name="eos-alarms-lambda-function"></a>

创建一个 Lambda 函数，用于读取 MQTT 主题发布的 TQV 数组，并将单个值发布到。 CloudWatch我们将使用此 Lambda 函数作为在 AWS IoT Core 消息规则中触发的目标操作。

1. 打开 [AWS Lambda console](https://console.aws.amazon.com/lambda)。

1. 选择**创建函数**。

1. 输入**函数名称的名称**。

1. **选择 **NodeJS** 22.x 作为运行时间。**

1. 在**更改默认执行角色**下拉列表中，选择**使用现有角色**，然后选择您在之前的步骤中创建的 IAM 角色。
**注意**  
此过程假设您已经迁移了探测器模型。如果您没有 IAM 角色，请参阅[](eos-procedure-detector-models.md#eos-detector-model-create-iam-role)。

1. 选择**创建函数**。

1. 替换硬编码常量后，粘贴以下代码片段。

   ```
   import json
   import boto3
   from datetime import datetime
   
   # Initialize CloudWatch client
   cloudwatch = boto3.client('cloudwatch')
   
   def lambda_handler(message, context):
       try:
           # Parse the incoming IoT message
           # Extract relevant information
           asset_id = message['payload']['assetId']
           property_id = message['payload']['propertyId']
           
           # Process each value in the values array
           for value in message['payload']['values']:
               # Extract timestamp and value
               timestamp = datetime.fromtimestamp(value['timestamp']['timeInSeconds'])
               metric_value = value['value']['doubleValue']
               quality = value.get('quality', 'UNKNOWN')
               
               # Publish to CloudWatch
               response = cloudwatch.put_metric_data(
                   Namespace='IoTSiteWise/AssetMetrics',
                   MetricData=[
                       {
                           'MetricName': f'Property_your-property-id',
                           'Value': metric_value,
                           'Timestamp': timestamp,
                           'Dimensions': [
                               {
                                   'Name': 'AssetId',
                                   'Value': 'your-asset-id'
                               },
                               {
                                   'Name': 'Quality',
                                   'Value': quality
                               }
                           ]
                       }
                   ]
               )
               
           return {
               'statusCode': 200,
               'body': json.dumps('Successfully published metrics to CloudWatch')
           }
           
       except Exception as e:
           print(f'Error processing message: {str(e)}')
           return {
               'statusCode': 500,
               'body': json.dumps(f'Error: {str(e)}')
           }
   ```

## 步骤 3：创建 AWS IoT Core 邮件路由规则
<a name="eos-alarms-message-routing"></a>
+ 按照[教程：重新发布 MQTT 消息过程进行](https://docs.aws.amazon.com/iot/latest/developerguide/iot-repub-rule.html)操作，在出现提示时输入以下信息：

  1. 命名消息路由规则`SiteWiseToCloudwatchAlarms`。

  1. 对于查询，您可以使用以下内容：

     ```
     SELECT * FROM '$aws/sitewise/asset-models/your-asset-model-id/assets/your-asset-id/properties/your-property-id'
     ```

  1. 在**规则操作**中，选择 **Lambda** 操作以将生成的数据发送到 AWS IoT SiteWise 。 CloudWatch例如：  
![\[显示了 Lambda 函数的规则操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/iotevents/latest/developerguide/images/events-eos-lambda-rule-action.png)

## 步骤 4：查看 CloudWatch 指标
<a name="eos-alarms-metrics"></a>

当您将数据提取到之前选择的属性时 AWS IoT SiteWise，会将数据路由到我们在中[步骤 1：在资产属性上启用 MQTT 通知](#eos-alarms-mqtt-asset-property)创建的 Lambda 函数。[步骤 2：创建 AWS Lambda 函数](#eos-alarms-lambda-function)在此步骤中，您可以查看 Lambda 是否将您的指标发送到。 CloudWatch

1. 打开 [CloudWatch AWS 管理控制台](https://console.aws.amazon.com/cloudwatch/)。

1. 在左侧导航栏中，选择**指标**，然后选择**所有指标**。

1. 选择警报的 URL 将其打开。

1. 在 S **ourc** e 选项卡下， CloudWatch 输出类似于此示例。此源信息确认指标数据正在输入到 CloudWatch。

   ```
   {
       "view": "timeSeries",
       "stacked": false,
       "metrics": [
           [ "IoTSiteWise/AssetMetrics", "Property_your-property-id-hash", "Quality", "GOOD", "AssetId", "your-asset-id-hash", { "id": "m1" } ]
       ],
       "region": "your-region"
   }
   ```

## 步骤 5：创建 CloudWatch 警报
<a name="eos-create-cw-alarm"></a>

按照 *Amazon CloudWatch 用户指南*中的[基于静态阈值创建 CloudWatch警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)报程序，为每个相关指标创建警报。

**注意**  
Amazon 中有许多警报配置选项。有关 CloudWatch 警报 CloudWatch 的更多信息，请参阅《[亚马逊* CloudWatch 用户指南》中的 “使用亚马逊 CloudWatch *警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)”。

## 步骤 6：（可选）将 CloudWatch 警报导入 AWS IoT SiteWise
<a name="eos-import-cw-alarm-sw"></a>

您可以将 CloudWatch 警报配置为 AWS IoT SiteWise 使用 CloudWatch 警报操作和 Lambda 将数据发送回去。这种集成使您能够在 Monito SiteWise r 门户中查看警报状态和属性。

1. 将外部警报配置为资产模型中的一个属性。有关更多信息，请参阅《*AWS IoT SiteWise 用户指南》 AWS IoT SiteWise*[中的定义外部警报](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/define-external-alarms.html)。

1. 创建一个 Lambda 函数，该函数使用*AWS IoT SiteWise 用户指南*中的 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)API 向其发送警报数据。 AWS IoT SiteWise

1. 设置 CloudWatch 警报操作，以便在警报状态发生变化时调用 Lambda 函数。有关更多信息，请参阅《*Amazon CloudWatch 用户指南》*中的 “[警报操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-actions.html)” 部分。