Amazon S3 데이터를 안전하고 내구성 있게 저장할 있는 스토리지 서비스이며, Amazon CloudFront 세계 사용자에게 콘텐츠를 빠르고 안전하게 전달하는 CDN 서비스입니다. 둘은 함께 사용될 애플리케이션의 성능과 안정성을 크게 향상시킬 있습니다.

 

Amazon S3

Amazon S3는 인터넷 스토리지 솔루션으로, 개발자들이 웹에서 대용량 데이터를 저장하고 검색할 수 있도록 설계되었습니다. 사용자는 데이터를 '버킷'이라는 단위로 저장하고, 각 버킷은 고유한 이름을 가집니다. S3는 거의 무제한의 스토리지를 제공하며, 데이터의 안전성과 내구성을 보장합니다. S3는 정적 웹 호스팅, 백업 및 복구, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 다양한 사용 사례에 적합합니다.

  • Amazon S3는 AWS에서 제공하는 안전하고 내구성이 뛰어난 객체 스토리지 서비스입니다.
  • 데이터를 '객체'로 저장하며, 각 객체는 고유한 키를 통해 식별됩니다. 이러한 객체는 '버킷'이라는 이름의 컨테이너 안에 저장됩니다.
  • 각 객체에는 데이터 외에도 메타데이터를 포함할 수 있습니다.
  • 또한, S3는 파일의 버전 관리를 지원합니다. 이를 통해 객체를 실수로 삭제하거나 수정한 경우 이전 버전으로 복원할 수 있습니다.
  • 데이터를 저장할 때에는 다양한 스토리지 클래스를 선택할 수 있습니다. 예를 들어, 자주 접근하지 않는 데이터를 저렴한 비용으로 저장하려면 S3 Standard-IA (Infrequent Access) 또는 S3 One Zone-IA를 선택할 수 있습니다.
  • S3 또한 데이터 보호를 위한 다양한 기능을 제공합니다. 예를 들어, 버킷 정책을 통해 데이터의 액세스를 제한할 있으며, S3 서버 암호화를 사용하여 데이터를 암호화할 있습니다.

Amazon CloudFront

Amazon CloudFront는 AWS의 콘텐츠 전송 네트워크(CDN) 서비스입니다. CloudFront는 사용자에게 빠르고 안전하게 데이터, 비디오, 애플리케이션, API 등을 전달하도록 최적화되어 있습니다. CloudFront는 전 세계적으로 배포된 엣지 로케이션에서 콘텐츠를 캐시하여 사용자에게 더 빠른 응답 시간과 높은 전송 속도를 제공합니다. 또한, DDoS 공격과 같은 보안 위협으로부터 콘텐츠를 보호하기 위한 기능들을 제공합니다.

  • Amazon CloudFront는 AWS의 콘텐츠 전송 네트워크 (CDN) 서비스입니다.
  • CDN은 사용자에게 빠른 전송 속도를 제공하기 위해 전 세계의 여러 위치에 콘텐츠를 캐시하는 네트워크입니다. 사용자의 요청이 CDN의 가장 가까운 엣지 로케이션으로 라우팅되므로, 사용자는 더 빠른 응답 시간과 높은 전송 속도를 경험할 수 있습니다.
  • CloudFront는 HTTP와 HTTPS를 모두 지원하며, 동적 웹 사이트, 정적 웹 사이트, 스트리밍 비디오, 웹 애플리케이션, API 등 다양한 콘텐츠를 전송할 수 있습니다.
  • CloudFront는 또한 다양한 보안 기능을 제공합니다. 예를 들어, AWS Shield를 사용하여 DDoS 공격을 방어하거나, AWS Certificate Manager를 사용하여 SSL/TLS 인증서를 무료로 제공받을 수 있습니다.
  • 사용자가 처음 콘텐츠를 요청할 때 CloudFront는 콘텐츠의 원본 위치 (예: Amazon S3 버킷, EC2 인스턴스, ELB 로드 밸런서 등)에서 콘텐츠를 가져와 사용자에게 제공하고, 그 콘텐츠를 가까운 엣지 로케이션에 캐시합니다. 다음 번에 같은 콘텐츠가 요청되면 CloudFront는 원본 위치에서 콘텐츠를 다시 가져오지 않고 캐시된 콘텐츠를 바로 제공합니다. 이런 방식으로 사용자의 응답 시간을 크게 줄일 수 있습니다.
  • CloudFront는 콘텐츠를 캐시하는 동안에도 세밀한 제어를 제공합니다. 예를 들어, 콘텐츠의 캐시 된 버전을 업데이트하거나 삭제할 수 있습니다. 또한 TTL(Time to Live)을 설정하여 캐시된 콘텐츠가 얼마나 오래 저장될지를 지정할 수 있습니다.
  • CloudFront는 원본 서버에 대한 요청을 줄이므로 원본 서버의 부하를 줄이는 효과도 있습니다. 이는 트래픽이 급증하는 상황에서 원본 서버를 보호하는 데 도움이 될 수 있습니다.
  • AWS WAF(Web Application Firewall) 함께 사용하여 보안을 강화할 수도 있습니다. WAF SQL 삽입, XSS 공격 애플리케이션을 대상으로 일반적인 공격을 차단할 있습니다.

 


 

CORS(Cross-Origin Resource Sharing) 페이지의 리소스가 자신의 출처(도메인, 프로토콜, 포트) 다른 출처의 리소스를 요청할 있도록 하는 메커니즘입니다. 이것은 애플리케이션의 보안을 강화하기 위한 것인데, 동일 출처 정책(Same-Origin Policy) 따르면 애플리케이션은 동일 출처의 리소스만 요청할 있습니다. CORS 이를 유연하게 하여 다른 출처의 리소스를 안전하게 요청할 있도록 합니다.

 

1. Amazon S3에서 CORS 설정:

어떤 출처가 버킷의 리소스에 액세스할 수 있는지, 어떤 HTTP 메서드(GET, PUT, POST, DELETE 등)를 사용할 수 있는지 정책 설정 

 

2. Amazon CloudFront에서 CORS 설정:

  • HTTP 헤더 전달: CloudFront가 원본 서버에 요청을 보낼 때 CORS 관련 HTTP 헤더를 전달해야 합니다. 이를 위해 CloudFront 배포 설정에서 "Origin Request Policy"를 수정하여 "Access-Control-Request-Headers", "Access-Control-Request-Method", "Origin" 등의 HTTP 헤더를 전달하도록 설정할 수 있습니다.
  • request header에 Origin을 설정
  • 요청을 넣을때에 request header 에 Origin을 넣으면 response header에 access-control-allow-origin 을 넣어 내려보내준다.
  • Cloudfront는 중간다리 역할이라서 원본에게 요청을 보내는 Request 세팅도 할 수 있고, Cloudfront에 접근하는 쪽(주로 클라이언트)에 응답을 하는 Response 세팅도 할 수 있다

 

'Infra' 카테고리의 다른 글

TCP/IP stack (4 Layers)  (0) 2023.06.15
OSI model (7 Layers)  (0) 2023.06.14
EC2, CodeDeploy pt.2  (0) 2023.05.24
EC2, CodeDeploy pt.1  (0) 2023.05.24
Route 53, Elastic Load Balance(ELB)  (0) 2023.05.24