使用Lambda从AWS IoT到DynamoDB

时间:2018-10-30 15:33:22

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

我正在使用AWS IoT。我创建了一个Thing,并使用MQTT查看从Thing Shadow更新的结果。

$ 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
      }
    }
  }
}

我想使用规则调用Lambda函数将“ last_reported”,“对象” 存储在DynamoDB中的单独列中。但是,我坚持使用Lambda函数的编程步骤。

该表应包含以下内容:

sensor_id = $ {topic(3)}

last_reported =选择状态。已报告。last_reported来自“ $ aws / things / thing_name / shadow / update”

数据 =从'$ aws / things / thing_name / shadow / update'中选择状态。已报告的对象

谢谢。

1 个答案:

答案 0 :(得分:0)

尽管您可以使用lambda规则在dynamo中存储IoT数据,但是AWS IoT包含直接到发电机的规则,如果您没有很多规则,我认为这对您来说会容易得多编程经验:

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

TreeMap.class

位置:

  • { "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" } } }] } } 是IAM角色 可以将物品放到发电机桌上
  • arn:aws:iam::123456789012:role/aws_iot_dynamoDBv2是 将数据保存到的表的名称