2017-11-07 2 views
1

AWS API 게이트웨이 및 람다 함수 (Python)를 통합 유형으로 사용하여 적절한 http 상태 코드 및 오류 메시지를 설정하는 방법을 이해하는 데 어려움을 겪고 있습니다. 나는 간단한 예제와 함께 일하고 있어요AWS API 게이트웨이, 파이썬 람다 및 HTTP 상태

, 여기에 세부 사항 :

람다 기능

def lambda_handler(event, context): 

    return_json = {} 
    if event["request-number"] == "": 
     raise Exception("Error request-number can't be empty") 
    elif event["request-number"] == "3": 
     raise Exception("Value not accepted") 
    else: 
     return_json = {"service-activated": "TRUE"} 

    return return_json 

API /resourcetest POST

이는 람다와 통합되어 위.

목표 : 메시지 오류 요청 번호를 반환 HTTP 400과 몸은 때 요청 수 = ""비어있을 수 없습니다.

구현 :

  1. 제작 한 내가 오류를 매핑 한 정규식 람다 오류에서 새로운 방법 응답 (400)
  2. * 그래서 잡으려고 몸에서 해당 문자열
  3. . 매핑 템플릿 : application/json으로 콘텐츠 유형을 만들었고 내가 사용한 템플릿 (설정 전에 해시 태그가 있지만이 페이지의 형식이 엉망이므로 생략했습니다) :

    세트 ($ inputRoot = $ input.path ('$')) { "메시지": $ input.json ('. $ ERRORMESSAGE') 은}

  4. 나는 HTTP 상태를 가지고 확인했습니다 방법 응답 400 (나는 그것을 가지고)가 AWS API 게이트웨이 내가 HTTP 400을 가지고 테스트 한 콘솔과 메시지 오류 요청 번호가 비어있을 수 없습니다 통해

테스트 몸에.

enter image description here

내가 HTTP 상태 200 오류 메시지가 제대로 포맷되지 내가 무엇을 가지고하는 것은 우체부와 크롬 플러그인으로 Restlet 클라이언트 및 통해서도 테스트하기로 결정했습니다 : 좋은 내가 원하는 것을 달성

enter image description here

이제 AWS API 콘솔에서 모든 것이 좋고 훌륭합니다. 외부 서비스에서 예상대로 작동하지 않습니다.

비슷한 사람이 있습니까?

감사합니다.

답변

1

API를 재배포 했습니까?

+0

아, 네 말이 맞아. 나는 전개에 대해 생각하지 않고 잘못된 것을 생각해 봤다. Scott 님 감사합니다! – AlessioG

+0

안녕하세요. Alessio –

관련 문제