Amazon S3

2023. 4. 5. 14:16AWS (Amazon Web Services)

※ 해당 블로그는 AWS에서 제공하는 설명서와 AWS Builders Online Series 강의를 듣고 개인적으로 공부한 내용을 정리한 블로그입니다.

 

Amazon S3(Simple Storage Service)?

  • 클라우드 기반 범용적인 스토리지 서비스
  • 데이터는 *버킷(bucket)내의 객체 단위로 저장
  • 원하는 양의 데이터를 저장하고 보호 
  • 높은 가용성을 보장하고 키 기반 액세스를 제공
  • *다양한 스토리지 클래스 제공
  • Global File System
  • 3개 이상의 zone에 분산해서 저장 : 재해 또는 재난에 대비 하기 위해 분산 저장
  • zone : 가상의 데이터센터, 실제 데이터센터의 일부를 빌린뒤 가상화도구(vmware, virtualbox 등)를 활용해서 만듦

 

*버킷(bucket)

- S3에서 데이터를 저장하는 기본 단위

- 버킷 이름은 전 세계적으로 고유하게 설정 해야함 (중복된 이름을 가진 버킷은 없음)

- 버킷 내에는 객체라는 개별 파일 저장 가능

- 객체는 데이터와 메타데이터로 구성되며 크기 제한은 없음

- 객체의 메타데이터는 HTTP 헤더로 전송되며 객체를 검색하거나 관리하는 데 사용 가능

- 예) 메타데이터에 해당 객체에 대한 정보(사용자 ID, 생성 날짜 등)를 추가 하는 경우

 

*다양한 스토리지 클래스

1. S3 Standard

- 최소 3개 이상의 가용영역

- 데이터에 대한 높은 가용성과 내구성을 제공

- 잦은 액세스가 예상되는 경우에 적합

- 비교적 높은 비용

 

2. S3 Standard-Infrequent Access(IA)

- 최소 3개 이상의 가용영역

- S3 Standard 스토리지 클래스와 동일한 내구도와 가용성을 제공

- 액세스 빈도가 낮은 경우에 적합

- 데이터 검색 비용 발생

 

3. S3 Intelligent-Tiering

- 최소 3개 이상의 가용영역

- 액세스 빈도에 따라 가장 비용 효율적인 액세스 티어로 데이터를 자동으로 이동시켜 스토리지 비용을 자동을 절감해주는 스토리지

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

- Infrequent Access, Archive Instant Access 티어는 스토리지 비용을 최대 각각 약 40%, 68% 절약 가능 

 

4. S3 One Zone-Infrequent Access(IA)

- 단일 가용영역

- 데이터를 단일 가용영역 내에 저장하기 때문에 데이터 복원이 불가능한 애플리케이션에 적합하지 않음

- 데이터 재생산이 가능하거나 복원에 시간적 여유가 있는 애플리케이션에 적합

- S3 Standard-Infrequent Access(IA)보다 약 20% 저렴

 

5. S3 Glacier

- 최소 3개 이상의 가용영역

- 장기간 사용하지 않는 데이터, 즉 장기 보관에 적합

- 실시간 액세스를 지원하지 않으며 데이터에 액세스 하기 위해서는 복원 작업을 선행 해야함

- 비용은 저렴하나 데이터 검색에 추가 비용 발생

 

6. S3 Glacier Deep Archive

- 최소 3개 이상의 가용영역

- S3 Glacier 스토리지 클래스보다 더 저렴한 비용으로 데이터 보관 가능

- 장기 보관에 적합

 

Amazon S3 생성

 

1. 버킷(Bucket) 생성

 

1.1 일반 구성

버킷 이름은 AWS 리전에서 유일한 이름이여야 함

기존 버킷의 설정을 복사 할 수도 있음

 

 

1.2 객체 소유권

객체에 액세스 할 수 있는 계정을 결정

ACL(Access Contrl List) 활성화 여부를 통해 결정

ACL 비활성화 : 버킷의 모든 객체는 버킷 생성자 계정이 소유, 다른 계정은 액세스 불가

다만 IAM 정책 또는 버킷 정책을 사용하여 해당 객체에 액세스 할 수 있는 권한을 부여 할 수 있음

 

 

ACL 활성화 : 버킷의 객체를 다른 계정에서도 소유 할 수 있으며 이는 ACL를 사용하여 지정 할 수 있음

S3에서 객체가 생성될 때 기본적으로 객체 라이터(writer), 즉 객체를 업로드한 사용자가 객체의 소유자가 됨

하지만 객체를 업로드한 사용자가 다른 AWS 계정의 IAM 사용자일 경우 기본적으로 객체를 업로드한 사용자가 객체 소유자가 됨

버킷이 생성될 때 bucket-owner-full-control ACL을 지정하면 해당 버킷에 업로드 되는 모든 객체는 버킷의 소유가 됨

 

 

