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 |