S3? Simple Storage Service - AWS에서 맨 처음으로 런칭
- 안전하고 가변적인 Object 저장공간을 제공 (ex: Google Cloud)
->저장공간 크기를 따로 지정하지 않아도 됨
->운영체제는 업로드 할 수 없음- 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있음
- 파일 크기는 0KB부터 5TB까지 지원
- 저장공간 무제한
- Bucket이라는 이름을 사용함 (디렉토리와 유사함)
- Bucket은 보편적인 namespace를 사용함
->region과 상관없이 bucket이름은 고유해야함
S3 Object 구성요소
- Key : 파일명
- Value : 파일에 대한 데이터
- Version ID : S3의 고유특징(다른 버전으로 돌릴수 있게 함)
- Metadata : 데이터의 데이터(파일의 업로드시기, 오너 등 다양한 정보)
- CORS (Cross Origin Resource Sharing) : 한 bucket의 파일을 다른 bucket에서 접근 가능함
S3 Data Consistency Model
1. Read after Write Consistency (PUT)
: PUT,POST등을 통해 파일을 bucket에 올라감
2. Eventual Consistency (UPDATE, DELETE)
: 파일 내용을 변경(UPDATE) 혹은 삭제(DELETE)할시 결과가 바로 반영되지 않음
1. 일반 S3
: 가장 보편적으로 사용되는 스토리지 타입 -> 비용이 높지 않음
: 높은 내구성, 가용성 (Durability, Availability) -> 내구성(데이터의 손실), 가용성(데이터의 접근)
2. S3 - IA (Infrequent Access)
: 자주 접근되지는 않으나 접근시 빠른 접근이 요구되는 파일이 많을시 유용
: 일반 S3에 비해 비용은 저렴하나 접근시 추가 비용 발생 -> 자주 사용하는 S3일 경우 부적합
: 멀티 AZ를 통한 데이터 저장 -> 가용성이 높음
3. S3 - One Zone IA
: 단일 AZ를 통한 데이터 저장
: 단일 AZ에 의한 데이터 접근 제한 (조금 낮은 가용성)
: 데이터 접근시 S3 - IA보다 20% 비용 저렴
4. Glacier
: 거의 접근하지 않을 데이터 저장 시 유용
: 매우 저렴한 비용
: 데이터 접근시 대략 4-5시간 소요
5. Intelligent Tiering
: 데이터 접근 주기가 불규칙할때 매우 유용
: 2가지 티어 존재 - Frequent Tier/Infrequent Tier
: 데이터 접근주기에 따라 두가지 티어중 하나로 선택됨
: Frequent Tier가 비용이 약간 더 비쌈
: 최고의 비용 절감 효율을 누릴 수 있음 -> 효율 측면에서 최고
S3 요금
- GB당
- PUT, GET, COPY 요청 횟수당
- 데이터 다운로드시 / 다른 리소스로 전송시
- Metadata (object tag)
S3사용 용례
최초 S3 버켓 생성시 -> 비공개(PRIVATE)
1. 버켓 정책 변경 (Bucket Policy) : 버켓 안의 모든 파일에 대한 정책 변경 / JSON형태임
2. 접근 제어 리스트 변경 (Access Control List) : 파일 하나하나에 접근 제한 가능
1. 파일 업로드/다운로드시 : 직접 개입할 필요는 없으며 AWS 내부에서 관리해줌
2. 가만히 있을시
1) SEE(Server-Side Encryption)-S3 : master key(AES-256)가 있으며 특정 시간이 지나면 변동됨
2) SSE-KMS : 언제, 누가, 어떻게 암호를 풀었는지 기록됨
3) SSE-C : 암호키를 직접 다룰수 있다(우리가 키값을 직접 변경시켜줘야함)
암호화 과정
x-amz-server-side-encryption-parameter: AES-256
Q. 암호화가 걸리지 않은 파일은 버켓에 올리지 못하게 하는 기능이 있나요?
A. 네. 버켓 정책 설정을 이용하면 됩니다.
AWS S3 서비스 접속 -> S3는 지역설정이 필요 없음
버킷 만들기 -> 버킷 이름은 고유해야함!
버킷 내부
폴더 만들기
파일 업로드
파일 정보 보기 -> url클릭시 접근이 불가함 : public 접근을 허용하지 않아서!
접근 허용하려면? 버켓의 정책 변경해주기
파일에 대한 접근도 모든사람으로 변경하면 url에서 파일(이미지)이 열리는것을 확인할 수 있음
정책 생성하기 : 우리가 직접 JSON코드 작성해도 되지만 정책 생성기를 통해 간단하게 생성 가능
정책 생성기 : Principal엔 버켓을 사용할 user주소를, ARN엔 해당 버켓 주소 입력
복사해서 JSON코드에 붙여넣기
S3 암호화 실습
새 버켓을 생성해서 암호화 설정 진행