本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将属性值更新发布到 Amazon DynamoDB
你可以将数据存储在Amazon DynamoDB
在本教程中,您将基于提供风电场示例数据集的 Amazon IoT SiteWise 演示进行构建。您将配置从风电场演示的属性值更新,以发送数据,通过Amazon IoT核心规则,转换为您创建的 DynamoDB 表。启用属性值更新时,Amazon IoT SiteWise 在 MQTT 消息中将数据发送到 Amazon IoT Core。然后,你可以定义Amazon IoT根据这些消息的内容执行 DynamoDB 操作(如 DynamoDB 操作)的核心规则。有关更多信息,请参阅 与其他 Amazon 服务交互。
主题
先决条件
要完成本教程,您需要:
-
一个 Amazon 账户。如果没有,请参阅设置 Amazon Web Services 账户。
-
运行 Windows、macOS、Linux 或 Unix 的开发计算机(用于访问 Amazon Web Services Management Console)。有关更多信息,请参阅 Amazon Web Services Management Console 入门。
-
具有管理员权限的 IAM 用户。
-
正在运行的 Amazon IoT SiteWise 风电场演示。当您设置演示时,它会定义 Amazon IoT SiteWise 中的模型和资源,并将数据流式传输到其中以表示风电场。有关更多信息,请参阅 使用 Amazon IoT SiteWise 演示。
配置 Amazon IoT SiteWise 以发布属性值更新
在该过程中,您在演示涡轮机资产的 Wind Speed 属性上启用属性值通知。在启用属性值通知后,Amazon IoT SiteWise将 MQTT 消息中的每个值更新发布到Amazon IoTCore。
在资产属性上启用属性值更新通知
-
查看Amazon区域哪里Amazon IoT SiteWise支持并切换Amazon区域(如有必要)。切换到您运行 Amazon IoT SiteWise 演示的区域。
-
在左侧导航窗格中,选择 Assets (资产)。
-
选择 Demo Wind Farm Asset 旁边的箭头,展开风电场资产的层次结构。
-
选择一个演示涡轮机,然后选择 Edit (编辑)。
-
将 Wind Speed 属性的 Notification status (通知状态) 更新为 ENABLED (已启用)。
-
选择页面底部的 Save asset (保存资产)。
-
对于每个演示涡轮机资产,重复步骤 5 至 7。
-
选择演示涡轮机(例如,Demo Turbine Asset 1)。
-
选择 Measurements (测量值)。
-
选择 Wind Speed 属性旁边的复制图标,以将通知主题复制到剪贴板。保存通知主题以在本教程后面使用。您只需记录一个涡轮机中的通知主题。
通知主题应类似于以下示例。
$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE
/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
在 中创建规则Amazon IoT核心实例
在此过程中,您在中创建规则Amazon IoTCore,用于解析属性值通知消息并将数据插入到 DynamoDB 表中。Amazon IoT核心规则解析 MQTT 消息,并根据每条消息的内容和主题执行操作。您可以创建带有 DynamoDB 操作的规则,将数据插入到 DynamoDB 表(这是您在本教程中创建的 DynamoDBb 表)中。
使用 DynamoDB 操作创建规则
-
导航到 Amazon IoT 控制台
。如果显示 Get started (开始) 按钮,请选择该按钮。 -
在左侧导航窗格中,选择行动,然后选择规则。
-
如果显示您还没有任何规则对话框,请选择创建规则。否则,选择 Create。
-
为规则输入名称和描述。
-
查找您在本教程前面保存的通知主题。
$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE
/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
将主题中的资产 ID(
assets/
后面的 ID)替换为+
,以选择所有演示风力涡轮机资产的风速属性。+
主题筛选器接受主题中的单个级别的所有节点。您的主题应类似于以下示例。$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
-
输入以下规则查询语句。将
FROM
部分中的主题替换为您的通知主题。SELECT payload.assetId AS asset, (SELECT VALUE (value.doubleValue) FROM payload.values) AS windspeed, timestamp() AS timestamp FROM '$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
' WHERE type = 'PropertyValueUpdate' -
在 Set one or more actions (设置一个或多个操作) 下,选择 Add action (添加操作)。
-
在存储库的选择一个动作页面上,选择将消息拆分为 DynamoDB 表 (DynamoDB 表) 的多个列).
-
选择页面底部的 Configure action (配置操作)。
-
在 Configure action 页面,选择 Create a new resource。
DynamoDB 控制台将打开新的选项卡。在完成以下过程时,请将规则操作选项卡保持打开状态。
创建 DynamoDB 表
在此过程中,您创建一个 DynamoDB 表以从规则操作中接收风速数据。
创建 DynamoDB 表
-
在 DynamoDB 控制台控制面板中,选择创建表.
-
输入表的名称。
-
对于 Primary key (主键),请执行以下操作:
-
输入
timestamp
以作为分区键。 -
选择 Number (数字) 类型。
-
选中 Add sort key (添加排序键) 复选框。
-
输入
asset
以作为排序键,并保留默认排序键类型 String (字符串)。
-
-
请选择创建。
在 Table is being created (正在创建表) 通知消失时,您的表将准备就绪。
-
返回到具有 Configure action (配置操作) 页面的选项卡。在完成以下过程时,请将 DynamoDB 选项卡保持打开状态。
配置 DynamoDB 规则操作
在此过程中,您将配置 DynamoDBb 规则操作,以将来自属性值更新的数据插入到新的 DynamoDBb 表中。
配置 DynamoDB 规则操作
-
在存储库的配置操作页面中,刷新表名称列出,然后选择新的 DynamoDB 表格。
-
选择创建角色创建授予的 IAM 角色Amazon IoT核心访问权限以执行规则操作。
-
输入角色名称,然后选择创建角色。
-
选择添加操作。
-
选择页面底部的 Create rule (创建规则) 以完成创建规则的过程。
将开始在 DynamoDB 表中显示您的演示资产数据。
探索 DynamoDB 中的数据
在此过程中,您在新的 DynamoDB 表中浏览演示资产的风速数据。
在 DynamoDB 中浏览资产数据
-
返回到打开了 DynamoDB 表的选项卡。
-
在您以前创建的表中,选择 Items (项目) 选项卡以查看表中的数据。如果您没有看到表中的行,请刷新页面。如果在几分钟后没有显示行,请参阅排查规则问题。
-
在表的一行中,选择编辑图标以展开数据。
-
选择 windspeed 结构旁边的箭头,以展开风速数据点列表。每个列表反映了风电场演示发送到 Amazon IoT SiteWise 的一批风速数据点。如果您设置规则操作以供自己使用,则可能需要使用不同的数据格式。有关更多信息,请参阅 查询资产属性通知消息。
完成本教程后,您可以禁用或删除规则并删除 DynamoDB 表,避免产生额外费用。请按照以下过程清理您的资源。
在完成教程后清理资源
完成本教程后,清理资源以避免产生额外费用。您的演示风电场资产将在您创建演示时选择的时段结束时间删除,或者您也可以手动删除演示。有关更多信息,请参阅 删除 Amazon IoT SiteWise 演示。
使用以下过程禁用属性值更新通知(未删除演示时)、禁用或删除您的Amazon IoT规则,然后删除您的 DynamoDB 表。
禁用资产属性上的属性值更新通知
-
在左侧导航窗格中,选择 Assets (资产)。
-
选择 Demo Wind Farm Asset 旁边的箭头,展开风电场资产的层次结构。
-
选择一个演示涡轮机,然后选择 Edit (编辑)。
-
将 Wind Speed 属性的 Notification status (通知状态) 更新为 DISABLED (已禁用)。
-
选择页面底部的 Save asset (保存资产)。
-
对于每个演示涡轮机资产,重复步骤 4 至 6。
在 Amazon IoT Core 中禁用或删除规则
-
导航到 Amazon IoT 控制台
。 -
在左侧导航窗格中,选择行动,然后选择规则。
-
选择您的规则上的菜单,然后选择 Disable (禁用) 或 Delete (删除)。
删除 DynamoDB 表
-
导航到DynamoDB 控制台
. -
在左侧导航窗格中,选择 Tables (表)。
-
选择您之前创建的表 WindSpeedData。
-
选择 Delete table (删除表)。
-
在 Delete table (删除表) 对话框中,选择 Delete (删除)。
排查规则问题
如果演示资产数据未按预期方式显示在 DynamoDB 表中,请按照该过程中的步骤排除规则故障。在该过程中,您将重新发布规则操作配置为错误操作,以在 MQTT 测试客户端中查看错误消息。您还可以配置记录到CloudWatch要问题排查的日志。有关更多信息,请参阅 。使用 进行监控CloudWatch日志中的Amazon IoT开发人员指南.
在规则中添加重新发布错误操作
-
导航到 Amazon IoT 控制台
。 -
在左侧导航窗格中,选择行动,然后选择规则。
-
选择您以前创建的规则。
-
在 Error action (错误操作) 下面,选择 Add action (添加操作)。
-
选择将消息重新发布到Amazon IoT话题.
-
选择页面底部的 Configure action (配置操作)。
-
In主题,输入
windspeed/error
.Amazon IoT Core 将错误消息重新发布到此主题。 -
选择Select授予Amazon IoT核心访问权限以便使用您以前创建的角色执行错误操作。
-
选择您的角色旁边的 Select (选择)。
-
选择 Update Role (更新角色) 以在角色中添加其他权限。
-
选择 Add action (添加操作) 以完成添加错误操作的过程。
-
选择控制台左上角的后退箭头以返回到Amazon IoT主页核心控制台。
在设置重新发布错误操作后,您可以在 MQTT 测试客户端中查看错误消息。Amazon IoTCore。
在以下过程中,您在 MQTT 测试客户端中订阅错误主题。
订阅错误操作主题
-
在Amazon IoTCore 控制台的左侧导航页面,选择测试.
-
在 Subscription topic (订阅主题) 字段中,输入
windspeed/error
并选择 Subscribe to topic (订阅主题)。 -
观察显示的错误消息,并在错误消息中浏览
failures
数组以诊断以下常见问题:-
规则查询语句中的错别字
-
角色权限不足
如果未显示错误,请检查是否启用了您的规则,以及您是否订阅了在重新发布错误操作中配置的相同主题。如果仍未显示错误,请检查您的演示风电场资产是否仍然存在,以及是否在风速属性上启用了通知。如果您的演示资产已过期并从 Amazon IoT SiteWise 中消失,您可以创建新的演示,并更新规则查询语句以反映更新的资产模型和属性 ID。
-