먼저 AWS가 제공하는 스토리지의 종류는 다음과 같네요.

  • S3 : 모든 타입의 데이터를 사용할 수 있다.
  • Glacier : 자주 접근하지 않는 데이터 저장용, 백업용
  • EBS : EC2에서 사용할 수 있는 블록 스토리지
  • EFS : EC2에서 사용할 수 있는 네트웍 스토리지


그럼 본격적으로 S3에 대해 알아보겠습니다.

S3는 2006년 처음 서비스를 시작하였는데요, 객체 기반의 스토리지이기 때문에 URL을 이용하여 파일에 접근할 수 있습니다. (http://[bucket-name].S3.amazonaws.com/[key]) 따라서 S3를 잘 사용하면 그 자체로 웹 사이트를 구성할 수도 있습니다.

좀 더 내부로 들어가보면, 버킷(Bucket)이라는 개념이 등장합니다. 실제 AWS에 들어가서 S3를 생성하려고 하면 가장 먼저 해야 하는 일이 버킷을 만드는 일입니다. 그리고 버킷에 이름을 정해야 하는데 버킷 이름은 모든 사용자 간 중복이 불가능하므로 유니크한 이름을 부여해야 합니다.

버킷은 마치 폴더처럼 보이기도 하지만 폴더와는 다릅니다. (만약 버킷을 삭제하고자 하면 먼저 그 안의 파일을 모두 삭제하거나 비워놔야 합니다) 폴더는 버킷 내부에 생성할 수 있고 물론 버킷에 바로 업로드할 수도 있습니다.

파일은 공개 혹은 비공개로 업로드할 수 있습니다.

한편 S3에도 서비스 종류가 세분화되어 있는데요, 일반 S3와 S3 - Infrequent Access Storage가 그것입니다. S3 - IAS는 조금 덜 자주 억세스되는 파일을 위한 스토리지로 조금 더 저렴합니다. 하지만 내구성이나 성능은 일반 S3와 동일합니다. 단 가용성은 99.99% vs. 99.9% 수준으로 약간 떨어지는 것으로 알고 있습니다.
이외에도 리전 간 복제 기능이 제공됩니다. 예를 들어 각 리전 별로 빠른 서비스를 원한다면 복제 기능을 사용할 수 있겠죠. 복제 기능은 신규 PUT 기능을 통해 구현되어 있으며 버전 기능을 사용하고 있어야 합니다.

또 S3에서 발생하는 이벤트를 다른 AWS와 공유할 수 있습니다. SNS, SQS, Lambda 등과 연계 가능한거죠. 예를 들어 S3에 이미지가 업로드되면 Lambda 코드를 통해 압축 & 리사이징 작업을 하여 썸네일을 생성할 수 있게 됩니다.

한편 데이터를 암호화할 수도 있는데요, AWS SDK를 사용하거나 S3 관리키를 사용하거나, 혹은 고객 제공 키를 사용하거나, AWS Key Management를 사용하거나 할 수 있습니다.

그리고 고객의 온프레미스 호스트와 AWS Direct Connect를 통해 데이터를 업로드하거나 동기화할 수 있도 있습니다.

마지막으로 모니터링인데요, CloudTrail이나 CLoudWatch를 통해 S3를 모니터링 할 수 있습니다.