[SCRIPT] 명령 한 번으로 Lambda Layer 쉽게 추가하기
0. INTRO
- 코딩을 하다보면 외부 library들을 이용해야하는 경우가 정말 많다. Lambda의 Python 환경에서는 기본적으로 미리 설치가 되어 제공되는 라이브러리들이 있으며 해당 목록은 >InsideLambda< 사이트에서 확인이 가능하다.
- 하지만 이 외에서 pandas나 numpy 등 따로 설치가 필요한 라이브러리들 같은 경우 아래의 두 가지 방법을 통해 Lambda 함수에 import가 가능하다.
- Import 하려는 라이브러리 구성 파일들을 업로드하여 Lambda Layer를 생성하고 Lambda 함수에서 해당 Layer를 추가한다.
- 라이브러리 설치 파일 및 Lambda 코드 파일을 zip으로 압축한 후 Lambda 함수에 Upload 한다.
이러한 방법들이 있지만 구성 파일들 압축하고 또 콘솔에 와서 서비스들 클릭 후 업로드 하는 등 손이 많이가고 귀찮은 작업이다. 게다가 만약에 zip파일 내부 디렉토리 구성을 잘못했다면 Layer를 만들었어도 적용이 안될 수 있다.
- 아래 shell script는 이러한 귀찮은 과정들을 생략하고 명령어 한 번에 원하는 라이브러리의 Layer를 만들어주기 위해 구성되었다.
1. LAMBDA LAYER ADD SCRIPT
- UBUNTU Version
-
1-1. shell script 최초 실행 일 때
#!bin/bash/ # 변수 받기 library=$1 current=$PWD # Ubuntu update & python install sudo apt update sudo apt install python3.8 sudo apt install zip # aws cli install curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install sleep 1 # Download documents related to the library curl -O https://bootstrap.pypa.io/get-pip.py python3.8 get-pip.py --user sleep 1 mkdir $current/$library cd $current/$library mkdir python python3.8 -m pip install $library -t python/ sleep 1 zip -r layer.zip python sleep 1 aws lambda publish-layer-version --layer-name $library-layer --zip-file fileb://layer.zip \ --compatible-runtimes python3.7 python3.8 python3.9 --region ap-northeast-2 sleep 1 rm -rf $current/$library echo $library has been add to the lambda layer.
-
1-2. 최초 layer 추가 후 계속적으로 추가할 때
#!bin/bash library=$1 current=$PWD echo $library mkdir $current/$library cd $current/$library mkdir python python3.8 -m pip install $library -t python/ sleep 1 zip -r layer.zip python sleep 1 aws lambda publish-layer-version --layer-name $library-layer --zip-file fileb://layer.zip \ --compatible-runtimes python3.7 python3.8 python3.9 --region ap-northeast-2 sleep 1 rm -rf $current/$library echo $library has been add to the lambda layer.
bash add_layer.sh “라이브러리 명” ex) bash add_layer.sh pandas
-
-
CENTOS Version
#!bin/bash curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install sudo amazon-linux-extras install python3.8 sleep 1 curl -O https://bootstrap.pypa.io/get-pip.py sleep 1 mkdir python python3.8 get-pip.py --user sleep 1 python3.8 -m pip install pandas -t python/ sleep 1 zip -r layer.zip python sleep 1 aws lambda publish-layer-version --layer-name test-layer --zip-file fileb://layer.zip \ --compatible-runtimes python3.7 python3.8 python3.9 --region ap-northeast-2
bash add_layer.sh “라이브러리 명” ex) bash add_layer.sh pandas
Leave a comment