需要使用两个lambda函数
函数1
sns消息触发lambda函数,将sns写入DynamoDB
函数2
APIGateway访问触发lambda函数读取DynamoDB中的sns消息
图片仅供参考,注意lambda的角色权限
'use strict'
console.log('Loading event...');
var AWS = require('aws-sdk');
AWS.config.region = 'ap-northeast-2';
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = function(event, context, callback) {
// //sns消息触发此lambda函数并将消息写入DynamoDB数据库
// var message = event.Records[0].Sns.Message;
// console.log('Message received from SNS:', message);
// var params = {
// Item:{
// message: message
// },
// TableName: 'SNSMessage'
// };
// docClient.put(params, function(err, data){
// if(err){
// console.log('Failed to write into dynamodb');
// callback(err, null);
// }else{
// console.log('Sucessfully write into dynamodb');
// callback(null, data);
// }
// })
//以下内容需要在另一个lambda函数中读取和显示消息
var params = {
TableName: 'SNSMessage',
Limit: 1
};
docClient.scan(params, function(err, data){
if(err){
console.log('Failed to read from dynamodb');
callback(err, null);
}else{
console.log('Successfully read from dynamodb');
// callback(null, data);
var json = {
"service": "lambda",
"reference": "https://aws.amazon.com/lambda/faqs/",
"messages": [{
"message": data['Items'][0]['message']
}
]
}
var response = {
body: JSON.stringify(json.messages[0])
};
console.log(response);
context.succeed(response);
}
})
};