AWS Aurora MySQL データベースはノード Lambda 関数でクエリできません
P粉184747536
2023-08-25 21:31:48
<p>Lambda 関数を使用して AWS Aurora MySQL データベースにデータを書き込もうとしています。 </p>
<h3>コード</h3>
<p>何らかの理由で機能しないようです。これまでのコードは非常に単純ですが、正しく実行されません。これは、ユーザーが Cognito に登録するときに呼び出される単純な Lambda 関数であり、ユーザーの認証情報を含む新しいエントリを SQL データベースに作成する必要があります。 </p>
<pre class="brush:php;toolbar:false;">const mysql = require('mysql')
const db = mysql.createConnection({
ホスト: "****"、
ポート: *****、
ユーザー: "*****",
パスワード: "*****"、
データベース: "*****",
})
import const lambdaHandler = async (event: any, context: any,) => {
const ユーザー = {
uid:event.request.userAttributes.sub、
ユーザー名:event.request.userAttributes.nickname、
電子メール:event.request.userAttributes.email、
}
console.log("クエリ前")
const query = `INSERT INTO users (Uid, Username, Email) VALUES (${user.uid}, ${user.username}, ${user.email})`
await db.query(query, (err: any, result: any) => {
if (err) console.error(err)
console.log("クエリ応答: " 結果)
})
console.log("クエリ後")
リターンイベント。
};</pre>
<p>関数の出力は次のとおりです。</p>
<pre class="brush:php;toolbar:false;">START リクエスト ID: bb1d2143-97e4-4761-a48a-f482cf94f73b バージョン: $LATEST
2022-03-17T14:02:35.956Z bb1d2143-97e4-4761-a48a-f482cf94f73b クエリ前の情報
2022-03-17T14:02:35.961Z bb1d2143-97e4-4761-a48a-f482cf94f73b クエリ後の情報
終了リクエストID: bb1d2143-97e4-4761-a48a-f482cf94f73b
REPORT RequestId: bb1d2143-97e4-4761-a48a-f482cf94f73b 初期期間: 0.14 ミリ秒 期間: 138.07 ミリ秒 請求期間: 139 ミリ秒 メモリ サイズ: 128 MB 最大使用メモリ: 128 MB</pre>
<p>注: クエリ関数はログ レコードを見つけられませんでした (エラーをスローするか、応答をログに記録する必要があります)</p>
<h3>戦略</h3>
<p>Lambda 関数の実行ロールには次のポリシーが含まれています: <code>AWSLambdaVPCAccessExecutionRole</code> および <code>AWSLambda_FullAccess</code></p>
<h3>その他</h3>
<p>Lambda 関数と Aurora は、同じ VPC の異なるサブネットにあります。これが問題を引き起こすかどうかはわかりません。しかし、これにより関数がエラーをスローすることはないでしょうか? <code>missing authorization</code>のようなエラー? </p>
<p>現時点では何が足りないのかわかりません</p>
問題は、
db.query
が Promise スタイルではなくコールバック スタイルを使用していることです。 Promise を使用するには変換する必要があります。1 つの方法は、
を使用することです。 リーリーUtil.promisify
...