S3 Buckets
- 전세계적으로 유니크한 이름을 사용해야 한다.
- 리전에 대해 buckets가 정의 된다.
- 네이밍 규칙
- No uppercase
- No underscore
- 반드시 소문자 또는 숫자로 시작해야 한다.
Objects
- Objects는 하나의 파일이며 이는 Key를 가지고 있다.
- Key는 full_path를 의미한다(아래에 bold로 표시된 것이 Key이다).
- s3://my_bucket/my_text.txt
- s3://my_bucket/my_folder_1/my_folder_2/my_text.txt
- Key는 prefix + object name 으로 구성 된다.
- 버킷 내에는 사실 디렉토리라는 개념이 없다(콘솔에서는 디렉토리처럼 표시되어 있지만).
- 매우 긴 이름과 슬래시(/)가 들어간 Key가 있을 뿐이다.
- Object의 value는 body의 내용을 담고 있다.
- Object의 최대 사이즈는 5TB (5000GB)이다.
- 만약 5GB 이상 업로드를 하려면 “multi-part upload”를 해야 한다. 즉, 나누어 업로드 해야 한다. 한 번에 5TB를 업로드 할 수는 없다.
- Object는 Metadata를 가질 수 있다(이는 key-value 쌍으로 구성된 리스트로, 시스템 정보 또는 유저 metadata가 될 수 있다).
- Object는 또한 Tags를 가질 수 있다(이는 Unicode로 구성된 key / value 쌍으로 이루어지며 10개까지 가질 수 있다)
- 보안 또는 수명 주기 그리고 Version ID를 관리하는 데 좋다.
- Object는 Version ID를 가질 수 있다(버전 설정이 켜져 있으면).
Versioning
- bucket 수준에서 versioning을 할 수 있다.
- 동일한 key를 가진 객체를 업로드 하면 버전1, 버전2, ... 로 덮어 쓰게 된다.
- 버전 관리를 통해 실수로 객체를 삭제하는 것을 방지할 수 있다.
- 이전 버전으로 쉽게 롤백할 수 있다.
- 버전 관리를 시작하기 이전의 객체는 버전 null을 갖게 된다.
- 버전 관리를 중단한다고 해서 이전 버전이 삭제 되지는 않는다.
아래와 같이 Properties 탭에서 설정할 수 있다.
그러면 이제 List Versions 설정이 나타나며 버전을 볼 수 있다.
버전 관리를 시작하기 전의 버전은 null이다.
파일을 다시 업로드 하면 아래와 같이 새로운 버전이 나타난다.
만약 업로드 된 파일 중 하나를 삭제하면 파일이 실제로 삭제되는 것이 아니라 Type에 Delete marker 표시가 되며 0KB가 된다.
- 만약 delete marker를 삭제 하거나 특정 버전을 삭제하면 정말로 파일이 삭제 되며 이를 영구 삭제라고 한다.