AWS Lambda는 서버리스 컴퓨팅 서비스이다. 서버를 상시로 띄우는 것이 아닌, 사용자가 지정한 특정 이벤트 발생시에만 컴퓨팅 자원을 사용하는 방식을 서버리스 컴퓨팅이라 한다. 트리거 이벤트 예시로, 클라이언트가 특정 API 호출 또는 스케줄 따라 정해진 시간에 실행 등이 있다.
트리거 되는 컴퓨팅 이벤트의 단위를 Function이라고 한다. 각 Function은 (Python 기준)
lambda_handler()
라는 함수 실행시킨다. 본 실습에서는, lambda_handler() 안에 들어갈 코드를 작성하고, Layer를 지정해 패키지를 불러오고, Trigger를 추가해 정해진 시간마다 Function을 실행시키는 작업을 할 것이다.
lambda_handler()
에서 사용하는 모듈 불러오기하나의 Lambda Function은 아무것도 설치 안된 컴퓨터라고 생각하면 된다. 기본적인 Python 모듈은 설치되어 있지만, pandas, numpy, requests 등의 모듈을 사용하기 위해서는 별도 설치가 필요하다. Lambda에서는 이런 모듈을 Layer라는 개념으로 설치한다.
docker 설치
aws 에서 python3.9을 쓸 수 있는 docker image 다운로드
docker pull amazon/aws-sam-cli-build-image-python3.9:latest
docker 실행 후, 필요한 library 모두 설치 → AWS의 OS와 호환되는 library로 설치된다
docker run -it -v $PWD/python:/layer --platform linux/x86_64 amazon/aws-sam-cli-build-image-python3.9
cd ~
cd ..
cd layer
python3 -m pip install requests -t .
rm -r *.dist-info
exit
로컬 폴더에 설치된 (AWS의 OS와 호환가능한) library 들을 압축 한 후, S3 bucket에 담는다.
s3 bucket
Lambda Layer 생성: S3 bucket에 담아둔 압축파일을 선택해서 layer를 생성한다.
Lambda 함수 생성 → Add Layer로 5번에서 생성한 layer 추가
lambda_handler()
작성업비트 API를 이용해, 데이터를 읽어오고 이를 S3에 업로드하는 Python Script를 작성한다. 해당 Script는 Lambda Function이 트리거될 때마다 실행된다. 본 작업을 실행하기 위해서는 해당 Lambda Function이 S3에 접근해서 파일을 업로드할 수 있는 권한이 있어야 한다.