찾다

 >  Q&A  >  본문

AWS Aurora MySQL 데이터베이스는 Node Lambda 함수로 쿼리할 수 없습니다.

<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>
P粉184747536P粉184747536454일 전673

모든 응답(1)나는 대답할 것이다

  • P粉960525583

    P粉9605255832023-08-26 13:59:33

    문제는 db.queryPromise 스타일 대신 콜백 스타일을 사용한다는 것입니다. Promise를 사용하려면 변환해야 합니다.

    한 가지 방법은 Util.promisify...

    을 사용하는 것입니다. 으아악

    회신하다
    0
  • 취소회신하다