AWS S3 사용 방법 및 Cloud Front 적용해보기
AWS S3는 스토리지 서비스(Storage Service)입니다. 쉽게 말하자면 특정한 사진, 동영상 등의 파일을 저장하기 위해 사용할 수 있는 서비스입니다. 사용 예시는 매우 광범위합니다. 게시판 웹 사이트를 개발 할 때 이미지 파일만을 S3에 저장할 수 있으며, 특정한 로고 사진 등을 S3에 저장하여 사용자가 빠르게 사진 파일을 다운로드 받도록 처리하는 등의 작업이 가능합니다.
S3에서 객체(Object)란 저장되는 파일을 의미하고, 버킷(Bucket)은 파일이 저장될 프로젝트를 의미합니다.
AWS S3 서비스에 파일 올리기
바로 한 번 AWS S3 서비스를 이용해 보도록 하겠습니다.
AWS S3에서는 [버킷 만들기] 버튼을 눌러서 버킷을 생성할 수 있습니다. 쉽게 말하면 하나의 프로젝트를 생성해주는 것입니다.
- [버킷 이름]은 다른 서버와 겹치지 않는 고유한 이름이 되어야 합니다.
- 리전(Region)은 일반적으로 S3을 사용하는 사용자와 가까운 위치가 되도록 설정합니다. 다만 저는 Cloud Front의 성능을 측정하기 위해서 EU(런던)으로 설정했습니다.
이후에 [권한 설정] 탭에서는 실습을 위하여 일단 간단히 퍼블릭(Public) 공간에서 누구든지 접속할 수 있도록 하겠습니다. 따라서 권장 사항으로 제시되어 있는 모든 권한 정책에 체크를 풀어줍니다.
이후에 만들어진 S3 버킷을 확인합니다.
이후에 실습을 위하여 두 개의 파일을 이용하겠습니다. 약간 무거운 파일(5 MB 파일)과 가벼운 파일(1KB 미만)을 준비했습니다. 이 두 개의 파일을 버킷 내에 업로드하여 확인하고자 합니다.
이후에 [개요] 탭으로 가서 실제로 파일을 업로드할 수 있습니다.
두 개의 파일을 올린 이후에 업로드를 진행하면 됩니다.
두 파일이 올라간 이후에는 언제든지 다운로드 할 수 있습니다.
이제 사용자 입장에서 해당 파일을 다운로드 받는다고 가정하겠습니다. 특정한 파일을 누르면 퍼블릭(Public)에서 접근 가능한 URL 경로를 확인할 수 있습니다.
하지만 실제로 해당 경로에 접속을 해보면 접근 불가(Access Denied)라고 출력되는 것을 알 수 있습니다.
따라서 S3는 개별적으로 파일을 선택하여 [퍼블릭으로 설정]을 눌러 퍼블릭 형태로 설정할 수 있습니다. 한 번 해당 파일을 퍼블릭으로 설정해보도록 하겠습니다.
[퍼블릭으로 설정] 버튼을 누르시면 됩니다.
[퍼블릭으로 설정]한 이후에는 다시 해당 경로로 접속했을 때 내용을 확인할 수 있습니다.
버킷 정책 수정하기
다만 이렇게 일일히 파일을 [퍼블릭으로 설정]하는 것을 귀찮은 작업이 될 수 있습니다. 따라서 특정한 범위의 파일에 대해서 전부 한꺼번에 [퍼블릭으로 설정]하는 방법도 있습니다. [권한] 탭으로 가서 [버킷 정책]을 수정하여 버킷 내에 모든 파일들이 퍼블릭(Public)에서 접근이 가능하도록 설정할 수 있습니다. 다만 여기에 들어가는 내용은 [정책 생성기]를 통해 생성할 수 있습니다.
[정책 생성기] 버튼을 눌러서 S3 접근을 위한 설정을 할 수 있습니다. 다음과 같이 [S3 Bucket Policy]를 선택한 뒤에 Principal에는 *을 넣습니다. AWS Service에는 [Amazon S3]를 넣습니다. 이후에 Actions에 [GetObject]를 넣습니다.
이는 해당 URL을 알고 있는 모든 주체(Principal)가 객체에 접근할 수 있는 것을 의미합니다. 또한 객체(Object) 즉, 파일을 다운로드 할 수 있도록 설정하겠다는 의미입니다.
그리고 Resource에는 자신의 AWS S3 고유 경로를 넣은 뒤에 접근할 수 있는 파일의 URL을 설정합니다. 파일의 URL로 /*라고 넣어주게 되면 해당 버킷 내의 모든 객체에 접근할 수 있도록 하겠다는 의미입니다.
이제 [Generate Policy] 버튼을 눌러서 실제로 정책을 생성할 수 있습니다.
이제 생성된 정책 내용을 복사하여 [버킷 정책]의 내용으로 붙여넣기 합니다.
이제 [퍼블릭으로 설정]을 진행하지 않은 Example.zip 파일에 대해서도 URL 경로에 접속하면 다운로드를 받을 수 있게 되었습니다. 다시 말해 모든 파일에 누구든지 접근하여 다운로드 받을 수 있도록 설정한 것입니다.
실제로 다음과 같이 다운로드가 이루어지는 것을 확인할 수 있습니다.
Cloud Front 적용하기
이제 Cloud Front을 이용하여 더 빠르게 리소스를 제공할 수 있도록 하겠습니다. 따라서 Cloud Front 콘솔로 이동합니다. 그리고 [Create Distribution]을 누릅니다.
이후에 배포하고자 하는 대상(Origin Domain Name)으로 우리의 S3를 설정합니다.
이후에 기본 설정으로 바로 [Create Distribution]을 눌러 배포를 진행합니다.
이후에 다음과 같이 처리 진행 중(In Progress) 상태인 것을 확인할 수 있습니다.
약 20분의 시간이 흐른 뒤에 배포 완료(Deployed) 상태가 된 것을 확인할 수 있습니다.
이제 다음과 같이 클라우드 프론트의 URL을 이용해 index.txt를 확인할 수 있게 되었습니다. 맨 처음에 특정 리소스에 접근하려고 하면 아직 CDN 서버에 퍼지지 않았기 때문에 [Miss from cloudfront]라는 캐시를 확인할 수 있습니다.
이후에 두 번째 접속을 할 때부터는 [Hit from cloudfront]이라는 캐시(X-Cache) 메시지를 확인할 수 있습니다. 다시 말해서 Cloud Front를 거쳐서 리소스를 다운로드 받게 된 것입니다.
이상으로 AWS S3 및 Cloud Front의 기본적인 사용법을 알아보았습니다.
'AWS' 카테고리의 다른 글
AWS EC2 인스턴스를 이미지(AMI)로 만들어 그대로 저장하기 (0) | 2019.04.09 |
---|---|
AWS 람다(Lambda)로 Python 서버 API 구현하기 ① Hello World (0) | 2019.04.09 |
AWS RDS로 만든 MySQL 기준 시간을 한국 시간으로 설정하는 방법 (0) | 2019.03.27 |
AWS EC2 인스턴스 성능(사양) 변경하는 방법! (인스턴스 유형 변경) (0) | 2019.03.19 |
AWS EC2에 탄력적 IP(Elastic IP)를 이용해 고정 IP 부여하기 (0) | 2019.03.19 |