Amazon IoT Analytics 不再向新客户提供。的现有客户 Amazon IoT Analytics 可以继续照常使用该服务。了解更多
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 Amazon CloudWatch Events 获取延迟数据通知
当您使用来自指定时间段的数据创建数据集时,有些消息数据可能无法及时到达以进行处理。为了允许延迟,您可通过应用 queryAction
(SQL 查询),在创建数据集时指定 QueryFilter
的 deltaTime
偏移量。Amazon IoT Analytics 仍会处理在增量时间内到达的数据,并且您的数据集内容存在时间延迟。延迟数据通知功能允许 Amazon IoT Analytics 在数据晚于增量时间到达时,通过 Amazon CloudWatch Events 发送通知。
您可以使用 Amazon IoT Analytics 控制台、API、Amazon Command Line Interface(Amazon CLI) 或 AmazonSDK 为数据集指定延迟数据规则。
在 Amazon IoT Analytics API 中,LateDataRuleConfiguration
对象表示数据集的延迟数据规则设置。此对象是与 CreateDataset
和 UpdateDataset
API 操作关联的 Dataset
对象的一部分。
参数
当您使用 Amazon IoT Analytics 为数据集创建延迟数据规则时,必须指定以下信息:
ruleConfiguration
(LateDataRuleConfiguration
)-
包含延迟数据规则配置信息的结构。
deltaTimeSessionWindowConfiguration
-
包含增量时间会话窗口的配置信息的结构。
DeltaTime 指定时间间隔。您可以通过
DeltaTime
使用上次执行后到达数据存储的数据创建数据集内容。有关DeltaTime
的示例,请参阅使用增量窗口(CLI)创建 SQL 数据集。timeoutInMinutes
-
一个时间间隔。您可以使用
timeoutInMinutes
让 Amazon IoT Analytics 可以批量处理上次执行后生成的延迟数据通知。Amazon IoT Analytics 一次向 CloudWatch Events 发送一批通知。类型:整数
有效范围:1-60
ruleName
-
延迟数据规则的名称。
类型:字符串
重要
要指定 lateDataRules
,数据集必须使用 DeltaTime
筛选器。
配置延迟数据规则(控制台)
以下步骤介绍了如何使用 Amazon IoT Analytics 控制台配置数据集的延迟数据规则。
要配置延迟数据规则
-
在导航窗格中,选择 数据集。
-
在数据集下,选择目标数据集。
-
在导航窗格中,选择 详细信息。
-
在 增量窗口部分中,选择编辑。
-
在配置数据选择筛选条件下,执行以下操作:
-
对于数据选择窗口,选择增量时间。
-
对于偏移,输入一个时间段,然后选择一个单位。
-
对于时间戳表达式,输入一个表达式。这可以是时间戳字段的名称,也可以是生成时间的 SQL 表达式,例如
from_unixtime(time)
。有关如何编写时间戳表达式的更多信息,请参阅《Presto 0.172 文档》中的日期与时间函数和运算符
。 -
对于延迟数据通知,请选择激活。
-
对于增量时间,请输入一个整数。有效范围为 1-60。
-
选择 Save(保存)。
-
配置延迟数据规则(CLI)
在 Amazon IoT Analytics API 中,LateDataRuleConfiguration
对象表示数据集的延迟数据规则设置。此对象是与 CreateDataset
和 UpdateDataset
关联的 Dataset
对象的一部分。您可以使用 API、Amazon CLI、或 AmazonSDK 为数据集指定延迟数据规则。以下示例使用 Amazon CLI。
要使用指定的延迟数据规则创建数据集,请运行以下命令。以下命令假定该 dataset.json
文件位于当前目录中。
注意
您可以使用 UpdateDataset API 来更新现有数据集。
aws iotanalytics create-dataset --cli-input-json file://dataset.json
该dataset.json
文件应包含以下内容:
-
将
demo_dataset
替换为目标数据集名称。 -
将
demo_datastore
替换为目标数据存储名称。 -
将
from_unixtime(time)
替换为时间戳字段名称或可生成时间的 SQL 表达式。有关如何编写时间戳表达式的更多信息,请参阅《Presto 0.172 文档》中的日期与时间函数和运算符
。 -
将
timeout
替换为 1–60 之间的整数。 -
将
demo_rule
替换为任意名称。
{ "datasetName": "
demo_dataset
", "actions": [ { "actionName": "myDatasetAction
", "queryAction": { "filters": [ { "deltaTime": { "offsetSeconds":-180
, "timeExpression": "from_unixtime(time)
" } } ], "sqlQuery": "SELECT * FROMdemo_datastore
" } } ], "retentionPeriod": { "unlimited": false, "numberOfDays": 90 }, "lateDataRules": [ { "ruleConfiguration": { "deltaTimeSessionWindowConfiguration": { "timeoutInMinutes":timeout
} }, "ruleName": "demo_rule
" } ] }
订阅接收延迟数据通知
您可在 CloudWatch Events 中创建规则,定义如何处理从 Amazon IoT Analytics 发送的延迟数据通知。当 CloudWatch Events 收到通知时,它会调用您规则中定义的指定目标操作。
创建 CloudWatch Events 规则的先决条件
在为 Amazon IoT Analytics 创建 CloudWatch Events 规则之前,您应执行以下操作:
-
熟悉 CloudWatch Events 中的事件、规则和目标。
-
创建和配置由 CloudWatch Events 规则调用的目标。规则可调用多类目标,例如:
-
Amazon Kinesis Streams
-
Amazon Lambda 函数
-
Amazon Simple Notification Service (Amazon SNS) 主题
-
Amazon Simple Queue Service (Amazon SQS) 队列
CloudWatch Events 规则及关联目标必须位于 Amazon IoT Analytics 资源创建所在 Amazon 区域。有关更多信息,请参阅 Amazon Web Services 一般参考 中的服务端点和配额。
-
有关更多信息,请参阅 Amazon CloudWatch Events 用户指南中的什么是 CloudWatch Events?和 Amazon CloudWatch Events 入门。
延迟数据通知事件
延迟数据通知的事件使用以下格式。
{ "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 Events 规则以接收延迟数据通知
以下步骤介绍了如何创建规则来向 Amazon SQS 队列发送 Amazon IoT Analytics 延迟数据通知。
要创建 CloudWatch Events 规则
-
在导航窗格中的事件下,选择规则。
-
在 规则 页面,选择 创建规则。
-
在事件源下,选择事件模式。
-
在生成事件模式以按服务匹配事件部分,执行以下操作:
-
对于服务名称,请选择 IoT Analytics
-
对于事件类型,请选择 IoT Analytics 数据集生命周期通知。
-
选择特定数据集名称,然后输入目标数据集的名称。
-
-
在目标下,选择添加目标*。
-
选择 SQS 队列,然后执行以下操作:
-
对于队列*,选择目标队列。
-
-
选择 Configure details (配置详细信息)。
-
在 步骤 2:配置规则详细信息 页面上,输入名称和描述。
-
选择 Create rule(创建规则)。