Study/Cloud

[AWS] S3 따라만 해도 할 수 있다!

AC 2019. 3. 4. 19:19

정적 콘텐츠(Static Contents)를 제공할 S3 Bucket을 하나 만들고,

해당 Bucket과 관련된 몇 가지 설정(Static Website Hosting 기능 활성화, 접근제어 정책)을 진행 할 것이다.


3-1 S3 Bucket 생성

먼저 블로그 서비스를 위한 S3 Bucket을 생성한다. Bucket의 이름은 모든 AWS 계정과 Region에 걸쳐 전 세계에서 유일해야 한다.




[AWS Management Console] > [S3] > [Create Bucket]


생성한 Bucket에 대한 Access Log 설정을 한다.





여기서 잠깐 Q&A


Q. S3의 Access Log는 언제 어디에 저장되나요?

A. Access Log는 원하는 S3 Bucket과 경로를 지정하면 해당 위치에 객체 형태로 저장된다. 주기적으로 로그가 저장되지만 레코드의 순서는 순차적이 아니며 정확한 저장 주기 또한 고정된 것이 아니다.


Q. S3 Access Log의 로그 형식(Format)은 어떻게 되나요?

A. 로그 포맷은 AWS 공식문서를 통해 확인할 수 있다. 일반적인 웹로그 형식에서 갖고 있는 대부분의 항목을 포함하고 있으며, Bucket과 관련된 몇몇 항목이 부가적으로 추가되어 있다.

 




3-2 S3 Properties 설정

S3 Bucket 단위별로 다양한 설정이 가능하다. 우측 상단의 [Properties] 탭을 선택하면 하위에 다양한 설정들이 나타난다.


[AWS Management Console] > [S3] > [생성한 S3 Bucket 선택] > [Properties]


S3 Bucket 설정 중 가장 중요한 부분은 Bucket에 대한 접근권한 설정이다. 다음과 같이 설정한다.



[AWS Management Console] > [S3] > [생성한 Bucket 선택] > [Properties] > [Permissions]


현재 자신의 AWS 계정과 Log 전달자에 대한 Bucket ACL이 기본적으로 설정되어 있다.

여기에 Bucket Policy를 추가하여 모든 사용자 및 AWS 리소스가 이 S3 Bucket에 접근할 수 있도록 설정한다.




[AWS Management Console] > [S3] > [생성한 Bucket 선택] > [Properties] > [Permissions] > [Add bucket policy]




3-3 S3 정적 웹호스팅 설정


[AWS Management Console] > [S3] > [생성한 Bucket 선택] > [Properties] > [Static Website Hosting]



Website Hosting 기능을 활성화하고 Index 페이지와 Error 페이지 경로를 입력한다.

이제 해당 버킷의 객체에 접근할 때에 "blog.aws.com.s3-website-ap-northeast-2.amazon.com"로 시작되는 주소값을 사용할 수 있게 되었다. 추후 DNS에서 CNAME 처리를 통해 주소값을 다른 주소로 대체하게 되며, 이때 반드시 Bucket의 이름과 CNAME 처리할 서비스 도메인의 이름은 동일해야 한다.




3-4 S3 Bucket에 객체 업로드 및 다운로드

생성한 S3 버킷에 AWS Management Console을 통해 새로운 객체를 업로드 해보겠다.

[AWS Management Console] > [S3] > [생성한 Bucket 선택] > [Upload]


[AWS Management Console] > [S3] > [생성한 Bucket 선택] > [Upload]


test.png 파일이 S3 Bucket에 업로드 되었다. 이제 업로드된 파일을 반대로 다운로드 받아보겠다.

업로드된 파일의 URL을 확인하고 브라우저나 WGET 등의 명령어를 통해 다운로드 받는다.





API Endpoint나 WEbsite Endpoint 주소값을 통해 해당 객체를 각각 다운로드 받아보자.


Website Endpoint : http://blog.aws.com.s3.ap-northeast-2.amazonaws.com/test.png

API Endpoint : http://s3.ap-northeast-2.amazonaws.com/blog.aws.com/test.png





여기서 잠깐 Q&A


Q. 동일한 S3 객체를 지칭하는 두 개의 주소값이 있다고 하는데, 어떻게 다른가요?


A.


Endpoint

REST API Endpoint 

Website Endpoint 

URL 예시 

s3.<region.amazonaws.com/<bucket-name>/path/1.jpg 

<bucket-name>.s3-website.<region>.amazonaws.com/path/1.jpg 

가능 작업

 모든 Bucket,Object 범위의 작업 요청 가능

Object의 GET/HEAD 요청만 

 접근 제어

 Public/Private 객체대상

Public 객체대상 

 Redirection 지원

 미지원

지원 

 SSL 지원

 지원

미지원 


 




지금까지 IAM, CloudTrail, Config를 이용하여 AWS 계정 설정 및 보안/감사 기능을 활성화 하였으며, 웹 기반의 스토리지인 S3를 구축하였다.




















LIST