我正在尝试从lambda连接到我的RDS实例.我在本地写了lambda并在本地测试,一切都很好用.我部署到lambda,突然它不起作用.下面是我正在运行的代码,如果有帮助,我将通过kinesis流调用lambda.
'use strict';
exports.handler = (event, context, handlerCallback) => {
console.log('Recieved request for kinesis events!');
console.log(event);
console.log(context);
const connectionDetails = {
host: RDS_HOST,
port: 5432,
database: RDS_DATABASE,
user: RDS_USER,
password: RDS_PASSWORD
};
const db = require('pg-promise')({promiseLib: require('bluebird')})(connectionDetails);
db
.tx(function () {
console.log('Beginning query');
return this.query("SELECT 'foobar'")
.then(console.log)
.catch(console.log)
.finally(console.log);
})
.finally(() => handlerCallback());
};
Run Code Online (Sandbox Code Playgroud)
以下是来自云监视的日志,如果它有帮助:
START RequestId: *********-****-****-****-********* Version: $LATEST
2016-05-31T20:58:25.086Z *********-****-****-****-********* Recieved request for kinesis events!
2016-05-31T20:58:25.087Z *********-****-****-****-********* { Records: [ { kinesis: [Object], eventSource: 'aws:kinesis', eventVersion: '1.0', eventID: …Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services amazon-rds amazon-kinesis aws-lambda
我不明白为什么我的promise.all()不能在Lambda中执行,而在开发中已经起作用了。
在AWS Lambda上,由于Promise.all()未完成,并且SQS队列中没有收到新消息,因此已经超时。
但是,console.log(promises)返回了:2017-01-29T22:55:46.191Z 0e82eeaf-e676-11e6-b69d-73a6bbd86272 [ Promise { <pending> } ]
var url = require('url');
var AWS = require('aws-sdk');
// var Promise = require("bluebird");
exports.handler = function (event, context, callback) {
AWS.config = {
region: 'us-east-1',
apiVersions : {
sqs: '2012-11-05'
}
};
if (typeof Promise === 'undefined') {
AWS.config.setPromisesDependency(require('bluebird'));
}
var sqs = new AWS.SQS(); // système de queue
var date = new Date();
var knex = require('knex')({
client: 'mysql',
connection: {
host : event.database.host,
user …Run Code Online (Sandbox Code Playgroud)