2016-07-08 1 views
1

이것은 흥미롭고 이상한 요청처럼 보일 수 있지만, API 게이트웨이가 모든 요청에 ​​응답하여 API 계층의 부트 스트랩/라우트 관리자 역할을하도록 가르 칠 수있는 방법이 있는지 궁금합니다. ? 기본적으로 모든 요청 즉./getUser,/getLocation,/getManager는 하나의 API 게이트웨이 엔드 포인트 규칙으로 작성할 수 있습니까?API 게이트웨이를 통한 모든 인바운드 요청의 부트 스트랩

다음은 아이디어입니다. API의 경로와 상관없이 모든 GET 요청은 요청을 구문 분석하고 적절한 대리인 기능을 사용하는 람다 함수로 라우팅됩니다.

비슷한 규칙이 POST, DELETE 및 PUT에 설정됩니다. 따라서 기본적으로 API 게이트웨이는 4-5 개의 등록 된 점을 가지고 있으며 모두 동일한 람다 함수에 매핑됩니다.

저는 게이트웨이 사용에 대한 다양한 패턴/접근 방식에 대한 초기 연구를 진행하고 있으며 이와 같은 요인을 고려할 수 있는지 궁금합니다. 여기에는 장점과 단점이 있지만,이 방법으로 스크립팅 할 수 있는지 알고 싶습니다.

감사합니다.

+0

이 기능이 리버스 프록시와 비슷하지 않습니까? –

+0

현재 API 게이트웨이는이 기능을 지원하지 않습니다. 기능 요청을 제출하려면 AWS 팀에 문의하십시오. –

답변

1

API 게이트웨이에서 요청 경로 매개 변수를 사용할 수 있습니다.

이러한 것과 같은 여러 엔드 포인트를 만들 수 있습니다

GET /{param1} 
GET /{param1}/{param2} 
GET /{param1}/{param2}/{param3} 

이 엔드 포인트 3 경로 개의 매개 변수를 가지고 그 어떤 URL이 일치해야합니다. 이들은 동일한 람다를 호출하도록 구성 될 수 있습니다. 통합 요청 구성에서

, 우리는 (... 우리가 몸 쿼리 문자열에서 데이터를 추가하고 너무 헤더 수) 매핑 템플릿이 같은 것을 사용할 수 있습니다

{ 
    "endpoint": { 
    "path": "/$input.params('param1')/$input.params('param2')/$input.params('param3')", 
    "method": "$context.httpMethod" 
    } 
} 

을 다음 람다에 이벤트에서 우리는 HTTP 메소드와 리소스 경로를 알고 적절한 코드 부분을 실행할 수 있습니다.

장점더 자주 사용 같은 람다로하고 평균 성능을 향상시킬 것입니다. 실제로, 람다에게 연속적인 호출을한다면, chances are that AWS re-use the same container to execute it 그리고 당신은 "워밍업"시간이 필요하지 않습니다. 같은 람다를 사용하면 실행 빈도에 따라 "웜업"비율을 줄여야합니다.

단점느슨한 "microservice"측면의 모든 응용 프로그램이 하나의 람다에 포함 될 수 있기 때문에 람다를 사용이다. 물론 또 다른 단점은 코드 라우팅 규칙을 가지고 람다에서 실행해야한다는 것입니다.

+0

통찰력을 가져 주셔서 감사합니다! 우리의 특별한 용도로는 라우팅 문제를 쉽게 완화 할 수 있으며 예를 들어 마이크로 서비스 개념을 없앨 수 있습니다. 이 문제로 인해 로깅이 더 적게 실행됩니다. b/c 모든 인바운드 요청은 CloudWatch에서 동일하게 처리됩니다. 그것은 흥미있는 옵션이다. – ddibiase

관련 문제