안녕하세요 이번에는 python 코드를 서버없이 실행할 수 있게 해주는 zappa를
사용하는 방법을 소개하겠습니다.
우선 zappa에 관해 간단히 설명을 하겠습니다.
최근들어 aws, azure, gcp 같은 클라우드 플랫폼 서비스에서 서버리스 제품이 출시되고 있는데요,
서버리스란 말 그대로 프로덕트를 서버에서 실행시키지 않고, 자원을 분산시켜 함수는 함수대로 DB는
DB대로 각각 나누어 연동시켜 프로덕트를 동작하게 한다고 할 수 있습니다.
그중에서도 저는 파이썬 패키지로 작성된 서버리스 도구인 zappa를 소개하려고 합니다.
우선 zappa를 설치하는 방법은 각자 자신이 사용하는 파이썬 환경에서
pip install zappa
를 실행하여 주면 됩니다.
현재 zappa는 파이썬 2.7 과 3.6 에서 지원이 되니 참고해 주세요.
간단한 python 모듈을 zappa로 실행시켜 보겠습니다.
myapp.py
# -*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World! Hello everyone!" if __name__ == "__main__": app.run()
myapp.py를 이런식으로 작성한 뒤
zappa init
명령을 내려줍니다.
aws에 로그인하여 IAM에 접속하여 사용자를 추가해 줍니다.
사용자를 추가할 때 aws_access_key_id와 aws_secret_access_key를 얻을 수 있습니다.
그 키를 ~/.aws/credentials 파일이 아래와 같이 저장해 줍니다.
[default] aws_access_key_id=xxxxxxxxxxxxxxxxxxx aws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
zappa init를 통해 만들어진 zappa_settings.json 파일을 수정하여 클라우드 서버 환경을 연동시킬 수 있습니다.
예제
{ "dev": { "app_function": "myapp.app", "aws_region": "ap-northeast-2", "profile_name": "default", "project_name": "test", "runtime": "python3.6", "s3_bucket": "test_bucketname" } }
이제 zappa_settings.json이 존재하는 경로상에서
zappa deploy dev
로 aws 상에서 배포를 하면 끝납니다.
소스를 고치면 다른 명령어로 배포를 할 수 있습니다.
zappa update dev
여기까지 간단한 zappa 사용법이었습니다. 끝!