API Gateway+Lambda(Python)의 REST API를 통한 상태 코드 관리
5179 단어 PythonlambdaAPIGatewayAWS
API Gateway+Lambda(Python)의 REST API가 있지만 물감으로 만들어져 처리 오류가 전혀 없다.
모두 상태 코드 200으로 되돌려주고, 매개 변수로 잘못된 건지 설정하는 방법은 간단한 것 같지만, 개인이 불편해 상태 코드를 잘 사용하려고 합니다.
AWS 초보자인 저에게는 상당히 복잡하기 때문에 기억해야 합니다.
자신의 최선의 실천이 될 생각이지만 일반적인 최선의 실천 방법이 있다면 반드시 논평해 주십시오.
결론
먼저 대략적인 결론부터 시작하다.
API Gateway 설정
API Gateway 설정
메소드 응답에 상태 코드 추가

그게 다야.간단해.
이번에 400 추가됐어.(200은 기본값)
종합 응답에 상태 코드에 대응하는 맵을 추가합니다
값
Lambda 오류 정규 표현식
^\[400\].*
템플릿 매핑 Content-Type
application/json
템플릿 JSON 컨텐츠 매핑
{"errorMessage": "\$input.path('$.errorMessage')"}

저장하면 일치하는 템플릿을 설정할 수 있습니다.

정규 표현식은 [400]로 시작하는 errorMessage와 일치합니다.
일치 템플릿은 응답에서만 "errorMessage"를 설정합니다.
이렇게 되면 쌓인 흔적도 생길 거예요.
이 근처는 당신의 취향에 따라 설정하세요.
이렇게 설정하면...
{
"errorMessage": "[400] バリデーションエラー",
"errorType": "Exception",
"requestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"stackTrace":[
"hogehoge"
]
}
Lambda의 응답이 감지되면 상태 코드가 400이 됩니다.{
"errorMessage": "[400] バリデーションエラー"
}
반납하겠습니다.설정을 삽입하면 API 프로그램을 통해 반영됩니다.
Lambda가 할 일.
매핑에 맞는 "errorMessage"반환
raise Exception('[400] バリデーションエラー')
이렇게 하면 예외적으로 필요한 다음과 같은 반응만 생길 뿐이다.(위에 적힌 그 사람의 반응과 같다){
"errorMessage": "[400] バリデーションエラー",
"errorType": "Exception",
"requestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"stackTrace":[
"hogehoge"
]
}
결실API 요청 결과는 다음과 같습니다.

이것은 내가 하고 싶은 형식이다.
또 램바다 쪽에서 독자적인 예외를 만들어내는 게 좋을 것 같다.
Reference
이 문제에 관하여(API Gateway+Lambda(Python)의 REST API를 통한 상태 코드 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kuribo2110/items/82b069f51ef499eb2ac6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)