AWS Lambda函数写入DynamoDB

Fed*_*ico 3 amazon-web-services amazon-dynamodb aws-lambda aws-sdk-nodejs

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

我写了一个由AWS IoT触发的Lambda函数,它解析了一个JSON.

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');
};
Run Code Online (Sandbox Code Playgroud)

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

有什么建议吗?

非常感谢!

not*_*est 9

预备步骤: -

  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');
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

注意:-

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


小智 7

对于 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)}`);
    }  
};
Run Code Online (Sandbox Code Playgroud)