将属性值更新发布到 Amazon DynamoDB - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将属性值更新发布到 Amazon DynamoDB

你可以将数据存储在Amazon DynamoDB通过轻松访问历史资产数据,而无需反复查询Amazon IoT SiteWiseAPI,返回分页值历史记录。完成本教程后,您可以轻松创建自定义软件以使用资产数据,例如整个风电场的实时风速和风向图。如果您希望在未实施自定义软件解决方案的情况下监控和可视化数据,请参阅使用 Amazon IoT SiteWise Monitor 监控数据

在本教程中,您将基于提供风电场示例数据集的 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。

在资产属性上启用属性值更新通知
  1. 登录到 Amazon IoT SiteWise 控制台

  2. 查看Amazon区域哪里Amazon IoT SiteWise支持并切换Amazon区域(如有必要)。切换到您运行 Amazon IoT SiteWise 演示的区域。

  3. 在左侧导航窗格中,选择 Assets (资产)

    
            Amazon IoT SiteWise Assets (资产) 左侧导航元素屏幕截图。
  4. 选择 Demo Wind Farm Asset 旁边的箭头,展开风电场资产的层次结构。

    
            Amazon IoT SiteWise "Demo Wind Farm Asset“Select (层次结构)
  5. 选择一个演示涡轮机,然后选择 Edit (编辑)

    
            Amazon IoT SiteWise "Demo Turbine Asset“屏幕截图。
  6. Wind Speed 属性的 Notification status (通知状态) 更新为 ENABLED (已启用)

    
            Amazon IoT SiteWise Edit notification status (编辑通知状态) 屏幕截图。
  7. 选择页面底部的 Save asset (保存资产)

  8. 对于每个演示涡轮机资产,重复步骤 5 至 7。

  9. 选择演示涡轮机(例如,Demo Turbine Asset 1)。

  10. 选择 Measurements (测量值)

  11. 选择 Wind Speed 属性旁边的复制图标,以将通知主题复制到剪贴板。保存通知主题以在本教程后面使用。您只需记录一个涡轮机中的通知主题。

    
            Amazon IoT SiteWise Copy notification topic (复制通知主题) 屏幕截图。

    通知主题应类似于以下示例。

    $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 操作创建规则
  1. 导航到 Amazon IoT 控制台。如果显示 Get started (开始) 按钮,请选择该按钮。

  2. 在左侧导航窗格中,选择行动,然后选择规则

    
            Amazon IoTCore “创建规则” 屏幕截图。
  3. 如果显示您还没有任何规则对话框,请选择创建规则。否则,选择 Create

  4. 为规则输入名称和描述。

    
            Amazon IoTCore “创建规则” 页面屏幕截图,其中突出显示了 Name (名称) 和描述。
  5. 查找您在本教程前面保存的通知主题。

    $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
  6. 输入以下规则查询语句。将 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'
  7. Set one or more actions (设置一个或多个操作) 下,选择 Add action (添加操作)

    
            Amazon IoTCore “创建规则” 页面屏幕截图,其中突出显示了 “添加操作”。
  8. 在存储库的选择一个动作页面上,选择将消息拆分为 DynamoDB 表 (DynamoDB 表) 的多个列).

    
            Amazon IoTCore “Select an action (选择操作)” 页面屏幕截图,并突出显示了 DynamoDB 操作。
  9. 选择页面底部的 Configure action (配置操作)

  10. Configure action 页面,选择 Create a new resource

    DynamoDB 控制台将打开新的选项卡。在完成以下过程时,请将规则操作选项卡保持打开状态。

创建 DynamoDB 表

在此过程中,您创建一个 DynamoDB 表以从规则操作中接收风速数据。

