Amazon S3는 AWS에서 제공하는 객체 스토리지 서비스입니다. 인터넷을 통해 언제든지 원하는 양의 데이터를 저장하고 검색할 수 있습니다.
여기서 스토리지란 데이터를 저장하는 장소를 말하며 객체란 텍스트 파일이나 음성 파일 같은 데이터를 말합니다.
스토리지의 종류
스토리지의 종류에는 블록 스토리지(Block Storage), 파일 스토리지 (File Storage), 오브젝트 스토리지 (Object Storage)가 있습니다. S3는 위에서 말했듯이 Object Storage로 개별 데이터 단위로 데이터를 저장합니다. 또 평면 구조로 데이터를 저장합니다. 그러므로 접근이 쉽고 빠르며 확장성이 높습니다.
S3의 특징
- 용량 무제한 : 객체당 5TB라는 제약이 있지만 객체 수나 데이터 용량에는 제한이 없다
- 높은 내구성 : Amazon S3는 자동으로 모든 객체를 여러 개의 시스템에 복제하여, 데이터 손실을 방지합니다. 이로써 99.999999999%라는 높은 내구성을 보장합니다. (3개 이상의 리전)
- 확장성 : 사용자가 필요한 만큼 데이터를 저장할 수 있습니다.
- 보안 : Amazon S3는 다양한 보안 기능을 제공합니다. 객체 단위로 액세스 권한을 설정하거나, SSL/TLS를 통해 데이터 전송을 암호화하고, AWS Key Management Service(KMS) 등과 연동하여 저장된 데이터 자체도 암호화 할 수 있습니다.
- 데이터 관리 기능 : 라이프사이클 정책 설정으로 오래된 객체를 자동으로 아카이브 하거나 삭제할 수 있으며, 버전 관리 기능으로 객체 변경 내역을 추적 및 복원 할 수도 있습니다.
- 분석 지원 : S3 Analytics와 같은 도구들로 저장된 데이터 분석 작업을 쉽게 진행할 수 있으며, 이 외에도 AWS Glue와 같은 서비스와 연동하여 더 복잡한 분석 작업도 가능합니다.
- 웹 호스팅 : 정적 웹 사이트 호스팅 기능을 지원하여 HTML 파일 등 웹 리소스들을 간단히 배포 및 공유할 수 있습니다.
다른 서비스와 연계
S3는 확장성과 내구성, 저렴한 비용이라는 큰 장점을 가지고 있습니다. 이런 장점을 통해 AWS의 다른 서비스와 연계해 사용하는 경우가 많습니다.
제가 사용한 경험은 CodeDeploy랑 연동을 해서 S3에 스프링파일을 압축한 뒤 CodeDeploy로 EC2에 배포해본 경험이 있습니다.
책에서 들어주는 예시는 Amazon VPC 네트워크 서비스의 로그나 콘텐츠 전송 네트워크(CDN) 서비스인 Amazon CloudFront 접속 로그를 S3에 저장합니다.
EC2의 스토리지인 EBS의 스냅숏을 저장하기 위해 사용하기도 하고 기계 학습 서비스의 입력 정보를 저장하기도 한다고 합니다.
S3에서 사용되는 주요 용어
- 버킷
- 객체(데이터)를 저장하는 장소입니다. 사용자는 버킷에 객체를 저장합니다. 버킷의 이름은 전 세계(모든 리전)에서 고유해야 합니다. 즉 'test-bucket'이라는 이름으로 버킷을 생성한 후에는 다른 사용자를 포함해 모든 리전 및 모든 AWS 계정에서 같은 이름으로 버킷을 만들 수 없습니다.
- 객체
- 버킷에 저장된 데이터 본채입니다. 버킷에는 객체를 무제한으로 저장할 수 있지만 한 객체의 최대 크기는 5TB를 넘을 수 없습니다.
- 키
- 객체의 저장 URL 경로입니다. 버킷 이름과 키 이름, 객체 이름을 조합해 고유하게 설정됩니다.
S3는 객체 스토리지로 실제로는 폴더 구조가 아니지만 '/' 라는 문자열을 구분자로 판단해 관리 콘솔에서는 폴더 구조처럼 객체가 표시됩니다.
https://mssaem-bucket.s3.ap-northeast-2.amazonaws.com/M-ssaem/6499e7c2-3cfe-45f4-ba8c-75abacaece15.png
- 버킷 이름 : mssaem-bucket.s3.ap-northeast-2.amazonaws.com
- 키 이름 : M-ssaem/6499e7c2-3cfe-45f4-ba8c-75abacaece15.png
- 객체 이름 : 6499e7c2-3cfe-45f4-ba8c-75abacaece15.png
S3의 데이터를 브라우저나 프로그램에서 조작
S3는 api를 제공합니다. 이를 통해 S3의 객체를 조작할 수 있습니다. 스프링에서도 이 api를 지원해주므로 데이터를 쉽게 S3에 저장할 수 있습니다. 어떤 api를 제공하는지 알아 보겠습니다.
GET | S3에서 데이터를 다운로드 |
PUT | S3에 객체를 업로드, 신규 업로드, 갱신(덮어쓰기)도 여기에 해당 하나의 PUT 작업은 최대 5GB까지이므로 더 많은 데이터를 업로드하는 경우 멀티 파트 업로드라는 기능을 이용해 여러 파트로 나눠 최대 5TB의 데이터를 업로드할 수 있습니다. |
LIST | S3 버킷의 객체 목록을 표시, 데이터 추출도 가능 |
COPY | S3 내에서 객체를 복사, 다른 버킷과 리전 간에 복사 가능 |
DELETE | S3 내에 있는 임의의 객체를 삭제 |
출처
https://product.kyobobook.co.kr/detail/S000200882352
AWS 구조와 서비스 | 우에노 후미아키 - 교보문고
AWS 구조와 서비스 |
product.kyobobook.co.kr
'클라우드&인프라 > AWS 구조와 서비스' 카테고리의 다른 글
가상 서버 데이터 저장을 위한 EBS (0) | 2023.12.18 |
---|---|
Amazon S3에 대해 (2) (0) | 2023.12.11 |
컨테이너의 구조와 특성 (1) | 2023.10.10 |
AWS Lambda에 대해 (1) | 2023.10.03 |
Amazon EC2 Auto Scaling (0) | 2023.09.20 |