

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

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

# 通过 Amazon Ev CloudWatch ents 获取延迟数据通知
<a name="late-data-notification"></a>

当您使用来自指定时间段的数据创建数据集时，有些消息数据可能无法及时送达处理。为了允许延迟，您可以通过应用`queryAction`（SQL 查询）来指定[创建数据集`QueryFilter`](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_CreateDataset.html)时的`deltaTime`偏移量。 AWS IoT Analytics 仍会处理在 delta 时间内到达的数据，并且您的数据集内容存在时间延迟。数据延迟通知功能 AWS IoT Analytics 允许在增量时间之后数据到达时通过 [Amazon Ev CloudWatch en](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) ts 发送通知。

您可以使用 AWS IoT Analytics 控制台、[API](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/)、[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/reference/iotanalytics/index.html) 或 [AWS SDK](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html) 为数据集指定延迟数据规则。

在 AWS IoT Analytics API 中，`LateDataRuleConfiguration`对象表示数据集的后期数据规则设置。此对象是与 `CreateDataset` 和 `UpdateDataset` API 操作关联的 `Dataset` 对象的一部分。

## 参数
<a name="lateDataRules-parameters"></a>

使用为数据集创建延迟数据规则时 AWS IoT Analytics，必须指定以下信息：

**`ruleConfiguration` (`LateDataRuleConfiguration`)**  
包含延迟数据规则配置信息的结构。    
**`deltaTimeSessionWindowConfiguration`**  
包含增量时间会话窗口的配置信息的结构。  
[DeltaTime](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_DeltaTime.html) 指定时间间隔。您可以通过 `DeltaTime` 使用上次执行后到达数据存储的数据创建数据集内容。有关 `DeltaTime` 的示例，请参阅[使用增量窗口（CLI）创建 SQL 数据集](https://docs.aws.amazon.com/iotanalytics/latest/userguide/automate-create-dataset.html#automate-example6)。    
**`timeoutInMinutes`**  
一个时间间隔。你可以使用 `timeoutInMinutes` soh 来 AWS IoT Analytics 批量处理自上次执行以来生成的延迟数据通知。 AWS IoT Analytics 一次向 CloudWatch 事件发送一批通知。  
类型：整数  
有效范围：1-60

**`ruleName`**  
延迟数据规则的名称。  
类型：字符串

**重要**  
要指定 `lateDataRules`，数据集必须使用 `DeltaTime` 筛选器。

## 配置延迟数据规则(控制台)
<a name="config-late-data-rules-console"></a>

以下步骤介绍了如何使用 AWS IoT Analytics 控制台配置数据集的延迟数据规则。

**要配置延迟数据规则**

1. 登录 [AWS IoT Analytics 控制台](https://console.aws.amazon.com/iotanalytics/)。

1. 在导航窗格中，选择 **数据集**。

1. 在**数据集**下，选择目标数据集。

1. 在导航窗格中，选择 **详细信息**。

1. 在 **增量窗口**部分中，选择**编辑**。

1. 在**配置数据选择筛选条件**下，执行以下操作：

   1. 对于**数据选择窗口**，选择**增量时间**。

   1. 对于**偏移**，输入一个时间段，然后选择一个单位。

   1. 对于**时间戳表达式**，输入一个表达式。这可以是时间戳字段的名称，也可以是可以推导时间的 SQL 表达式，例如*from\$1unixtime(time)*。

      有关如何编写时间戳表达式的更多信息，请参阅*《Presto 0.172 文档》*中的[日期与时间函数和运算符](https://prestodb.io/docs/0.172/functions/datetime.html)。

   1. 对于**延迟数据通知**，请选择**激活**。

   1. 对于**增量时间**，请输入一个整数。有效范围为 1-60。

   1. 选择**保存**。  
![\[在 AWS IoT Analytics 控制台中配置数据选择过滤器。\]](http://docs.aws.amazon.com/zh_cn/iotanalytics/latest/userguide/images/late-data-notification-1.png)

## 配置延迟数据规则(CLI)
<a name="config-late-data-rules-cli"></a>

在 AWS IoT Analytics API 中，`LateDataRuleConfiguration`对象表示数据集的后期数据规则设置。此对象是与 `CreateDataset` 和 `UpdateDataset` 关联的 `Dataset` 对象的一部分。您可以使用 [API](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/)、[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/iotanalytics/index.html)、或 [AWS SDK](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html) 为数据集指定延迟数据规则。下面的示例使用了 AWS CLI。

要使用指定的延迟数据规则创建数据集，请运行以下命令。以下命令假定该 `dataset.json` 文件位于当前目录中。

**注意**  
您可以使用 [UpdateDataset](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_UpdateDataset.html)API 更新现有数据集。

```
aws iotanalytics create-dataset --cli-input-json file://dataset.json
```

该`dataset.json`文件应包含以下内容：
+ *demo\$1dataset*替换为目标数据集名称。
+ *demo\$1datastore*替换为目标数据存储名称。
+ *from\$1unixtime(time)*替换为可以推导时间的时间戳字段或 SQL 表达式的名称。

  有关如何编写时间戳表达式的更多信息，请参阅*《Presto 0.172 文档》*中的[日期与时间函数和运算符](https://prestodb.io/docs/0.172/functions/datetime.html)。
+ *timeout*替换为 1—60 之间的整数。
+ *demo\$1rule*用任意名称替换。

```
{
    "datasetName": "demo_dataset",
    "actions": [
        {
            "actionName": "myDatasetAction",
            "queryAction": {
                "filters": [
                    {
                        "deltaTime": {
                            "offsetSeconds": -180,
                            "timeExpression": "from_unixtime(time)"
                        }
                    }
                ],
                "sqlQuery": "SELECT * FROM demo_datastore"
            }
        }
    ],
    "retentionPeriod": {
        "unlimited": false,
        "numberOfDays": 90
    },
    "lateDataRules": [
        {
            "ruleConfiguration": {
                "deltaTimeSessionWindowConfiguration": {
                    "timeoutInMinutes": timeout
                }
            },
            "ruleName": "demo_rule"
        }
    ]
}
```

## 订阅接收延迟数据通知
<a name="subscribe-eventbridge"></a>

您可以在 “ CloudWatch 事件” 中创建规则，定义如何处理从中发送的延迟数据通知 AWS IoT Analytics。当 Ev CloudWatch ents 收到通知时，它会调用规则中定义的指定目标操作。

### 创建 CloudWatch 事件规则的先决条件
<a name="cwe-rule-prereq"></a>

在为创建 CloudWatch 事件规则之前 AWS IoT Analytics，应执行以下操作：
+ 熟悉事件中的事件、规则和目标。 CloudWatch 
+ 创建和配置您的 CloudWatch 事件规则调用的[目标](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-targets.html)。规则可调用多类目标，例如：
  +  Amazon Kinesis 流
  + AWS Lambda 函数
  + Amazon Simple Notification Service（Amazon SNS）主题
  + Amazon Simple Queue Service（Amazon SQS）队列

  您的 CloudWatch 事件规则和关联目标必须位于您创建 AWS IoT Analytics 资源的 AWS 区域。有关更多信息，请参阅 *AWS 一般参考* 中的[服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)。

有关更多信息，请参阅[什么是 CloudWatch 事件？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) 以及《[亚马逊 CloudWatch 活动*用户指南》中的 “亚马逊 CloudWatch 活动*入门](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CWE_GettingStarted.html)”。

### 延迟数据通知事件
<a name="late-data-notification-event"></a>

延迟数据通知的事件使用以下格式。

```
{
	"version": "0",
	"id": "7f51dfa7-ffef-97a5-c625-abddbac5eadd",
	"detail-type": "IoT Analytics Dataset Lifecycle Notification",
	"source": "aws.iotanalytics",
	"account": "123456789012",
	"time": "2020-05-14T02:38:46Z",
	"region": "us-east-2",
	"resources": ["arn:aws:iotanalytics:us-east-2:123456789012:dataset/demo_dataset"],
	"detail": {
		"event-detail-version": "1.0",
		"dataset-name": "demo_dataset",
		"late-data-rule-name": "demo_rule",
		"version-ids": ["78244852-8737-4650-aa4d-3071a01338fa"],
		"message": null
	}
}
```

### 创建 CloudWatch 事件规则以接收延迟的数据通知
<a name="create-cwe-rule-console"></a>

以下过程向您展示如何创建向 Amazon SQS 队列发送 AWS IoT Analytics 延迟数据通知的规则。

**创建 CloudWatch 事件规则**

1. 登录 [Amazon CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中的 **Events**（事件）下，选择 **Rules**（规则）。

1. 在 **规则** 页面，选择 **创建规则**。

1. 在**事件源**下，选择**事件模式**。

1. 在**生成事件模式以按服务匹配事件**部分，执行以下操作：

   1. 对于**服务名称**，请选择 **IoT Analytics**

   1. 对于**事件类型**，请选择 **IoT Analytics 数据集生命周期通知**。

   1. 选择**特定数据集名称**，然后输入目标数据集的名称。

1. 在**目标**下，选择**添加目标\$1**。

1. 选择 **SQS 队列**，然后执行以下操作：

   1. 对于**队列\$1**，选择目标队列。

1. 选择 **Configure details（配置详细信息）**。

1. 在 **步骤 2：配置规则详细信息** 页面上，输入名称和描述。

1. 选择**创建规则**。