행복한 가족, 패밀리그램

개발

CloudFront Function를 이용한 Host Redirect

패밀리그램 2024. 6. 26. 00:52
CloudFront를 이용한 Host Redirect

 

 

배경

 

CloudFront(CF) 잘 쓰고 있었는데 갑자기 Redirect가 필요해졌다. 근데 하필 static website라 nginx나 node 서버에서 Redirect를 못하는 상황.

 

문제 해결 과정

 

처음엔 Route 53 DNS를 바꾸면 되겠지 했는데, 요구사항이 A 사이트에서 B 사이트로 넘어가는 거였다. 중간에 서버가 있었으면 쉬웠을 텐데... 결국 CloudFront Function을 쓰기로 했다.

 

  1. CloudFront Function 생성: CloudFront > 함수에서 cloudfront-js-2.0으로 함수 생성!
  2. 함수 코드 작성: 참고 문서(https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/example-function-redirect-url.html

 

function handler(event) {
    const request = event.request;
    const headers = request.headers;
    if(headers.host) {
        const host = headers.host.value;
        if (host === 'A' || host === 'www.A') {
            const targetHost = host === A' ? AA' : 'www.AA'; 
            const response = {
                statusCode: 301,
                statusDescription: 'Moved Permanently',
                headers: { "location": { "value": `https://${targetHost}${request.uri}` } }
                }

            return response;
        }
        
    }
    return request;
}

 

 

함수 배포 및 연결: 함수 퍼블리시하고, 특정 배포에서 기본 동작 편집해서 "뷰어 요청"에 할당

 

결과

 

CloudFront Function으로 특정 호스트 Redirect 성공! 삽질은 힘들었지만, 결과는 만족스러웠다.