Test 를 위한 도메인인 img-ca-sigle.ml 이라는 도메인을 퍼블릭 호스팅 영역에 생성한다. (Cloudfront 는 내부망을 통해 접근이 불가능)
Freenom
먼저 위 사이트에서 원하는 도메인을 무료로 1년 발급 받을 수 있다.
도메인 발급이 성공적으로 되었다면, 위와 같은 화면을 확인할 수 있다.
발급 받은 도메인의 NS를 생성한 Route 53의 NS로 교체한다.
CloudFront가 이미지를 불러올 수 있는 S3 버킷을 한다.
특히, 객체 소유권 및 버킷의 퍼블릭 액세스 차단 설정 유지하고 생성을 권장한다. (Default로 설정이 되어 있음)
테스트를 위한 main.png 파일을 생성한 버킷에 업로드 하였다.
Cloudfront 의 경우 미국 동부 (버지니아 북부) us-east-1 에 ACM 을 생성해야 한다.
대체 도메인 ACM 생성하고, Route 53에 해당 정보를 CNAME으로 매핑을 한다.
기존 발급 받은 ACM 이 검증 대기 중 > 발급됨으로 상태 변경 되면 ACM 설정은 완료가 된다.
S3 버킷의 정보가 들어있는 도메인 선택한다.
S3 버킷은 퍼블릭 액세스 차단 상태이므로 공개가 아닌 OAI ID를 사용을 한다.
대체 도메인 이름을 사용하기 위해 ACM에서 생성한 SSL 인증서 선택. 추가로 언급되지 않은 사항은 Default로 두고 생성 완료.
Route 53의 A 레코드를 통해 CloudFront 의 원본 도메인 정보 등록
# OAI 방식
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin
Access Identity [OAI_ID]"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[S3_BUCKET_NAME]/*"
}
]
}
Cloudfront와 연결된 S3의 정책에는 위와 같이 추가를 해줘야 Cloudfront 에서 S3 에 있는 객체에 접근할 수 있다.
# OAC 방식
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[S3_BUCKET_NAME]/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::Account:distribution/[Cloudfont_ID]"
}
}
}
]
}
2022년 8월 25일 이후로 CloudFront의 원본 S3에 대한 기본(default) 접근 제어방식의 인증 식별자로 활용되던 OAI가 OAC(Origin Access Control)로 변경되었다. (OAI 도 사용가능)
cf-main/main.png S3 버킷 객체 접근 후 정적 이미지 확인