Node.js를 위한 Lambda 배포 패키지는 어떻게 구축합니까?

최종 업데이트 날짜: 2021년 1월 8일

Node.js에서 AWS Lambda 함수를 생성했는데 호출 중 모듈을 찾을 수 없음 오류가 발생했습니다. 이런 오류가 발생하지 않게 배포 패키지를 빌드하려면 어떻게 해야 합니까?

간략한 설명

모듈을 찾을 수 없음 오류는 대개 다음 세 가지 이유 중 하나로 인해 발생합니다.

  • Lambda 함수의 배포 패키지에 Lambda 서비스가 필요한 모듈과 라이브러리를 로드할 수 있는 올바른 폴더 구조가 없습니다.
  • 배포 패키지에 올바른 파일 사용 권한이 없습니다.
  • 배포 패키지에 가져올 모듈이 포함되어 있지 않습니다.

참고: Lambda에는 전역 읽기 권한이 필요합니다.

해결 방법

.zip 파일의 루트 폴더에 함수 코드가 포함된 배포 패키지를 만든 다음 모든 파일에 읽기 및 실행 권한을 적용하려면 다음을 수행합니다.

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

Linux 및 macOS의 경우

함수 프로젝트 폴더에 종속성 설치

참고: 대부분의 Node.js 모듈은 플랫폼 독립적이지만 일부는 특정 운영 체제 환경용으로 컴파일됩니다. Lambda는 Linux 환경에서 실행됩니다. npm으로 모듈을 설치할 때 올바른 플랫폼 종속성이 포함될 수 있도록 Linux 환경에서 .zip 파일을 제작할 것이 모범 사례로 권장됩니다.

1.    AWS CLI에서 디렉터리를 프로젝트 폴더로 변경합니다. 예:

cd /project-folder-name

중요: project-folder-name을 실제 프로젝트 폴더의 이름으로 바꿔야 합니다.

2.    함수에 필요한 각 모듈에 대해 다음 명령을 실행하여 종속성을 사용자의 함수 프로젝트 폴더에 로컬로 설치합니다.

npm install package-name

중요: package-name을 실제 패키지 이름으로 바꿔야 합니다. 비압축 파일의 함수 크기에는 250MB의 크기 제한도 있습니다. 함수가 작동하는 데 필요한 라이브러리만 포함합니다.

예를 들어 프로젝트 폴더의 루트에 AWS SDK for JavaScript 모듈을 설치하려면 다음 명령을 실행합니다.

npm install aws-sdk

참고: AWS Lambda는 기본 컨테이너 구성의 일부로 AWS SDK for JavaScript 라이브러리를 포함합니다. 다른 버전의 라이브러리를 사용하려면 로컬 사본을 포함할 수도 있습니다. 현재 Lambda 환경과 지원되는 라이브러리에 대한 자세한 내용은 Lambda 실행 환경 및 사용 가능 라이브러리를 참조하세요.

배포 패키지 빌드

AWS CLI에서 다음 명령을 실행합니다.

zip -r ../function-name.zip .

참고: function-name을 배포 패키지에 지정할 파일 이름으로 바꿉니다. 그러면 프로젝트 폴더에 있는 모든 파일이 상위 폴더에 있는 .zip 파일에 포함됩니다.

배포 패키지 확인

1.    AWS CLI에서 다음 명령을 실행합니다.

zipinfo ../function-name.zip

참고: function-name을 배포 패키지의 실제 파일 이름으로 바꿉니다. 또는 .zip 파일에 대해 unzip -l를 실행하여 내용을 나열할 수도 있지만 이 경우 정보가 위의 명령만큼 자세하지 않습니다.

2.    출력에서 함수 핸들러 소스 파일은 zip 파일의 루트에 위치하고 있는지 확인합니다.

3.    출력에서 파일에 전역 읽기 권한이 있는지 확인합니다. 자세한 내용은 배포 패키지를 업로드할 때 Lambda "permission denied" 또는 "unable to import module" 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요.

Windows의 경우

배포 패키지 빌드

1.    파일 탐색기에서 프로젝트 폴더를 엽니다.

2.    프로젝트 파일을 모두 선택한 후 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 엽니다.

3.    [Send to]를 선택한 후 [Compressed (zipped) folder]를 선택합니다.

4.    .zip 파일의 이름을 입력합니다.

배포 패키지 업로드 및 확인

1.    Lambda 콘솔에서 함수를 선택합니다.

2.    [Function code]의 [Code entry type]에서 [Upload a .zip file]을 선택합니다.

3.    [Function package]에서 [Upload]를 선택합니다.

4.    생성한 .zip 파일을 선택한 후 [Open]을 선택합니다.

5.    콘솔의 상단에서 [저장(Save)]을 선택합니다.

팁: AWS CLI에서 update-function-code를 실행하여 .zip 파일을 업로드할 수도 있습니다.

6.    업로드가 완료되면 [테스트(Test)]를 선택합니다.

팁: 또한 AWS CLI에서 7-Zip을 사용하여 배포 패키지의 파일 권한을 확인할 수도 있습니다. 7-Zip 웹 사이트에서 다운로드합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?