block storage
block storage란?
- 데이터 스토리지아 스토리지 디바이스를 제어하는 기술
- 파일 또는 데이터베이스 항목과 같은 데이터를 가져와서 동일한 크기의 block으로 나눔
- 그 후 빠른 액세스 및 검색에 최적화된 방식으로 기본 물리적 스토리지에 데이터 블록 저장
- 주로 정형데이터베이스, VM 파일 시스템 볼륨, 대량의 읽기 및 쓰기 로드에 유용함
Amazon EBS
- Elastic Block Store
- 아마존에서 제공하는 block storage
Amazon EBS 볼륨
- Amazon EC2 인스턴스에 연결하는 스토리지 볼륨을 말함
- 해당 볼륨을 컴퓨터에 연결된 로컬 하드 드라이브처럼 사용할 수 있음.
- 볼륨은 원하는 파일 시스템으로 포맷팅한 후 마운트해서 사용함. (마운트 : 인스턴스랑 연결하는 것을 뜻함)
Amazon EBS 스냅샷
- 볼륨과는 관계없이 지속되는 Amazon EBS 볼륨의 특정 시점 백업
- Amazon EBS 볼륨의 데이터를 백업하는 스냅샷 생성 가능
- 이를 통해 언제든지 해당 스냅샷에서 새로운 볼륨을 복원할 수 있음.
- 스냅샷은 다른 저장 공간 (s3)에 저장됨
Amazon EBS 기능 및 이점
- 여러 볼륨 유형가능 : SSD, HDD 지원
- SSD : 상대적으로 용량이 적고 속도가 매우 빠름
- HDD : 용량이 상대적으로 크고 속도가 느림
- 상황에 맞게 교차전략을 세워 사용해야함.
- 확장성 : 탄력적으로 볼륨작업을 사용할 수 있고 용량을 동적 변경 가능
- 백업 및 복구 : 스냅샷을 사용하여 데이터 백업 가능함. 이를 사용하여 볼륨을 즉시 복원 가능 및 AWS 계정, 리전 및 가용영역에 데이터를 마이그레이션(데이터 전송) 가능
- 데이터 보호
- 데이터 가용성 및 내구성 : 볼륨 데이터는 여러 서버에 자동으로 복제됨
- 여러 인스턴스에 연결 가능 : EBS 다중 연결을 사용하면 단일 볼륨을 동일한 가용영역에 있는 여러 인스턴스에 연결 가능
- 다른 인스턴스에서도 사용 가능 : 볼륨을 분리하는 기능을 제공함.
File storage
파일 스토리지란?
- 공유 파일 시스템을 통해 서버와 매플리케이션에 데이터에 대한 액세스를 제공하도록 클라우드에 데이터를 저장하는 방법
Amazon EFS
- Elastic File System
- Linux 워크로드에 대한 NFS(Network File Sharing) 공유 파일 시스템 스토리지를 제공하는 완전 관리형 서비스
- 파일들을 저장해주고 이를 여러 곳에서 활용할 수 있게 해줌.
- 스토리지를 제공해준 후 이를 연결할 수 있는 mount 주소를 제공하여(외부 연결 주소) EC2서버와 연결하면 파일을 공유할 수 있음.
- 네트워크로 연결되어 EFS에 data를 넣으면 이에 연결된 모든 EC2들과 data를 함께 활용할 수 있음.

- 성능과 비용 측면에서 파일을 탑재하려는 EC2 인스턴스와 동일한 가용영역에 있는 탑재 대상에서 파일 시스템에 엑세스 하는 것이 좋음.
- 온프레미스와도 연결하여 사용할 수 있음.

