🐈
サーバレス系開発者がCloudFrontについてまとめてみる
はじめに
普段CloudFrontを使っているものの、適当に説明していたら「同じWEBサイトにアクセスした時に、前回読み込んだロゴ画像をキャッシュから返すとか、そういうのができる」って説明になって、そういうのってなんだよ、ってなったのでちょっと勉強してました。ブログに書いておきます。
podcastでも喋ってました。
- CLOUD JACK SHOW(旧: むきむきクラウド): Amazon CloudFront on Apple Podcasts https://podcasts.apple.com/us/podcast/amazon-cloudfront/id1486074641?i=1000510101820
CloudFrontとは
CloudFront is 何
CDNサービス
- Amazon CloudFrontとはCDNサービスである
- CDNとは、同一のコンテンツをより素早く効率的に配信するためのネットワークである
- 長いので個人的にはCFと略すことが多い(他と被ってない・・よね?)
解決する課題
- S3やEC2等を利用すると、簡単に世界中のユーザからコンテンツにアクセス可能にできる
- ただし、以下のような課題がある
- 大量のアクセスがある場合、アクセス数分の負荷に耐えなければならない
- ユーザから遠いロケーションに配置されたコンテンツの取得には時間がかかる
- XSSやDDoSのリスクがある
- ・・・等。
できること
- CloudFrontディストリビューションを作成して、コンテンツを効率的に配信可能
- ディストリビューションとは、ドメイン単位で割り当てられるCloudFrontの設定の事
- オリジンサーバをキャッシュし、エッジロケーションにプロビジョニングする
- オリジンの負荷がオフロードされる
- ユーザから近いエッジロケーションからコンテンツを取得させる
options
設定で様々なケースに対応可能。
概要
-
CloudFrontディストリビューションの有り・無しの構成
とりあえず最小限の設定によってキャッシュすることで、効率的な配信ができるようになる。
-
50%くらい使いこなしている、の図
それだけで本当にいいのだろうか。
-
100%使いこなしている、の図
オプションをもりもりで使えばこんな感じにできる
ユースケースと対応オプション
列挙してみる。
- オプションの一覧
- セキュアに通信をしたければHTTPSを利用する
- デフォルト証明書、独自SSL証明書が使える
- 独自SSL証明書はSNI、専用IPアドレスSSL証明書が使える
- デフォルト証明書、独自SSL証明書が使える
- 通信方式の制御も可能(TLS1.2や1.1等)
- XSSやDDoS等の対策も可能
- AWS WAFをディストリビューションにセットできる
- AWS Shieldがデフォルトで組み込まれている
- アクセス制御をするにはRestricted Viewer Accessを利用
- 署名付きURLや署名付きCookieを利用する
- 複数のファイルを制御するなら署名付きCookieを利用
- S3ならさらにOrigin Access IdentityでS3でアクセスコントロールできる
- 必ずCloudFrontを経由する仕組みが実現できる
- 署名付きURLや署名付きCookieを利用する
- 接続地域を制限したいならGeo-Restrictionsを利用
- POSTリクエストの特定のフィールドだけアクセスできるようにもできる
- フィールドレベル暗号化を利用
- キャッシュの制御もできる
- TTLを設定できる
- Invalidationでキャッシュの削除もできる
- コンテンツやヘッダーの加工もできる
- ビューワーリクエスト→オリジンリクエスト→オリジンレスポンス→ビューワーレスポンスという4つの区間に分けて加工できる
- ヘッダーを追加したり上書きできる
- エラーページを設定できる
- Lambda@Edgeをトリガできる
- Lambda@Edge内でコンテンツやヘッダを加工できる
- Header、URL、クエリ文字列の読み書き等が可能
- Lambda@Edge内でコンテンツやヘッダを加工できる
- ここまでの設定をパス毎に設定できる(パス毎の単位をBehavierという)
- セカンダリオリジンを設定して、フェイルオーバーの設定もできる
- セキュアに通信をしたければHTTPSを利用する
- CloudWatchと連携して各種ログの確認ができる
まとめ
- CloudFrontとは、CDNサービスである
- CDNサービスとは、同一のコンテンツをより素早く効率的に配信するためのネットワークである
- 例えば、同じWEBサイトにアクセスした時に、前回読み込んだロゴ画像をキャッシュから返すとか、そういうのができる
- そういうのって何?→#ユースケースと対応オプション
参考
- [AWS Black Belt Online Seminar] Amazon CloudFrontの概要 - YouTube https://www.youtube.com/watch?v=mmRKzzOvJJY
Discussion