본문 바로가기
개발 및 운영/AWS GCP Cloud

CloudFront에 API Gateway를 사용할 때 403 Forbidden 오류 문제

by Joseph.Lee 2021. 11. 3.

CloudFront에서 S3등의 요청은 문제가 없는데 API 요청을 위해 API Gateway를 Origin으로 해서 경로를 등록하면 403 Forbidden 이 뜨는 문제가 발생하였다.

 

stackoverflow 등에서 본 원인과 해결 방안은 아래 내용들이었다.

- API Key 를 설정하지 않아서 그렇다.

api key 를 사용하지 않음으로도 해 보았으며 x-api-key 헤더를 정상적으로 추가해도 동일했다.

- 사용량 계획을 설정하지 않아서 그렇다.

해 보았다... 그래도 동일했다.

 

API Gateway 대신 HTTP Header를 확인할 수 있는 endpoint 로 설정해서 테스트 해 보았더니 이유를 알 수 있었다.

그 이유는 위와 같이 Host 헤더가 origin 의 hostname이 아닌 cloudfront 접속하는 hostname으로 바뀌어 버린 것이었다. 그 이유는 아래와 같이 API 서버로 모든 Query/Header를 전송하기 위해 설정한 AllViewer 정책 때문이었다.

 

"Cache policy and origin request policy (recommended)" 대신에 "Legacy cache settings" 에서 Header 에서 "Host" 를 제외하고 선택하면 된다..

참고로 캐시 정책을 생성하는건 동작하지 않는다.

The parameter Headers contains Authorization that is not allowed.

이런 오류가 난다.

 

참고로.. x-apigw-api-id 를 설정해도 해결되지 않았다.

 

관련 이슈

- https://www.reddit.com/r/aws/comments/op29ad/cloudfront_wrapped_api_gateway_but_dont_pass_host/

반응형

댓글