サービスをリニューアルするときに、ドメインも新しく作りなおしていて、どうしてもリダイレクトしておきたい場合があります。でも、そのリダイレクトってサービスの仕様ではないし、それなりに時間経ったら不要になるだろうから消したい。
そんなことのために、本体サービスのnginxにリダイレクト設定を書いたり、リダイレクトのためだけにEC2を立てるのは非常にだるい。
というわけで手抜きをして、S3でリダイレクト設定を書いてみる。
StaticWebHostでリダイレクト
例:old.hoge.comをnew.fuga.comにリダイレクトする場合
この段階でEndpointにアクセスするとリダイレクトされるのが確認できると思う。
httpsを含まないような場合には、このままこのEndpointをRoute53に登録してやれば良い。 ただ、httpsを含む場合は、このままではhttps経由のアクセスがリダイレクトされないので、以下の作業が必要になる。
httpsを含む場合にはCloudFrontを経由する
httpsを含む場合には、CloudFront経由でS3のEndpointにアクセスさせて、そのCloudFrontに適切な証明書を設定してやれば、httpsのままリダイレクトされる。
- CloudFrontを新規作成する
Originにはバケット名ではなくS3のEndpointを入れる
証明書を設定する(CloudFront用の証明書しかリストアップされないので、ない場合は必要な証明書をCloudFront用に登録し直す)
- S3のold.hoge.comのPermissionに、Everyone: Listを追加する
Route53に登録する
前述のhttpsを使わないパターンの場合は、S3のEndpointを直接、httpsを使う場合はCloudFrontのEndpointをCNAMEに登録してやる。
というところまでやると、無事リダイレクトされた。