업무중 AWS lambda를 이용하여 특정한 일을 자동화 작업을 해야 하는 일이 생겼다.
해당 아키텍쳐와 로직을 고민하다가,
Lambda 를 편리하게 배포할 수 있는 chalice를 이용하기로 결정하였고, 그와 관련하여 selenium을 추가적으로 사용하여 완전 자동화를 하기로 하였다.
간단하게 말하면 AWS lambda를 사용해서 빠른 create, deploy가 가능하도록 해주는 프레임워크이다.
기존 lambda를 사용하기 위해 AWS 콘솔에서 작업해 주던 것을 간단한 명령어로 쉽게 배포와 세팅까지 해주는 강력한 도구이다.
해당 링크 에서 간단한 명령어로 프로젝트를 시작할 수 있다.
$ python3 -m pip install chalice
chalice 를 설치후,
본인의 AWS 계정에 deploy 하기 위해서는
AWS 계정을 등록해야 한다.
그 전에 먼저 IAM 사용자 등록을 마친 후 해당 과정을 거쳐야 한다.
$ mkdir ~/.aws
$ cat >> ~/.aws/config
[default]
aws_access_key_id=YOUR_ACCESS_KEY_HERE
aws_secret_access_key=YOUR_SECRET_ACCESS_KEY
region=YOUR_REGION (such as us-west-2, us-west-1, etc)
해당 부분을 본인의 정보에 맞게 설정한다.
$ chalice new-project helloworld
helloworld 부분에는 원하는 프로젝트 이름을 입력하면
손쉽게 chalice 프로젝트를 시작할 수 있다.
해당 프로젝트에 들어가보면 하기와 같이 기본 세팅이 되어 있는 것을 볼 수 있다.
from chalice import Chalice
app = Chalice(app_name='helloworld')
@app.route('/')
def index():
return {'hello': 'world'}
해당 chalice 프로젝트를
$ chalice local
명령어로 로컬환경에서 구동해 볼 수 있고,
$ chalice deploy
명령어로 배포까지 가능하다. 그러면 하기와 같이 api를 통해 request할 수 있는 URL까지 나온다.
$ chalice deploy
Creating deployment package.
Creating IAM role: helloworld-dev
Creating lambda function: helloworld-dev
Creating Rest API
Resources deployed:
- Lambda ARN: arn:aws:lambda:us-west-2:12345:function:helloworld-dev
- Rest API URL: https://abcd.execute-api.us-west-2.amazonaws.com/api/
chalice는 상기와 같이 api 요청을 통해 람다 함수를 실행하도록 설정할 수도 있고, 스케줄, s3 트리거 등 다양하게 활용가능한 유용한 도구이다.