• 『CloudFront』CloudFront란? - 1
    AWS 2022. 7. 12. 15:59

    CloudFront란?

    AWS에서 제공하는 가장 대표적인 CDN서비스중 하나이다.

    CDN서비스를 통해서 전세계로 빠른 배포가 가능하고, S3, LoadBalancer등의 서비스와의 연결을 통해

    서비스를 배포 할 수도 있다.

    또한 캐시, 쿠키, OAI, 전송 헤더값 추가 등의 기능도 같이 제공하고 있기 때문에 배포하는데 있어서 필요한 요소는

    대부분 갖추고 있다.

     

    Cloudfront 캐시제어

    AWS에서는 기본적으로 캐시정책을 제공한다. 종류는 다음과같다.

    • CachingOptimized
    • CachingOptimizedForUncompressedObjects
    • CachingDeiasbled
    • Elemental-MediaPackage
    • Amplify

    CachingOptimized

    캐시 키에 포함된 값을 최소화하여 캐시 효율성을 최적화하도록 설계되었다.

    • 최소 TTL: 1초
    • 최대 TTL: 31,536,000초(365일)
    • 기본 TTL: 86,400초(24시간)
    • 캐시 키에 포함된 헤더: 명시적으로 포함되지 않으며 압축된 객체 캐시 설정이 활성화되어 있기 때문에 정규화된 Accept-Encoding 헤더가 포함된다.
    • 캐시 키에 포함된 쿠키: X
    • 캐시 키에 포함된 쿼리 문자열: X
    • 압축된 객체 캐시 설정: 활성화

    CachingOptimizedForUncompressedObjects

    캐시키에 포함된 값을 최소화해 캐시 효율성을 최적화 하도록 설계되어 있다.

    즉 이전 정책과 동일하지만 압축된 객체 캐시 설정만 비활성화 되어있다.

     

    • 최소 TTL: 1초
    • 최대 TTL: 31,536,000초(365일)
    • 기본 TTL: 86,400초(24시간)
    • 캐시 키에 포함된 헤더: 명시적으로 포함되지 않으며 압축된 객체 캐시 설정이 활성화되어 있기 때문에 정규화된 Accept-Encoding 헤더가 포함된다.
    • 캐시 키에 포함된 쿠키: X
    • 캐시 키에 포함된 쿼리 문자열: X
    • 압축된 객체 캐시 설정: X

    CachingDisabled

    캐싱을 하지 않는다. 동적 컨텐츠, 캐시할 수 없는 요청에서 사용된다.

    • 최소 TTL: 0초
    • 최대 TTL: 0초
    • 기본 TTL: 0초
    • 캐시 키에 포함된 헤더: X
    • 캐시 키에 포함된 쿠키: X
    • 캐시 키에 포함된 쿼리 문자열: X
    • 압축된 객체 캐시 설정: X

    Elemental-MediaPackage

    AWS Elemental MediaPackage 엔드포인트인 오리진과 함께 사용하도록 설계되어 있다.

     

    • 최소 TTL: 0초
    • 최대 TTL: 31,536,000초(365일)
    • 기본 TTL: 86,400초(24시간)
    • 캐시 키에 포함된 헤더:
      • Origin
      •  압축된 객체 캐시 설정이 Gzip에 대해 활성화되어 있기 때문에 정규화된 Accept-Encoding 헤더도 포함된다.
    • 캐시 키에 포함된 쿠키: X
    • 캐시 키에 포함된 쿼리 문자열:
      • aws.manifestfilter
      • start
      • end
      • m

    Amplify

    AWS Amplify에서 오리진과 함께 사용하도록 설계되어 있다.

    • 최소 TTL: 2초
    • 최대 TTL: 600초(10분)
    • 기본 TTL: 2초
    • 캐시 키에 포함된 헤더: 
      • Authorization
      • CloudFront-Viewer-Country
      • Host
      • 압축된 객체 캐시 설정이 활성화되어 있기 때문에 정규화된 Accept-Encoding 헤더도 포함된다.
    • 캐시 키에 포함된 쿠키: 모든 쿠키가 포함된다.
    • 캐시 키에 포함된 쿼리 문자열: 모든 쿼리 문자열이 포함된다.
    • 압축된 객체 캐시 설정: O

    원본 정책 요청

    이것은 간단히 말해 클라이언트가 제공해야하는 값을 말한다.

    클라이언트가 제공하는 값에 따라 다른 결과값을 제공해야하는 어플리케이션일 수 있기 때문이다.

     

    요청할 수 있는 기본 제공 리스트는 다음과 같다.

    • UserAgentRefererHeaders
    • CORS-CustomOrigin
    • CORS-S3Origin
    • AllViewer
    • Elemental-MediaTailor-PersonalizedManifests

    UserAgentRefererHeaders

    • 원본에 포함된 헤더 요청:
      • User-Agent
      • Referer
    • 원본에 포함된 쿠키 요청: 없음
    • 원본에 포함된 쿼리 문자열 요청: 없음

    CORS-CustomOrigin

    • 원본에 포함된 헤더 요청:
      • Origin
    • 원본에 포함된 쿠키 요청: 없음
    • 원본에 포함된 쿼리 문자열 요청: 없음

    CORS-S3Origin

    • 원본에 포함된 헤더 요청:
      • Origin
      • Access-Control-Request-Headers
      • Access-Control-Request-Method
    • 원본에 포함된 쿠키 요청: 없음
    • 원본에 포함된 쿼리 문자열 요청: 없음

    AllViewer

    • 원본에 포함된 헤더 요청: 뷰어 요청의 모든 헤더
    • 원본에 포함된 쿠키 요청: 모두
    • 원본에 포함된 쿼리 문자열 요청: 모두

     Elemental-MediaTailor-PersonalizedManifests

    • 원본에 포함된 헤더 요청:
      • Origin
      • Access-Control-Request-Headers
      • Access-Control-Request-Method
      • User-Agent
      • X-Forwarded-For
    • 원본에 포함된 쿠키 요청: 없음
    • 원본에 포함된 쿼리 문자열 요청: 모두

     응답 헤어 정책

    응답 헤더 정책은 CloudFront가 클라이언트에게 보내는 응답에 HTTP 헤더를 지정 할 수 있다.  종류는 아래와 같다.

    • SimpleCORS
    • CORS-With-Preflight
    • SecurityHeadersPolicy
    • CORS-and-SecurityHeadersPolicy
    • CORS-with-preflight-and-SecurityHeadersPolicy

    SimpleCORS

     

    CORS-With-Preflight

    SecurityHeadersPolicy

     

     CORS-and-SecurityHeadersPolicy

    CORS-with-preflight-and-SecurityHeadersPolicy

     

     

     

     

    OAI란?

    OAI는 Origin Access Identity의 약자로 CloudFront에서만 S3에 접근하는 권한을 주는 것을 말한다.

    즉 사용자는 Cloudfront로 접근하였을 때 S3에 있는 정보를 받아올 수는 있지만 S3로의 직접적인 접근은 불가능하게 해준다.

    OAI를 생성하고 버킷정책 업데이트칸에 체크를하면 자동으로 적용되서 어렵지 않다.

    또한 S3 Bucket OAI 수정시 에러 발생시 Cannoncial User ID 형식으로 변경하여 저장하면 된다.

     

    마치며

    다음에는 Cloudfront에서의 쿠키 그리고 전송 헤더값에 관해서 작성하겠다.

     

    댓글