Conversation
| const serverless = require("serverless-http"); // Lambda | ||
|
|
|
|
||
| module.exports.handler = serverless(app); |
There was a problem hiding this comment.
module.exports.handler = serverless(app);AWS Lambda와 같은 서버리스 환경에서 Express.js 애플리케이션을 실행하기 위해 필요해요!
npm install serverless-http로 꼭 install 먼저 해주세요!
| const initializeDataSource = async () => { | ||
| try { | ||
| await dataSource.initialize(); | ||
| console.log("Data Source has been initialized!"); | ||
| } catch (error) { | ||
| console.error(`Initialize Error: ${error}`); | ||
| } | ||
| }; | ||
|
|
||
| // 데이터 소스를 즉시 초기화하려는 경우 여기서 호출 | ||
| initializeDataSource(); |
There was a problem hiding this comment.
DB 연결을 바로 초기화해버렸어요!
뒤에서 초기화를 하니 인지를 잘 못 하는지 데이터서버 연결오류가 많이 나더라고요.
| }, | ||
| "engines": { | ||
| "node": "18.x" |
There was a problem hiding this comment.
AWS lambda의 최신 버전이 18이더라고요.
20을 사용하는데, 다운그레이드 하면서 18버전을 사용한다고 명시했습니다.
다른 버전일 경우 18버전으로 변경해주세요!
- nvm설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# 또는
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash- nvm 바로 사용
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm- node 18 설치
nvm install 18- 버전 전환
nvm use 18nvm alias default 18 // 디폴트로 변경- 현재 버전 확인
node -v| // 순환 참조를 제거하는 함수 | ||
| function getCircularReplacer() { | ||
| const seen = new WeakSet(); | ||
| return (key, value) => { | ||
| if (typeof value === "object" && value !== null) { | ||
| if (seen.has(value)) { | ||
| // 순환 참조가 발견되면 대체 값(예: undefined)을 반환합니다. | ||
| return; | ||
| } | ||
| seen.add(value); | ||
| } | ||
| return value; | ||
| }; | ||
| } | ||
|
|
There was a problem hiding this comment.
baseResponse 객체에 순환참조 문제 발생하더라고요.
이전에는 200 성공 후에 정상적으로 json이 나왔지만(의도한 대로) 500 에러가 나긴 하던데, 큰 영향이 없어서 무시했습니다.
lambda에서는 가장 마지막의 결과를 내보내더라고요. 그래서 순환참조가 발생하면 undefined로 무력화하였습니다.
| region: process.env.AWS_S3_REGION, | ||
| credentials: fromEnv(), | ||
| region: process.env.S3_REGION, | ||
| // credentials: fromEnv(), |
There was a problem hiding this comment.
환경 변수를 변경하였습니다. 기존의 변수들이 aws lambda 환경변수(.env는 파일은 사용할 수 없어요)에 예약변수로 사용하더라고요.
.env.sample에서 구체적으로 확인해주세요!
There was a problem hiding this comment.
credential은 당장 필요가 없다고 판단되어 주석화하였습니다.

Lambda 실행을 하면서 오류 수정 및 소소한 개선입니다.
하나씩 살펴봐주세요!