AWS는 총 세 가지로 나뉘어진다.
S3 EC2 RDS
이 중 나는 S3 파트를 맡아 설명을 진행하였다.
* AWS S3란?
SimpleStorageService의 약자로 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 온라인 객체 스토리지 서비스이다. 쉽게 말하자면 구글 드라이브처럼 파일 저장 서비스이며 데이터를 온라인으로 객체 형태로 저장하는 서비스라고 보면 된다.
- 전 세계 기업의 수백만 애플리케이션을 위한 데이터 저장
- 파일을 저장하기 위해서는 필수적인 서비스
* AWS S3의 장점
- 객체 스토리지 서비스 <--> Block Strorage Service
- 파일 보관만 가능
- 애플리케이션 설치 불가능
- 글로벌 서비스
- 단 데이터는 리전에 저장
- 데이터가 해당 리전을 나가지 않음
- 무제한 용량
- 하나의 객체는 0byte에서 5TB의 용량
- Bucket이라는 단위로 구분
- 디렉토리 개념
- Bucket 이름은 Global Unique
- 세계 어디에서도 중복된 이름이 존재할 수 없음
- WebHosting시 도메인과 Bucket명이 같아야 함
- 99.999999999% 내구성
- 99.9% SLA 가용성
* 내구성과 가용성의 차이
내구성 : 파일이 없어지느냐 안 없어지느냐
가용성 : 실제로 내가 서비스 기간 중 파일을 다운할 수 있는지 사용할 수 있는지에 대한 여부
( 즉 사용 중 0.1% 확률로 가용성이 불가하더라도 파일이 사라지거나 없어지는 것이 아님)
* S3 용어
버킷 (Buckets)
저장된 객체를 담는 바구니 = 컨테이너
버킷 주소 = 무한 저장 용량
객체(Objects)
AmazonS3에 저장되는 데이터, 객체 데이터와 메타데이터를 구성하고 있는 구성 단위이다.
객체는 키 및 버전 ID를 통해 버킷 내에서 고유하게 식별함.
키(Keys) = 이름
키는 버킷 내 객체의 고유한 식별자이다.
버킷 내 모든 객체는 하나의 키를 갖는다.
예를 들어 버킷 주소가 키 = 키 =https://버킷이름.리전이름.amazonaws.com/2025-01-10/mandu.pdf이면 2025-01-10/mandu.pdf는 키이다. 2025-01-10 폴더를 열면 그 안에 mandu.pdf 객체가 표시된다.
리전 (Regions)
S3가 생성한 버킷을 저장할 위치를 지정한다.
리전 간 객체 공유는 불가능
* S3 객체의 구성
Key : 파일의 이름 (경로와 같은 개념)
Value : 파일의 데이터 (실제 데이터)
Version Id : 파일의 버전 아이디
Metadata : 파일의 정보를 담은 데이터
(S3 업로드시 value, metadata를 같이 업로드 가능하다)
ACL : 파일의 권한을 담은 데이터
Torrents : 토렌트 공유를 위한 데이터
* S3 스토리지 클래스
S3 Standard
99.9%가용성
99.999999999% 내구성
여러장소에 분산 보관
최소 보관 기간X
최소 보관 용량X
파일 요청 비용X
BUT, 전송 요금 발생
S3-Standard AI
자주 사용되지 않는 데이터를 저렴한 가격에 보관
데이터를 불러올 때마다 비용 지불
최소 저장 용량
128KB
S3-OneZoneAI
덜 중요하고 자주 사용되지 않는 데이터
쉽게 복구할 수 있는 파일
S3 Intelligent Tiering
머신러닝을 사용해 자동으로 티어 변경
퍼포먼스 손해/오버헤드 없음
S3-Glacier
아카이브용 저장소
저렴한 가격 데이터를 가져오는데 분~시간 단위의 시간 소요
S3-GlacierDeep Archive
매우 쌈
데이터를 가져오는데 12시간 정도 필요함
* S3 버킷 관리 방법의 선택
자격 증명 기반 정책
같은 계정의 IAM 엔티티의 S3 권한 관리할 때
S3 이외에 다른 AWS 서비스와 같이 권한 관리할 때
리소스 기반 정책
익명 사용자 혹은 다른 계정의 엔티티의 S3 이용 권한을 관리할 때
S3만의 권한을 관리할 때
* S3 버킷 관리
객체의 생성, 업데이트, 삭제의 모든 단계 저장
- 삭제시에는 실제 객체를 삭제하는 대신 삭제 마커를 추가
버킷 단위로 활성화 필요 (기본-비활성화)
- 중지 가능, 비활성화 불가능
- 한번 버전 관리를 시작하면 비활성화 불가능 (버킷 삭제 후 재생성으로 해결 가능)
수명 주기 관리와 연동 가능
- MFA 인증 후 삭제 기능을 통해 보안 강화 기능
MFA란?
사용자가 서비스에 접근하거나 특정 작업을 수행할 때 두 가지 이상의 인증 요소를 요구하여 보안을 강화하는 인증 방식

