※ S3 실습 - 정적 웹사이트 호스팅

  : 정적 웹 사이트는 백엔드 처리 없이 고정 콘텐츠를 갖는다

  : 원하는 콘텐츠를 업로드하고 공개적인 액세스를 허용해 쉽게 웹 사이트 호스팅 가능

 

 

1. Amazon S3에 버킷 생성

 

1. S3 검색 후 클릭

 

2. 버킷 만들기 클릭

 

3. 기본 설정 후 버킷 만들기 클릭

  : 버킷 이름 설정

  : 기본적으로 모든 퍼블릭 액세스는 차단으로 되어 있다 → 체크 해제할 것

  : 웹사이트에 접근을 위해 퍼블릭 액세스를 허용한다

  : "현재 설정으로 인해 ~" 체크

  : 위의 설정 후 버킷 만들기 클릭

 

 

 

2. 버킷에  콘텐츠 업로드

 

1. 정적 웹사이트 호스팅 설정 활성화

  : 생성된 버킷 이름 클릭

  : 속성 → 정적 웹사이트 호스팅 설정 확인

  : 정적 웹사이트 호스팅 설정 활성화

 

2. 웹사이트 문서 설정

  : 인덱스 문서 = index.html (유동적으로 변경 가능)

  : 오류 문서 = error.html (유동적으로 변경 가능)

  : 변경 사항 저장

 

3. index.html / error.html 파일 업로드

 

 

3. 객체에 대한 액세스 활성화

1. 퍼블릭 액세스 활성화 (Public)