Object storage
object storage란?
- 객체라고 하는 비정형 형식으로 데이터를 저장하고 관리하는 기술
- 객체 (object) = 모듈, 캡슐화
- 비정형 데이터 : 사진, 동영상, 이메일, 웹 페이지, 센서 데이터 등
- file 안에 다양한 것들이 들어있는 것을 object라고 표현
Amazon S3
- Amazon Simple storage sevice
- Amazon S3의 모든 객체들은 "버킷"에 저장됨.
- 저장 기능과 서비스를 함께 제공해줌.
- 리전 서비스로 버킷명은 모두 유니크 해야함.
- 가용영역에 모두 복제가 되어 안정성과 내구성을 갖추고 있음.
Amazon S3의 기능
1) 파일저장 : 버킷에 저장됨
2) 정적 웹 호스팅 서비스
- 웹서버를 구축할 필요 없이 웹서비스를 제공
- 단, 백엔드와 같이 서버가 돌아가는 서비스는 제공 안함
3) 스트리밍서비스
- 버킷에 동영상을 올리게 되면 이에 따른 웹 서비스도 구축되고 이를 통해 동영상을 스트리밍 하여 볼 수 있음.
4) 데이터 분석 서비스
- sql 데이터 조회 분석
- 외부에서 실시간으로 데이터 수집용으로 사용되고, 이를 통해 데이터를 query를 통해 분석할 수 있음
5) 백업용도로 사용
- 저렴하고, 다양한 클래스를 제공하기 때문에 자신의 환경에 따라서 사용할 수 있음.
6) 버전관리 기능
- 버전관리 활성화를 하면 이전 데이터를 덮어쓰기 하는 것이 아니라 버전으로 관리해주어 롤백이 가능하게 만들어 줌
Amazon S3 클래스

1) Amazon S3 Standard
- 일반적으로 한달에 한번 이상 자주 액세스 하는 데이터에 대해 짧은 대기 시간과 높은 처리 성능 지원
- 검색 비용은 없음
2) Standard-Infrequent Access
- 액세스 빈도는 낮지만 필요할때 빠르게 액세스 해야하는 데이터를 위한 클래스
- 저렴한 GB당 스토리지 요금이고 GB당 검색요금으로 뛰어난 내구성 , 처치량 및 짧은 지연 제공
- 장기 스토리지, 백업 및 재해 복구용 데이터 스토어에 적합
3) One Zone-Infrequent Access
- 단일 가용영역에 객체를 저장하도록 선택할 수 있는것.(기본적으로 데이터를 저장은 지리적으로 분리된 여러 가용 영역 전체에 저장됨.)
- 단일 가용영역에만 객체를 저장하기 때문에 20% 정도 저렴하게 제공됨.
- 단, 가용영역의 물리적 손실에 대해 복원력은 유지되지 않음.
4) Glacier Deep Archive
- 1년에 한두번정도 액세스 하는 데이터의 장기 보존을 위한 안전하고 안정적인 객체 스토리지를 제공
- 온프레미스에서 데이터를 저장 및 유지관리하거나 할때 사용
- 가장 저렴한 가격
5) 더 많은 클래스
버킷 방법
1) 버킷 만들기

2) 버킷 일반구성
- 리전 확인하기
- 버킷 이름 설정 (중복 불가)
- 버킷 설정 복사 (버킷 구성을 복제 가능 - 아래 설정값들이 다 동일하게 사용됨)
3) 객체 소유권
- 객체에 대한 액세르를 지정할 수 있는 사용자 결정
- 다른 AWS에서 소유할 수 있냐 없냐 결정
- AC 비활성화 선택
4) 퍼블릭 액세스 차단 설정
- 차단을 모두 풀어줌.
- 보통은 엑세스를 차단하여 사용하길 권장하긴 하지만 실습할때는 모두 풀어주어서 사용함. (웹을 활용하기 위해서)
5) 버킷을 생성하고 원하는 파일을 업로드함.
6) 업로드한 html 파일의 link를 열어보기

7) 권한 변경해주기
- 버킷으로 들어가서 권한 -> 버킷정책 편집
- 버킷 ARN 복사
- 정책 생성기 (json 파일 만들어줌)
- 설정값 지정
- select Type of Policy : S3 Bucket Policy
- Principal : *
- Actions : getobject (읽기만 허용)
- ARN : 위에서 복사했던 ARN
- 설정값들을 넣어주고 addstatement를 누르면
이러한 화면이 나옴

- generate Policy 클릭시 json 코드가 나오고 이를 복사하여 정책 편집에 넣어줌
- 넣어줄때, resource 뒤에 /* 를 적어주면 내 버킷 안에있는 모든 파일들에게 권하는 주는 것으로 변경됨
{
"Version": "2012-10-17",
"Id": "~~~",
"Statement": [
{
"Sid": "Stmt~~",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "~~~/*"
}
]
}
8) 다시 들어가보기
- 아까는 접근권한이 없어 거부당했던것이 제대로 나오는것을 확인 가능
