Je n'ai pas pu me connecter à la base de données MySQL en utilisant Node de la fonction Lambda. L'erreur que je reçois est Task timed out after 4.00 seconds
.
Quelqu'un at-il des solutions?
Voici un aperçu de mon état:
Mon code:
var mysql = require('mysql');
var connection = mysql.createConnection({
Host : 'Amazon-string.rds.amazonaws.com',
user : 'myusername',
password : 'mypassword'
});
connection.connect();
exports.handler = (event, context, callback) => {
connection.query("SELECT * FROM table", function(err, rows, fields) {
console.log("rows: " + rows);
callback(null);
});
};
Augmentez le délai à une minute. Cela pourrait être dû au démarrage à froid de la fonction lambda.
Seul votre premier appel devrait prendre du temps, les appels consécutifs devraient être très rapides, car vous réutilisez la même connexion.
De plus, en ayant un délai d'attente plus élevé, cela ne signifie pas que vous serez facturé pour ce délai, vous ne serez facturé que pour la durée d'exécution de Lambda.
Aussi pour accélérer le démarrage à froid du temps vous pouvez webpack vos scripts,
http://docs.aws.Amazon.com/sdk-for-javascript/v2/developer-guide/webpack.html
Il y a encore un problème remarqué,
var mysql = require('mysql');
var connection = mysql.createConnection({
Host : 'Amazon-string.rds.amazonaws.com',
user : 'myusername',
password : 'mypassword'
});
connection.connect();
exports.handler = (event, context) => {
connection.query("SELECT * FROM table", function(err, rows, fields) {
console.log("rows: " + rows);
context.succeed('Success');
});
};
J'espère que cela aide.
Puisque vous utilisez RDS, consultez sa configuration de groupe de sécurité. Par défaut, le groupe de sécurité RDS autorise les connexions entrantes à partir de votre propre IP et de votre groupe de sécurité par défaut sur votre VPC par défaut. Cependant, Lambda, par défaut, ne fonctionne sous aucun VPC et n'est donc pas en mesure d'établir une connexion à RDS.
Modifiez votre instance RDS pour autoriser toutes les adresses IP ou exécutez votre fonction Lambda sous un VPC auquel votre instance RDS peut accéder et autorisez l'accès au groupe de sécurité.