-
AWS lambda 자동 배포 스크립트(for Python)case Computer :/AWS | DevOps 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 에서 참고해주세요
반응형'case Computer : > AWS | DevOps' 카테고리의 다른 글
Jenkins Bad Message 431 reason: Request Header Fields Too Large (0) 2022.01.24 Lambda API returned error: Missing IAM Credentials for specified aws_default_lambda_role (0) 2022.01.22 Lambda API returned error: Missing designated IAM role (aws_default_lambda_role) (0) 2022.01.22 AWS Aurora db에서 Lambda 함수 호출 (0) 2022.01.22 AWS Lambda 활용 : Cron, 스케쥴러 처럼 주기적 반복 실행 (1) 2022.01.22