본문 바로가기

AWS Lambda ƛ/Lambda & Python

Lambda Layers 를 활용해 공통 라이브러리 관리하기

# 기존 방식처럼 lambda 라이브러리를 zip 파일로 생성하여 AWS Lambda에 업로드 하게 되면 함수를 매번 생성할 때마다 업로드를 라이브러리를 업로드 해야하는 불편함이 있다.

AWS Lambda의 새롭게 추가된 기능을 보면 Layers 계층이라는 기능이 있다.

해당 Layers를 신규로 추가하여 공통된 라이브러리를 올릴수 있다.

1. 레이어 생성

계층을 클릭하여 하나의 레이어를 생성한다.

2. 계층 생성 옵션에서 아래와 같이 구성내용을 입력하여 구성을 진행한다.

여기서 주의할 점은 파이썬 라이브러리 파일의 이름이 이전에는 bs4.zip으로 저장 되었지만, AWS Lambda에서 라이브러리를 인식 하는 위치 조건에는 최상위 폴더가 Library가 되어야 하고, 해당 폴더안에 python이라는 폴더가 존재 해야하며, python의 모든 라이브러리는 python 폴더안에 라이브러리 들이 존재 해야한다.

그도 그럴것이, 라이브러리가 한 두개가 아니므로, 여러 라이브러리를 담고 저장하고 컨트롤 하기 위해서는 폴더 형태의 계층 구조가 필요할 것이다. Library/python/bs4 형태가 되어야 한다. 해당 경로에서 최상위 폴더인 Library를 압축하여 업로드를 진행 해야 한다. (아래의 화면 캡쳐 이미지를 보면 Library.zip 파일이 업로드 되어있는것을 확인 할 수 있다.)

3. 생성된 레이어 정보를 확인한다.

4. 람다 함수에 레이어를 적용한다.

Layers를 클릭하여 계층을 추가한다.

Add a layer를 클릭하면 이전에 생성한 레이어를 확인 할 수 있다.

계정 정보에서 아래와 같이 설정 후 추가를 하면 생성한 라이브러리 계층이 적용 된다.

5. 크롤러 함수를 실행하여 정상적으로 크롤링 되는지 확인한다.

API Gateway 엔드 포인트도 확인해 보자

zip 파일을 별도로 올리지 않고도, 레이어만을 이용해서 위와 같이 크롤링 정보를 가져온 것을 확인 할 수 있다.