-
AWS Lambda Node8 Tip 1편 | callback 없애기Serverless 2018. 11. 6. 18:26
AWS Lambda & Node.js 8.10
안녕하세요
람다에서 노드8을 적극 활용하는 법에 대해서 포스팅 하겠습니다.
람다는 서버없이 코드를 실행할 수 있는AWS의 FaaS입니다.
Node, 자바, Go, Python, C# 등 다양한 언어를 지원하고 있습니다.
올해부터는 Node 8 버전도 지원하고 있습니다.
(서버리스 블로그의 글 Common Node8 mistakes in Lambda를 참고하여 작성했습니다.)
Callback 없애기
람다에서 Nodejs 함수의 기본적인 구조는 다음과 같습니다.
exports.handler = (event, context, callback) => { const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!') }; callback(null, response); };
event가 input을, callback이 output을 담당합니다.
callback의 첫 번째 인자에는 에러를 전달하고, 두 번째 인자에는 결과값을 전달합니다.
근데 이제 callback을 안 써도 됩니다!! (콜백지옥 ㅂㅇ)
exports.handler = async (event) => { const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!') }; return response; };
callback이 사라졌죠?
그냥 return하면 됩니다.
아 그리고 주의하실 점! handler 함수에 async를 꼭 넣어줘야 합니다. async를 안 넣으면 return해도 아무 반응이 없더라구요
node js 6 버전은 callback을 사용
lambda node js 8.10에서는 callback을 사용할 필요가 없이 return하면 됨
좀 더 깔끔한 코드를 작성할 수 있게 바뀌었습니다.
지금은 간단한 예시라서 별 것 아닌 거 같아보여도, 콜백을 사용하면 코드가 복잡해질 수록 대책없어집니다 ㅠ_ㅠ
에러처리는?
에러처리도 callback 없이 더 직관적으로 처리할 수 있게 되었습니다.
원래는 callback의 첫 번째 인자로 전달
exports.handler = (event, context, callback) => { const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!') }; callback(new Error('something wrong...')); };
이제는 그냥 throw 하면 됨
exports.handler = async (event) => { const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!') }; throw new Error('something wrong...'); };
callback 사용하여 에러 처리
lambda node js 8.10에서는 throw로 에러 처리 가능
'Serverless' 카테고리의 다른 글
AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 5편 | 텍스트로 반응하는 API (1) (0) 2018.11.07 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 4편 | 키보드 API 만들기 (0) 2018.11.07 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 3편 | 리펙토링 (0) 2018.11.06 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 2편 | Lambda Function 구성하기 (0) 2018.10.28 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 1편 | 기본설정 (0) 2018.10.28 댓글