클라우드에 파일을 저장하고 쓸 수 있는 AWS의 S3에 대해서 알아보았다.
스토리지(storage)
스토리지는 저장소라는 뜻을 가지고 있으며 파일이나 데이터 등을 저장하는 장치를 말한다.
대용량 저장장치라고도 불리는 스토리지는 주기억장치로 불리는 램(RAM)이나 하드디스크(HDD) 등도 모두 포함된다.
최근에는 클라우드가 발전하면서 인터넷을 통해 스토리지를 지원한다.
AWS S3
Simple Storage Service의 약자로 AWS에서 스토리지를 지원해주는 IaaS 형태의 클라우드 서비스이다.
파일 서버의 형태로 작용하며 사용자는 인터넷을 이용해 파일을 올리고 내려받을 뿐 아니라 여러 가지 권한 관리까지 가능하다.
S3는 데이터를 bucket 단위로 관리하며 bucket 내에 업로드할 수 있는 파일 객체 수의 제한은 없다.
클라우드에 업로드된 객체는 리전에 따라 여러 Zone에 분산저장되어 가용성과 신뢰성을 보장한다.
기본적으로 S3에 저장하면 3개 이상의 Zone에 저장된다고 한다.
Region
특정 지역(국가)에서 클라우드 서비스를 하기 위한 단위
리전 내에서 독자적으로 모든 온전한 클라우드 서비스가 가능하며 다른 리전에 백업할 필요 없음
네이밍 : ap-northeast-2(서울), ap-northeast-1(도쿄)
Zone (=AZ)
물리적인 데이터 센터를 일부 임차하여 생성된 가상의 데이터 센터
가용성을 위해 1~6개의 물리 데이터센터를 가상의 하나로 묶어서 Zone을 만듦
실제로 어느 물리 데이터 센터를 사용하는지는 알려주지 않음
네이밍 : ap-northeast-2a, ap-northeast-2b, ap-northeast-2c, ap-northeast-2d
권한 관리
S3에서는 Bucket과 객체에 대해 권한을 설정하여 공개 범위를 지정할 수 있다.
퍼블릭 액세스
모든 사용자에 대한 접근을 설정한다.
외부에서 파일을 보기 위해선 버킷과 객체 모두의 퍼블릭 액세스 권한이 있어야 한다.
퍼블릭 설정은 읽기 권한만 주는 것이 바람직하다.
객체 소유권
ACL을 적용하여 객체의 소유를 설정할 수 있다.
객체 라이터로 소유권을 설정할 시 파일을 올린 사람이 소유자가 된다.
접근 방법
S3 URI : awscli같은 Command Line 환경에서 객체를 찾을 때 이용된다.
Amazon 리소스 이름 (ARN) : AWS의 리소스를 고유하게 식별하는 데 사용되며 API 호출 등에서 리소스를 명확히 호출하는 데 사용된다.
엔터티 태그 (Etag) : 객체의 해시로 객체의 변경 사항을 반영한다.
객체 URL : 웹에서 접근 가능한 형태이다.
정적 웹사이트
정적 페이지를 업로드하여 웹 서버의 특수 상황 시 리다이렉트 되도록 설정하는 기능이다.
html 파일에 호스팅을 진행하면 기존 파일명으로 끝나는 객체들과 달리 정상적인 URL처럼 .com으로 끝나는 주소가 주어진다.
업로드한 HTML 파일은 퍼블릭 액세스로 설정되어야 한다.
예시
- 메인 페이지가 다운되었을 때 : 오류 페이지, 공사 중 페이지 등의 정적 페이지를 S3에서 보여준다.
- 일시적 공지가 필요할 때 : 안내 페이지, 이벤트 등의 공지 페이지를 S3를 통해 보여준다
S3 요금 체계
사용자는 데이터의 특성에 맞는 class를 선택하여 요금을 절약할 수 있다.
S3 Intelligent Tiering
데이터의 특성에 따라 자동으로 Tier를 변경해 주어 요금을 절약시켜주는 방식
사용자가 데이터의 특성을 잘 모르겠거나 규정하기 어려운 경우 사용
객체별로 Tier를 설정하여 요금을 부과하며 자주 사용하는 Tier가 가장 비쌈
- Frequent Access Tier : 처음 저장 시 or 다른 Tier에서 사용자의 요청이 발생할 시 변경됨
- Infrequent Access Tier : 30일 동안 사용을 안 할 경우 변경됨
- Archive Access Tier : 90일 동안 사용을 안할 경우 변경됨
S3 Standard : 저장 비용이 가장 비싸지만 데이터 인출 시의 비용이 없음
S3 Standard-IA(infrequent Access) : 자주 접근하지 않는 데이터, 저장비용이 약간 저렴하고 약간의 인출 비용이 있음
S3 One-Zone-IA : 하나의 Zone에만 저장하는 대신 비용이 더 저렴함
S3 Glacier Instant Retrieval : 아주 오래 보관할 데이터를 저장, 저장비용은 매우 저렴하나 인출 비용이 높음
S3 Glaicer Flexible Retrieval : 아주 오래 보관하여 저장 비용이 매우 저렴하고 인출 시 시간이 더 오래 걸리고 비쌈
S3 Glacier Deep Archive : 일 년에 한두 번 액세스 할 경우 인출 시간이 12시간 이내로 가장 오래 걸림
사용 실습
aws s3를 간단하게 직접 사용해보면서 이해해보자.
우리는 이미지를 업로드하면 외부에서 읽을 수 있는 퍼블릭 S3를 구축해 볼 것이다.
먼저 AWS에 접속하여 S3를 검색한다.
버킷 생성
버킷 만들기 버튼을 눌러 버킷을 생성한다.
버킷 생성 화면으로 들어오면 다음과 같이 입력해준다.
버킷 이름
버킷 이름 생성 시 전역에서 고유한 이름을 생성해야 한다. 알맞은 이름을 입력한다.
AWS 리전
버킷은 리전 별로 생성이 가능하다. 성능의 차이는 크지 않으므로 원하는 리전을 선택한다.
객체 소유권
ACL 활성화를 선택하면 ACL을 통해 객체별 소유권을 지정할 수 있다.
실습에서는 버킷 소유자 선호를 선택하여 진행한다.
퍼블릭 액세스 차단 설정
기본적으로 퍼블릭 액세스 차단에 체크되어 있을 것이다. 우리는 퍼블릭에서 접근 가능하도록 구성할 것이기 때문에 체크를 풀어 모든 퍼블릭을 허용한다. 또한 아래의 경고 문구에도 체크하여 생성을 진행한다.
외에 다른 설정값은 기본으로 두고 버킷을 생성한다.
아래와 같이 새로운 버킷이 생성되었다.
이미지 업로드
버킷에 이미지를 올리는 방법은 아주 간단하다.
버킷을 들어간 뒤 파일을 끌어다 올려놓으면 자동으로 업로드 창으로 넘어간다.
업로드 페이지에서 이미지를 외부에서도 볼 수 있게 하기 위해서는 권한 설정이 필요하다.
아래 권한 탭을 열어 퍼블릭 읽기 액세스 권한 부여에 체크를 한 뒤 경고 문구에도 체크를 하여 현재 업로드하는 파일에 대해 퍼블릭 접근을 허용한다.
그 후 업로드 버튼을 누르면 버킷에 파일이 업로드가 성공적으로 진행된다.
파일 접근
이제 업로드한 파일을 접근하여보자. 버킷 내 파일을 눌러 상세정보를 확인하면 여러 접근 방식의 주소가 있다.
우리는 객체 URL을 클릭하여 이미지를 확인하여 보자.
업로드한 사진이 정상적으로 출력되고 있다.
만약 다음과 같은 오류 페이지가 나온다면 버킷이나 객체에서 퍼블릭 액세스 설정이 제대로 되어 있지 않아 거부된 것이다.
생성 과정을 다시 참고해서 퍼블릭 액세스를 적용시키면 정상적으로 이미지가 출력될 것이다.
웹 페이지에서 이용하기
S3 버킷에 올려놓은 이미지를 웹 홈페이지에서 사용하는 방법을 알아보겠다.
방법은 아주 간단하며 이미지 태그의 src 속성에 객체 URL을 넣기만 하면 된다.
다음 코드를 html 파일에 넣고 실행해보자. 객체 URL 주소는 각자의 주소로 수정하여야 한다.
<!-- s3.html -->
<h1>S3 이미지 테스트</h1>
<img src="객체 URL 주소" style="width:500px;height:400px;">
<h2>짜잔~</h2>
위와 같은 페이지가 나온다면 성공이다.
우리는 AWS의 S3라는 기능에 대해 학습하고 실습을 통해 파일을 업로드하고 외부에서 사용해보았다.
'보안 이론 > 클라우드 보안' 카테고리의 다른 글
AWS - Amazon Linux로 WordPress 웹 서버 구축 (0) | 2022.10.19 |
---|---|
AWS - VPC(Virtual Private Cloud) (0) | 2022.10.17 |
클라우드 컴퓨팅이란 (0) | 2022.10.03 |
AWS - EC2를 이용해 IIS 서버 구축 (0) | 2022.09.28 |
AWS - VPC, EC2를 이용하여 웹서버 구축하기 (Gnuboard5) (0) | 2022.09.27 |