Skip to content
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

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Refactor/Lambda #21

wants to merge 5 commits into from

Conversation

tanonkim
Copy link
Contributor

@tanonkim tanonkim commented Nov 4, 2023

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

Comment on lines +1 to +2
const serverless = require("serverless-http"); // Lambda

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

app.js에서 index.js로 변경하였습니다.

app.js로 사용해도 상관없는데, 그냥 핸들러의 default가 index이기에 바꿨습니다.
스크린샷 2023-11-04 오후 7 52 07

app.js로 사용하면 app.handler로 수정하면 돼요!

Comment on lines +47 to +48

module.exports.handler = serverless(app);
Copy link
Contributor Author

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
Comment on lines 15 to 25
const initializeDataSource = async () => {
try {
await dataSource.initialize();
console.log("Data Source has been initialized!");
} catch (error) {
console.error(`Initialize Error: ${error}`);
}
};

// 데이터 소스를 즉시 초기화하려는 경우 여기서 호출
initializeDataSource();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DB 연결을 바로 초기화해버렸어요!

뒤에서 초기화를 하니 인지를 잘 못 하는지 데이터서버 연결오류가 많이 나더라고요.

Comment on lines +31 to +33
},
"engines": {
"node": "18.x"
Copy link
Contributor Author

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

Comment on lines +4 to +18
// 순환 참조를 제거하는 함수
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;
};
}

Copy link
Contributor Author

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로 무력화하였습니다.

Comment on lines -8 to +10
region: process.env.AWS_S3_REGION,
credentials: fromEnv(),
region: process.env.S3_REGION,
// credentials: fromEnv(),
Copy link
Contributor Author

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에서 구체적으로 확인해주세요!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

credential은 당장 필요가 없다고 판단되어 주석화하였습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant