본문 바로가기
코딩이야기/AWS S3

AWS S3(스토리지 서비스) 생성 및 설정하기

by TaeHyeon0412 2024. 8. 21.

 

S3는 Simple, Storage, Service의 약자라고 합니다.

간단하게 말하면 사진,동영상 등의 파일을 저장하기 위해 사용하는 서비스라는 거죠.

 

AWS S3의 특징

  • 저장할 수 있는 파일 수의 제한이 없습니다.
  • 최소 1바이트에서 최대 5TB의 데이터를 저장할 수 있습니다.
  • REST, SOAP 인터페이스를 제공합니다.
  • SSL을 통한 데이터 전송과 암호화로 높은 내구성과 보안성을 가지고 있습니다.
  • 다른 모델들과 비교해 상대적으로 저렴한 비용으로 무료 사용자도 불편함 없이 사용할 수 있습니다. 

 

 

AWS S3 용어 정리

1) 객체(object)

S3에 저장된 데이터의 기본 단위, 파일 하나하나가 전부 객체라고 생각하면 됩니다.

2) 버킷(Buket)

S3에서 생성 가능한 최상위 디렉토리입니다.
객체를 하나로 묶어서  그룹으로 만들어 준다고 생각하면 됩니다.
계정별로 100개까지 생성 가능하며, 버킷에 저장 가능한 객체 수와 용량에는 제한이 없습니다.

3) 버전 관리

S3에 저장된 객체들의 변화를 저장합니다. 
객체를 삭제하거나 변경할 때 각각의 변화를 모두 기록하기 때문에 실수가 있어도 되돌리기가 가능합니다.
github의 기능과 비슷하다고 생각하면 될 것 같습니다.

4) RSS (Reduced Redundancy Storage)

표준 스토리지보다 저렴한 비용으로 데이터를 저장할 수 있습니다.
일반 S3 객체에 비해서 데이터가 손실될 확률이 높은 형태의 저장 방식이라서 원본을 복제한 데이터나 
사용자가 복원이 가능한 데이터를 저장하는데 적합합니다.
아마존은 하드디스크보다 400배는 안전하다고 주장하네요 

 

AWS S3 버킷 생성하기


1) AWS S3를 검색하고 로그인을 한 뒤 버킷 만들기를 클릭합니다.

 

2) AWS 리전을 설정해 줍니다.
오른쪽 상단에 표시된 부분을 누르면 지역을 선택할 수 있습니다.
(만든 이후에는 지역을 바꿀 수 없으니 만들 때부터 바꿔야 됩니다.)

버킷 이름도 설정해 줍니다.
버킷 이름은  3자(최소)에서 63자(최대) 사이, 소문자, 숫자, 마침표(.), 하이픈(-)으로만 구성될 수 있습니다.

 

3) 객체 소유권은 권장사항으로 나두고 퍼블릭 액세스 차단 설정으로 넘어갑니다.
S3를 외부에 공개하려면 모든 액세스 차단을 체크해제 후 경고문에 체크를 하면 됩니다.

 

4) 버전 관리는 파일을 버전 별로 관리해주기 때문에 사용자가 실수로 삭제 한 파일을 복원 가능하지만
과금이 되므로 잘 생각해서 체크해 줍니다.

 

5) 기본 암호화를 활성화하면 객체를 저장할 때 암호화, 다운로드할 때 복호화가 됩니다.
필요하지 않은 사람들은 비활성화하고 넘어갑니다.
고급설정은 그대로 두고 버킷 만들기를 눌러주면 생성 완료됩니다.

 

6) 버킷 정책 설정

생성 된 버킷 이름을 클릭하여 권한 -> 버킷 정책 -> 편집 -> 정책 생성기로 들어갑니다.
그리고 아래와 같이 설정합니다.

  • Select Type of Policy - S3 Bucket Policy
  • Effect - Allow (모든 사람에게 접근 허용)
  • Principal - * (모든 사람에게 접근 권한 부여)
  • Actions - GetObject, PutObject, DeleteObject (객체 조회, 업로드, 삭제)
  • ARN - arn:aws:s3:::버킷 이름

 

설정 후에 Add Statment를 누르면 나오는 Generate Policy를 클릭합니다.
그럼 이미지처럼 창이 뜰텐데 모든 내용을 복사하여 정책에 붙여넣기 합니다.

 

이렇게 저장하면 알 수 없는 오류라는 창이 뜨는데 Resource 속성 값의 맨 뒤에 /*을 달아주면 해결됩니다.
특정 폴더에만 접근하게 하고 싶으면 /폴더 이름으로 하면 됩니다.

 

7) CORS 설정

편집을 누르고 아래의 내용을 써줍니다.

  • AllowedHeaders - 클라이언트에서 사용할 수 있는 헤더를 지정합니다. "*"로 설정하면 모든 헤더를 허용합니다.
  • AllowedMethods - 허용할 HTTP 메소드를 지정합니다. HEAD, GET, PUT, POST, DELETE 메소드를 허용합니다.
  • AllowedOrigins - 허용할 도메인을 지정합니다. "*"로 설정하면 모든 도메인을 허용합니다.
  • ExposeHeaders - 클라이언트가 액세스할 수 있는 헤더를 지정합니다.

 

 

AWS S3(스토리지 서비스) 생성 및 설정완료!