안녕하세요 이번에는 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 사용법이었습니다. 끝!