Lambda 함수를 사용하여 AWS Aurora MySQL 데이터베이스에 데이터를 쓰려고 합니다.
어떤 이유에서든 작동하지 않는 것 같습니다. 지금까지 내 코드는 매우 간단하지만 올바르게 실행되지 않습니다. 이는 사용자가 Cognito에 등록할 때 호출되고 사용자의 자격 증명이 포함된 SQL 데이터베이스에 새 항목을 생성해야 하는 간단한 Lambda 함수입니다.
const mysql = require('mysql') const db = mysql.createConnection({ 주인: "****", 포트: *****, 사용자: "*****", 비밀번호: "*****", 데이터베이스: "*****", }) 내보내기 const LambdaHandler = async (이벤트: 임의, 컨텍스트: 임의,) => const 사용자 = { uid: event.request.userAttributes.sub, 사용자 이름: event.request.userAttributes.nickname, 이메일: event.request.userAttributes.email, } console.log("쿼리 전") const 쿼리 = `INSERT INTO 사용자(Uid, 사용자 이름, 이메일) VALUES(${user.uid}, ${user.username}, ${user.email})` wait 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 쿼리 전 INFO 2022-03-17T14:02:35.961Z bb1d2143-97e4-4761-a48a-f482cf94f73b 쿼리 후 INFO 종료 요청 ID: bb1d2143-97e4-4761-a48a-f482cf94f73b REPORT RequestId: bb1d2143-97e4-4761-a48a-f482cf94f73b 초기화 기간: 0.14ms 기간: 138.07ms 청구 기간: 139ms 메모리 크기: 128MB 최대 사용 메모리: 128MB
참고: 쿼리 함수가 로그 기록을 찾지 못했습니다(오류가 발생하거나 응답을 기록해야 함)
Lambda 함수의 실행 역할에는 다음 정책이 포함됩니다: AWSLambdaVPCAccessExecutionRole
및 AWSLambda_FullAccess
Lambda 함수와 Aurora는 동일한 VPC의 서로 다른 서브넷에 있습니다. 이것이 문제를 일으킬지 잘 모르겠습니다. 하지만 이로 인해 함수에서 오류가 발생하지 않을까요? 승인 누락
과 유사한 오류가 발생합니까?
이 시점에서 제가 무엇을 놓치고 있는지 이해가 되지 않습니다
문제는
db.query
Promise 스타일 대신 콜백 스타일을 사용한다는 것입니다. Promise를 사용하려면 변환해야 합니다.한 가지 방법은
을 사용하는 것입니다. 으아악Util.promisify
...