AWS Lambda 函数写入 DynamoDB
AWS Lambda function write to DynamoDB
我是 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');
};
现在我想将 json 字段存储到 DynamoDB table。
有什么建议吗?
非常感谢!
预备步骤:-
- 创建一个可以访问 dynamodb 的 IAM Lambda 角色
- 在与您的 dynamodb 区域相同的区域启动 Lambda
- 创建 DynamoDB table 并定义正确的键属性
示例代码:-
下面的代码片段是一个示例代码,可以让您了解如何放置项目。请注意,它必须根据您的要求稍作修改(使用 table 名称和键属性)。它不是经过全面测试的代码。
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 字符串和数字。 DynamoDB 会自动解释字符串和数字的数据类型。
还有一个更短的版本 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)}`);
}
};
我是 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');
};
现在我想将 json 字段存储到 DynamoDB table。
有什么建议吗?
非常感谢!
预备步骤:-
- 创建一个可以访问 dynamodb 的 IAM Lambda 角色
- 在与您的 dynamodb 区域相同的区域启动 Lambda
- 创建 DynamoDB table 并定义正确的键属性
示例代码:-
下面的代码片段是一个示例代码,可以让您了解如何放置项目。请注意,它必须根据您的要求稍作修改(使用 table 名称和键属性)。它不是经过全面测试的代码。
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 字符串和数字。 DynamoDB 会自动解释字符串和数字的数据类型。
还有一个更短的版本 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)}`);
}
};