创建 DynamoDB 表
  1. 在 DynamoDB 控制台控制面板中,选择创建表.

  2. 输入表的名称。

    
            DynamoDB “创建表” 页面屏幕截图。
  3. 对于 Primary key (主键),请执行以下操作:

    1. 输入 timestamp 以作为分区键。

    2. 选择 Number (数字) 类型。

    3. 选中 Add sort key (添加排序键) 复选框。

    4. 输入 asset 以作为排序键,并保留默认排序键类型 String (字符串)

  4. 请选择创建

    Table is being created (正在创建表) 通知消失时,您的表将准备就绪。

  5. 返回到具有 Configure action (配置操作) 页面的选项卡。在完成以下过程时,请将 DynamoDB 选项卡保持打开状态。

配置 DynamoDB 规则操作

在此过程中,您将配置 DynamoDBb 规则操作,以将来自属性值更新的数据插入到新的 DynamoDBb 表中。

配置 DynamoDB 规则操作
  1. 在存储库的配置操作页面中,刷新表名称列出,然后选择新的 DynamoDB 表格。

    
            Amazon IoT“Configure DynamoDBv2 操作” 页面屏幕截图,其中突出显示了表查找器。
  2. 选择创建角色创建授予的 IAM 角色Amazon IoT核心访问权限以执行规则操作。

  3. 输入角色名称,然后选择创建角色

    
            Amazon IoT“Configure DynamoDBv2 操作” 页面屏幕截图,其中突出显示了 “创建角色”。
  4. 选择添加操作

  5. 选择页面底部的 Create rule (创建规则) 以完成创建规则的过程。

    将开始在 DynamoDB 表中显示您的演示资产数据。

探索 DynamoDB 中的数据

在此过程中,您在新的 DynamoDB 表中浏览演示资产的风速数据。

在 DynamoDB 中浏览资产数据
  1. 返回到打开了 DynamoDB 表的选项卡。

  2. 在您以前创建的表中,选择 Items (项目) 选项卡以查看表中的数据。如果您没有看到表中的行,请刷新页面。如果在几分钟后没有显示行,请参阅排查规则问题

    
            DynamoDB 表页面屏幕截图,其中突出显示了 “项目” 选项卡。
  3. 在表的一行中,选择编辑图标以展开数据。

    
            DynamoDB 表页面屏幕截图,并突出显示了行中的编辑图标。
  4. 选择 windspeed 结构旁边的箭头,以展开风速数据点列表。每个列表反映了风电场演示发送到 Amazon IoT SiteWise 的一批风速数据点。如果您设置规则操作以供自己使用,则可能需要使用不同的数据格式。有关更多信息,请参阅 查询资产属性通知消息

    
            DynamoDB “编辑表行” 面板屏幕截图。

完成本教程后,您可以禁用或删除规则并删除 DynamoDB 表,避免产生额外费用。请按照以下过程清理您的资源。

在完成教程后清理资源

完成本教程后,清理资源以避免产生额外费用。您的演示风电场资产将在您创建演示时选择的时段结束时间删除,或者您也可以手动删除演示。有关更多信息,请参阅 删除 Amazon IoT SiteWise 演示

使用以下过程禁用属性值更新通知(未删除演示时)、禁用或删除您的Amazon IoT规则,然后删除您的 DynamoDB 表。

禁用资产属性上的属性值更新通知
  1. 导航到 Amazon IoT SiteWise 控制台

  2. 在左侧导航窗格中,选择 Assets (资产)

    
            Amazon IoT SiteWise Assets (资产) 左侧导航元素屏幕截图。
  3. 选择 Demo Wind Farm Asset 旁边的箭头,展开风电场资产的层次结构。

    
            Amazon IoT SiteWise "Demo Wind Farm Asset“Select (层次结构)
  4. 选择一个演示涡轮机,然后选择 Edit (编辑)

    
            Amazon IoT SiteWise "Demo Turbine Asset“屏幕截图。
  5. Wind Speed 属性的 Notification status (通知状态) 更新为 DISABLED (已禁用)

    
            Amazon IoT SiteWise Edit notification status (编辑通知状态) 屏幕截图。
  6. 选择页面底部的 Save asset (保存资产)

  7. 对于每个演示涡轮机资产,重复步骤 4 至 6。

