aws lamdba를 이용한 python api 만들기
조회수 959회
안녕하세요 코딩 시작한 지 두 달 정도 되는 왕초보입니다. 제가 카카오톡 챗봇을 만들고 있는데요! 그 기능 중에 하나가 특정 정류소의 버스 노선과 도착 시간을 호출하는 기능인데요 이걸 post 방식으로 url를 넣어야 합니다.
그래서 aws lamdba로 api를 만들려고 하는데 코드를 계속 수정하고 찾아봐도 어떻게 고쳐나가야 할 지 감이 안 잡히네요..
저 함수 a1과 a2를 출력 시키려면 어떻게 코드를 작성하면 좋을까요? 부탁드립니다 !!
import json
import requests
from bs4 import BeautifulSoup as akk
def lambda_handler(event, context):
service_key = 'kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
params= '&cityCode=33010&nodeId=CJB283000059&routeId=CJB270012000'
open_api = ' http://openapi.tago.go.kr/openapi/service/ArvlInfoInqireService/getSttnAcctoSpcifyRouteBusArvlPrearngeInfoList?ServiceKey='+service_key+params
res= requests.get(open_api)
soup = akk(res.content,'html.parser')
arrtimes = soup.find('arrtime')
pres = soup.find('arrprevstationcnt')
arrive = int(arrtimes.get_text())
pre = int(pres.get_text())
def a1():
if arrive > 420:
print("도착까지 6분 이상 남았습니다")
elif arrive > 361 and arrive <= 420:
print("도착까지 6분 남았습니다")
elif arrive >300 and arrive <= 360:
print("도착까지 5분 남았습니다")
elif arrive > 240 and arrive <= 300:
print("도착까지 4분 남았습니다")
elif arrive > 180 and arrive <= 240:
print("도착까지 3분 남았습니다")
elif arrive > 120 and arrive <= 180:
print("도착까지 2분 남았습니다")
elif arrive > 60 and arrive <= 120:
print("도착까지 1분 남았습니다")
elif arrive <= 60:
print("도착까지 1분 이내 남았습니다.")
else :
print("아직 데이터가 존재하지 않습니다")
def a2():
if pre > 0:
print(pre,"정거장 남았습니다.")
else:
print("아직 데이터가 존재하지 않습니다")
return {
'statusCode': 200,
'body': json.dumps(a1,a2)
}
이걸 실행 했을 때 오류는 다음과 같습니다.
{
"errorMessage": "dumps() takes 1 positional argument but 2 were given",
"errorType": "TypeError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 48, in lambda_handler\n 'body': json.dumps(a1,a2)\n"
]
}
START RequestId: id Version: $LATEST
[ERROR] TypeError: dumps() takes 1 positional argument but 2 were given
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 48, in lambda_handler
'body': json.dumps(a1,a2)END RequestId: id
REPORT RequestId: id
Duration: 453.34 ms Billed Duration: 500 ms Memory Size: 128 MB Max Memory Used: 68 MB
댓글에 네이버 아이디 적어주시면 해결해 주시는분께 감사의 마음으로 5000포인트 보내드리겠습니다 ㅜㅜ
1 답변
-
import json def main(): arrive = 420 pre = 3 def a1(): if arrive > 420: answer1 = 6 elif arrive > 361 and arrive <= 420: answer1 = 6 elif arrive >300 and arrive <= 360: answer1 = 5 elif arrive > 240 and arrive <= 300: answer1 = 4 elif arrive > 180 and arrive <= 240: answer1 = 3 elif arrive > 120 and arrive <= 180: answer1 = 2 elif arrive > 60 and arrive <= 120: answer1 = 1 elif arrive <= 60: answer1 = 1 else : answer1 = 'not exist' return answer1 def a2(): if pre > 0: return pre else: return 'not exist' dic = {} dic['remain'] = a1() dic['pre'] = a2() return { 'statusCode': 200, 'body': json.dumps(dic) } print(main()) //Result {'statusCode': 200, 'body': '{"remain": 6, "pre": 3}'} [Finished in 0.382s]
댓글 입력