본문 바로가기
AWS

DevOps Day 29 (4.14) AWS - Storage

by Jackykim 2023. 4. 14.

Storage Intro

객체 스토리지 (Object Storage) : 문서, 이미지, 비디오 비교적 단순한 구조에 메타데이터를 포함하고 있는 데이터를 의미하며, 인터넷으로 연결된 API 통해 데이터를 애플리케이션에 제공합니다.

 

블록 스토리지 (Block Storage) : 블록 스토리지에서 데이터는 서버 인스턴스에 디스크 볼륨의 형태로 제공되는 데이터를 의미합니다. 이를 통해 EC2 인스턴스에 포함된 볼륨에 고속으로 접근 가능합니다.

 

파일 스토리지 (File Storage) : 데이터란 서버 인스턴스에 파일 시스템 인터페이스 방식으로 제공되는 데이터를 의미하며, 서버 인스턴스에 파일 스토리지를 추가하면 로컬 파일 시스템처럼 작동합니다.

 

S3 Intro (Simple Storage Service)
클라우드 스토리지란 쉽게 말해서 인터넷 공간에 데이터를 저장하는 저장소입니다. 컴퓨터 부품으로 비유하면 하드디스크의 역할을 하는 서비스입니다.
장점 :
-
뛰어난 접근성 (언제 / 어디나 접근 가능)
-
다른 컴퓨터에서 접근이 가능

 

S3 사용 이점 :
-
높은 확장성입니다 (스토리지의 용량을 무한히 확장할 있습니다)
-
강력한 내구성 (99.9% 내구성 보장)
-
가용성 보장 (스토리지에 저장된 파일들을 정상적으로 사용할 있는 시간이 길어집니다)
-
다양한 스토리지 클래스를 제공 (활용할지에 따라 효율적으로 선택할 있으며 주로 Standard 클래스와 Glacier 클래스 선택합니다) Standard 범용적인 목적으로 사용하기 좋고 데이터를 빠른 속도로 접근할 있고 처리 속도도 빠르다 다만 오래 보관 목적으로 효율적인 선택이 아닙니다.
장기적인 보관 목적으로 스토리지를 사용하실 때는 Glacier 사용하는 것이 효율적입니다.(속도는 느리지만 비용이 매우 저렴합니다)
-
정적 사이트 호스팅이 가능
  -
정적 파일 : 서버의 개입 없이 클라이언트에 제공될 있는 파일
  -
호스팅 : 서버의 공간을 빌려주어 사이트의 배포, 운영이 가능하게 만들어주는 서비스
  - S3
에서는 버킷을 통해 정적 사이트 호스팅이 가능

 

버킷 : 버킷이라는 저장 공간에 정적 파일을 업로드하고 버킷을 정적 사이트 호스팅 용도로  구성하면 정적 사이트를 배포할 있습니다. (파일을 저장하는 최상위 디렉터리라고도 설명할 있습니다)
-
버킷은 파일을 담는 바구니
-
무한히 많은 파일을 저장 가능
-
버킷의 이름은 리전에서 고유해야
-
버킷의 정책을 생성하여 액세스 권한을 부여 가능

버킷 생성 주의해야 점은 버킷 이름을 붙일 여러 리전에서 유일무이한 이름을 사용해야 합니다. 그래야 사용자가 버킷 URL 통해 해당 데이터에 접근할 있습니다.

 

S3에서 버킷에 담기는 파일을 객체라고 (object) 부릅니다. 객체란 문서, 이미지, 비디오 비교적 단순한 구조에 메타데이터을 포함하고 있는 데이터로, 버킷에 저장한 모든 것을 객체라고 부릅니다.
-
객체는 버킷에 담기는 파일
-
객체는 파일과 메타데이터로 구성 (메타데이터는 객체의 생성일, 크기, 유형과 같은 객체에 대한 정보가 담긴 데이터입니다 )
-
모든 객체는 고유한 키를 가짐 )(- 페어 형식으로 데이터를 저장합니다)
-
데이터의 최대 크기는 5TB입니다
- URL
주소를 통해서 객체에 접근 가능

 

