2017-01-22 94 views
0

我正在使用AWS,並在lambda函數運行時嘗試連接到我的PSQL RDS實例。我使用的是PG NPM模塊,這是我的代碼:通過lambda函數連接到PSQL RDS實例?

exports.handler = (event,context, callback) => { 
 
    "use strict" 
 
    const pg = require('pg'); 
 
    const connectionStr = "postgres://rhadnum:[email protected]m:5432/discover_esports"; 
 
    var client = new pg.Client(connectionStr); 
 
    client.connect(function(err){ 
 
    if(err) { 
 
     callback(err) 
 
    } 
 
    callback(null, 'Connection established'); 
 
    }); 
 
};

我一直在研究的年齡如何做到這一點,但我真的不能找到具體的事情。我添加了一個IAM角色,允許VPC訪問我的lambda,就像它在aws教程中所說的一樣,我甚至已將VPC安全組中的所有流量都設置好了,但我仍然不斷收到像這樣的超時錯誤:

「的errorMessage」:「2017-01-22T16:11:21.969Z 544e7fc4-e0bd,11e6-87e6-071c13fc2fc8任務超時30.00秒後」

我測試過我的本地功能和它連接到工作正常數據庫並做我想做的事,但lamda並沒有這樣做,我也不太清楚爲什麼。

任何想法將不勝感激!

回答

0

沒關係,我剛剛解決了它。添加:

context.callbackWaitsForEmptyEventLoop = false; 

在lambda函數固定對我來說

+0

我有同樣的問題,這個固定對我來說太。任何想法爲什麼?我想知道還有哪些地方需要補充。 – rhlsthrm

+0

這是lambda的一個特定問題,它默認在調用回調之前默認等待事件循環爲空。這確保它不會等待事件循環清空並在您調用回調時結束。按照我的理解,您只需要做任何異步操作就可以了 –