【问题标题】:How to send data from AWS IoT to AWS DynamoDB v2 using IoT Rules如何使用 IoT 规则将数据从 AWS IoT 发送到 AWS DynamoDB v2
【发布时间】:2020-02-04 22:13:04
【问题描述】:

我想将单独的数据值发送到从 AWS IoT 接收到的各个列到 AWS DynamoDB。

我的设备发送此有效负载:

    {
    "state": {
    "desired": {
        "DeviceId" : "Device101",
        "DateTime" : now,
        "Room1 Temperature" : m_t,
        "Room2 Temperature": b_t
        },
    "reported": {
        "Item": {
            "DeviceId" : "Device101",
            "DateTime" : now,
            "Room1 Temperature" : m_t,
            "Room2 Temperature": b_t
            }
        }
    }
}

我在此处的 Shadow Link 上接收此有效负载作为影子更新:

$aws/things/shadow/更新

我创建了一个示例 DynamoDB 表并将其与 AWS IoT 规则相关联,这样每当数据传入上述主题时,都会由 SQL 查询触发:

SELECT * FROM '$aws/things/shadow/update'

  • 此数据反映在我的影子更新中
  • 此数据未转发到 DynamoDB 表
  • 什么问题?!

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb amazon-iam aws-iot


    【解决方案1】:

    首先,启用 Cloudwatch Logs 应该可以帮助您调试此问题。

    通常,这些类型的静默故障表明您没有正确格式化数据以插入 DynamoDB。

    检查事项:

    • 您的 SELECT 语句将不起作用,因为它需要拉入您要插入的内容。在您的情况下,这将是 SELECT desired.* 或 SELECT reported.Item.*
    • 主分区键必须是您拉入的键之一,否则您的 DynamoDB 插入将失败。你的主分区键是什么?确保您的 SELECT 语句中的键列表中包含该键
    • 确保您的主分区键的数据类型与您传入的类型相匹配 - 例如,如果您的主分区键是 DeviceId,它应该是字符串类型(例如,不是整数)

    CloudWatch 日志将提供更详细的信息来帮助您。有关如何执行此操作的信息,请参阅 http://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html

    您还可以从 IoT 控制台启用它,方法是从左侧导航中选择设置(齿轮),然后更新日志下的设置。

    【讨论】:

    • 好的,谢谢,我会调查并告诉你:)
    【解决方案2】:

    对我来说,在经过数小时的误导性信息之后,这篇文章最终让我得到了一个结果:

    https://forums.aws.amazon.com/thread.jspa?messageID=931485

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-26
      • 2019-05-03
      • 1970-01-01
      • 2018-11-26
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多