J'essaie d'écrire une fonction Lambda utilisant Node.js qui se connecte à ma base de données RDS. La base de données fonctionne et est accessible depuis mon environnement Elastic Beanstalk. Lorsque j'exécute la fonction, elle renvoie une erreur de dépassement de délai.
J'ai essayé d'augmenter le délai d'attente jusqu'à 5 minutes avec exactement le même résultat.
Après quelques recherches, j'en suis arrivé à la conclusion qu'il s'agit probablement d'un problème de sécurité, mais je n'ai pas trouvé de solution dans la documentation d'Amazon ou dans le site Web de l'entreprise. ce (qui est la seule que j'ai pu trouver sur le sujet).
Voici les détails de la sécurité :
- Le RDS et le Lambda sont tous deux dans le même groupe de sécurité.
- Le RDS a des règles pour tout le trafic entrant et sortant.
- Le Lambda a la politique AmazonVPCFullAccess dans son rôle.
Mon code est :
'use strict';
console.log("Loading getContacts function");
var AWS = require('aws-sdk');
var mysql = require('mysql');
exports.handler = (event, context, callback) => {
var connection = mysql.createConnection({
host : '...',
user : '...',
password : '...',
port : 3306,
database: 'ebdb',
debug : false
});
connection.connect(function(err) {
if (err) callback(null, 'error ' +err);
else callback(null, 'Success');
});
};
Le résultat que j'obtiens est :
"errorMessage": "2017-03-05T05:57:46.851Z 9ae64c49-0168-11e7-b49a-a1e77ae6f56c Task timed out after 10.00 seconds"