본문 바로가기

Storage&CDN/S3

Amazon S3-CloudFront Redirect(IDC Content S3로 이관 시)

[리소스]
AWS S3 원본: leedoing2.s3-website-ap-northeast-1.amazonaws.com
IDC 원본(가정): leedoing.s3-website.ap-northeast-2.amazonaws.com
CF: d1e5lqevy0hhfg.cloudfront.net 
사용자 Request: d1e5lqevy0hhfg.cloudfront.net/test.jpg 
S3 원본에는 test.jpg 파일 없음
IDC 원본에는 test.jpg 파일 존재

[시나리오]
사용자 요청 -> CloudFront -> S3(원본) 
S3(원본)에서는 404/403에 대해 IDC 원본으로 Redirect 302 Response
CF에서는 S3(원본)의 302 Redirect Reponse를 사용자에게 bypass
사용자는 bypass 된 302 Redirect를 따라서 IDC 원본으로 요청

[설정]
S3(원본): Static Host Name 설정 및 Edit Redirect Rules 설정(아래 Config)
참고: http://docs.aws.amazon.com/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html 
<RoutingRules>
    <RoutingRule>
        <Condition>
            <HttpErrorCodeReturnedEquals>

403</

HttpErrorCodeReturnedEquals>
        </Condition>
        <Redirect>
            <HostName>leedoing.s3-website.ap-northeast-2.amazonaws.com</

HostName>
            <ReplaceKeyPrefixWith/>
        </Redirect>
    </RoutingRule>
    <RoutingRule>
        <Condition>
            <HttpErrorCodeReturnedEquals>

404</

HttpErrorCodeReturnedEquals>
        </Condition>
        <Redirect>
            <HostName>leedoing.s3-website.ap-northeast-2.amazonaws.com</

HostName>
            <ReplaceKeyPrefixWith/>
        </Redirect>
    </RoutingRule>
</RoutingRules>

 CF: Origin 설정을 기본 Alias 구조에서 leedoing2.s3-website-ap-northeast-1.amazonaws.com 와 같이 S3의 Web Host Domain으로 변경

[테스트 URL]
http://d1e5lqevy0hhfg.cloudfront.net/test.jpg 시 http://leedoing.s3-website.ap-northeast-2.amazonaws.com/test.jpg 로 Redirect 되어 전달

 

Apache 비교

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ http://hostname%{REQUEST_URI} [R,L]