case Computer :/AWS | DevOps

AWS lambda 자동 배포 스크립트(for Python)

거곰 2022. 1. 21. 23:52

AWS lambda Auto Deploy Script (for Python)


AWS에서 사용되 Lambda 는 매우 유용하게 이용됩니다. 
cloudwatch 와 연동하여 cron 처럼 동작할 수 있고

ELB나 api gateway 와 연동하여 request를 처리할 수 도 있고.

SNS와 나 cloudwatch 로그 구독을 통해 로그 관리도 처리할수 있고

aurora db와 연결하여 마치 backgound worker 처럼도 사용할 수 있다.

 

하지만 편리하지만 사용에도 제약사항이 있다. 서드파티 라이브러리 같은 경우 직접 파일을 올려주어야 한다.

기본적인 python 라이브러리외에 aws boto3 는 기본적으로 설치되었지만 그외에 requests, mysql 같이 많이 사용되는 library도 직접 파일을 올려주어야 합니다.

 

그래서 이런 서드파티 라이브러리를 설치하고 자동으로 zip으로 만들어 주면서 배포까지 가능한다 script를 만들어 보려한다.

뭐 정확히는 공유지만... 이미 글쓴이 회사에서 2년 가까지 사용중인 코드이다.

bash shell 코드 입니다. 크게 어려운 부분은 없습니다.

 

#!/bin/bash -e

....

# 기본 파일로 zip 파일 생성
zip -9q function.zip lambda_function.py


for file in $include_file;do
    if [ -d "${path}/${file}" ];then
        # 디렉토리인 경우 -r 옵션 필요
        zip -rg function.zip $file
    else
        zip -g function.zip $file
    fi
done

for file in $common_file;do
    # -j : remove junk-path 
    zip -gj ./function.zip ../common/${file}
done

# python package 설치 및 라이브러리 zip에 추가
pip install -r requirements.txt -t ./package
cd package/
zip -rg ../function.zip .
cd ..

# lambda에 배포
aws lambda update-function-code --region ${region} --function-name ${function_name} --zip-file fileb://function.zip

# Clear
rm -rf ./package
rm -rf ./function.zip

echo "[+] Done"

zip command와 pip install, aws command 가 전부인 부분입니다.

주요 코드만 올려두었습니다. 상세 코드는 아래 github 에서 참고해주세요

github : https://github.com/visu4l/lambda_deploy 

반응형