2016-10-12 6 views
0

실제 배포 된 API의 역방향 프록시로 AWS Api Gateway를 설정하려고합니다. Create and Test an API with HTTP Proxy Integration through a Proxy ResourceAWS API 게이트웨이 - 테스트가 작동하고 배포 된 API 오류. 왜?

나는 내 "테스트"기능을 통해 API를 사용하려고하면이 잘 작동 여기에 설명 된대로 - 나의 이해는 내가 "프록시"리소스를 만든 다음 내 HTTP 엔드 포인트 URL을 지정하여이 작업을 수행 할 것입니다 리소스 편집기. 노출 된 리소스를 GET 메서드를 사용하여 호출하고 성공적인 응답을 볼 수 있습니다. 내가 API 게이트웨이 API를 배포 할 때 나는 더 이상 "호출 URL"을 사용하여 아무것도에 액세스 할 수 있습니다 그러나

, 그것은 나에게 준다 - 나는 단순히 얻을 :

{ 
    "Message": "No HTTP resource was found that matches the request URI 'http://<myuniqueid>.execute-api.eu-west-1.amazonaws.com/api/Sector/100'.", 
    "MessageDetail": "No type was found that matches the controller named 'Sector'." 
    } 

나는 "사용 HTTP 프록시 통합"을 제거하는 경우 확인란을 "통합 요청"에서 작동시킬 수는 있지만 프록시로 작동하지 않는 이유는 무엇입니까?

+0

자세한 내용을 제공해 주시겠습니까? (두 가지 경우 모두 원시 요청/응답과 마찬가지로) 제공 한 오류 메시지가 API 게이트웨이가 아니기 때문에 프록시 자원 유형을 사용할 때 잘못된 응답을 반환하는 엔드 포인트에서 문제가되는 것 같습니다. 프록시 리소스를 사용할 때 추가 헤더가 전송 될 수 있습니다. –

답변

1

이것이 HTTP 프록시 통합과 관련된 알려진 문제로 인한 것 같습니다. HTTP 프록시 통합을 사용하면 API 게이트웨이는 모든 헤더를 HOST 헤더를 포함하여 통합 엔드 포인트로 전달합니다. 기존의 많은 HTTP 끝점은 DNS 이름과 일치하는 HOST 머리글을 사용해야하며이 경우 API 게이트웨이의 HOST 머리글을 통과하면 끝점을 혼동시킬 수 있습니다.

업데이트 :이 문제의 해결 방법을 확인했습니다.

통합 요청에서 "호스트"라는 헤더를 명시 적으로 추가하고이를 통합 엔드 포인트 DNS 이름의 값으로 지정하십시오. 이렇게하면 들어오는 클라이언트 요청에서 지정한 호스트 헤더로 호스트 헤더가 대체됩니다. 이렇게하면 백엔드 끝점이 올바르게 작동 할 수 있습니다.

+0

감사합니다. @MikeD. 이것은 정확히 우리가 겪고있는 문제였습니다. –

관련 문제