AWS

AWS Lambda Layer란? Node.js 기반으로 직접 만들어보고 Lambda에서 적용하기

황동리 2025. 11. 13. 17:47
반응형

이번엔 Lambda Layer에 대해 알아보겠습니다.

Lambda Layer 란 무엇인가?

AWS Lambda Layer는 여러 Lambda 함수에서 공통으로 사용하는 라이브러리·패키지·코드·실행 바이너리 등을 분리하여 재사용할 수 있는 기능 입니다.

🔥 Layer를 사용하는 이유

  • 여러 Lambda에서 같은 패키지를 중복 포함하지 않아도 됨
  • Lambda 함수 ZIP 파일이 가벼워짐
  • 배포 속도 개선
  • 공통 라이브러리를 한 곳에서 관리 가능
  • 아키텍처가 정리되며 유지보수가 쉬워짐

💡 Layer가 Lambda에서 로딩되는 경로

Node.js의 경우 Layer는 Lambda 실행 환경에서 다음과 같은 경로로 마운트 됩니다.

/opt/nodejs/node_modules/

따라서, Layer ZIP 파일을 만들 때 내부 구조도 nodejs/node_modules 형태를 반드시 따라야 합니다.

각 Lambda 런타임에 대한 계층 경로 - 공식문서


이제 Lambda Layer를 직접 만들어서 사용해보겠습니다.


실습

먼저 Layer를 만들기 위해서는 Layer 전용 디렉터리를 준비하고, 그 안에 패키지를 설치해야 합니다.


예시로 mysql2@aws-sdk/client-s3 패키지를 Layer에 넣어서 사용해보겠습니다.

Layer 디렉터리 생성

mkdir -p layer/nodejs
cd layer/nodejs

package.json 정의 및 패키지 설치

패키지 설치 하기 위해 package.json 파일을 정의해주겠습니다.

{
  "name": "lambda-connectivity-check",
  "version": "1.0.0",
  "description": "Lambda to test MySQL and S3 connectivity",
  "dependencies": {
    "@aws-sdk/client-s3": "^3.676.0",
    "mysql2": "^3.11.0"
  }
}

그리고 이제 아래 명령어를 사용해 패키지 설치를 해보겠습니다.

npm install

그러면 아래와 같은 파일 구조가 생깁니다.

layer/
  └── nodejs/
        ├── package.json
        ├── package-lock.json
        └── node_modules/

Layer ZIP 파일 만들기

이제 Layer ZIP을 생성해보겠습니다.


Layer ZIP은 반드시 nodejs/ 폴더를 그대로 포함해야합니다.

cd ..
zip -r layer.zip nodejs

Layer ZIP 파일 등록

AWS 콘솔에 접속하셔서

  1. AWS Console -> Lambda -> 계층
  2. 계층 생성

아래 이미지 처럼 Layer를 생성해주면 됩니다.

Lambda 함수에서 Layer 사용

앞선 진행과정을 정상적으로 수행을 하셧다면 Lambda 함수에서 아래 이미지와 같이 Layer를 등록해서 사용하면 됩니다.

  • Add a layer 클릭

  • 아래 이미지와 같은 내용으로 추가



이상 입니다.

반응형