chapo chapo chapppo

睡眠とxxに感けたい

AWS S3とCloudFrontで301 redirectさせる

概要

今回 halu.dev のdomainを取得したので www.xxx.net (念為伏) から引っ越した。S3のstatic website hostingにおけるredirectは勿論 http -> https は可能だが、 https -> https は不可である。

例えば以下のようにredirectさせる。

  • www.xxx.net -> www.halu.dev
  • xxx.net -> www.halu.dev
  • halu.dev -> www.halu.dev

手順

S3 static website hostingの設定

  • www.xxx.net xxx.net の名前でbucketを作成する(分かりやすいように)。
  • Static website hosting を設定する。
    • target bucket or domain : www.halu.dev
    • protocol: https

証明書の発行

  • ACMで証明書を作成する。
    • xxx.net
    • www.xxx.net
    • halu.dev
    • www.halu.dev

Distributionの構築

  • CloudFrontでdistributionを作成する。
    • Alternate Domain Names (CNAMEs) : redirect元のdomain (例: halu.dev)
    • SSL Certificate : redirect元のCustom証明書を選択 (例: halu.dev)
    • Origin domain name and path : www.xxx.net.s3-website-ap-northeast-1.amazonaws.com (S3 endpoint)

f:id:hrt0kmt:20190302025744p:plain

f:id:hrt0kmt:20190302025758p:plain

DNS recordの設定

  • CloudFrontで生成されたdomain nameをredirect元のDNS recordに登録する。
    • type: A (root domainの場合)
      • record name: halu.dev
      • value: Alias xxx.cloudfront.net
    • type: CNAME
      • record name: www.xxx.net.
      • value: xxx.cloudfront.net

301 statusの確認

301 moved permanently (恒久的redirect) のstatusとなっていることを確認する。

curl -I -H 'Host:halu.dev' xxx.cloudfront.net
HTTP/1.1 301 Moved Permanently
Content-Length: 0
Connection: keep-alive
Location: https://www.halu.dev/
Server: AmazonS3
Age: 1546
X-Cache: Hit from cloudfront
Via: 1.1 xxx.cloudfront.net (CloudFront)

curl -I https://halu.dev
HTTP/2 301
content-length: 0
location: https://www.halu.dev/
server: AmazonS3
age: 15211
x-cache: Hit from cloudfront
via: 1.1 xxx.cloudfront.net (CloudFront)