准备实例集索引
借助 Amazon IoT 实例集索引,您可以使用预留命名影子 ($package) 来搜索和聚合数据。还可以通过查询 预留命名影子 和动态事物组对 Amazon IoT 事物进行分组。例如,您可以找到有关哪些 Amazon IoT 事物使用特定程序包版本、未安装特定程序包版本或未安装任何程序包版本的信息。您可以通过组合属性来获得进一步的见解。例如,识别具有特定版本且属于特定事物类型的事物(例如版本 1.0.0 和事物类型 pump_sensor)。有关更多信息,请参阅实例集索引。
将 $package 影子设置为数据来源
要在软件包目录中使用实例集索引,必须启用实例集索引,将命名影子设置为数据来源,并将 $package 定义为命名影子筛选条件。如果您尚未启用实例集索引,则可以在此过程中将其启用。从控制台中的 Amazon IoT Core
或者,您可以在创建第一个软件包时启用实例集索引。出现为软件包管理启用依赖项对话框时,选择将设备软件包和版本作为数据来源添加到实例集索引的选项。通过选择此选项,还可以启用实例集索引。
注意
为软件包目录启用实例集索引会产生标准服务成本。有关更多信息,请参阅 Amazon IoT Device Management 定价
控制台中显示的指标
在 Amazon IoT 控制台软件包详细信息页面上,发现面板显示通过 $package 影子摄取的标准指标。
当前版本分发图显示了与该软件包关联的所有设备中与某 Amazon IoT 事物关联的 10 个最新程序包版本的设备数量和百分比。注意:如果软件包的程序包版本多于图表中标注的版本,则可以发现它们分组在其它中。
历史图表显示指定时间段内与所选程序包版本关联的设备数量。该图表最初为空,直至您选择多达 5 个程序包版本并定义日期范围和时间间隔。要选择图表的参数,请选择设置。历史图表中显示的数据可能与当前版本分发图不同,这是因为它们显示的程序包版本数量不同,也因为您可以在历史图表中选择要分析的程序包版本。注意:当您选择要可视化的程序包版本时,它将计入实例集指标的最大数量限制。有关更多信息,请参阅实例集索引限制和限额。
有关深入了解收集程序包版本分发的另一种方法,请参阅通过 getBucketsAggregation 收集程序包版本分发。
查询模式
使用软件包目录的实例集索引支持大多数标准功能(例如术语、短语和搜索字段)。但是,比较运算符(例如小于 < 和大于 >)和 range 查询不适用于保留的命名影子 ($package) version 键。这些查询可用于 attributes 键。有关更多信息,请参阅查询语法。
示例数据
注意:有关预留命名影子及其结构的信息,请参阅预留命名影子。
在此示例中,第一台设备命名为 AnyThing 并安装了以下软件包:
-
软件包:
SamplePackage程序包版本:
1.0.0软件包 ID:
1111
影子如下所示:
{
"state": {
"reported": {
"SamplePackage": {
"version": "1.0.0",
"attributes": {
"s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
"packageID": "1111"
}
}
}
}
}
第二台设备命名为 AnotherThing 并安装了以下软件包:
-
软件包:
SamplePackage程序包版本:
1.0.0软件包 ID:
1111 -
软件包:
OtherPackage程序包版本:
1.2.5软件包 ID:
2222
影子如下所示:
{
"state": {
"reported": {
"SamplePackage": {
"version": "1.0.0",
"attributes": {
"s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
"packageID": "1111"
}
},
"OtherPackage": {
"version": "1.2.5",
"attributes": {
"s3UrlForOtherPackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile2",
"packageID": "2222"
}
},
}
}
}
示例查询
下表根据 AnyThing 和 AnotherThing 的示例设备影子列出了查询示例。有关更多信息,请参阅示例事物查询。
所请求的信息 |
查询 |
结果 |
|---|---|---|
|
安装了特定程序包版本的事物 |
|
|
|
未安装特定程序包版本的事物 |
|
|
|
使用软件包 ID 大于 1500 的程序包版本的任何设备 |
|
|
|
安装了特定软件包和安装了多个软件包的事物 |
|
|
通过 getBucketsAggregation 收集程序包版本分发
除了 Amazon IoT 控制台中的发现面板外,您还可以使用 GetBucketsAggregation API 操作获取程序包版本分发信息。要获取程序包版本分发信息,必须执行以下操作:
在实例集索引中为每个软件包定义一个自定义字段。注意:创建自定义字段会计入 Amazon IoT 实例集索引服务限额。
按如下方式格式化自定义字段:
shadow.name.$package.reported.<packageName>.version
有关更多信息,请参阅 Amazon IoT 实例集索引中的自定义字段部分。