Die AWS Aurora MySQL-Datenbank kann nicht von der Node-Lambda-Funktion abgefragt werden
P粉184747536
2023-08-25 21:31:48
<p>Ich versuche, eine Lambda-Funktion zu verwenden, um Daten in eine AWS Aurora MySQL-Datenbank zu schreiben. </p>
<h3>code</h3>
<p>Aus irgendeinem Grund scheint es nicht zu funktionieren. Mein Code ist bisher sehr einfach, wird aber nicht korrekt ausgeführt. Dies ist eine einfache Lambda-Funktion, die aufgerufen wird, wenn sich ein Benutzer bei Cognito registriert und einen neuen Eintrag in der SQL-Datenbank erstellen soll, der die Anmeldeinformationen des Benutzers enthält. </p>
<pre class="brush:php;toolbar:false;">const mysql = require('mysql')
const db = mysql.createConnection({
Gastgeber: "****",
Hafen: *****,
Benutzer: "*****",
Passwort: "*****",
Datenbank: „*****“,
})
export const lambdaHandler = async (event: any, context: any,) =>
const user = {
uid: event.request.userAttributes.sub,
Benutzername: event.request.userAttributes.nickname,
E-Mail: event.request.userAttributes.email,
}
console.log("vor der Abfrage")
const query = `INSERT INTO users (Uid, Username, Email) VALUES (${user.uid}, ${user.username}, ${user.email})`
wait db.query(query, (err: any, result: any) => {
if (err) console.error(err)
console.log("Abfrageantwort: " + Ergebnis)
})
console.log("nach Abfrage")
Rückkehrereignis;
};</pre>
<p>Die Ausgabe der Funktion ist wie folgt: </p>
<pre class="brush:php;toolbar:false;">START RequestId: bb1d2143-97e4-4761-a48a-f482cf94f73b Version: $LATEST
2022-03-17T14:02:35.956Z bb1d2143-97e4-4761-a48a-f482cf94f73b INFO vor der Abfrage
2022-03-17T14:02:35.961Z bb1d2143-97e4-4761-a48a-f482cf94f73b INFO nach Abfrage
END RequestId: bb1d2143-97e4-4761-a48a-f482cf94f73b
REPORT RequestId: bb1d2143-97e4-4761-a48a-f482cf94f73b Initialisierungsdauer: 0,14 ms Dauer: 138,07 ms Abgerechnete Dauer: 139 ms Speichergröße: 128 MB Max. genutzter Speicher: 128 MB</pre>
<p>Hinweis: Die Abfragefunktion hat den Protokolldatensatz nicht gefunden (sollte einen Fehler auslösen oder die Antwort protokollieren)</p>
<h3>Strategie</h3>
<p>Die folgenden Richtlinien sind in der Ausführungsrolle der Lambda-Funktion enthalten: <code>AWSLambdaVPCAccessExecutionRole</code> und <code>AWSLambda_FullAccess</code></p>
<h3>Andere</h3>
<p>Die Lambda-Funktion und Aurora befinden sich in verschiedenen Subnetzen derselben VPC. Ich bin mir nicht sicher, ob dies ein Problem verursachen wird. Aber würde dies nicht dazu führen, dass die Funktion einen Fehler auslöst? Fehler ähnlich wie <code>fehlende Autorisierung</code>? </p>
<p>Ich verstehe nicht, was ich an dieser Stelle übersehe</p>
问题在于
db.query
使用回调样式而不是promise样式。你需要将其转换为使用promises。一种方法是使用
Util.promisify
...