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
你的代碼不工作嗎?你是否收到錯誤信息?你的問題是什麼 - 你問是否可能,或者你的代碼爲什麼/不工作?隨意編輯你的問題來澄清。 –