만쥬의 개발일기
article thumbnail

🪣S3 버킷 생성하기

AWS에서 S3 버킷을 생성하는 방법을 알아보도록 하자.

🎯S3란?

Simple Storage Service의 약자로 인터넷용 스토리지이다.

Amazon S3는 웹상에서 원하는 양의 데이터를 저장하고 검색하는데 사용할 수 있는 간단한 웹 서비스 인터페이스가 있다. 그리고 S3는 객체 스토리지인데, 객체로 된 파일을 저장한다.

 

🎯S3를 사용하는 이유

  • S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.
  • 비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴하다
  • S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.
  • 웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고, HTTP 프로토콜(restful)로 파일 업로드/다운로드 처리가 가능하다.
  • S3 자체로 정적 웹서비스 가능하다.
  • 동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감할 수 있다.

🎯S3의 기본 용어

Buckets

  • Amazon S3에서 생성되는 최상위의 디렉토리이며, Amazon S3에 저장된 객체의 컨테이너이다.
  • S3상의 모든 객체는 버킷에 포함된다.

Objects

  • S3에 데이터가 저장되는 최소 단위이다.
  • 데이터와 메타 데이터를 구성하는 저장 단위이다. (데이터: 객체 , 메타데이터: 수정일, 파일 타입등의 데이터)

Keys

  • 버킷 내 객체의 고유 식별자이다.
  • 버킷의 모든 객체에는 정확히 하나의 키가 존재한다.
  • 보통 "디렉토리 + 파일명" 으로 명명된다.

Regions

  • S3가 생성한 버킷을 저장할 위치를 지정한다.
  • 리전 간 객체 공유는 불가능하다.
  • 버킷 위치(리전)을 어디에 지정하냐에 따라 지연 시간, 비용 등이 결정된다.

 

STEP 1. 버킷 생성

이제 실제 버킷을 하나 생성해보자.

AWS에 로그인 한 뒤, S3 서비스에 접속해 버킷 만들기를 클릭한다.

 

버킷 이름과 리전을 선택한다. 이때, 해당 버킷 이름은 전세계에 단 하나만 존재해야만 한다.

S3의 퍼블릭 액세스 권한을 설정한다.

이때, 외부에 S3을 공개할 경우 모든 퍼블릭 액세스 차단을 체크 해제한다.

액세스를 차단할 경우, IAM에서 발급받은 키를 이용해 S3 객체에 접근 가능하다.

 

버전 관리와 암호화는 그대로 두고 생성을 한다.

STEP 2. 보안 정책 생성

 

생성은 완료되었지만, 객체를 퍼블릭으로 설정할 수 있음 이라는 문구가 뜨고 외부에서 접근이 불가능하다.

 

http://awspolicygen.s3.amazonaws.com/policygen.html

 

AWS Policy Generator

Click below to edit. To save the policy, copy the text below to a text editor. Changes made below will not be reflected in the policy generator tool.

awspolicygen.s3.amazonaws.com

위 사이트로 들어가 버킷 정책을 생성해주자.

  • Select Type of Policy: S3 Buckey Policy
  • Effect: Allow
  • Principal: *
  • Actions: GetObject (조회만 가능하도록 getObject 권한만 체크.)
  • Amazon Resource Name (ARN): arn:aws:s3:::{버킷이름}/* (ARN 뒤에는 /접속경로를 적어주면 된다.)

ADD STATEMENT를 누르고, 생성된 정책을 확인 후 GENERATE Policy 버튼을 누르면 다음과 같이

정책의 json 파일이 생성된다.

 

해당 값을 복사해서 내 버킷 -> 권한 -> 버킷 정책에 붙여 넣는다.

퍼블릭으로 변경되었고, 이제 정상적으로 접속이 가능하다.

 

이제 버킷에 객체를 업로드 한 뒤, 객체 url을 통해 해당 데이터에 접근이 가능하다.

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!