在 Amazon IoT Core 中禁用或删除规则
  1. 导航到 Amazon IoT 控制台

  2. 在左侧导航窗格中,选择行动,然后选择规则

  3. 选择您的规则上的菜单,然后选择 Disable (禁用)Delete (删除)

    
            Amazon IoTCore “Rules (规则)” 页面屏幕截图,并打开并突出显示规则的菜
删除 DynamoDB 表
  1. 导航到DynamoDB 控制台.

  2. 在左侧导航窗格中,选择 Tables (表)

  3. 选择您之前创建的表 WindSpeedData

  4. 选择 Delete table (删除表)

    
            DynamoDB “表” 页面屏幕截图,其中突出显示了 “删除表”。
  5. Delete table (删除表) 对话框中,选择 Delete (删除)

    
            DynamoDB “Delete table (删除表)” 对话框屏幕截图,其中突出显示了

排查规则问题

如果演示资产数据未按预期方式显示在 DynamoDB 表中,请按照该过程中的步骤排除规则故障。在该过程中,您将重新发布规则操作配置为错误操作,以在 MQTT 测试客户端中查看错误消息。您还可以配置记录到CloudWatch要问题排查的日志。有关更多信息,请参阅 。使用 进行监控CloudWatch日志中的Amazon IoT开发人员指南.

在规则中添加重新发布错误操作
  1. 导航到 Amazon IoT 控制台

  2. 在左侧导航窗格中,选择行动,然后选择规则

  3. 选择您以前创建的规则。

    
            Amazon IoTCore “规则” 页面屏幕截图。
  4. Error action (错误操作) 下面,选择 Add action (添加操作)

  5. 选择将消息重新发布到Amazon IoT话题.

    
            Amazon IoTCore “Select an action (选择操作)” 页面屏幕截图,其中突出显示了 Re
  6. 选择页面底部的 Configure action (配置操作)

  7. In主题,输入windspeed/error.Amazon IoT Core 将错误消息重新发布到此主题。

    
            Amazon IoT“Configure Republish action (配置重新发布操作)” 页面屏幕截图,其中突出显示了
  8. 选择Select授予Amazon IoT核心访问权限以便使用您以前创建的角色执行错误操作。

  9. 选择您的角色旁边的 Select (选择)

    
            Amazon IoTConfigure Republish action (配置重新发布操作) 页面屏幕截图,其中突出显示了角色
  10. 选择 Update Role (更新角色) 以在角色中添加其他权限。

    
            Amazon IoT“Configure Republish action (配置重新发布操作)” 页面屏幕截图,其中突出显示了
  11. 选择 Add action (添加操作) 以完成添加错误操作的过程。

  12. 选择控制台左上角的后退箭头以返回到Amazon IoT主页核心控制台。

在设置重新发布错误操作后,您可以在 MQTT 测试客户端中查看错误消息。Amazon IoTCore。

在以下过程中,您在 MQTT 测试客户端中订阅错误主题。

订阅错误操作主题
  1. 在Amazon IoTCore 控制台的左侧导航页面,选择测试.

  2. Subscription topic (订阅主题) 字段中,输入 windspeed/error 并选择 Subscribe to topic (订阅主题)

    
            Amazon IoT“MQTT 客户端” 页面屏幕截图,其中突出显示了 “订阅主题” 按钮。
  3. 观察显示的错误消息,并在错误消息中浏览 failures 数组以诊断以下常见问题:

    • 规则查询语句中的错别字

    • 角色权限不足

    如果未显示错误,请检查是否启用了您的规则,以及您是否订阅了在重新发布错误操作中配置的相同主题。如果仍未显示错误,请检查您的演示风电场资产是否仍然存在,以及是否在风速属性上启用了通知。如果您的演示资产已过期并从 Amazon IoT SiteWise 中消失,您可以创建新的演示,并更新规则查询语句以反映更新的资产模型和属性 ID。