J'essaie d'utiliser une fonction Lambda pour écrire des données dans une base de données AWS Aurora MySQL.
Pour une raison quelconque, cela ne semble pas fonctionner. Jusqu'à présent, mon code est très simple mais il ne s'exécute pas correctement. Il s'agit d'une simple fonction Lambda qui est appelée lorsqu'un utilisateur s'inscrit sur Cognito et doit créer une nouvelle entrée dans la base de données SQL contenant les informations d'identification de l'utilisateur.
const mysql = require('mysql') const db = mysql.createConnection({ hôte: "****", port: *****, utilisateur: "*****", mot de passe: "*****", base de données: "*****", }) export const lambdaHandler = async (événement : n'importe quel, contexte : n'importe lequel,) => utilisateur const = { ID utilisateur : event.request.userAttributes.sub, nom d'utilisateur : event.request.userAttributes.nickname, email : event.request.userAttributes.email, } console.log("avant requête") const query = `INSERT INTO users (Uid, Username, Email) VALUES (${user.uid}, ${user.username}, ${user.email})` wait db.query(query, (err : any, result : any) => { si (erreur) console.erreur (erreur) console.log("réponse à la requête : " + résultat) }) console.log("après requête") événement de retour ; };Le résultat de la fonction est le suivant :
START RequestId : bb1d2143-97e4-4761-a48a-f482cf94f73b Version : $LATEST 2022-03-17T14:02:35.956Z bb1d2143-97e4-4761-a48a-f482cf94f73b INFO avant requête 2022-03-17T14:02:35.961Z bb1d2143-97e4-4761-a48a-f482cf94f73b INFO après requête FIN RequestId : bb1d2143-97e4-4761-a48a-f482cf94f73b REPORT RequestId : bb1d2143-97e4-4761-a48a-f482cf94f73b Durée d'initialisation : 0,14 ms Durée : 138,07 ms Durée facturée : 139 ms Taille de la mémoire : 128 Mo Mémoire maximale utilisée : 128 MoRemarque : La fonction de requête n'a pas trouvé l'enregistrement du journal (elle devrait générer une erreur ou enregistrer la réponse)
Stratégie
Les stratégies suivantes sont incluses dans le rôle d'exécution de la fonction Lambda :
AWSLambdaVPCAccessExecutionRole
etAWSLambda_FullAccess
Autres
La fonction Lambda et Aurora se trouvent dans des sous-réseaux différents du même VPC. Je ne sais pas si cela posera un problème. Mais cela ne provoquerait-il pas une erreur de la fonction ? Erreur similaire à
autorisation manquante
?Je ne comprends pas ce qui me manque à ce stade
Le problème est
db.query
l'utilisation du style de rappel au lieu du style de promesse. Vous devez le convertir pour utiliser les promesses.Une façon est d'utiliser
Util.promisify
...