S3 Self-Hosting & Cloud Front 연동

안상운·2025년 3월 18일

AWS

목록 보기
12/12

1. bucket 생성.

2. 정적 웹사이트 호스팅 편집

선택한 bucket-> 속성-> 정적 웹사이트 호스팅 편집.

3. 퍼블릭 액세스 차단 편집

권한 -> 퍼블릭 엑세스 차단 편짐.

3. S3 bucket 정책 생성.

버킷 정책 편집 클릭 후 추가.

{
    "Version": "2012-10-17",
    "Id": "Policy1741655531742",
    "Statement": [
        {
            "Sid": "Stmt1741655528199",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:<본인 것>/*"
        }
    ]
}

4. Cloud Front 설정.

cloud front 서비스 접속.

AWS CloudFront의 캐싱 설정을 나타내는 설정 페이지
CloudFront가 콘텐츠를 캐싱하는 방식과 기간을 조정.


🔍 설정 분석

  1. 헤더, 쿼리 문자열, 쿠키

    • 모두 "없음"으로 설정됨 → CloudFront가 요청을 캐시할 때 헤더, 쿼리 문자열, 쿠키를 고려하지 않음.
    • 즉, 모든 요청이 동일한 캐시된 콘텐츠를 반환함.
    • ✔️ 정적 파일(이미지, JS, CSS 등)에 적합한 설정.
  2. 객체 캐싱 (TTL - Time To Live)

    • 최소 TTL: 0 → 오리진(S3 또는 서버)에서 변경된 파일을 즉시 반영할 수 있도록 설정됨.
    • 최대 TTL: 31536000 초(1년) → 캐시가 1년 동안 유지될 수 있도록 허용됨.
    • 기본 TTL: 86400 초(1일) → CloudFront가 오리진의 Cache-Control 헤더가 없을 때, 기본적으로 1일 동안 캐시 유지.
  3. 캐싱 방식

    • Customize 선택됨 → CloudFront의 TTL 값을 수동으로 조정하는 방식.
    • Use origin cache headers가 아니라 직접 TTL을 설정했으므로, 오리진에서 설정한 캐싱 정책보다 CloudFront의 정책이 우선됨.

📌 이 설정이 의미하는 것

  1. CloudFront가 동일한 요청에 대해 캐시된 콘텐츠를 사용하도록 설정됨.
  2. 최소 TTL이 0이므로, 강제 리프레시(Invalidation)를 하면 즉시 새로운 데이터를 받을 수 있음.
  3. 일반적인 경우 캐시가 1일 유지되지만, 최대 1년까지 유지될 수도 있음 (브라우저가 강하게 캐시할 수 있음).

🚀 이 설정이 적절한 경우

정적 파일(예: 이미지, JS, CSS)을 캐싱하려는 경우
✅ S3에서 제공하는 콘텐츠(변경이 거의 없는 리소스)를 CloudFront로 서빙할 때
CloudFront 캐시 정책을 수동으로 설정하고 싶을 때 (Origin의 Cache-Control 무시)


⚠️ 주의할 점

  • 최소 TTL이 0이므로, CloudFront는 기본적으로 오리진의 변경을 확인하려고 시도할 수 있음.
  • 자주 변경되는 콘텐츠(예: API 응답, HTML 파일 등)에는 적합하지 않을 수도 있음.
  • 만약 변경된 파일을 빠르게 반영하려면 CloudFront Invalidation(무효화 요청)을 수동으로 보내야 함.

성공....!

0개의 댓글