scrapboxに書いてまとめている内容を外向けにした内容です。
自分も仕事で実際に触る前に色々調べたのですが結局どういったことが実現できるのかということが触らないと理解できなかったので、そういった方に向けての記事になればなと思います(あと記事更新も兼ねて)。
CloudFrontとは
通常サイトでは画像やデータが表示されているはずですが、CloudFrontを使用することでAWS側が画像データやコードの内容などをキャッシュとして保管してくれます。
それにより、通常のURLを叩いてアクセスするよりも遥かに早い速度でアクセスすることが可能になります。
CloudFrontという名前の通り、クラウドにフロントエンドのデータを保管してくれるというイメージですね。
どういう動き?
通常のページにURLから遷移した場合は、以下のような流れとなりますが、
// https://example.com → URLに対応したIPを持ったインスタンスのファイルを参照してサイト表示
URL -> phpファイルなどを置いているVPSやインスタンス
cloudfrontを経由させる場合、以下の矢印に沿った流れとなります。
cloudfrontで生成したURL → 本来のURL(example.com) → VPSやインスタンス
上で生成した場合、cloudfrontで生成したURLでアクセスするとcloudfront経由でのアクセスとなり、本来のURLでアクセスするとcloudfrontを経由しないアクセスの仕方となります。
どういういいことがあるか
- 本来のURLを叩いてアクセスするよりも、cloudfrontで生成したURLからアクセスした方が遥かに早い速度でアクセスができる
- アクセスの多い静的なページなどで使うことで、負荷を軽減できる
- AWSの堅固なセキュリティを介して本来のURLの情報を見ることになるため、攻撃にも強い
- インスタンスを借りたりするわけでもないので、費用対効果が非常に高い
よく見かける用語集
代替ドメイン
- cloudfrontで生成した場合のURLは、「
xxxxxxx.cloudfront.net
」という形になる - これだとcloudfrontを使ってる感が丸出しになるので、代替となるようなドメインを決められる
route53
側での設定も必要になる。設定し終わった後、流れとしては以下の形になる
// 記事の最後でどういった作業が必要になるかもざっくり書きます
代替ドメイン(外側に見せるURL)→cloudfrontのURL→本来のURL→VPSやインスタンス
オリジン
- 本来のURLを設定する場所や名称を示す
- 生成したcloudfrontがどこのURLを対象とするかということ
ビヘイビア
- URLの中でも、特定の場所にのみcloudfrontのキャッシュを効かせるかどうかを指定できる。
//例えばビヘイビアに example.com/test/ を指定すると
example.com/test/aaa.html ←キャッシュが効いている
example.com/doc/sample.html ←ビヘイビアに指定していないパスなので効かない
- デフォルト「*」はURLの全ページを対象にキャッシュを適用させるという設定。
route53側での設定
cloudfrontで生成したURLに代替ドメインを割り当てたいときは、route53でエイリアスの設定が必要になります。
代替ドメイン側
- レコードを作成し、外側に見せたいドメイン名で作成。
- トラフィックのルーティング先をcloudfrontディストリビューションのエイリアスに設定。
- cloudfront側で自動生成されたURLを、エイリアスの対象に指定する
オリジンのroute53の指定
そのままレコードでURLを指定して、飛ばしたいインスタンス先のIPを指定すればOKです。
代替ドメイン(route53でcloudfrontのエイリアスを設定)→cloudfrontで自動生成されたURL→本来のURL(route53でオリジンとして、飛ばしたいインスタンスのIPを指定)→VPSやインスタンス
以上の流れです。