Ghost에서 AWS S3를 이미지 저장소로 사용하기 - 1편
1달 전부터 Ghost 를 개인 블로그 플랫폼으로 사용하기 시작했다. (이전 플랫폼은 Wordpress 였다.)
이미지는 용량을 많이 먹는다. 이는 서버의 저장 공간을 많이 차지할 뿐만 아니라 트래픽 증가에도 기여한다.
그런데, 이 글에서 이 이미지들을 서버의 로컬 저장소가 아니라 외부 저장소(Custom Storage 라고 표현하고 있다)를 이용할 수 있다는 것을 알게 되었다.
나는 AWS S3 를 이용하기로 했다.
1편 진행 순서
- S3 Bucket 생성
- 생성한 Bucket 을 Public Read 가 가능하도록 설정
- CloudFront 설정
- (CloudFront 에서 Custom Domain 사용 지정 시) Route 53 설정
우선 S3 Bucket 부터 만들자
- AWS Management Console 로 이동
- S3 Console 이동
- Create Bucket 클릭
- Bucket 이름 지정 (나의 경우는 cdn.khhan1993.com 으로 지정했다.)
- Configure options 는 나의 경우는 따로 수정한 것이 없다.
- Set permissions 에서 “Manage public bucket policies for this bucket” 확인 후 체크박스를 둘 다 해제한다.
- 이렇게 하지 않으면 이후에 Public Policy 지정을 할 때 Access Denied 가 발생하게 된다.
- 다 했으면 Create Bucket 을 진행한다.
Bucket 에 Public Read 권한 부여하기
- 생성된 Bucket 을 클릭 후 Permissions 탭으로 이동한다.
- Bucket Policy 클릭 후 밑의 내용을 그대로 붙여넣는다.
(해당 bucket에 대해서 모든 사용자(익명 포함)에게 읽기 권한을 부여하게 된다.)
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"Version": "2012-10-17",
"Id": "Policy1542891309409",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<your_bucket_name>/*"
}
]
}
<your_bucket_name>
에는 자신이 지정한 bucket 이름을 적으면 된다.- Save 를 누른다.
여기까지 하면 S3 Console 에서 해야 할 설정은 끝난다.
CloudFront 설정하기
- CloudFront Console 이동
- 첫 번째에 있는 Web 을 클릭
- Origin Domain Name 을 클릭하면 방금 전에 생성한 Bucket 이 보일 것이다. 이것을 선택하도록 하자.
- Default Cache Behavior Settings 에서 Viewer Protocol Policy 는 두 번째 항목을 선택하도록 한다.
(이렇게 하는 이유는, 만약 https 가 적용된 사이트에서 http 로 resource 요청을 할 경우 브라우저 자체에서 이를 차단해버리는 경우가 발생한다. 이를 미연에 방지하기 위해 https 로 redirect 를 하도록 하려 한다.)
- Compress Objects Automatically 는 Yes 를 선택하도록 한다.
- Distribution Settings 에서 만약 자신의 Custom Domain 을 사용하고 싶다면 Alternate Domain Names 부분에 사용할 도메인 이름을 적으면 된다. (나의 경우 cdn.khhan1993.com 을 적었다)
- Custom Domain 사용 시 Custom SSL Certificate 를 지정해야 한다. Certificate 는 이미 가지고 있는 것을 사용할 수도 있고, Amazon 에서 발급하는 인증서를 사용할 수도 있다.
- 나머지는 그대로 놔두고 맨 밑에 Create Distribution 을 누르면 된다.
Route53 설정하기
이 내용은 자신이 위의 CloudFront 설정 중 Custom Domain 을 사용하기로 했을 경우에만 따라하면 된다. 이 외에는 그냥 넘어가도 된다.
- Route53 Console 로 이동
- 도메인 네임 지정
- Type 은 A Record
- Alias 에 Yes 를 클릭 후, Target 에서 방금 전에 생성한 CloudFront Distribution 을 선택한다.
- Create 버튼을 누른다.
여기까지 했다면 절반 정도 끝낸 것이다. 나머지 내용은 2편에서 계속…