🦈

【AWS】S3とCloudFrontを使ってHTTPSリダイレクト

2021/05/06に公開

AWSのS3とCloudFront、Route53を使ってHTTPSのURLをリダイレクトできるように設定について書いていきます。
そもそもなぜそんなことが必要だったかというと、
sample.com というURLがあるとして、
www.sample.com で接続してきた人も、
sample.com にリダイレクトしてあげたいという事情がありました。

※証明書の発行に関しては省略しています

手順

S3のバケットを作成する

ログインし、S3のページにアクセスしたら、新しいバケットを作成します。

「バケット名」には、リダイレクト元のドメインにしておくと分かり易いと思います。
例えば、 www.sample.com から sample.com へリダイレクトさせたいのであれば、「バケット名」はwww.sample.com とするような感じです。

リージョンは、国内向けコンテンツであれば、東京リージョンでよいかと思います。

その他の設定値は変更せず、作成を完了しましょう。

S3のプロパティを変更する

バケットの一覧から今回作成したバケットを選択すると以下の詳細画面に遷移します。
プロパティタブをクリックして、プロパティの設定を進めていきます。

プロパティタブをスクロールして、 「静的ウェブサイトホスティング」 が出てきたら、編集するをクリックします。

以下のように設定をしてきます

  • 静的ウェブサイトホスティング 有効
  • ホスティングタイプ オブジェクトのリクエストをリダイレクトする
    • リダイレクト先となるホスト名を記入

作成が完了するとエンドポイントが発行されますので、
クリックして、意図したURLにリダイレクトされることを確認してみましょう

CloudFrontでDistribution作成

CloudFrontの画面に進んだら、「Create Distribution」をクリックします。

続いて、「Get Started」をクリック。

Original Domain Name に、先ほど、S3を作成して、静的ウェブサイトホスティングを設定した際に発行されたURLを記入します。

続いて、リダイレクト元のドメインの指定とそのドメインに対する証明書の設定をおこないます。

※今回証明書の作成は省略しています。作成済みの場合の手順を記載しています。

作成が完了したら、cloudfrontの一覧画面で、今回作成したcloudfrontのDomainNameを確認しておきます。次のRoute53の設定でドメインを使用します。

Route53の設定

以下のようなレコードを作成していきます。

  • レコード名
    • リダイレクト元のドメイン
  • レコードタイプ
    • A
  • トラフィックのルーティング先
    • CloudFront ディストリビューションへのエイリアス
      • 先ほど作成したcloudfrontのDomainNameを指定

以上で、作業完了です!

curlコマンドでリダイレクト元のドメインにアクセスした際に以下のようになっていれば、リダイレクトに成功しています。

$ curl -I https://www.sample.com
HTTP/2 301
content-length: 0
location: https://sample.com/
(以下,略)
GitHubで編集を提案

Discussion