AWS/실습 기록

AWS S3 버킷 생성하고 파일 업로드 및 삭제 방법 알아보기

daeunnniii 2021. 8. 2. 18:12
728x90
반응형

1. AWS S3란?

S3는 Simple Storage Service의 약자로,  AWS에서 제공하는 파일 저장 인터넷 저장소이며 용량은 무제한이다. HTTP를 이용하여 파일 접근 및 업로드, 다운로드가 가능하다. S3는 버킷(Bucket)과 객체(Object)로 구성된다.

버킷(Bucket) : S3에서 생성할 수 있는 최상위 디렉토리로, 각 리전(Region)별로 생성 가능하고 버킷의 모든 이름은 모든 S3 Region에서 유일해야 하며 계정별로 100개까지 생성할 수 있다. 또한 버킷 안에 객체(Object)가 저장되고 디렉토리 생성이 가능하며 접속 제어 및 권한 관리가 가능하다. 즉, 쉽게 말해서 버킷은 S3에서 파일을 저장하는 폴더라고 생각하면 된다.

▶ 객체(Object) : S3에 데이터가 저장되는 최소단위로 파일과 메타데이터로 구성된다. 기본적으로 객체의 Key가 데이터 이름이고, Value가 데이터 타입이며, 객체 하나의 크기는 최소 1Byte부터 최대 4TB까지 가능하다.

 

2. S3를 사용해야하는 경우

SNS와 같이 서버에 많은 미디어 파일을 저장해야하는 경우, EC2와 EBC만을 사용해서 저장하게 된다면 용량에 따른 과금 및 저장소 구축, 관리로 인한 성능 문제 등이 있을 수 있다. 하지만 S3를 사용하면 S3 한곳에 모든 미디어 파일을 관리할 수 있고 과금도 EC2 & EBS 조합보다 상대적으로 싼 가격에 이용할 수 있으며 AWS에서 스스로 S3 서버를 증설하고 성능을 관리하므로 성능이나 용량을 높이는 기술력을 갖추지 않아도 된다. 만약 EC2와 EBS로 정적 웹서비스(HTML과 javascript로 구성된)을 구축한다면 일일이 EC2와 EBS를 생성할 필요없이 바로 S3에서 연결하여 사용하면 된다. 동적 웹페이지(ASP, JSP, PHP, Ruby on Rails등으로 구성된) 서비스를 한다면 동적 웹페이지의 처리는 EC2나 다른 곳에서 돌리고 나머지 정적 웹페이지 처리만 S3에서 처리하면 된다.

 

3. AWS S3 버킷 생성하기

먼저 스토리지>S3로 들어가 "버킷 만들기"를 클릭한다.

고유한 버킷 이름을 입력하고 리전을 선택한다.

엑세스 차단 설정의 경우 버킷에 저장한 파일의 권한을 설정하는 기능이다. 퍼블릭으로 데이터를 제공해야되는 경우가 아니라면 서비스 환경에 맞춰 "모든 퍼블릭 액세스 차단"을 선택해주는 것이 좋다. 추가적으로, 버킷 생성 후에도 이 설정값은 변경 가능하다.

 

퍼블릭 엑세스를 설정하게 되면, 버킷이 생성된 후 고유한 URL이 부여된다. 이 URL을 통해서 저장된 파일에 접근 할수 있게 하는 기능을 사용할 수 있다.

ACL 액세스 제어 목록으로 버킷과 객체에 대한 액세스를 관리한다.

그 다음에는 버전 관리, 태그, 기본 암호화 등을 선택할 수 있다.

버전관리는 개발할 때 소스를 git, svn으로 관리하는 것처럼 버킷 내의 파일들의 버전을 관리할 수 있는 기능이다.

태그는 해당 버킷을 태깅해놓고 이후에 비용측정이라던지 많은 버킷 중에 태그로 검색을 한다던지 할 때 쓰는 태깅 기능이다. 버킷을 그룹핑 하기 좋다.

암호화는 말그대로 파일들을 암호화해서 좀 더 보안적으로 신경써서 관리하게 해주는 기능이다.

 

이 부분은 버킷 생성 후에도 변경 가능하므로 기본값을 그대로 두고 "버킷 만들기"를 선택한다.

 

추가적으로, 아래 '고급 설정'을 누르면 객체 잠금을 설정할 수 있다. 

객체 잠금은 중요한 파일이 버킷에 저장될 경우 보안에 좀 더 신경써야하므로 이때 사용하는 기능이다.

 

4. AWS S3에 파일 업로드

버킷 만들기가 잘 되었으면, 버킷 리스트에 새로 생긴 버킷 리스트가 뜰 것이다. 버킷 이름을 클릭하면 다음과 같은 화면이 뜬다. 이곳에서 객체를 업로드하고 관리할 수 있으며, 속성, 권한, 관리 등을 통해 S3 버킷 설정을 변경하고 관리할 수 있다.

우선 "업로드" 버튼을 클릭한다.

 

업로드할 파일을 선택한 뒤 "업로드" 버튼을 클릭하면 파일이 정상적으로 업로드 된다.

 

객체가 추가된 것을 볼 수 있다. S3에 업로드 되는 모든 파일에는 객체 URL이 부여된다.

해당 URL을 브라우저 주소창에서 호출하면 업로드된 파일이 보인다.

하지만 만약 파일 권한을 퍼블릭하게 주지 않으면 AccessDenied라는 에러가 뜰 것이다.

 

5. 권한 변경 등 설정 변경

파일의 권한을 퍼블릭하게 설정하기 위해서는 버킷의 권한을 퍼블릭으로 수정해주어야한다. 아래와 같이 권한 탭으로 들어가 "편집" 버튼을 눌러 모든 퍼블릭 엑세스 차단 체크박스의 체크를 풀어준다.

그리고 이번에는 업로드한 파일의 퍼블릭 권한을 부여할 것이다.

객체의 권한 탭을 클릭하고 "편집" 버튼을 누르면 아래와 같이 뜨는 것을 볼 수 있다. 

"모든 사람"에 객체 읽기, 객체 ACL 읽기 체크박스를 선택해준다.

 

그러면, 이제 부여받은 S3 URL에 들어가보자. 업로드한 파일의 속성 탭에 들어가면 "객체 URL"을 확인할 수 있다. 해당 URL을 브라우저로 들어가면 업로드했던 파일 사진이 잘 보이게 된다.

 

파일 삭제의 경우, 객체 왼쪽에 체크박스를 선택하면 위 "삭제" 버튼이 활성화되어 객체를 삭제할 수 있다.

 

다음 게시물에서는 S3 버킷에 올린 음성 파일로 AWS Transcribe API를 사용하는 방법에 대해 알아보고, AWS S3와 Django를 연동하는 방법을 알아볼 것이다.

 

 

참고: https://twofootdog.tistory.com/36

https://bamdule.tistory.com/177

 

 

728x90
반응형