[AWS] AWS S3
AWS S3
Amazon Simple Storage Service
Table of Contents
Bucket
버킷 : 객체를 담아두는 통
버킷에 저장할 수 있는 객체는 무제한이다.
- 버킷 내에 버킷을 만들 수는 없다.
- Unversioned (Default) 버전 관리 비사용 상태
- Versioning-enabled 버전 관리 사용 상태
- Versioning-suspended 버전 관리가 일시 중지된 상태
Limit
S3
- 객체 크기: 최대
5TB
- 업로드, 복사: 단일 PUT 요청시 최대
5GB
S3 Glacier
- 개별 아카이브 저장 가능 총량: 최대
40TB
Create Bucket
버킷은 생성한 자의 소유이며 타인에게 양도 불가하다.
버킷을 생성할 때는 두 가지를 선택하게 된다.
-
버킷의 이름 Bucket Name -
버킷이 속할 리전 Bucket Region
계정 당 생성 가능한 최대 버킷 수
- 일반적으로 100개의 버킷 생성 가능.
- 만약 100개 이상의 버킷을 만들고 싶다면 서비스 한도 증가를 함으로써 추가 가능하다.
- 한도가 증가 된다면 최대 1,000 버킷까지 사용 가능.
- 버킷의 개수는 성능면에서 차이를 가져다 주지 않는다.
Naming Bucket
버킷 이름짓기에 관해서는 아래와 같은 규칙이 존재한다.
- 3-63 자의 이름.
- alphanumeric 으로 시작하거나 끝나야 한다.
- 대문자를 사용하지 않는다.
- 숫자, 점, 하이픈만 사용 가능.
- 단, Amazon S3 Transfer Acceleration에서 사용되는 버킷일 시 dot(
.
) 사용 불가
- 단, Amazon S3 Transfer Acceleration에서 사용되는 버킷일 시 dot(
- IP 주소 형식을 사용하지 않도록 한다. (
127.0.0.1
) xn--
으로 시작할 수 없다.- 버킷 이름은 파티션 내에서 유일해야 한다. 모든 Amazon S3 내에서 중복된 이름이 존재하면 안된다.
- 파티션 == 리전 그룹
AWS 에서는 3가지 파티션이 존재한다.- aws
- aws-cn
- aws-us-gov
- 파티션 == 리전 그룹
Object
객체와 관련된 작업은 총 두가지 업로드
와 복사
로 나뉜다.
업로드와, 복사 가능한 최대 사이즈는 5GB
이다. 멀티파트 업로드는 최대 5TB
까지 사용 가능.
Uploading Objects
객체 업로드 : 버킷에 객체 업로드 하기.
Single upload
와 Multipart upload
, 두 가지 업로드 방법이 존재한다. 업로드 하고자 하는 객체 크기가 100MB 이상일 경우 보통 multipart upload
방법을 사용한다.
-
Single Upload: 단일 객체를 한번에(한 파트로) 업로드
-
Multipart Upload: 단일 객체를 여러 파트로 나누어 업로드
각각의 파트의 크기는 5MB-5GB 정도.- 높은 처리량 → 조각 조각 나눠진 객체의 파트는 병렬로 업로드 된다.
- 빠른 복구 → 조각난 파트가 오류로 인해 업로드에 실패하더라도 크기가 작기에 빠르게 복구된다.
- Max parts: 한 객체 업로드시 나눠질 수 있는 최대 개수는 10,000 개
- 권한: Multipart upload 를 진행할 수 있는 권한이 부여되어 있어야 한다.
Copying Objects
객체 복사: 버킷에 저장되어 있는 객체의 복사본 만들기.
S3 객체는 Data, Key, and Metadata 이 세 가지로 구성되어 있다.
Object Key
객체 키는 버킷 내의 객체의 유일성을 보장한다.
이로인해 버킷안에 저장되어 있는 객체를 고유하게 식별할 수 있다.
- Max Length : 1,024 bytes
- UTF-8 인코딩을 사용
- 하지만 모든 문자를 사용 가능한 것은 아니다.
(아래 규칙을 참고)
- 하지만 모든 문자를 사용 가능한 것은 아니다.
객체 키 명명 규칙
객체 키에 사용 가능한 문자는 아래와 같다.
-
영숫자
* 0~9 * a-z * A-Z
</details>
-
특수 문자
* ```!``` * ```-``` * ```_``` * ```.``` * ```*``` * ```'``` * ```(``` * ```)```
</details>
-
특별 처리가 필요한 문자
아래에 해당되는 문자들은 추가 처리```(URL 인코딩 하거나, HEX로 참조하기 등)``를 진행해야 한다. * **앰퍼샌드** ("&") * **달러** ("$") * **ASCII 문자 범위** 16진수 ```00~1F(10진수: 0~31)``` 및 ```7F(10진수: 127)``` * **'At' 기호** ("@") * **등호** ("=") * **세미콜론** (";") * **콜론** (":") * **더하기** ("+") * **공백** (" ") * **쉼표** (",") * **물음표** ("?")
</details>
사용 금지 문자
-
사용하지 말아야 하는 문자.
* **백슬래시** ("\\") * **인쇄되지 않는 ASCII 문자** (128~255 10진수) * **캐럿** ("^") * **왼쪽 중괄호** ("{") * **오른쪽 중괄호** ("}") * **Percentage** ("%") * **backtick** ("`") * **왼쪽 대괄호** ("[") * **오른쪽 대괄호** ("]") * **인용 부호** * **'보다 큼' 기호** (">") * **'보다 작은' 기호** ("<") * **물결표** ("~") * **'파운드' 문자** ("#") * **세로 막대/파이프** ("|")
</details>