0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[実践]CloudFront + S3リダイレクト機能によるドメインリダイレクト

Posted at

001samune.png

概要

こちらの記事でAWSサービスを使ったドメインリダイレクト手法についてまとめました。
その中でCloudFront関連の方法を試していこうと思い記事にします。
今回は「CloudFront+S3リダイレクト機能」編です。

実践

構成図

  • CloudFrontに代替ドメインでアクセス
  • カスタムオリジンとして指定したS3のウェブサイトエンドポイントにリクエストを転送
  • ウェブサイトエンドポイントに設定したリダイレクトルールに基づき、別ドメインにリダイレクト
  • リダイレクト先のALBにリクエストを転送

画像4.png

デプロイ

環境はGitHubで公開しています。
各コードとデプロイ方法を用意してますのでお試しください。

設定値

各ポイントとなる設定値を見ていきます。

CloudFront

ディストリビューションには代替ドメインを設定

画像13.png

カスタムオリジンとして静的ウェブサイトホスティングが有効化されたS3バケットのウェブサイトエンドポイントを指定

画像8.png

S3

匿名アクセスのためデフォルト暗号化はSSE-S3

画像9.png

AWS キー管理サービス (AWS KMS) は匿名リクエストをサポートしていません。匿名アクセスまたはパブリックアクセスを許可する Amazon S3 バケットは、AWS KMS で暗号化されたオブジェクトにこのアクセスを適用しません。提供したい S3 オブジェクトから AWS KMS 暗号化を削除します。AWS KMS 暗号化の代わりに AES-256 を使用してオブジェクトを暗号化します。

匿名アクセスのためパブリックアクセスはオフ

画像10.png

ACLは無効であることと、意図しないACLによるオブジェクトの公開を防ぐためACLに関してはブロックパブリックアクセスをオンにしています

CloudFront経由でのアクセスのみを許可するバケットポリシー

画像11.png

UserAgentは偽装可能であるためセキュリティは完全でないですが、公開してよいオブジェクトであるため許容しています

特定のURLパスリクエスト時に別ドメインへリダイレクト
  • ディストリビューションに設定した代替ドメインへのリクエストパスが「test1/」もしくは「test2/」の場合に、別ドメインへリダイレクトする設定を入れています

画像12.png

動作確認

まずブラウザで「https://ディストリビューション代替ドメイン/」 を検索しリダイレクトルールに引っかからない場合を見ていきましょう。
この場合は、ディストリビューションに設定したデフォルトルートオブジェクトをオリジンから取得しレスポンスを返します。
画像14.png

続いて「https://ディストリビューション代替ドメイン/test1/」 を検索しリダイレクトルールに引っかかる場合を見ていきましょう。
この場合は、リダイレクトルールの HostName で指定したホストにリダイレクトされ、リダイレクト先にコンテンツを取得しに行きます。
画像15.png

https://ディストリビューション代替ドメイン/test2/」 も同様にリダイレクトされていますね。
画像16.png

まとめ

今回は「CloudFront+S3リダイレクト機能」を試してみました。
リダイレクト機能を簡易的かつセキュアに実装できる点はメリットだなと感じました。
次回は「CloudFront Functions」編を記事にしたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?