1
有没有办法将我从SQS获得的消息传输到Dynamodb?我尝试使用CloudWatch每分钟触发一次Lambda函数。我愿意在AWS中使用任何其他服务来完成此任务。我确信有一个简单的解释,我只是俯视。 *编辑我的代码不起作用,我正在寻找修复我的代码或其他解决方案来完成此操作。将数据从SQS传输到Dynamodb
**编辑得到它的工作。
'use strict';
const AWS = require('aws-sdk');
const SQS = new AWS.SQS({ apiVersion: '2012-11-05' });
const Lambda = new AWS.Lambda({ apiVersion: '2015-03-31' });
const QUEUE_URL = 'SQS_URL';
const PROCESS_MESSAGE = 'process-message';
const DYNAMO_TABLE = 'TABLE_NAME';
function poll(functionName, callback) {
const params = {
QueueUrl: QUEUE_URL,
MaxNumberOfMessages: 10,
VisibilityTimeout: 10
};
// batch request messages
SQS.receiveMessage(params, function(err, data) {
if (err) {
return callback(err);
}
// parse each message
data.Messages.forEach(parseSQSMessage);
})
.promise()
.then(function(){
return Lambda.invokeAsync({})
.promise()
.then(function(data){
console.log('Recursion');
})
}
)
.then(function(){context.succeed()}).catch(function(err){context.fail(err, err.stack)});
}
// send each event in message to dynamoDB.
// remove message from queue
function parseSQSMessage(msg, index, array) {
// delete SQS message
var params = {
QueueUrl: QUEUE_URL,
ReceiptHandle: msg.ReceiptHandle
};
SQS.deleteMessage(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
}
// store atomic event JSON directly to dynamoDB
function storeEvent(event) {
var params = {
TableName : DYNAMO_TABLE,
Item: event
};
var docClient = new AWS.DynamoDB.DocumentClient();
docClient.put(params, function(err, data) {
if (err) console.log(err);
else console.log(data);
});
}
exports.handler = (event, context, callback) => {
try {
// invoked by schedule
poll(context.functionName, callback);
} catch (err) {
callback(err);
}
};
相关GitHub的项目写在从SQS拉消息,并保存到DynamoDB节点AWS lambda表达式:https://github.com/leaflevellabs/aws-lambda-sqs-dynamodb。 – jarmod
你的代码不工作吗?你是否收到错误信息?你的问题是什么 - 你问是否可能,或者你的代码为什么/不工作?随意编辑你的问题来澄清。 –