이전 포스팅에서 CI/CD 구축을 설명하며 간단하게 AWS 설정에 대해 짚고 넘어갔지만, CloudFront와 연결 방식은 제대로 설명하지 않아서 따로 포스팅을 하게 되었다.
버지니아 북부에서 생성해야 함! 🌟
로그인 이후 Home 페이지로 갈때, 403 Access Denied 에러가 났다. 찾아보니, 개인별 페이지시에는 CloudFront 가 S3에 없는 객체를 요청한것이 원인이였다.
따라서 CloudFront 오류페이지 탭에서 사용자 정의 오류 응답을 생성한다. 403 에러에 대해서는 200 코드를 반환하게 하고 /index.html을 응답 페이지 경로로 설정하면 해결된다.
일반적인 프론트엔드 프로젝트 배포는 위와 같이 하면된다. CloudFront로 연결하면 S3를 퍼블릭으로 열어두는 것보다 안정성이 보장된다. 그리고 CloudFront가 CDN의 일종이기 때문에, 캐싱된 파일을 가져오는 시간도 줄여줄 것이다.
나는 프로젝트에서 모든 사용자가 접근할 수 있는, PDF 파일 전용 버킷을 따로 만들어야 했다. 이럴때는 어떻게 버킷을 어떻게 설정하면 될까?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::{버킷 이름}/*"
}
]
}
Principal에서 *이 모든 사용자에 대한 접근을 허용한다는 의미.
[
{
"AllowedHeaders": [
"Authorization"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
{허용하는 도메인 주소}
],
"ExposeHeaders": [
"Access-Control-Allow-Origin"
]
}
]
CORS를 설정해야 해당하는 도메인에서 S3버킷을 호출하는 것을 허용한다.
https://whoyoung90.tistory.com/19
https://dbstndi6316.tistory.com/373