Lambda 関数を使用して AWS Aurora MySQL データベースにデータを書き込もうとしています。
何らかの理由で機能しないようです。これまでのコードは非常に単純ですが、正しく実行されません。これは、ユーザーが Cognito に登録するときに呼び出される単純な Lambda 関数であり、ユーザーの認証情報を含む新しいエントリを SQL データベースに作成する必要があります。
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("クエリ後") リターンイベント。 };
関数の出力は次のとおりです。
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
注: クエリ関数はログ レコードを見つけられませんでした (エラーをスローするか、応答をログに記録する必要があります)
Lambda 関数の実行ロールには次のポリシーが含まれています: AWSLambdaVPCAccessExecutionRole
および AWSLambda_FullAccess
Lambda 関数と Aurora は、同じ VPC の異なるサブネットにあります。これが問題を引き起こすかどうかはわかりません。しかし、これにより関数がエラーをスローすることはないでしょうか? missing authorization
のようなエラー?
現時点では何が足りないのかわかりません
問題は、
db.query
が Promise スタイルではなくコールバック スタイルを使用していることです。 Promise を使用するには変換する必要があります。1 つの方法は、
を使用することです。 リーリーUtil.promisify
...