google authenticator icon
authenticator를 깔면 6 자리의 코드가 나온다. 이것으로 보안을 더욱 강화해 주면 된다.
* S3 버킷 관리

파일을 생성할 때 TEST.JPG를 생성하였으므로 사용자한테는 TEST.JPG 파일이 보이게 된다.

버킷은 업데이트 할 시 삭제되는 것이 아니라 그 위에 덮어쓰게 되는 것이다.

만약 파일을 삭제하고 싶다면 delete marker로 삭제가 가능하며 삭제를 할 시에 사용자에게는 delete marker가 보이게 된다. 다시 delete marker을 삭제하고 파일을 보여 주게 된다면 delete marker을 업데이트 하기 전의 최신 파일인 TEST2.JPG가 사용자에게 보여지게 된다.
* 객체 잠금 모드
보관 모드 : 일정 기간 동안 수정 방지
규정 준수 모드 : 누구도 잠금 설정 변경, 객체 삭제 불가능
거버넌스 모드 : 특별한 권한 X, 삭제 OR 잠금 설정 X
- 객체 삭제 방지 OR 규정에 따라 보관하기 위해 사용
- 규정 준수 모드 테스트
거버넌스 모드, 법적 보존 모드
- 삭제 수정 불가능 BUT 해제 시 삭제 수정 가능
* S3 객체 암호화
1. On Transit
SSL / TLS(HTTS)
데이터가 클라이언트에서 S3로 통신하면서 이루어진 암호
2. At Rest
S3가 데이터를 저장할 때 암호화하는 것
- SSE S3:S3에서 알아서 암호화
- SSE KMS:KMS 서비스(AWS암호키패스워드를관리)를 이용해 암호화
- SSE C:클라이언트에서 제공한 암호를 통해 암호화
3. Client Side
클라이언트가 직접 암호화
* S3 정적 / 동적
정적
S3는 정적 웹사이트 호스팅에 이상적
정적 콘텐츠를 저장하고 인터넷을 통해 직접 제공
구성 방법
버킷에서 정적 웹 호스팅 옵션을 활성화하여 URL을 통해 파일 제공
백업 및 아카이빙
변경되지 않는 데이터를 장기적으로 보관
버전 관리 기능을 사용하여 파일 변경 이력을 저장
동적
주기적으로 변경, 사용자 요청에 따라 생성
사용 사례
사용자 업로드, 실시간 분석, API 데이터 제공
처리 방식
Lambda, DynamoDB 등 AWS 서비스와 연계
* 버킷 만들기









* 기본 개념
1. Actions에서 GetObject, PutObject, DeleteObject 선택
S3 버킷 정책은 특정 작업(Action)에 대해 허용(Allow)또는 거부(Deny)를 설정
GetObject, PutObject, DeleteObject는 S3에서 가장 일반적으로 사용하는 작업
GetObject:객체를 읽는작업 (다운로드,파일보기등)
PutObject:객체를 업로드하거나 수정하는 작업
DeleteObject: 객체를 삭제하는 작업
2. ARN 복붙 및 뒤에 /* 추가
ARN은 S3 버킷 및 객체를 고유하게 식별
*는 해당 버킷 내 모든 객체를 포함
/*를 추가하는 이유 : 버킷 내의 개별 파일(객체)에 대한 권한을 설정
arn:aws:s3:::example-bucket→버킷 이름 변경, 태그 변경 등.
arn:aws:s3:::example-bucket/*
버킷 내부의 파일(객체)에 다운로드, 업로드, 삭제등의 작업 허용.
3. AddStatement버튼
하나의 정책에는 여러 규칙을 포함할 수 있다.
앞서 정의한 규칙들을 바탕으로 JSON 형식의 정책 문서를 자동 생성
4. GeneratePolicy버튼
앞서 정의한 규칙들을 바탕으로 JSON 형식의 정책 문서를 자동 생성함




이렇게 파일을 업로드 시키면 링크 하나가 나오게 된다.