API Gateway+Lambda(Python)의 REST API를 통한 상태 코드 관리

배경.
API Gateway+Lambda(Python)의 REST API가 있지만 물감으로 만들어져 처리 오류가 전혀 없다.
모두 상태 코드 200으로 되돌려주고, 매개 변수로 잘못된 건지 설정하는 방법은 간단한 것 같지만, 개인이 불편해 상태 코드를 잘 사용하려고 합니다.
AWS 초보자인 저에게는 상당히 복잡하기 때문에 기억해야 합니다.
자신의 최선의 실천이 될 생각이지만 일반적인 최선의 실천 방법이 있다면 반드시 논평해 주십시오.
결론
먼저 대략적인 결론부터 시작하다.
API Gateway 설정
  • 메소드 응답에 상태 코드 추가
  • 종합 응답에 상태 코드에 대응하는 맵을 추가합니다
  • Lambda가 할 일.
  • 매핑에 맞는 "errorMessage" 반환
  • 모색할 때는 힘들지만 결론은 얼마나 간단한가
    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 요청 결과는 다음과 같습니다.

    이것은 내가 하고 싶은 형식이다.
    또 램바다 쪽에서 독자적인 예외를 만들어내는 게 좋을 것 같다.

    좋은 웹페이지 즐겨찾기