[AWS] S3란 무엇인가?

민영·2022년 11월 18일
0

aws

목록 보기
3/4

S3란?👌

Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스로, 인터넷 용 스토리지 서비스라고 볼 수 있다!
앞에 온라인이라는 글자가 붙는 이유는 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문이다.

S3에 파일을 설치하는 행위는 할수는 없고, 그냥 이미지나 동영상 파일 등만을 저장할 수 있다.
즉, 파일 업로드, 삭제, 업데이트만 가능하지, 프로그램을 설치해서 저장하는 기능은 없다고 보면 된다.

S3 사용 예

  • 클라우드 저장소 (개인 파일 보관, 구글 드라이브처럼 사용 가능)
  • 서비스의 대용량 파일 저장소 - 이미지, 동영상, 빅데이터 (ex: 넷플릭스)
  • 서비스 로그 저장 및 분석
  • 서비스 사용자의 데이터 업로드 서버 (이미지 서버, 동영상 서버)
  • 중요한 파일은 EC2의 SSD (EBS: Elastic Block Store)에 저장하지 말고 S3에 저장
  • glacier와의 연동으로 비용 절감 및 규정 준수 가능 (빙하라는 뜻으로 자주 쓰지 않는 데이터를 S3에서 자동으로 변환)

용어 정리😎

버킷(Bucket)

버킷은 Amazon S3에 저장된 객체에 대한 컨테이너. 버킷에 저장할 수 있는 객체 수에는 제한이 없다. 또한 계정에 버킷을 최대 100개까지 포함할 수 있다.

모든 객체는 어떤 버킷에 반드시 포함된다.
예를 들어 photos/puppy.jpg로 명명된 객체는 미국 서부(오레곤) 리전의
DOC-EXAMPLE-BUCKET 버킷에 저장되며
URL
https://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/photos/puppy.jpg를 사용하여 주소를 지정할 수 있다.

버킷을 생성할 때 버킷 이름을 입력하고 버킷이 속할 AWS 리전을 선택한다. 버킷을 생성한 후에는 버킷 이름 또는 해당 리전을 변경할 수 없다.
버킷 이름은 버킷 이름 지정 규칙을 따라야 한다!
** 버킷의 이름은 S3에서 유일해야 한다
버킷을 생성하면 default로 private상태이다.
버킷 소유권은 이전할 수 없다.
버킷 안에 다른 버킷을 둘 수 없다.

객체(Object)

객체는 Amazon S3에 저장되는 기본 객체이다. 객체는 객체 데이터와 메타데이터로 구성된다. 메타데이터는 객체를 설명하는 이름-값 페어의 집합이다. 여기에는 마지막으로 수정한 날짜와 같은 몇 가지 기본 메타데이터 및 Content-Type 같은 표준 HTTP 메타데이터가 포함된다. 객체를 저장할 때 사용자 지정 메타데이터를 지정할 수도 있다.

객체 Key

객체 키(또는 키 이름)는 버킷 내 객체에 대한 고유한 식별자이다. 버킷 내 모든 객체는 정확히 하나의 키를 갖는다. 버킷, 객체 키 및 선택적으로 버전 ID(버킷에 대해 S3 버전 관리가 사용 설정된 경우)의 조합은 각 객체를 고유하게 식별한다. 따라서 Amazon S3를 “버킷 + 키 + 버전”과 객체 자체 사이의 기본 데이터 맵으로 생각할 수 있다.

S3 버전 관리

S3 버전 관리를 사용하면 동일 버킷 내에 여러 개의 객체 변형을 보유할 수 있다.
S3 버전 관리를 사용하여 버킷에 저장된 모든 버전의 모든 객체를 보존, 검색 및 복원할 수 있다. 또한 의도치 않은 사용자 작업 및 애플리케이션 장애로부터 쉽게 복구할 수 있다.

버전 ID

버킷에 S3 버전 관리를 활성화하면 Amazon S3에서 버킷에 추가되는 각 객체에 고유한 버전 ID를 생성한다.
이러한(또는 다른) 객체를 CopyObject 및 PutObject와 같은 기타 작업으로 수정하는 경우 새 객체가 고유한 버전 ID를 가진다.

<권한 설정>

1. public access

