Question

AWS Lambda 콘솔에서의 Nodemodule 사용방법을 가이드 부탁드립니다.



Answer

AWS Lambda에서는 몇몇 기본 패키지 외에는 사용할 수가 없습니다. 따라서 Lambda에 복잡한 기능을 수행하기 위해서는 layer 기능을 사용합니다. layer는 Lambda에서 추가적인 패키지를 사용 가능하도록 하는 것입니다.


쉽게 설명해 드리면 내가 사용할 패키지를 직접 업로드하여 layer로 만들고 Lambda에서 호출해서 사용 할 수 있도록 하는 것입니다.


예를 들어 layer 없이 node에서 패키지를 로드하여 코드를 실행합니다. 아래 사진과 같은 mysql을 사용하는 코드를 실행 합니다.


실행 시 아래와 같이 패키지 로드가 실패했다는 에러 메시지가 출력 됩니다.



layer을 생성하기 위해서는 미리 패키지 모듈을 준비해두어야 합니다. 로컬에서 npm install을 이용해 패키지를 다운하고 다운로드된 패키지가 있는 node_modules 디렉토리를 nodejs/node_modules/[패키지들] 경로로 하여 zip 파일로 압축합니다.


압축이 완료가 되었다면 AWS Lambda에서 layer 생성으로 들어갑니다.



layer 생성 시 아래와 같이 zip 파일을 업로드 할 수 있습니다. 앞서 준비하셨던 파일을 업로드 합니다. 그리고 호환 런타임을 설정합니다. 호환 런타임을 내가 사용할 Lambda 버전과 일치하지 않으면 layer를 선택할 때 만들었던 layer를 사용할 수가 없습니다.



다시 Lambda 함수 설정 페이지에서 아래 쪽을 보면 layer를 설정하는 메뉴가 보입니다. 해당 메뉴에서 layer을 추가합니다.



layer 추가 버튼을 누르면 아래와 같이 '사용자 지정 계층'을 선택하고 내가 만든 layer를 선택할 수 있습니다.



layer 설정 후 처음 실행 했던 코드를 다시 실행하면 정상 실행 되는 것을 확인 할 수 있습니다.