AWS Aurora MySQL 데이터베이스는 Node Lambda 함수로 쿼리할 수 없습니다.
P粉184747536
2023-08-25 21:31:48
<p>Lambda 함수를 사용하여 AWS Aurora MySQL 데이터베이스에 데이터를 쓰려고 합니다. </p>
코드
<p>어떤 이유에서든 작동하지 않는 것 같습니다. 지금까지 내 코드는 매우 간단하지만 올바르게 실행되지 않습니다. 이는 사용자가 Cognito에 등록할 때 호출되고 사용자의 자격 증명이 포함된 SQL 데이터베이스에 새 항목을 생성해야 하는 간단한 Lambda 함수입니다. </p>
<pre class="brush:php;toolbar:false;">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("쿼리 후")
복귀 이벤트;
};</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 쿼리 전 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</pre>
<p>참고: 쿼리 함수가 로그 기록을 찾지 못했습니다(오류가 발생하거나 응답을 기록해야 함)</p>
<h3>전략</h3>
<p>Lambda 함수의 실행 역할에는 다음 정책이 포함됩니다: <code>AWSLambdaVPCAccessExecutionRole</code> 및 <code>AWSLambda_FullAccess</code></p>
<h3>기타</h3>
<p>Lambda 함수와 Aurora는 동일한 VPC의 서로 다른 서브넷에 있습니다. 이것이 문제를 일으킬지 잘 모르겠습니다. 하지만 이로 인해 함수에서 오류가 발생하지 않을까요? <code>승인 누락</code>과 유사한 오류가 발생합니까? </p>
<p>이 시점에서 제가 무엇을 놓치고 있는지 이해가 되지 않습니다</p>
문제는
db.query
Promise 스타일 대신 콜백 스타일을 사용한다는 것입니다. Promise를 사용하려면 변환해야 합니다.한 가지 방법은
을 사용하는 것입니다. 으아악Util.promisify
...