{
    "Version": "2012-10-17",
    "Id": "Policy1692518688678",
    "Statement": [
        {
            "Sid": "Stmt1692518687083",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::hshs3website/*"
        }
    ]
}

 

2. 정적 웹사이트에 접근

  : 속성에서 버킷 웹 사이트 엔드포인트 확인 가능

 

   : 엔드포인트 접속 확인

※ S3 (Simple Storage Service)

  : 객체 스토리지 서비스

  : 웹 기반 AWS Management Console, API 및 SDK 프로그래밍 방식 또는 타사 솔루션 (API/SDK 사용)로 액세스 가능

 

1. 특징

객체 스토리지 서비스

  : 파일을 하나의 객체 단위로 관리

  : 개별 객체는 5TB 초과 불가능, 하지만 객체 수 제한 없이 저장 가능

  : 파일 수정 시 수정한 파일 전체를 다시 업로드 해야함

 

내구성 99.9999999%

  : 파일 업로드 시 최소 3개의 가용영역에 복제본을 만든다 (내구성이 높은 이유)

  : 높은 내구성, 가용성, 신뢰성

 

이벤트 트리거

  : 특정 버킷(S3)으로 객체의 이벤트가 발생할 경우 자동알림 기능을 설정 가능

  : 알림은 사용자에게 전송되거나 Lambda 스크립트와 같은 다른 프로세스를 트리거하는 데 사용할 수 있다

 

스토리지 클래스 분석

  :  스토리지 액세스 패턴을 분석해 데이터를 올바른 스토리지 클래스로 이전 가능

 

S3 데이터 전송 방식

  : 콘솔, AWS CLI 또는 API를 사용해 전송

  : S3 버킷에 업로드

  : AWS DataSync를 이용해 전송

  : AWS Transfer for SFTP 이용해 전송

 

→ AWS DataSync = 온프레미스 스토리지와 S3 또는 EFS 간 데이터 이동을 쉽게 자동화할 수 있는 데이터 전송 서비스

 

멀티파트 업로드

  : 멀티파트 업로드 사용 시 대용량 객체를 관리 가능한 파트로 분할하여 업로드

  : [ 멀티파트 업로드 프로세스 ]

    : 업로드 시작 → 객체 파트 업로드 → 멀티파트 업로드 완료

  : 멀티파트 업로드 요청이 완료되면 S3가 개별 조각으로부터 전체 객체를 다시 생성

  : [ 멀티파트 업로드의 이점 ]

    : 개선된 처리량

    : 네트워크 문제로부터 빠른 복구

    : 객체 업로드 일시 중지 및 재개

    : 최종 객체 크기를 알기 전에 업로드를 시작

    : 대용량 객체를 업로드

 

Transfer Acceleration

  : 전 세계에 분산된 AWS CloudFront의 엣지 로케이션을 통해 S3 버킷의 빠르고 간편한 데이터 전송을 지원

  : 최적화된 네트워크 경로를 통해 S3로 라우팅된다

  : [ Transfer Acceleration 사용사례 ]

    : 전 세계 각지에서 중앙의 버킷으로 업로드하는 고객이 있는 경우

    : 전 세계에서 정기적으로 기가바이트 또는 테라바이트 규모의 데이터를 전송하는 경우

    : 인터넷을 통해 S3로 업로드할 때 사용 가능한 대역폭을 충분히 활용하지 못하는 경우

 

S3 버전 관리

  : 버전 관리 기능 사용 시 실수로 삭제하거나 덮어쓴 객체를 복구할 수 있다

  : 영구적 제거가 아닌 삭제하는 경우 S3는 삭제 마커를 삽입해 현재 버전으로 표시

  : 객체를 덮어쓴 경우 버킷에 새 객체 버전 생성

  : 이전 버전으로 복원 가능

 

 

2. 스토리지 클래스 (Storage Class)

  : 스토리지 액세스 패턴에 따라 운영 비용을 최적화할 수 있는 선택지

  : S3 Standard → S3 Glacier Deep Archive로 갈수록 저장비용 ↓, 요청비용 ↑

 

S3 Standard

  : 자주 액세스하는 데이터

  : 짧은 지연 시간과 높은 처리량 제공

 

S3 Standard - IA

  : 자주 액세스하지 않지만 필요할 경우 빠르게 액세스가 필요한 데이터

  : IA = Infrequent Access

  : S3 Standard와 동일한 짧은 지연 시간과 높은 처리량 제공

  : 백업 및 재해 복구 파일용 데이터 스토어에 이상적이다

 

▶ S3 One Zone - IA

  : 자주 액세스하지 않지만 필요할 경우 빠르게 액세스가 필요한 데이터

  : 단일 AZ에 데이터를 저장

  : 단일 AZ로 인해 S3 Standard - IA 에 비해 20% 비용 감소

  : S3 Standard와 동일한 짧은 지연 시간과 높은 처리량 제공

 

▶ S3 Glacier

  : 데이터 액세스 빈도가 매우 낮고 저렴한 스토리지 비용이 필요한 데이터

  : 검색 지연 시간이 시간단위도 허용이 되는 데이터를 저장

  : S3 Glacier는 S3 와 별개로 관리 콘솔 제공

  : S3 Glacier 작업에서는 CLI 사용 또는 코드를 작성해야함

  : 데이터 업로드 시 AWS CLI 사용 혹은 REST API, AWS SDK 사용해 요청 코드를 작성해야함

  : [ 검색 옵션 3가지 ] 

    : 신속 = 보통 1 ~ 5분 이내 완료

    : 표준 = 보통 3 ~ 5시간 이내 완료

    : 대량 = 보통 5 ~ 12시간 이내 완료

  : [ S3 Glacier 아카이브 및 저장소 ]

    : 아카이브 = 사진, 동영상, 문서 등 저장소에 저장한 모든 객체, S3 Glacier 내 스토리지의 기본 단위

    : 각 아카이브는 고유 ID가 있으며 아카이브를 업로드 시 S3 Glacier가 아카이브 ID가 포함된 응답을 반환

    : 아카이브 ID는 아카이브가 저장된 리전에서 고유함

    : 저장소 = 아카이브를 저장할 수 있는 컨테이너

    : 저장소를 생성할 때 저장소 이름과 리전을 지정해야 함

    : 저장소 잠금 기능 정책을 통해 규정 준수를 강화

 

▶ S3 Glacier Deep Archive

  : 7-10년 동안 유지되는 데이터의 장기 보관을 위해 설계된 최저 비용 스토리지 클래스

  : 12시간 이내 검색 가능

 

S3 Intelligent-Tiering

  : 변화하는 액세스 패턴으로 데이터의 스토리지 비용 자동 최적화

  : 변경된 스토리지 클래스로 요금이 측정된다

  : Frequent Access 및 Infrequent Access 티어는 S3 Standard와 동일한 짧은 대기 시간과 높은 처리 성능 제공

  : Frequent Access 및 Infrequent Access에 최적화된 2개의 액세스 티어에 객체 저장

  : Archive Access 및 Deep Archive Access 티어는 Glacier 및 Glacier Deep Archive와 동일한 성능 제공

  : 드물게 액세스되는 객체에 대해서는 선택적인 자동 비동기 아카이브 기능 활성화

  : 객체가 S3 Intelligent-Tiering 내의 액세스 티어 간에 이동할 경우 운영 오버헤드, 검색 요금 및 추가 요금 없음

 

 

3. S3 액세스 제어

액세스 제어 - 일반

  : 기본적으로 모든 AWS S3 리소스 (버킷, 객체 및 관련 하위 리소스)는 비공개

  : 리소스를 생성한 AWS 계정인 리소스 소유자 및 루트 사용자만 해당 리소스에 액세스 가능

  : 소유자는 액세스 정책을 작성해 다른 사람에게 액세스 권한 부여 가능

  : 그리고 "퍼블릭 액세스" 기능을 통해 S3에 대한 액세스 설정 가능

 

액세스 제어 - 버킷 정책

  : S3 버킷에서 정책을 추가해 다른 AWS 계정 또는 사용자에게 저장된 객체에 액세스하도록 허용 가능

  : 버킷 정책은 ACL 액세스 정책을 보완 또는 이를 대체 가능

  : 버킷 정책은 20KB로 제한

 

▶ 액세스 제어 - CORS (Cross Origin resource Sharing)

  : 한 도메인에서 로드되어 있는 클라이언트 웹 애플리케이션이 다른 도메인의 리소스와 상호 작용하는 방법 정의

  : 자바 스크립트코드나 CSS 코드들을 참조 가능하게 허용해주는 방법

 

 

액세스 포인트

  : 공유 버킷에 대한 액세스를 관리하기 위해 수백 개의 애플리케이션에 대한 액세스를 제어하는 단일 버킷 정책이 필요

  : 하나의 S3에 여러 개의 액세스 포인트를 만들고 각각에 정책문서를 다르게 적용시키는 것

  : 고객이 각 액세스 포인트의 고유한 액세스 제어 정책을 생성해 공유 데이터 집합의 액세스를 손쉽게 제어 가능

  : 모든 액세스 포인트는 고객의 프라이빗 네트워크 내 S3 데이터 액세스에 대한 방화벽 구축을 위해 VPC로 제한 가능

  : AWS 서비스 제어 정책을 사용하여 모든 액세스 포인트를 VPC로 제한 가능

  : S3 액세스 포인트는 모든 리전에서 추가 비용 없이 사용 가능

 

 

4. 수명 주기 정책

  : 운영자가 버킷 액세스 패턴을 분석하여 클래스를 지정할 때 클래스가 자동으로 변경가능하게 설정하는 기능

  : 객체마다 또는 버킷마다 수명 주기 규칙을 설정가능

  : 보관 기간이 끝날 경우 삭제해주는 기능도 있다

 

5. 비용

비용 종류

  : 저장 비용 = 월별 GBytes

  : 전송 비용 = 다른 리전 또는 인터넷으로 전송

  : 요청 비용 = PUT, COPY, POST, LIST 및 GET 요청

 

비용 지불할 필요 없는 경우

  : S3로 수신

  : 동일한 리전 내 EC2 또는 CloudFront로 전송

 

  : https://aws.amazon.com/ko/s3/pricing/

 

Amazon S3 Simple Storage Service 요금 - Amazon Web Services

S3 버킷에 객체를 저장하는 비용을 지불합니다. 부과되는 요금은 객체의 크기, 해당 월에 객체를 저장한 기간, 스토리지 클래스에 따라 다르며, 스토리지 클래스에는 S3 Standard, S3 Intelligent-Tiering,

aws.amazon.com

+ Recent posts