Aws

S3 정적 호스팅 없이 CloudFront S3 호스팅 하기

wngnl05 2024. 12. 27. 14:54

1. S3에 kms를 연결해줍니다.

2. Cloudfront를 생성해줍니다.

CloudFront ( S3 )를 원본으로 생성할때 "원본 액세스" - "원본 액세스 제어 (권장)"을 선택하

Origin Access Control 은 s3로 선택해줍니다.

 

그리고 kms 정책 Statement에 아래 코드를 추가해줍니다.

{
    "Sid": "Decrypy Role",
    "Effect": "Allow",
    "Principal": {
        "Service": "cloudfront.amazonaws.com"
    },
    "Action": "kms:*",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:SourceArn": "<CloudFront ARN>"
        }
    }
}

 

 

다른 방식 Link

CloudFront 함수 만들어서 아래 코드를 적용한다.

/로 접근시 /frontend/index.html로 보내준다.

이를 설정하기 위해서는 s3에 정적 웹 호스팅을 index.html로 작성하고

s3는 앤드포인트를 사용하지 않고 배포하되  Legacy access identities을 생성하여 보킷 정책 업데이트를 해주면 됩니다.

function handler(event) {
    var request = event.request;
    var uri = request.uri;
    // Check whether the URI is missing a file name.
    if (uri.endsWith('/')) {
        request.uri += 'index.html';
    }
    return request;
}