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 에서 참고해주세요
반응형