9

我是 Amazon Web Services 和 NodeJS 的初学者。

我编写了一个由 AWS IoT 触发的解析 JSON 的 Lambda 函数。

enter code here
use strict';

console.log('Loading function');

exports.handler = (event, context, callback) => {
   console.log('Received event:', JSON.stringify(event, null, 2));
   console.log('Id =', event.Id);
   console.log('Ut =', event.Ut);
   console.log('Temp =', event.Temp);
   console.log('Rh =', event.Rh);
   //callback(null, event.key1);  // Echo back the first key value
   //callback('Something went wrong');
};

现在我想将 json 字段存储到 DynamoDB 表中。

有什么建议吗?

非常感谢!

4

2 回答 2

18

初步步骤:-

  1. 创建具有 dynamodb 访问权限的 IAM Lambda 角色
  2. 在与您的 dynamodb 区域相同的区域中启动 Lambda
  3. 使用定义的正确键属性创建 DynamoDB 表

示例代码:-

下面的代码片段是一个示例代码,可让您了解如何放置项目。请注意,必须根据您的要求对其进行轻微更改(使用表名和关键属性)。它不是经过全面测试的代码。

use strict';

console.log('Loading function');
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = (event, context, callback) => {
    console.log(JSON.stringify(event, null, '  '));
    var tableName = "yourtablename";    
    dynamodb.putItem({
        "TableName": tableName,
        "Item" : {
            "Id": event.Id,
            "Ut": event.Ut,
            "Temp": event.Temp,
            "Rh":event.Rh
        }
    }, function(err, data) {
        if (err) {
            console.log('Error putting item into dynamodb failed: '+err);
            context.done('error');
        }
        else {
            console.log('great success: '+JSON.stringify(data, null, '  '));
            context.done('Done');
        }
    });
};

笔记:-

只要数据类型符合 JavaScript String 和 Number,就不需要显式提及 String 和 Number 的数据类型。DynamoDB 将自动解释字符串和数字的数据类型。

于 2017-03-06T10:35:37.967 回答
5

还有一个带有 async/await 的较短版本:

'use strict';

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = async (event) => {
    const tableName = "yourtablename"; 
    try {
      await dynamodb.putItem({
          "TableName": tableName,
          "Item" : {
              "Id": event.Id,
              "Ut": event.Ut,
              "Temp": event.Temp,
              "Rh":event.Rh
          }
      }).promise();
    } catch (error) {
      throw new Error(`Error in dynamoDB: ${JSON.stringify(error)}`);
    }  
};
于 2020-04-05T22:35:16.613 回答