본문 바로가기

Back/AWS_Back

[AWS]Zappa - Lambda Layer 테스트.

Zappa 이용시 폴더 안의 모든 파일+ 라이브러리들을 zip으로 묶어 작업영역에 올린다.

만약 외부설정 값, config를 만들어 관리하는 키나, 변수들이 있다면 값을 교체할 때마다, 업데이트 하는게 비효율 적이라 생각했고 layer를 통해 관리할 수 있지 않을까 생각했다. 

더불어 생각대로 진행된다면 zappa를 단순한 플라스크 앱 실행기(?) 정도로만 쓰고 원하는 기능을 따로 관리 할수 있을것이라 생각된다.


from flask_cors.core import parse_resources
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS 

app = Flask(__name__)

CORS(app)

@app.route('/')
def get_start():

    from test_data import data

    return data, 200

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000, debug=True)

간단한 플라스크 앱을 생성한다. 

test_data를 읽고 해당값을 리턴 한다.

#layer1
data = 'version1'

#layer3
data = 'version2'

test_data는 위와 같이 구성되어 있다. 레이어를 1로 놓으면 version1, 레이어를 3으로 놓으면 version2가 나온다.

 

업데이트를 여러번 해보는중)

디플로이/업데이트시 당연시 에러가 난다. test_data.py가 없으니 당연하다. 

다만 놀라운점은 AWS console 상에서 test를 진행할경우 error가 나지 않는다.

왜 에러가 안나요? (⊙_⊙;)

값이 제대로 반환되는 것도 아니니 사실상 에러가 났다는 것이지만.


API 게이트 웨이로 가 스테이지에서 주소를 얻어 접속해보면 당연히 오류가 뜬다.

레이어 설정을 하면 - 원하는 값이 잘뜬다. 

레이어를 바꾸면 - 원하는 값으로 변경된다. 

즉 zappa에 일단 원하는 config를 레이어를 통해서 넣는것은 가능해졌다는 뜻.


그럼 아예 플라스크도 레이어로 넣을 수 있지 않을까?

새 가상환경을 생성후 바로 시도라이브러리들을 zip으로 묶어 작업영역에 올린다.

 

일단 플라스크가 없는 환경에서 zappa를 올렸고.

따로 플라스크를 레이어로 만들어 넣어 준다.

당연히 update시 오류는 발생하고 레이어 설정안하면 에러가 나지만

레이어를 설정하니 원하는대로 결과가 나온다.

이번 확인으로 자파를 아주 여러모로 다양하게 활용할 길이 열렸다.

아마존이 대단한 건지, 파이썬이 대단한건지 아무튼 잘되서 뿌듯하다.