1. S3 Bucket 만들기
AWS 공식 가이드는 example.com과 www.example.com 두 개의 bucket을 만들고 www.example.com bucket을 example.com (도메인)으로 redirect 하라고 되어있는데, 구글 도메인은 naked 도메인에 A 레코드를 만들 수 없다.example.com (도메인) 을 S3 bucket으로 redirect 할 수 없기 때문에 내가 차선책으로 생각해낸 방법은 www.example.com bucket 하나에만 컨텐츠를 올려놓고 구글 도메인에서 example.com을 www.example.com으로 포워딩 시키는 것이었다.
먼저 www.example.com bucket을 만든다. 중요한 건 bucket 이름이 사용하고자 하는 도메인명과 똑같아야 한다.
Set Permisssions 화면에 체크박스 네 개가 기본으로 전부 체크 되어있을텐데 정적 웹사이트로 사용하기 위해선 전부 다 해제해서 public access를 가능하게 해줘야 한다.
2. Bucket policy 설정하기
bucket의 Permissions -> Bucket Policy에 아래 것을 복붙 후 저장한다. www.example.com 부분을 실제 도메인명으로 바꾸면 된다. S3 bucket에 read only (읽기 전용) 권한만 주는 것이다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadForGetBucketObjects",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.example.com/*"
}
]
}
3. Bucket을 Static website hosting (정적 사이트 호스팅) 으로 설정하기
Properties -> Static website hosting 클릭, 다음과 같이 설정 후 저장Endpoint에 있는 주소를 복사하자.
4. 대망의 구글 도메인
먼저 할 일은 naked domain을 www로 포워딩하기 이다. 예로 example.com으로 요청이 오면 www.example.com으로 리디렉팅 해주는 거다.
구글 도메인에 로그인해서 DNS 페이지로 이동. Synthetic records 섹션에 다음과 같이 추가한다.
Permanent redirect (301), Forward path, Disable SSL 선택.
그다음은 CNAME 레코드를 만들어서 www.example.com으로 요청이 오면 위에서 복사해둔 endpoint로 가도록 한다. 대신 주의할 점은 endpoint에서 처음 www.example.com 부분은 제외하고 그 뒷부분만 써야한다.
예로 endpoint가 http://www.fwantastic.com.s3-website-us-east-1.amazonaws.com 라면 구글 도메인에는 앞부분을 제외한 s3-website-us-east-1.amazonaws.com 만 사용하면 된다. 그리고 이미지를 자세히 보면 맨 뒤에 . 이 붙어있는데 이건 정상이니 걱정 안 해도 된다. 맨 뒤에 점을 찍던 안 찍던 저장 버튼 누르면 자동으로 점이 붙는다.
레퍼런스
https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html#root-domain-walkthrough-s3-taskshttps://medium.com/@limichelle21/connecting-google-domains-to-amazon-s3-d0d9da467650
https://forums.aws.amazon.com/thread.jspa?threadID=255311
https://stackoverflow.com/questions/45044147/use-domain-registered-on-google-domains-to-point-to-amazon-s3-static-website
https://www.reddit.com/r/aws/comments/86gw85/working_with_google_domains_and_aws/