S3 で HTTPS をリダイレクトする
ドメインが変わった時など、古いURLから新しいURLに自動でリダイレクトしたい時がある。 そのためにサーバを用意してもよいけど、ただリダイレクトするためにサーバを用意するのは大変だ。
http の場合は S3 を使うのが簡単。
一方で https の場合は S3 単独ではうまくいかない。 S3 website endpoint は HTTPS に対応していないからだ。 そこで CloudFront と組み合わせて使うとうまくいく。
old.example.com
から新しい URL にリダイレクトするときの手順は以下のとおり。
- S3 で http のリダイレクトをしたい時と全く同じ設定をする
- SSL 証明書を IAM にアップロードする
- CloudFront で distribution を作成する
- Origin Domain Name: 選択肢としてでてくる S3 bucket
old.example.com
を指定せずに、 S3 website endpointold.example.com.s3-website-{region}.amazonaws.com
を指定 - Origin Protocol Policy: HTTP Only
- Alternate Domain Names (CNAMEs):
old.example.com
- SSL Certificate: 2 でアップロードした SSL 証明書を選択
- Origin Domain Name: 選択肢としてでてくる S3 bucket
- DNS の設定で
old.example.com
の CNAME を、割り当てられた CloudFront のホストに設定する