본문으로 바로가기

S3는 simple storage service의 준말이다. 

S3를 사용하는 이유는 간단하다.

대용량의 파일을 EC2나 EBS만을 통해 구축한다면 상당히 많은 비용이 들어가기 때문이다.

 

또, 정적인 웹 서비스를 구축한다면

EC2가 아니라 S3에서 바로 정적 웹 호스팅을 사용할 수 있다.

 

동적 웹 페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용할 수도 있다.

이 방식을 선호하는 이유는 S3 자체가 성능이 좋은 웹 서버로 구성되어 있어

EC2만 운용했을 때보다 성능이 좋고 비용도 싸다.

auto scaling이나 ELB에 신경 쓰지 않아도 된다는 장점도 있다.

 

버킷을 생성하고 활용해보자

 

 

이름과 리전을 설정하면 버켓이 생성된다.

혹시 EC2를 비롯한 다른 서비스와 연계하고 싶다면 같은 리전으로 설정해야 한다.

 

버켓에 객체를 업로드하는 것도 Dropbox나 google Drive와 다를 바가 없어 쉽게 이용할 수 있다.

참고로 S3에 무언가를 업로드하는데 성공했다는 HTTP 200 OK status code를 받을 것이다.

 

이제 S3의 세부 설정을 이용해보자.

 

1. 객체 접근 권한 관리

각 객체마다 접근 권한을 달리 설정할 수 있다.

우선 생성한 객체를 클릭한 후 [개요]로 가 객체 URL로 접근해보자

 

객체 URL로 이동하자

그렇다면 AccessDenied될 것이다.

Public하게 만들지 않았기 때문이다.

객체의 권한을 수정해주자

객체 클릭 - [권한]으로 수정할 수 있다.

 

 

간혹 수정이 먹지 않을 때가 있는데 Bucket에 Public Access를 막아놓은 것으로 설정하고 생성했기 때문이다.

버켓으로 이동하여 권한을 수정하도록 하자

 

이런 절차를 매번하는 것은 번거로우므로 업로드할 때 public access를 허용할 수도 있으며

 

이미 만들 파일을 여러개 선택하여 public access로 변경할 수도 있다.

2. 버켓 권한 관리

 

버켓 정책을 지정하면 버킷 안에 든 모든 객체에 적용된다.

버켓안에 든 모든 객체를 public access하게 만들어 보자

 

버켓 정책에는 JSON 형태로 정책을 입력하면 되나 다소 복잡한 규칙이 있기 때문에 하단의 정책 생성기를 눌러서

활용하도록 하자.

 

principal : 권한을 적용할 사용자. 여기서는 public access할 것이므로 전체(*)입력

ARN은 아마존의 리소스를 고유하게 표현하는 방식이다.

버켓 내 전체 객체를 지정할 것이므로 arn:aws:s3:::[버켓명]/*을 입력한다.

특정 객체에만 정책을 주고 싶다면 arn:aws:s3:::[버켓명]/[객체명]을 입력한다.

 

실행하면 JSON을 던져줄 것이다. 이 JSON을 버켓 정책에 복붙한다.

 

3. S3 정적 웹사이트 호스팅 사용하기

우선 버켓 생성 후 버킷 정책을 public access로 바꾸어 주자

앞서 살핀 2.의 과정을 거치면 된다.

 

그 후 [속성]-[정적 웹 사이트 호스팅]

(이 속성에서 logging, 버전 관리 등 다양한 서비스들을 이용할 수 있다.)

 

인덱스 문서 (처음 보여지는 페이지)의 이름을 입력하고 저장을 누릅니다.

설정 후 버켓에 html 파일을 업로드하면 웹 호스팅 서비스가 잘 됨을 확인할 수 있습니다.

접근은 엔드포인트에 접속하면 됩니다.

 

 

4. 버저닝

 

동일한 이름을 가진 객체의 버전을 관리합니다.

주의할 사항은, 한 번 키면 끌 수 없습니다. 일시 중지만 가능할 뿐입니다.

또, S3 life cycle을 사용할 수 없게 됩니다!!

 

 

활성화 한 다음 동일한 이름의 객체를 넣었더니 버저닝이 된 것을 확인할 수 있습니다.

 

 

 

5. 수명주기

 

속성이 아니라 관리 탭에 들어가서 설정해야 합니다.

공식 문서를 참고해가면서 설정하는 것이 좋습니다. 여기서는 간단히 무엇이 있는지 확인만 했습니다.

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/user-guide/create-lifecycle.html

 

 

 

7일이 지나면 Glacier로 옮기도록 설정했습니다. (실제로는 작은 데이터일 경우 Glacier로 옮기는 이점도 없고 불편하기만 합니다)

 

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체