2016-04-13 34 views
2

'dan Amazon RDS'ye (MySQL) bağlanırken hata oluştu: "felixge/node-mysql" paketi kullanılarak Lambda'da barındırılan bir nodejs kodundan Amazon RDS (MySQL) örneğime bağlanmaya çalışıyorum. Neyi yanlış yaptığımı öğrenmek için yardıma ihtiyacım var. "ETIMEDOUT bağlan" hatası alıyorum. Kodum Lambda'da barındırılıyor ve hem Lamda hem de RDS aynı hesap ve bölgeden. Ayrıca RDSFullAccess Politikasını IAM rolüne ekledim. RDS örneğine tüm IP'lerden de erişilebilir (beyaz liste/kara listeye alınmış IP'ler yok).node-mysql

Aynı zamanda, yerel MySQL Workbench'imden aynı kimlik bilgileriyle bağlantı kurabiliyorum.

var connection = mysql.createConnection({ 
     host  : 'xxxxxxxx.crhmtrscnbgt.us-east-1.rds.amazonaws.com', 
     user  : 'my_user', 
     password : 'my_passowrd', 
     database : 'my_db', 
     port  : '3306', 
     debug : true 
}); 

connection.connect(function(err) { 
     if (err) { 
       console.error('error connecting: ' + err.stack); 
       return; 
     } 
     console.log('connected as id ' + connection.threadId); 
}); 

var query = "SELECT * FROM users";    

connection.query(query, function(err, rows) {     
     if (err) throw err;     
     console.log(rows); 
}); 

Çıktı geçerli::

2016-04-12T13:32:34.367Z fa04401a-00b2-11e6-9a23-2dd70e33cc5d error connecting: Error: connect ETIMEDOUT 
at Connection._handleConnectTimeout (/var/task/node_modules/mysql/lib/Connection.js:412:13) 
at Socket.g (events.js:180:16) 
at Socket.emit (events.js:92:17) 
at Socket._onTimeout (net.js:327:8) 
at _makeTimerTimeout (timers.js:438:11) 
at Timer.unrefTimeout [as ontimeout] (timers.js:502:5) 
-------------------- 
at Protocol._enqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:141:48) 
at Protocol.handshake (/var/task/node_modules/mysql/lib/protocol/Protocol.js:52:41) 
at Connection.connect (/var/task/node_modules/mysql/lib/Connection.js:123:18) 
at Object.Workout.save (/var/task/storage.js:32:24) 
at Object.storage.saveWorkout (/var/task/storage.js:62:28) 
at intentHandlers.NewExcerciseIntent (/var/task/intentHandlers.js:19:17) 
at AlexaSkill.eventHandlers.onIntent (/var/task/AlexaSkill.js:65:27) 
at AlexaSkill.requestHandlers.IntentRequest (/var/task/AlexaSkill.js:28:37) 
at AlexaSkill.execute (/var/task/AlexaSkill.js:105:24) 
at exports.handler (/var/task/index.js:9:19) 

cevap

0

tamir ettim

İşte benim kodudur. Sorun, Lambda işlev yapılandırmasında zaman aşımı ayarı ile oldu. 3 sn olarak ayarlandı, ancak betiğimin çalıştırılması 10 saniyeden fazla sürdü. ETIMEDOUT hatası almamın nedeni budur. Ayarı 30 saniyeye değiştirdim. Şimdi sorun yok, her şey yolunda gidiyor.