반응형
pycharm으로 lambda 애플리케이션을 개발하다보니
로컬과 api gateway에서 event안에 들어있는 구조가 달라
그걸 통합하기 위하여 공통 라이브러리가 필요하다고 판단함
import json
class Parameters:
def event(event):
parameters = ''
# local은 resource가 비어 있다
resourcePath = event.get('resource', 'local')
if resourcePath == 'local':
# local은 event안에 오브젝트 타입으로 데이터가 들어있다
event['serverCheck'] = 'N'
result = event
return result
else:
method = event.get('httpMethod')
if method == 'GET' or method == 'get':
# method get은 queryStringParameters안에 list로 들어있음
parameters = event['queryStringParameters']
elif method == 'POST' or method == 'post':
# multipart쪽 예외처리 하고 싶으나 람다에서 파일업로드는 제한이 많아 안씀
# if event['headers']['Content-Type'] == 'multipart/form-data':
# body안에 오브젝트/json으로 들어있음
# parameters = event['body']
# else:
if event['body']:
parameters = json.loads(event['body'])
# for key in parameters:
# print(parameters[key])
result = parameters
# 빈값 처리
if not result:
result = {}
# path 파라미터 추가
if event['pathParameters']:
result.update(event['pathParameters'])
# stage 변수 추가
if event['stageVariables']:
result.update(event['stageVariables'])
return result
Parmeters lib를 만들었고 계층에 올려서 lambda로 로드하였음
import json
from layerLib import Parameters
def tagList(event=None, context=None):
parameters = Parameters.event(event)
return {
"statusCode": 200,
"body": json.dumps({
"data": {
"event" : event,
"parameters" : parameters
}
}, default=str),
}
parmeters 를 최상단에서 선언하여
모든 파라미터를 해당 변수에서 받아올수 있다
해당 코드를 통하여 데이터가 잘 나오는걸 확인이 가능하다
'lambda-python3.8' 카테고리의 다른 글
python request time out error 무시하기 (0) | 2021.03.14 |
---|---|
python 람다 애플리케이션 cors 처리하기 (0) | 2021.03.14 |
람다 Python Signed Url 만들기 S3 + Cloud Front (0) | 2021.03.03 |
람다 애플리케이션으로 API 개발 pycharm + python3.8 (0) | 2021.02.18 |
댓글