본문 바로가기

프로그래머

AWS Lambda Layer Import 하는 법

1. What is the Lambda Layer? and why is it useful?

Lambda 를 사용할 때 다른 사람이 만든 package(s) 또는 내가 만든 package(s)를 업로드해서 사용하고 싶을 때가 많다.

이럴때 예전엔 lambda에 직접 업로드 해서 사용했는데 더 좋은 방법을 찾았다. Lambda layer라는 것이다.  검색해 보니 꽤 오래전 부터 이 방법이 존재하였던 거 같은데 왜 이제야 발견했는지 모르겠다.

Lambda layer를 사용하면 나만의 3rd party package 또는 3rd party packages를 만들어 여러 lambda 함수에서 같이 사용할 수 있어 직접 lambda에 업로드하는 것보다 훨씬 간편하게 관리할 수 있어 좋다.

예를 들어  axios나  lodash 같은 package를 layer 한번 생성으로 여러개의 내 lambda에 붙여서 사용할 수 있다. 

2. How to import the Lambda Layer in lambda?

1) Layer 파일 구조 만들기

layer를 생성하고 그 layer를 lambda에 붙이는 건 매우 싶다. 내 경우에도  lambda layer를 만들어 내 lambda에 붙이는 것 까지는 쉬웠는데 어떤 path로 그 layer를 import 해야하는지 몰라 약 1-2시간 정도 해맸다. 그래서 그 것만 기록을 남긴다.

일단 업로드할 package의 구조가 중요하다. 아래와 같이 만들어야 lambda에서 간단하게 import 할 수 있다.

파일명 axios-layer.zip

lambda-layer1

이런 구조로 layer를 만들면 아래와 같이 쉽게 import 할 수 있다.

const axios = require("axios")

zip 파일명 "axios-layer"라는 내가 알아볼 수 있는 이름으로 만들면 된다. 따라서 zip파일명은 어떤 것이든 상관없지만 관리목적상 layer이름과 동일하게 만드는게 좋겠다.

2) 테스트

테스트는 open-dart라고 국내 상장기업 재무제표 조회하는  open api로 해보았다. 성공적이다. lambda에 layer가 붙으면 아래 초록색 부분처럼 표시된다.

그럼 이만