퍼블릭 액세스는 ACL, 버킷 정책 등 모두를 통해 버킷 및 객체에 부여된다.
ex. 모든 퍼블릭 액세스에 대해서 차단을 설정하였다면 ACL에서 퍼블릭에 대한 권한을 설정하여도 변경되지 않는다.

  • 새 ACL(액세스 제어 목록)을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단
  • 임의의 ACL(액세스 제어 목록)을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단
  • 새 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단
  • 임의의 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단

2. ACL

권한 있는 사용자에 대해 간단한 개별 객체(오브젝트)를 액세스 가능하게 만든다.
-> 버킷이나 객체에 대해 요청자의 권한 허용 범위를 어디까지 설정할 것인가에 대해 간단하게 설정할 수 있다.(버킷 + 객체 단위)

3. bucket policy
단일 S3 버킷 내 모든 객체에 대한 권한을 세부적으로 구성하는 방법
-> Bucket Policy는 버킷을 사용할 권한을 가진 여러 명의 사용자 별로 각각의 행위에 대한 권한 범위를 설정(버킷 단위)

Regions (지역)

AWS 리전은 AWS가 짧은 지연 시간, 높은 처리량 및 중복성이 높은 네트워킹으로 연결되었으며 물리적으로 분리 및 격리된 다수의 가용 영역(AZ) 을 제공하는 지리적 위치이다.

Amazon S3에서 사용자가 만드는 버킷을 저장할 지리적 AWS 리전 을 선택할 수 있다.

AWS 리전에 저장된 객체는 사용자가 명시적으로 객체를 다른 리전으로 전송하거나 복제하지 않는 한 해당 리전을 벗어나지 않는다.

가용영역 (AZ)

AWS 가용 영역은 AWS 리전 내에 물리적으로 격리된 위치를 말한다.
S3는 각 AWS 리전 내에 최소 3개의 AZ를 운영하며, 각 AZ는 화재, 홍수 등과 같은 지역 이벤트로부터 보호할 수 있도록 지리적으로 분리된다.

Amazon S3 Standard, S3 Standard-Infrequent Access 및 S3 Glacier 스토리지 클래스는 하나의 AZ가 모두 손실되어도 데이터를 보호할 수 있도록 최소 3개의 AZ에 걸쳐 데이터를 복제한다. 이는 공개적으로 사용할 수 있는 AZ가 3개 미만인 리전에도 동일하게 적용된다. 이러한 스토리지 클래스에 저장된 객체는 해당 AWS 리전 내 모든 AZ에서 액세스할 수 있다.

특징

  • 제공하는 단순한 웹 서비스 인터페이스를 사용하여 웹에서 언제 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있습니다.
  • 단독 스토리지로도 사용할 수 있으며 EC2, EBS, Glacier와 같은 다른 AWS 서비스와도 함께 사용할 수 있어 클라우드 어플리케이션, 컨텐츠 배포, 백업 및 아카이빙, 재해 복구 및 빅데이터 분석을 포함한 다양한 사례에 알맞다.
  • S3의 버킷은 무한대의 객체를 저장할 수 있으므로 스토리지의 요구를 미리 추정하여 관리할 필요가 없어 확장/축소에 신경쓰지 않아도 된다.
  • HTTPS 프로토콜을 사용하여 SSL로 암호화된 엔드포인트를 통해 데이터를 안전하게 업로드/다운로드 할 수 있다.
  • 보안성이 뛰어나다 : SSL을 통하여 데이터 전송과 암호화를 한다.
    -> SSL은 높은 수준의 개인정보 보호를 제공하기 위해, 웹에서 전송되는 데이터를 암호화한다. 따라서, 데이터를 가로채려는 자는 거의 해독할 수 없는 복잡한 문자만 보게 된다.
  • 사용한 스토리지 만큼 요금이 청구되며 데이터 전송부분에서는 해당 리전 내에서는 데이터 송수신은 무료
  • 저장할 수 있는 파일 수의 제한이 없고,
  • 최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스 할 수 있다.
  • REST, SOAP 인터페이스를 제공한다.
  • 많은 사용자가 접속을 해도 이를 감당하기 위해서 시스템적인 작업을 하지 않아도 된다.
  • EC2+EBS(Block storage Service, EBS는 일종의 SSD나 하드)보다 저렴하다

<참고 자료>

profile
공부한 것을 기록하는 곳입니다 🖐

0개의 댓글