S3+CloudFrontだけでリダイレクト設定を作る

  • 18
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

サービスをリニューアルするときに、ドメインも新しく作りなおしていて、どうしてもリダイレクトしておきたい場合があります。でも、そのリダイレクトってサービスの仕様ではないし、それなりに時間経ったら不要になるだろうから消したい。

そんなことのために、本体サービスのnginxにリダイレクト設定を書いたり、リダイレクトのためだけにEC2を立てるのは非常にだるい。

というわけで手抜きをして、S3でリダイレクト設定を書いてみる。

StaticWebHostでリダイレクト

例:old.hoge.comをnew.fuga.comにリダイレクトする場合

  1. old.hoge.comというバケットをS3で作る
  2. バケットの設定からStaticWebHostで、new.fuga.comへのリダイレクトを設定する

  3. Endpointをメモっておく

この段階でEndpointにアクセスするとリダイレクトされるのが確認できると思う。

httpsを含まないような場合には、このままこのEndpointをRoute53に登録してやれば良い。
ただ、httpsを含む場合は、このままではhttps経由のアクセスがリダイレクトされないので、以下の作業が必要になる。

httpsを含む場合にはCloudFrontを経由する

httpsを含む場合には、CloudFront経由でS3のEndpointにアクセスさせて、そのCloudFrontに適切な証明書を設定してやれば、httpsのままリダイレクトされる。

  1. CloudFrontを新規作成する
  2. Originにはバケット名ではなくS3のEndpointを入れる

  3. 証明書を設定する(CloudFront用の証明書しかリストアップされないので、ない場合は必要な証明書をCloudFront用に登録し直す)

  4. S3のold.hoge.comのPermissionに、Everyone: Listを追加する

Route53に登録する

前述のhttpsを使わないパターンの場合は、S3のEndpointを直接、httpsを使う場合はCloudFrontのEndpointをCNAMEに登録してやる。

というところまでやると、無事リダイレクトされた。