Question

랜딩 사이트( https://example.us )를 s3 로 정적 사이트 서빙하고 그 앞에 CloudFront를 연결했습니다. 이 때, 접속하는 사용자의 위치에 따라서 보여지는 페이지를 다르게 구성하려고 합니다. 해당 부분에 대한 설정 방법을 알려주시면 감사하겠습니다.


Answer

정적 웹사이트에 대하여 사용자가 접속하는 위치에 따라 제공하는 페이지를 다르게 구성하는 방법에 대해 설명드리도록 하겠습니다.


문의하여 주신 end-user를 국가 별 URL로 리디렉션 하는 것은 Amazon CloudFront 함수를 통해 하실 수 있습니다. 



========== 

(해당 예제에서 말하는 'CloudFront-Viewer-Country 헤더 추가'는 적용되어야 합니다.) 

원하시는 결과가 나올 수 있도록 해당 예제를 조금 변경하여 코드를 만들어 봤습니다.



function handler(event) 
{
     var request = event.request;
     var headers = request.headers;
     var host = request.headers.host.value;
     var country = 'KR' // Choose a country code
     var newurl = `https://${host}/en/index.html` // Change the redirect URL to your choice
     if (headers['cloudfront-viewer-country'])
     {
        var countryCode = headers['cloudfront-viewer-country'].value;
        if (countryCode !== country) {
            var response = {                 
                statusCode: 302,
                statusDescription: 'Found',
                headers:
                "location": { "value": newurl }
                    }
                }
                return response;
            }
        }
        return request; 
    



Reference


[1] 최종 사용자를 새 URL로 리디렉션 - https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/example-function-redirect-url.html