[AWS] S3와 CloudFront 연동하기

2022. 9. 2. 17:15 AWS/AWS - CloudFront

1. 서비스 소개

AWS S3는 이미 널리 알려진 Storage 서비스입니다.

  • 모든 종류의 데이터를 원하는 형식으로 저장
  • 저장할 수 있는 데이터의 전체 볼륨과 객체 수에는 제한이 없음
  • Amazon S3는 간단한 key 기반의 객체 스토리지이며, 데이터를 저장 및 검색하는데 사용할 수 있는 고유한 객체 키를 할당.
  • Amazon S3는 간편한 표준 기반 REST 웹 서비스 인터페이스를 제공
  • 요금 정책 (링크)
  • 안전하다
S3 FAQ를 참고한 내용이며, 더 자세한 내용은 공식문서에서 확인할 수 있습니다.
 
 
 
AWS CloudFront는 정적, 동적 컨텐츠를 빠르게 응답하기 위한 캐시 기능을 제공하는 CDN 서비스입니다.

 

캐싱을 지원하기 때문에 S3에 저장된 컨텐츠를 직접 접근하지 않아도 되므로 S3의 비용이 감소하며, 더 빠른 응답을 지원하므로 꼭 함께 적용해주는 것이 좋습니다.
  • 애플리케이션과 인프라에 대한 “관문”으로 사용함으로써 중요한 콘텐츠, 데이터, 코드 및 인프라에 대한 주요 공격을 차단
  • 콘텐츠, API 또는 애플리케이션을 SSL/TLS를 통해 전송 가능
  • 특정 콘텐츠에 대한 액세스 제한 가능
  • 가용성 향상 : 캐싱을 통한 Origin의 워크로드를 줄일 수 있음
  • Amazon S3, Amazon EC2 또는 Elastic Load Balancing과 같은 AWS Origin을 사용하는 경우, 이러한 서비스와 CloudFront 간에 전송된 데이터에 대해서는 요금이 청구되지 않음
CloudFront FAQ를 참고한 내용이며, 더 자세한 내용은 공식문서에서 확인할 수 있습니다.
 
2. S3 버킷 생성
이제 S3와 CloudFront를 연동하는 방법에 대해 알아보겠습니다.
 
먼저, IAM을 통해 S3 전용 계정으로 사용하실 것을 권장합니다. ( 참고 )
 
다음으로 S3에 버킷을 생성합니다.
버킷을 생성하는 방법은 간단하므로 자세한 방법은 생략하며, 여기를 참고하시길 바랍니다.
 
3. CloudFront 연동
CloudFront 서비스에 접근합니다.
 
 
1) 배포 생성
create Distribution을 클릭합니다.
 
 
 
2) 배포 방식 선택
배포 방식을 선택해야 하는데, 일반적으로 Web을 선택하면 됩니다. ( 참고 )
  • Web
  • RTMP (Real Time Messaging Protocol)
 
 
 
Get Started 버튼을 누르면 배포에 대한 설정을 해야하는데요.
자세한 설명은 각 항목의 오른쪽 아이콘 또는 공식문서를 보시길 바랍니다.
아래의 내용들은 문서 읽기가 귀찮은 분들을 위해 간단한 설명과 샘플을 제공하는 것일 뿐이며, 공식문서가 잘되어 있으므로 꼭! 공식문서를 보시길 권장합니다.
 
 
3) 배포 설정 (1) - Origin에 대한 셋팅
  • Origin Domain Name
  • Origin Path - ( 선택값 ) 
  • Origin ID
  • Restrict Bucket Access
  • Origin Custom Headers
 
 
 
 
4) 배포 설정 (2) - 캐시에 대한 셋팅
  • Path Pattern
  • Viewer Protocol Policy
  • Allowed HTTP Methods
  • Field-level Encryption Config
  • Cached HTTP Methods
  • Cache Based on Selected Request Headers
  • Object Caching
  • Forward Cookies
  • Query String Forwarding and Caching
  • Smooth Streaming
  • Restrict Viewer Access
  • Compress Objects Automatically ( 참고 )
  • Lambda Function Associations
 

 

5) 배포 설정 (3) - 배포에 대한 셋팅
 
  • Price Class
  • AWS WAF Web ACL
  • Alternate Domain Names(CNAMEs)
  • SSL Certificate
  • Supported HTTP Versions
  • Default Root Object
  • Logging
  • Enable IPv6
  • Comment
  • Distribution State
 
 
 
이상으로 설정을 모두 마치고 Create Distribution 버튼을 클릭하여 배포를 생성합니다.
 
 
 
 
6) 배포 생성

 

배포가 생성되면 좌측의 Distributions을 클릭하여 배포 목록을 확인합니다.

 

 
7) 배포 상태 확인
Status는 In Progress이므로 Edge에 배포되고 있는 상태입니다.
State는 Enabled이므로 CloudFront를 사용하고 있다는 것을 알려줍니다.
 
Deployed는 배포가 완료된 상태이며, 약 10분 정도 소요된 것 같습니다.
 
 
 
 
8) 테스트 - CloudFront 도메인으로 S3 객체 접근
마지막으로 CloudFront에서 기본 할당된 Domain Name(dq582wpwqowa9.cloudfront.net)을 통해 버킷의 객체에 접근해보도록 하겠습니다.
 
 

버킷에 다음과 같이 sample.jpg 파일이 있을 때, 브라우저에서 아래와 같이 요청하면 파일이 다운로드 되는 것을 확인할 수 있습니다.

dq582wpwqowa9.cloudfront.net/sample.jpg

 

 

html 파일이 있다면 html 파일로도 접근이 가능합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>CloudFront 테스트</title>
</head>
<body>
    <h1>Hello World!</H1>
</body>
</html>

dq582wpwqowa9.cloudfront.net/index.html

 

이상으로 CloudFront에 대해 알아보았습니다.

 

[참고 자료]

https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html

http://pyrasis.com/book/TheArtOfAmazonWebServices/Chapter12/02

 

출처 : https://victorydntmd.tistory.com/335?category=682759