Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스로, 인터넷 용 스토리지 서비스라고 볼 수 있다!
앞에 온라인이라는 글자가 붙는 이유는 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문이다.
S3에 파일을 설치하는 행위는 할수는 없고, 그냥 이미지나 동영상 파일 등만을 저장할 수 있다.
즉, 파일 업로드, 삭제, 업데이트만 가능하지, 프로그램을 설치해서 저장하는 기능은 없다고 보면 된다.
버킷은 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상태이다.
버킷 소유권은 이전할 수 없다.
버킷 안에 다른 버킷을 둘 수 없다.
객체는 Amazon S3에 저장되는 기본 객체이다. 객체는 객체 데이터와 메타데이터로 구성된다. 메타데이터는 객체를 설명하는 이름-값 페어의 집합이다. 여기에는 마지막으로 수정한 날짜와 같은 몇 가지 기본 메타데이터 및 Content-Type 같은 표준 HTTP 메타데이터가 포함된다. 객체를 저장할 때 사용자 지정 메타데이터를 지정할 수도 있다.
https://s3.Region.amazonaws.com/bucket-name/keyname
두가지 형태의 객체 url을 갖는다!
ACL : 파일의 권한을 담은 데이터 (접근이나 수정)
객체마다 각각의 접근 권한 설정 가능
객체 metadata는 객체가 업로드 된 후에는 수정될 수 없고, 복사해서 수정해야 한다.
객체의 metadata는 response header에 반환된다
객체 키(또는 키 이름)는 버킷 내 객체에 대한 고유한 식별자이다. 버킷 내 모든 객체는 정확히 하나의 키를 갖는다. 버킷, 객체 키 및 선택적으로 버전 ID(버킷에 대해 S3 버전 관리가 사용 설정된 경우)의 조합은 각 객체를 고유하게 식별한다. 따라서 Amazon S3를 “버킷 + 키 + 버전”과 객체 자체 사이의 기본 데이터 맵으로 생각할 수 있다.
S3 버전 관리를 사용하면 동일 버킷 내에 여러 개의 객체 변형을 보유할 수 있다.
S3 버전 관리를 사용하여 버킷에 저장된 모든 버전의 모든 객체를 보존, 검색 및 복원할 수 있다. 또한 의도치 않은 사용자 작업 및 애플리케이션 장애로부터 쉽게 복구할 수 있다.
버킷에 S3 버전 관리를 활성화하면 Amazon S3에서 버킷에 추가되는 각 객체에 고유한 버전 ID를 생성한다.
이러한(또는 다른) 객체를 CopyObject 및 PutObject와 같은 기타 작업으로 수정하는 경우 새 객체가 고유한 버전 ID를 가진다.
1. public access
퍼블릭 액세스는 ACL, 버킷 정책 등 모두를 통해 버킷 및 객체에 부여된다.
ex. 모든 퍼블릭 액세스에 대해서 차단을 설정하였다면 ACL에서 퍼블릭에 대한 권한을 설정하여도 변경되지 않는다.
2. ACL
권한 있는 사용자에 대해 간단한 개별 객체(오브젝트)를 액세스 가능하게 만든다.
-> 버킷이나 객체에 대해 요청자의 권한 허용 범위를 어디까지 설정할 것인가에 대해 간단하게 설정할 수 있다.(버킷 + 객체 단위)
3. bucket policy
단일 S3 버킷 내 모든 객체에 대한 권한을 세부적으로 구성하는 방법
-> Bucket Policy는 버킷을 사용할 권한을 가진 여러 명의 사용자 별로 각각의 행위에 대한 권한 범위를 설정(버킷 단위)
AWS 리전은 AWS가 짧은 지연 시간, 높은 처리량 및 중복성이 높은 네트워킹으로 연결되었으며 물리적으로 분리 및 격리된 다수의 가용 영역(AZ) 을 제공하는 지리적 위치이다.
Amazon S3에서 사용자가 만드는 버킷을 저장할 지리적 AWS 리전 을 선택할 수 있다.
AWS 리전에 저장된 객체는 사용자가 명시적으로 객체를 다른 리전으로 전송하거나 복제하지 않는 한 해당 리전을 벗어나지 않는다.
AWS 가용 영역은 AWS 리전 내에 물리적으로 격리된 위치를 말한다.
S3는 각 AWS 리전 내에 최소 3개의 AZ를 운영하며, 각 AZ는 화재, 홍수 등과 같은 지역 이벤트로부터 보호할 수 있도록 지리적으로 분리된다.
Amazon S3 Standard, S3 Standard-Infrequent Access 및 S3 Glacier 스토리지 클래스는 하나의 AZ가 모두 손실되어도 데이터를 보호할 수 있도록 최소 3개의 AZ에 걸쳐 데이터를 복제한다. 이는 공개적으로 사용할 수 있는 AZ가 3개 미만인 리전에도 동일하게 적용된다. 이러한 스토리지 클래스에 저장된 객체는 해당 AWS 리전 내 모든 AZ에서 액세스할 수 있다.
<참고 자료>