-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor/Lambda #21
base: master
Are you sure you want to change the base?
Refactor/Lambda #21
Conversation
const serverless = require("serverless-http"); // Lambda | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
||
module.exports.handler = serverless(app); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
module.exports.handler = serverless(app);
AWS Lambda와 같은 서버리스 환경에서 Express.js 애플리케이션을 실행하기 위해 필요해요!
npm install serverless-http
로 꼭 install 먼저 해주세요!
index.js
Outdated
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DB 연결을 바로 초기화해버렸어요!
뒤에서 초기화를 하니 인지를 잘 못 하는지 데이터서버 연결오류가 많이 나더라고요.
}, | ||
"engines": { | ||
"node": "18.x" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 18
nvm 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
환경 변수를 변경하였습니다. 기존의 변수들이 aws lambda 환경변수(.env는 파일은 사용할 수 없어요)에 예약변수로 사용하더라고요.
.env.sample
에서 구체적으로 확인해주세요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
credential
은 당장 필요가 없다고 판단되어 주석화하였습니다.
Lambda 실행을 하면서 오류 수정 및 소소한 개선입니다.
하나씩 살펴봐주세요!