Storage – S3
접근성 통제 :
(Access Control), S3 버킷에 누가 어떻게 접근하도록 것인지를 정의하는 것을 말합니다. 접근성 통제 방식은 주로 JSON 이용해 작성된 정책(Policy) 통해 이루어지며, 접근 정책, 버킷 정책, 접근 제어 목록 등의 방식을 사용합니다
.

ID : 정책의 ID 값으로, UUID 사용하기를 권장합니다.
SID : Statement ID
statement 구분하기 위해서 사용합니다.
Effect :
정책의 효과를 나타내며, 허용할 것인지 거부할 것인지를 선택할 있습니다.
Principal :
대상 주체를 지정합니다. Users, Services 등이 있습니다.
Action :
정책을 통해 승인 혹은 거절할 동작을 의미합니다.
Resource : Action
영향을 미치는 리소스 리스트를 지정합니다.
Condition :
조건이 충족되는 경우에는 해당 정책을 적용시킬 있습니다.

정책은 사용자, 그룹, 롤에 할당하는 IAM 정책인 Identity-based policies S3 Bucket, SES Queue AWS 자원에 할당되는 정책인 Resource-based policies 나뉘어 작성됩니다.

 

접근 정책 (Identity-based policies)
IAM, 신분 접근 관리 정책으로 S3 객체를 매우 세분화해 통제할 있습니다. 먼저 유저, 그룹, IAM 정책을 정의합니다. IAM S3 이용하면 특정 IAM 유저와 공유되고 있는 버킷을 선택할 있고, 특정 유저가 해당 버킷에 접근하도록 허용할 있습니다
.

버킷 정책 (Resource-based policies)
버킷 정책이란 버킷 레벨에서 생성한 정책을 의미하며, S3 버킷을 세분화된 방식으로 제어할 있도록 합니다. 대표적인 버킷 정책의 사례는 특정 버킷에 있는 객체에 대한 익명의 사용자로부터의 리드 온리 접근을 허용하는 케이스입니다.

S3 best Practice
- 보통의 경우 S3 버킷에 대한 퍼블릭 액세스를 허용해서는 안됩니다. S3 버킷을 퍼블릭 액세스 있다는 말은 모든 파일이 아무에게나 노출될 있다는 의미입니다.
-
최소한의 접근 권한 전략을 사용합니다. S3 버킷에 접근해야 하는 사람에게도 관련 작업에 해당하는 만큼만 권한을 부여하고, 그외 사람에게는 접근 거부 정책을 적용합니다.
-
다중인증(MultiFactor Authentication, 이하 MFA) 시스템을 활용합니다. MFA Delete 설정하여 데이터 삭제 권한이 없는 사람은 삭제 없도록 제한합니다.

Ref : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/storage-class-intro.html

 

Storage – EBS
Elastic Block Store, EBS EC2 인스턴스에 사용할 있는 블록 수준 영구 스토리지 볼륨입니다. EC2 인스턴스에 EBS 볼륨을 부착하면, 서버를 위한 하드 드라이브와 같은 기능을 수행하게 됩니다.

EC2 부착한 EBS 볼륨은 언제든 분리할 있고, 다른 EC2 부착도 가능하지만, EBS 볼륨은 특정 AZ 속한 자원이기도 하므로, 서로 다른 AZ 간의 EC2 EBS 볼륨을 분리하고 부착하는 것은 불가능 합니다.

EBS 볼륨은 서버 재시동 후에도 유지되므로 기존에 저장된 내용은 그대로 남게 됩니다.

Ref: https://docs.aws.amazon.com/ko_kr/ko_kr/AWSEC2/latest/WindowsGuide/ebs-volume-types.html

 

Storage – EFS
Elastic File System, EFS 서버를 사용하지 않는 간단한 탄력적인 파일 시스템을 제공합니다. EFS 파일 시스템을 생성하고 EC2 인스턴스에 파일 시스템을 탑재한 파일 시스템에 데이터를 작성하거나 파일 시스템에서 데이터를 읽을 있습니다.

애플리케이션을 중단하지 않고 온디맨드 방식으로 페타바이트 규모까지 확장되도록 구축되어, 사용자가 파일을 추가하고 제거할 자동으로 확장/축소되므로 데이터 증가에 맞춰 용량을 프로비저닝 관리할 필요가 없습니다.

Ref : https://docs.aws.amazon.com/ko_kr/ko_kr/efs/latest/ug/storage-classes.html