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/
'개발 및 운영 > AWS GCP Cloud' 카테고리의 다른 글
AWS VPC Endpoint 쓸 때 요금 폭탄 주의!! (0) | 2021.12.03 |
---|---|
[AWS] VPC 내에서 API Gateway 호출 시 Forbidden (1) | 2021.11.17 |
AWS Lambda 에서 인터넷 접속 (0) | 2021.11.16 |
AWS NAT Instance 포트포워딩시 Source IP 유지하기 (0) | 2019.10.26 |
AWS Lambda 기본 (삽질기) (1) | 2019.10.24 |
댓글