2016-03-10 3 views
0

Я пытался заставить это действие работать. Я могу отправить сообщение в SQS самостоятельно, когда я использую встроенный редактор. и я могу использовать свой загруженный код с узлом-mysql для вставки базы данных, но я не могу добраться до двух, чтобы работать вместе. В настоящее время я не получаю никакого вывода при запуске моего кода здесь является то, что я бегомЛямбда-кодирование node.JS пытается отправить сообщение SQS

console.log('Loading function'); 
var mysql = require('mysql'); 
var AWS = require('aws-sdk'); 
var s3 = new AWS.S3({ apiVersion: '2006-03-01' }); 
var QUEUE_URL = 'https://sqs.us-east-1.amazonaws.com/1234/dev-upload-test'; 
var sqs = new AWS.SQS({region:'eu-east-1'}); 


exports.handler = function (event, context) { 
    var srcBucket = event.Records[0].s3.bucket.name; 
    var srcKey = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, " ")); 

    var company = 123; 
    var user = 321; 
    var connection = mysql.createConnection({ 
    host  : '10.0.1.22', //lamdba has access to this VPC 
    user  : 'username', 
    password : 'password', 
    database : 'development', 
    }); 
    connection.connect(function(err) { 
    if(err){ 
     console.log('Error connecting to Db'); 
     return; 
    } 
    console.log('Connection established'); 
    }); 
    var query = connection.query('INSERT INTO messages (created_at, processing) VALUES (now(),1)', function(err,results){ 
    if (err) throw err; 
    console.log(results.insertId); 
    console.log('trying to send message'); 

    var msg = { payload: srcBucket,srcKey }; 
    var sqsParams = { 
     MessageBody: JSON.stringify(msg), 
     QueueUrl: 'https://sqs.us-east-1.amazonaws.com/1234/dev-upload-test' 
    }; 
    console.log(sqsParams) 

    var sqsdata = sqs.sendMessage(sqsParams, function(err, data) { 
     if (err) { 
     console.log('ERR', err); 
     } 
     console.log(data); 
    }); 
    console.log('message sent') 
    }); 
    context.succeed('Exit'); 
}; 

ответ

0

Вам нужно положить context.succeed('Exit'); внутри sqs.sendMessage обратного вызова. Прямо сейчас ваша Лямбда-функция ставит в очередь кучу асинхронной работы, но затем вы выходите синхронно в конце функции обработчика до того, как все закончится.

Смежные вопросы