【问题标题】:From AWS IoT to DynamoDB using Lambda使用 Lambda 从 AWS IoT 到 DynamoDB
【发布时间】:2018-10-30 15:33:22
【问题描述】:

我正在使用 AWS IoT。我创建了一个事物并使用 MQTT 查看从事物影子更新的结果。

$aws/things/thing_name/shadow/update

这是示例结果:

{"state": {
"desired": null,
"reported": {
  "ext_addr": "0x124b0013a4c55d",
  "last_reported": "22:20:35 2018-10-30",
  "objects": {
    "temperature": {
      "0": {
        "oid": "temperature",
        "sensorValue": 33,
        "units": "Cels",
        "minMeaValue": 33,
        "maxMeaValue": 33
      }
    }
  }
}

我想使用 Rule 调用 Lambda 函数将 "last_reported"、"objects" 存储在 DynamoDB 的单独列中。但是,我停留在 Lambda 函数的编程步骤。

表格应该有如下项目:

sensor_id = ${topic(3)}

last_reported = SELECT state.reported.last_reported FROM '$aws/things/thing_name/shadow/update'

数据 = SELECT state.reported.objects FROM '$aws/things/thing_name/shadow/update'

提前致谢。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb


    【解决方案1】:

    虽然您可以使用 lambda 规则将 IoT 数据存储在 dynamo 中,但 AWS IoT 包含一个 direct-to-dynamo 规则,如果您没有太多,我认为这对您来说会容易得多编程经验:

    使用以下定义创建 DynamoDBv2 操作:

    {
        "rule": {
            "ruleDisabled": false, 
            "sql": "SELECT payload.state.reported, topic(3) AS sensor_id FROM '$aws/things/+/shadow/update/accepted'", 
            "description": "A test DynamoDBv2 rule", 
            "actions": [{
                "dynamoDBv2": {
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDBv2", 
                    "putItem": {
                        "tableName": "my_ddb_table"
                    }
                 }
            }]
        }
    }
    

    地点:

    • arn:aws:iam::123456789012:role/aws_iot_dynamoDBv2 是 IAM 角色 允许将项目放到您的发电机表中
    • my_ddb_table 是 要将数据保存到的表的名称

    【讨论】:

    • n.b.如果您正在寻找一种无需代码的方式来存储和可视化 AWS IoT 数据,那么这里有产品。我为一个 (devicepilot.com) 工作,它有一个免费的开发者层。
    • 感谢您的回复 我尝试将 DynamoDBv2 作为规则创建,但我无法将哈希键和范围键编辑为 DynamoDBv1 如您所说,我在哪里可以创建 DynamoDBv2 操作?
    • 如果您在界面中执行此操作,您可以在此处看到docs.aws.amazon.com/iot/latest/developerguide/iot-ddb-rule.html 选项之一是“将消息拆分为多列(DynamoDBV2)”
    • 但选项 DynamoDBv2 无法将哈希键编辑为 DynamoDBv1
    • 范围/哈希将从SELECT 语句的结果中获取。例如如果sensor_id 是您的哈希键,那么它将被设置为topic(3) 的结果。如果您告诉我您的范围/哈希键名称以及它们应该在哪里获取值,我将更新示例以更加明确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多