1.3 퍼블릭 액세스 차단 설정

외부(인터넷)로부터 객체에 액세스 하는 것을 차단하는 설정

각각의 4개의 설정은 독립적이며 모든 퍼블릭 액세스를 차단할 경우 어떠한 경우에도 외부로부터의 접근을 차단

 

 

해당 실습에서는 외부로부터의 접근을 허용해줄 것이기 떄문에 하위 두개의 옵션만 차단하도록 설정 (ACL 제어를 통해 접근 허용)

 

 

상위 두개의 옵션을 차단할 경우 ACL 제어를 통해서도 접근을 허용 시켜줄 수 없음

S3 권한 설정에 대한 자세한 내용은 다음 링크를 참조 - Amazon S3 권한 설정 (tistory.com)

 

1.4 버킷 버전 관리

활성화 시 버킷에 저장된 객체의 여러 버전을 관리하여 문제가 발생 하거나 원할 때 이전 버전으로 되돌리는 것이 가능

 

 

1.5 기본 암호화

서버 측 암호화를 모든 버킷 암호화의 기본 수준으로 적용

Amazon S3 관리형 키(SSE-S3) 또는 AWS KMS를 사용하여 암호화 가능하며 SSE-S3의 경우 무료지만 AWS KMS은 비용이 발생

 

 

2. 생성된 버킷 확인

 

 

3. 버킷내에 폴더 생성

버킷내에 바로 객체를 업로드 할 수 있지만 객체들을 구분지어 효율적으로 관리해주기 위해 폴더를 생성

폴더 안에 또다른 폴더 생성 가능

 

 

4. 업로드

생성한 폴더 내에 파일 업로드

 

 

4.1 파일 및 폴더

 

 

4.2 대상

객체가 업로드 되는 버킷에 대한 정보

 

 

4.3 권한

다른 계정에 액세스 권한을 부여하는 단계로 기본 설정은 사전 정의된 ACL을 사용하고 객체 소유자만 읽고 쓸수 있도록 프라이빗으로 설정되어 있음

 

 

4.4 속성

스토리지 클래스, 암호화 설정, 태그 등을 지정

이 설정은 건들지 않고 기본 설정대로 진행

 

4.5 업로드 성공

 

 

5. 객체 URL

업로드한 객체는 URL을 통해 접근 할 수 있음

 

 

업로드한 객체(신예은.jpg) - 속성 탭 - 객체 URL

 

 

객체 URL을 웹브라우저를 통해 접근 - 첫번째 시도(실패)

 

 

접근이 차단되어 있는 것을 확인 가능

버킷 생성 할때 퍼블릭 액세스 차단 설정을 했기 때문에 외부(인터넷)에서 객체에 접근 하기 위해서는 퍼블릭 액세스 차단을 해제 시켜야 함

 

권한 탭 확인

 

 

객체 소유자에만 권한이 부여되어 있고 나머지에는 권한이 없는것을 확인 가능

편집 버튼을 클릭하여 모든 사람(퍼블릭 액세스)에 읽기 권한 부여

다른 AWS 계정에 대한 액세스도 추가 가능

 

 

모든 사람(퍼블릭 액세스)에 읽기 권한을 부여 하였기 때문에 외부(인터넷)에서 접근이 가능

 

 

객체 URL을 웹브라우저를 통해 접근 - 두번째 시도(성공)

 

 

6. 수명 주기 규칙

 

 

수명 주기 규칙 이름 & 규칙 범위 선택

 

 

수명 주기 규칙을 설정하여 일정 시간이 경과하면 스토리지 클래스를 변경 하도록 설정 할 수 있음

예) 이벤트 기간을 30일로 설정한 A 기업이 30일 이후에 해당 버킷에 있는 객체들을 다음 이벤트까지 사용하지 않을 경우 Glacier 스토리지 클래스로 변경 하도록 수명 주기 규칙 설정 가능

 

 

 

Amazon S3 삭제

 

1. 버킷 삭제

 

 

버킷을 삭제하기 위해서는 버킷이 비어 있어야 함

버킷 내부 폴더, 객체들을 일일이 삭제하는 것보다 '비어 있음' 을 사용하여 버킷 내부를 비울 수 있음

 

 

 

하지만 버킷 비우기로는 액세스 지점까지는 삭제하지 못하기 때문에 액세스 지점은 직접 삭제 해야함

 

 

버킷과 연결된 모든 것들을 삭제 해야 버킷을 삭제 할 수 있음

 

'AWS (Amazon Web Services)' 카테고리의 다른 글

Amazon VPC  (0) 2023.04.07
Amazon S3 권한 설정  (0) 2023.04.06
Amazon RDS  (0) 2023.04.02
Amazon EC2 - 실습(Windows Server)  (0) 2023.03.31
AWS Documentation  (0) 2023.03.27