[S3] S3 버킷 및 객체, 버전 관리

728x90

S3 버킷 및 객체

s3 는 객체를 저장하게 해주는 시스템이자 서비스이다.

즉, 파일이 버킷 또는 디렉토리에 있고 각 버킷은 고유한 이름을 갖는다.

이미 사용 중인 이름을 사용하여 버킷을 만들 수는 없다.

Objects

  • Objects 는 키를 갖는다.
  • 키는 파일의 전체 경로이다.
    • 만약 버킷 이름이 my-bucket 이고, 객체 이름이 my_file.txt 라고 한다.(s3://my-bucket/my_file.txt) 이 경우 키는 my_file.txt 가 된다.
    • 만약 s3 버킷 내에 my_folder1/another_folder 폴더 안에 my_file.txt 가 있는 경우라면, 전체 경로는 s3://my-bucket/my_folder1/another_folder/my_file.txt 가 되고 키는 my_folder1/another_folder/my_file.txt 가 된다.
  • 키는 prefix + object name 으로 구성된다.
    • s3://my-bucket/my_folder1/another_folder/my_file.txt 의 경우에는 my_folder1/another_folder/ 가 prefix 이고, my_file.txt 가 object name 이다.
  • 즉, 버킷 내에서는 디렉터리 개념이 없고 키 값이 길게 나열된다.
  • Amazon S3 에서 객체의 최대 크기는 5TB(5000GB)로 매우 크지만, 한 번에 5GB 이상 업로드할 수 없다.
  • 5TB 의 큰 객체를 업로드 하려면 객체를 5GB 미만으로 나눠서 업로드를 해야한다. 이를 multi-part upload 라고 한다.
  • Amazon S3 의 각각의 object 는 키 페어의 리스트인 메타 데이터를 갖는다. 객체에 정보와 태그를 추가할 때 사용한다.
  • 객체나 수명 주기 정책에 대한 보안이 없는 경우, 매우 유용하게 사용할 수 있다.
  • Amazon S3 객체에 버전 ID 가 존재한다.

S3 버전 관리

  • 같은 키(경로)로 파일을 재업로드 하는 경우에 기존 파일을 덮어씌우는 것이 아니라 해당 파일의 새로운 버전을 생성하는 것이다.
  • 파일 덮어쓰기가 아닌 버전을 올리는 개념인 것이다.
  • 이런 방식을 사용하는 것은 잘못 삭제하거나 덮어씌우는 경우를 방지하기 위해서이다. 이전 버전을 복원할 수 있기 때문!
  • 필요한 이전 버전으로 손쉽게 되돌릴 수 있다.
  • 버저닝을 활성화 하지 않아 버전 관리가 되지 않은 파일을 덮어씌우는 경우엔 덮어 씌워지는 버전이 null 버전으로 되어 버린다.
  • 버킷에서 버저닝을 중단하면 이전 버전을 삭제하는 것이 아니라 이후의 파일들이 버전을 할당하지 못하는 것이다.
  • 버저닝이 활성화 된 상태에서 객체를 지우면 Delete marker 타입으로 변하게 된다. 영구적인 삭제가 아니다.
  • Delete marker 타입의 객체를 지우거나 특정 버전 ID 를 삭제하면 영구적으로 삭제된다.
728x90