일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코딩테스트
- spring
- typescript
- 국비IT
- 스프링
- 자바스크립트 코딩테스트
- 자바스크립트
- 오라클
- 정보처리기사실기
- 국비코딩
- Oracle
- VUE
- javascript
- 리액트
- 타입스크립트
- 정보처리기사실기요약
- 정보처리기사정리
- 정보처리기사요약
- 정보처리기사실기정리
- php
- 정보처리기사
- CSS
- 자바의정석
- 자스코테
- Java의정석
- react
- 이안의평일코딩
- 리액트네이티브
- ReactNative
- 평일코딩
- Today
- Total
이안의 평일코딩
[AWS] S3 Amazon Simple Storage Service 본문
S3(Simple Storage Service)
AWS의 대표적인 서비스로 객체 스토리지이다.
파일 업로드, 다운로드, 검색이 가능하며 무제한 용량에 다양한 인증, 권한 부여를 제공한다.
리전 기반 서비스로 매우 안전하고 상대적으로 빠르지는 않다.
CDN과 연동 가능하며 static web page 기능 지원된다.
필요에 따라 버저닝(versioning) 기능 사용이 가능하며 다양한 요금 옵션으로 비용 절감이 가능하다.
S3 사용예
클라우드 저장소 (개인 파일 보관, 구글 드라이브처럼 사용 가능)
서비스의 대용량 파일 저장소 - 이미지, 동영상, 빅데이터 (ex: 넷플릭스)
서비스 로그 저장 및 분석
AWS 아데나를 이용한 빅데이터 업로드 및 분석
서비스 사용자의 데이터 업로드 서버 (이미지 서버, 동영상 서버)
중요한 파일은 EC2의 SSD (EBS: Elastic Block Store)에 저장하지 말고 S3에 저장
glacier와의 연동으로 비용 절감 및 규정 준수 가능
(빙하라는 뜻으로 자주 쓰지 않는 데이터를 S3에서 자동으로 변환)
S3 기본개념
버킷: 객체(파일)을 저장하기 위한 컨테이너
버킷의 이름은 전 세계에 유일하게 지정해야 한다. (중복 불가)
오브젝트: 버킷은 오브젝트 저장소라고 하는데 일반적으로 오브젝트 = 파일이다.
S3 버킷의 모든 오브젝트들은 고유한 URL을 가진다.
Key: 버킷안의 오브젝트를 식별하는 데 사용
Version: Versioning 활성화 시 파일명뒤에 버젼 쿼리스트링이 붙는다.
Prefix: 버킷 안에 폴더를 생성할 수 있는데 폴더는 사실 키의 접두사(prefix)이다.
S3에는 폴더 개념은 사실 없다.
https://ianlee.s3.amazonaws.com/2021-4/image.png
버킷 이름: ianlee
prefix 폴더: 2021-4, 파일명 image.png
key: 2021-4/image.png
S3에서 권한 제어 하는 법
ACL(Access Control List): 객체마다 ACL 지정 가능. 주로 간단한 제어에 사용
Bucket Policy: IAM Policy와 유사한 문법. ACL보다 복잡하고 세부적으로 지정 가능
IAM을 이용한 제어: IAM 사용자에게 버킷 접근 권한을 주기 위해 사용
PresignedURL: URL을 이용해 임시 권한을 부여하는 기능으로 매우 유용하다
1) 파일 public으로 만들기
- public 설정 가능하도록 버킷 설정 변경: public 액세스 차단 해제
- make public 기능으로 파일 public 접근 가능하도록 설정
2) ACL 살펴보기
- 퍼블릭으로 설정 기능도 ACL을 이용해서 권한을 제어한 것이다.
- 모든 S3 객체는 ACL이 있고 이를 이용해 개별 권한제어가 가능하다.
3) bucket policy로 특정 폴더에 접근 권한 주기
- ACL을 이용해서 현재 폴더의 하위 폴더 생성 불가 => 버킷 정책 생성
awspolicygen.s3.amazonaws.com/policygen.html
{
"Version": "2012-10-17",
"Id": "Policy1619768378384",
"Statement": [
{
"Sid": "Stmt1619768368168",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::ianlee-sample/public/*"
}
]
}
S3 CLI에서 사용하기
aws configure : CLI에서 접속
aws s3 ls : 현재 s3 저장소 목록 확인
aws s3 mb s3://ianlee : ianlee라는 s3 저장소 생성
aws cp image.png s3://ianlee : ianlee에 image.png 업로드
aws cp image.png s3://ianlee/hello : ianlee의 hello 폴더(prefix)에 image.png 업로드(hello도 같이 생성)
aws s3 cp s3://ianlee/image.png ./ : ianlee에서 image.png 다운로드
aws s3 rm s3://ianlee/image.png : ianlee에서 image.png 파일삭제
aws s3 sync ./ian s3://ianlee : ianlee에 현재디렉토리의 ian폴더 안의 파일들을 업로드
aws s3api put-object-acl --bucket ianlee --key image.png --acl public-read : ianlee의 image.png에 acl 설정
static web hosting
정적 웹 호스팅: S3 페이지를 웹 서버처럼 사용가능, 단 정적인 페이지만 가능
CDN서비스인 CloudFront와 연동시 성능 및 보안에 이점이 있음
Route53을 이용해서 DNS 연동가능하며 이 경우 버킷 이름이 도메인 이름과 같아야 함
multipart upload
CLI 또는 SDK 사용시 단일 PUT 사용으로 5GB까지 업로드 가능하며 관리 콘솔은 160GB 제한
multipart upload 사용시 CLI 또는 SDK 사용 가능하며 최대 5TB까지 가능하다.
S3 요금
프리 티어 사용중이라도 요금이 부과될 수 있고 비용 알람 설정이 필수이다.
스토리지 클래스와 라이프 사이클 쓰면 비용을 절감할 수 있다.
aws.amazon.com/ko/s3/storage-classes/
파일 생성후 라이프 사이클 규칙을 지정하고 수명 관리가 가능하다.
비용절감 및 규정준수에 유효하게 사용하며 로그 파일 관리, 민감 정보 보관 및 폐기등에 유용하다.
예) 로그 파일 수명 관리
최초 생성 30일 후 onezone_IA로 지정, 이후 30일 지나면 glacier로 이동, 6개월이 지나면 삭제
Versioning (버전 관리)
버킷 속성에서 버전 관리를 활성화하면 쉽게 사용 가능하다.
변경내용을 추적할 수 있으므로 매우 편리하지만 비용을 조심해야한다.
활성화하면 라이프 사이클 관리 기능이 다소 복잡해진다.
Eventual Consistency
강력한 쓰기 후 읽기 일관성 제공 => 쓰자마자 읽기 가능
이전에는 Eventual Consistency(시간이 조금 걸림)였는데 개선되었다.
'Front-end > AWS' 카테고리의 다른 글
[AWS] RDS Relational Database Service (0) | 2021.05.28 |
---|---|
[AWS] VPC Virtual Private Cloud (0) | 2021.05.27 |
[AWS] EC2 Elastic Computing Cloud (0) | 2021.05.25 |
[AWS] IAM, IAM User(Group), IAM Role, IAM Policy (0) | 2021.04.29 |
[AWS] 글로벌 인프라 및 AWS 기본 구조 및 용어 (0) | 2021.04.29 |