Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
AWS Cheat sheet - S3
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2022-09-08
2022-08-24
1838
## About S3 Amazon Simple Storage Service(Amazon S3)는 무한대의 확장성, 99.999999%의 데이터 가용성, 보안, 성능을 제공하는 객체 스토리지 서비스(Object Storage Service)다. S3는 Full managed Service로 사용자는 서버, 볼륨, 파일 시스템, 파일관리 소프트웨어 등의 관리의 대부분을 S3에 맡길 수 있다. ## Object * S3는 데이터를 객체(파일)단위로 다룬다. 사용자 입장에서는 하드디스크가 아닌 무한대의 확장가능한 FTP를 사용한다는 느낌이 될 것이다. * 객체는 파일의 내용 뿐만 아니라, 파일을 설명하는 다른 모든 데이터 메타데이터를 포함하는 개념이다. 메타데이터에는 객체의 접근 권한, 태그, lifecycle 등이 포함된다. * 객체는 버킷에 저장된다. 버킷은 **객체를 담는 컨테이너**다. 사용자는 버킷을 먼저 생성하고, 여기에 객체를 저장한다. * 허용하는 파일의 크기는 0Byte에서 5TB 사이다. 저장가능한 전체 용량에는 제한이 없다. * 한번에 넣을 수 있는 객체의 최대크기는 5GB이다. * 한번의 PUT 작업으로 최대 5GB의 객체를 업로드 할 수 있다. * 5GB 이상의 파일은 **멀티파트 업로드 API**를 이용해서 올릴 수 있다. * S3는 폴더의 개념이 존재하지 않는다. 폴더 이름은 파일이름의 일부로 Flat 하게 저장된다. 하지만 폴더처럼 사용 할 수 있기 때문에 사용성에 문제는 없다. * S3는 기본적으로 Key-Value store 이다. * Key : 객체의 이름 * Value : 객체의 데이터(파일) * Version : 객체의 버전 * Meta-data : 객체와 관련된 다양한 정보들 * ACLs : 객체에 대한 권한설정 정보 ## Buckets * Bucket는 객체를 담기 위한 컨테이너다. * Bucket의 이름은 AWS Account 별이 아닌 전체 AWS 인프라에서 고유한 이름을 가져야 한다. * S3 Bucket 이름은 범용 네임스페이스를 가진다. 즉 버킷이름은 AWS 전체에서 중복되면 안된다. * S3 Bucket의 URL 구조는 https://region.amazon.aws.com/bucketname 이다. ``` https://s3-eu-west-1.amazonaws.com/joincbucket ``` ## 버전관리 * 사용자는 S3 Bucket에 대해서 버전관리 기능을 활성화 할 수 있다. * 버전관리 기능이 활성화 되면, 객체의 변경이 매 버전별로 저장이 된다. 사용자는 객체의 각 버전을 검색하고 다운로드 할 수 있다. * 객체를 덮어쓰면 버킷에 새 객체 버전이 생성된다. * 버전관리를 할 경우 실수로 삭제되거나 덮어쓴 객체를 복구 할 수 있기 때문에 데이터의 보존과 복원을 위해서 널리 사용하고 있다. * 버전관리된 객체를 삭제할 경우 실제 삭제하지 않고 **삭제표시**만 한다. 삭제표시만 제거하면 다시 사용 할 수 있다. * 버전관리는 객체의 여러 복사본을 저장한다. 1MB 크기의 객체가 일부 수정해서 업로드 했다고 가정해보자. 수정된 객체의 크기도 1MB일 경우, 총 2MB의 공간을 사용하게 된다. * MFA(Multi-Factor Authentication) 삭제 기능을 제공한다. * S3의 객체 Life cycle과 버전관리를 통합할 수 있다. ## S3 CRR(교차 리전 복제) ## S3 SRR(동일 리전 복제) ## Storage Class Amazon S3는 워크로드의 데이터 액세스 패턴, 필요한 복원력 수준, 비용 요구 사항, 성능 요구사항에 따라서 선택할 수 있는 **다양한 스토리지 클래스를 제공**한다. ### S3 Standard * 높은 내구성, 가용성 및 성능을 갖추고 있다. 자주 액세스하는 데이터를 위해서 사용한다. * 짧은 지연 시간 및 높은 처리 성능 * 여러 가용영역에 걸쳐서 99.999999999%의 객체 내구성 을 제공한다. * 연간 99.99%의 가용성을 제공 * 전송 구간 및 저장 데이터에 대한 SSL 암호화 지원 * 다른 스토리지 클래스로 객체를 자동으로 마이그레이션하기 위한 S3 life cycle 관리 ### S3 Intelligent-Tiering * S3 Standard와 동일한 수준의 짧은 대기시간과 처리량을 제공한다. * 액세스 패턴을 모니터링하여 액세스 하지 않는 객체는 저렴한 액세스 Tier로 자동으로 옮긴다. * 빈번한 액세스에 최적화된 Tier, 빈번하지 않는 액세스에 최적화된 Tier, 거의 액세스하지 않는 데이터 Tier를 가지고 있다. * 빈번하지 않는 액세스에 최적화된 Tier는 40% 저렴하다. * 거의 액세스하지 않는 데이터 Tier는 68% 저렴하다. * 사용자의 개입없이 액세스 패턴에 따라서 Tier를 선택하게 하기 때문에, 자동으로 비용이 최적화 된다. * Tier를 자동으로 옮기기 위해서는 모니터링이 필요한데, 이에 따른 약간의 객체 모니터링 및 자동화 요금이 추가된다. * 128KB 보다 작은 객체도 S3 Intelligent-Tiering에 저장할 수 있지만 항상 Frequent Access Tier 요금이 부과된다. 이들 객체는 모니터링 및 자동화 요금이 부과되지 않는다. ### S3 Standard-Infrequent Access(S3 Standard-IA) * S3 Standard 보다 저렴한 가격을 제공한다. * 데이터에 대한 접근이 그리 많지 않을 때 사용 하기에 적합하다. * 재해복구, 백업 등의 사례에 적합하다. * 2개 이상의 시설 장애에 견딜 수 있도록 설계되었다. * 저장가능한 최소 객체크기는 128KB이다. ### S3 One Zone-Infrequent Access(S3 One Zone-IA) * 하나의 AZ에만 객체 데이터를 저장한다. 복제를 포기한 만큼 저렴한 비용을 제공한다. * 하나의 AZ에만 객체를 저장하기 때문에 AZ의 물리적 손실에 (상대적으로) 취약하다. * 99.5%의 가용성을 제공한다.(다른 클래스들은 최소 99.9% 이상을 제공한다.) ### S3 Glacier Instance Retrieval * 장기간 보관하며 거의 접근하지 않는 객체이지만 밀리초 단위의 검색이 필요한 객체의 저장에 적합하다. * GB당 0.03 USD로 매우 저렴하다. ### Amazon S3 Glacier Deep Archive * S3에서 가장 저렴한 클래스 스토리지이다. * 1년에 몇 번 접근하는 장기 저장 객체의 저장에 적합하다. 규정 준수, 감사, 온라인 광고, 교통 데이터 등. * 최대 12시간안에 검색될 수 있다. 검색속도가 중요하지 않은 객체 저장에 적합하다. | | S3 standard | S3 Intelligent Tiering | S3 Standard-IA | S3 One Zone-IA | S3 Glacier | S3 Glacier Deep Archive | | --- | ----------- | ---------------------- | -------------- | -------------- | ---------- | ----------------------- | | 내구성 디자인 | 99.999999999999%(11 '9s) | 99.999999999999%(11 '9s) | 99.999999999999%(11 '9s) | 99.999999999999%(11 '9s) | 99.999999999999%(11 '9s) | 99.999999999999%(11 '9s) | | 가용성 디자인 | 99.99% | 99.99% | 99.99% | 99.95% | 99.99% | 99.99% | | 가용성 SLA | 99.9% | 99% | 99% | 99% | 99.9% | 99.9% | | AZ's | \>= 3 | \>= 3 | \>= 3 | 1 | \>= 3 | \>= 3 | | 객체당 최소 저장 용량 | N/A | N/A | 128KB | 128KB | 40KB | 40KB | | First byte latency | milliseconds | millseconds | millseconds | millseconds | select minutes or hours | hours | | Lifecycle transitions | Yes | Yes | Yes | Yes | Yes | Yes | ### LifeCycle * S3의 객체 lifecycle 를 이용하여 S3 객체단위로 클래스를 변경하는 일련의 규칙을 정할 수 있다. * 전환작업 : 객체를 다른 스토리지 클래스로 전환하는 시기를 정의 할 수 있다. 예를 들어 생성 후 30일이 지난 객체를 S3 Standard-IA 스토리지 클래스로 전환 할 수 있다. * 만료 작업 : 객체에 대한 만료 시기를 정의하여, 자동으로 삭제 할 수 있다. * LifeCycle의 전환은 스토리지 클래스에 따라서 최소 저장시간이 필요하다. * 예를 들어 생성된지 최소 30일이 지난 객체를 S3 Standard-IA 스토리지로 전환 할 수 있으며, 1년이 지나면 S3 Glacier로 전환이 가능하다. ### 데이터 일관성 * 새로운 개체의 PUTS에 대해서 **쓰기 후 읽기 일관성**을 제공 한다. * PUTS을 이용한 객체 업데이트 및 DELETE에 대해서는 **최종 일관성**을 제공한다. * HEAD의 쓰기후 읽기(read-after-write) 혹은 GET 요청에 대해서는 **최종 일관성**을 제공한다. 기존 RDB는 동시성을 제공한다. 즉 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보장한다. 하지만 S3는 분산 스토리지이며 데이터가 여러 노드에 전파되는데 시간이 걸리기 때문에 RDB와 같은 동시성을 제공하지는 않는다. **대신 일정 시간이 지나면 결국 일관성을 가지게 되는 최종일관성을 제공**한다. ### 정적 사이트 호스팅(Static WebSite hosting) * S3 Bucket의 컨텐츠를 이용해서 Static WebSite hosting을 할 수 있다. * 정적 사이트 호스팅의 주소는 **http://bucketname.s3-website-ap-northeast-2.amazon.com**의 형식을 가진다. * Route 53을 이용하여 자신의 도메인으로 정적 사이트를 서비스 할 수 있다. ### Amazon S3 Transfer Acceleration * 전 세계적으로 분산된 CloudFront 엣지 로케이션을 활용하여, 클라이언트의 위치와 상관없이 데이터를 S3로 일관되고 빠른 속도로 전송 할 수 있게 한다. * 데이터와 클라이언트의 거리가 멀고, 사용 대역폭이 많고, 객체 크기가 클 수록 가속화가 잘된다. * 버킷 레벨기능으로 Transfer Acceleration 기능을 활성화 해야 한다. Transfer Acceleration 기능 활성화 후 30분 정도가 지나면 전송속도가 증가하기 시작한다. ### 보안 * SSL/TLS를 사용하여 전송 구간의 객체를 암호화 할 수 있다. * 모든 객체가 버킷에 저장될 때 암호화되도록 버킷에 기본 암호화 설정을 할 수 있다. * 버킷의 각 객체 혹은 모든 객체에 대해서 권한을 설정 할 수 있다. * READ 권한 : 버킷 혹은 각 객체에 대해서 읽기 권한을 허용한다. * WRITE 권한 : 버킷에 대해서 읽기, 쓰기, 삭제 권한을 허용한다. * READ_ACP : 버킷과 객체에 대해서 AWS Account, 그룹단위로 읽기 권한을 설정 할 수 있다. * WRITE_ACP : 버킷과 객체에 대해서 AWS Account, 그룹단위로 쓰기 권한을 설정할 수 있다. * FULL_CONTROL : 버킷과 객체에 대해서 READ, WRITE, READ_ACP, WRITE_ACP을 설정 할 수 있다. * 객체를 삭제할 때, MFA 인증 계층을 추가하여 실수로 컨텐츠가 삭제되거나 업데이트 되는 것을 방지 할 수 있다.
Recent Posts
vLLM을 이용해서 오픈소스 LLM 서비스 구축하기
Vertex Gemini 기반 AI 에이전트 개발 06. LLM Native Application 개발
최신 경량 LLM Gemma 3 테스트
MLOps with Joinc - Kubeflow 설치
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
LLama-3.2-Vision 테스트
Vertex Gemini 기반 AI 에이전트 개발 04. 프롬프트 엔지니어링
Vertex Gemini 기반 AI 에이전트 개발 03. Vertex AI Gemini 둘러보기
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Archive Posts
Tags
aws
aws cheat sheet
cloud
s3
storage
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags