AWS Cloudfront와 S3 연동하기

GY·2022년 9월 12일
1

AWS

목록 보기
1/1
post-thumbnail

AWS S3

S3 (Simple Storage Service)
Storage 서비스로, 모든 종류의 데이터를 원하는 형식으로 저장할 수 있습니다.
간단한 Key 기반의 객체 스토리지로, AWS에서 정적 리소스를 다룰 때 가장 권장하고 있는 방법입니다.

S3의 장점

  1. 데이터 저장공간의 유연성

  2. 데이터 다운로드 가능

  3. 접근 권한 설정 가능

  4. 표준 Interface 사용


클라이언트에서 S3 직접 접근

회사에서 진행하고 있는 프로젝트에서,
클라이언트에서 S3버킷에 파일을 업로드하고 각 객체 URL을 통해 호출하고 있었습니다.


문제

클라이언트에서 S3를 직접 접근할 경우 캐싱 기능이나 보안 측면에서 한계가 있습니다.
AWS가 제공하는 Contents Delievery Network인 Cloudfront를 사용해 S3데이터를 좀 더 효율적으로 전송하는 방법에 대해 알아보고 적용하려 합니다.

CDN?


CDN

콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장해 제공하는 시스템

주요 ISP(Internet Services Provider)의 CDN서버에 콘텐츠를 분산시키고,
유저의 네트워크 경로 상 가장 가까운 곳의 서버로부터 콘텐츠를 전송받도록 해 트래픽이 특정 서버에 집중되지 않고 각 지역 서버로 분산되도록 하는 기술을 말합니다.


CloudFront

AWS CloudFront는 정적, 동적 컨텐츠를 빠르게 응답하기 위한 캐시 기능을 제공하는 CDN 서비스입니다.
Cloundfront는 Edge Location이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠 서비스를 제공합니다.
아래와 같이 전 세계 여러곳에 Edge Server를 갖고 있죠.


Client가 S3 컨텐츠를 직접 접근하지 않고 CloudFront를 통해 S3에 접근할 때의 이점

  1. 콘텐츠 캐싱을 통한 빠른 응답

  2. 웹 사이트의 보안 개선


1. 콘텐츠 캐싱을 통한 빠른 응답

Edge 서버를 사용해 콘텐츠를 캐싱하고 서비스를 제공하면 최종 사용자가 위치한 곳에 더욱 가깝게 콘텐츠를 전송할 수 있어 성능이 향상됩니다.

어떻게 성능이 향상되냐 하면...

  1. 사용자가 CloudFront를 통해 콘텐츠를 요청하면, 가까운 곳의 Edge Location으로 라우팅됩니다.
  2. 이 때 CloudFront에 요청된 파일에 대한 캐시 사본이 있으면 CloudFront에 의해 해당 사본을 사용자에게 빠르게 전송합니다.
  3. 만약 CloudFront에 캐싱되어 있지 않은 파일이라면, 히당 파일이 저장된 S3에서 원본 파일을 가져옵니다.

즉,

처음: 사용자 > CloudFront > S3
캐싱 이후: 사용자 > CloudFront

즉, CloudFront는 콘텐츠를 Edge Location에 캐싱하기 때문에 S3 버킷에 대한 부하를 줄일 수 있고, 콘텐츠를 요청하는 사용자에게도 빠르게 응답할 수 있습니다.


2. S3에 대한 액세스 제한 강화

CloudFront를 이용해 S3에 접근하게 되면 S3에 대한 액세스 제한을 강화할 수 있습니다.
예를 들어 Cloudfront를 사용하면 지리적 제한, 서명된 URL, 서명된 쿠키 등을 통해 액세스 제한을 추가로 설정해 좀 더 상세한 기준에 따라 액세스 권한을 부여할 수 있습니다.

Origin Access Identity (OAI)

CloudFront의 보안기능 중 하나로, S3 버킷 및 콘텐츠에 대한 액세스를 CloudFront와 CloudFront가 실행하는 작업으로 제한합니다.



Reference

profile
Why?에서 시작해 How를 찾는 과정을 좋아합니다. 그 고민과 성장의 과정을 꾸준히 기록하고자 합니다.

0개의 댓글