Abstract
加藤がSAPの勉強中。その中からCloudFrontをネタに取り上げて話したよ。
Show Notes
Amazon CloudFront
- Amazon CloudFrontとはCDNサービスである
- CDNとは、同一のコンテンツをより素早く効率的に配信するためのネットワークである
- S3やEC2等を利用すると、簡単に世界中のユーザからコンテンツにアクセス可能にできる
- ただし、以下のような課題がある
- 大量のアクセスがある場合、アクセス数分の負荷に耐えなければならない
- ユーザから遠いロケーションに配置されたコンテンツの取得には時間がかかる
- XSSやDDoSのリスクがある
- ・・・等。
- CloudFrontディストリビューションを作成して、コンテンツを効率的に配信可能
- ディストリビューションとは、ドメイン単位で割り当てられるCloudFrontの設定の事
- オリジンサーバをキャッシュし、エッジロケーションにプロビジョニングする
- オリジンの負荷がオフロードされる
- ユーザから近いエッジロケーションからコンテンツを取得させる
- 設定で様々なケースに対応可能
- セキュアに通信をしたければHTTPSを利用する
- デフォルト証明書、独自SSL証明書が使える
- 独自SSL証明書はSNI、専用IPアドレスSSL証明書が使える
- 通信方式の制御も可能(TLS1.2や1.1等)
- XSSやDDoS等の対策も可能
- AWS WAFをディストリビューションにセットできる
- AWS Shieldがデフォルトで組み込まれている
- アクセス制御をするにはRestricted Viewer Accessを利用
- 署名付きURLや署名付きCookieを利用する
- 複数のファイルを制御するなら署名付きCookieを利用
- S3ならさらにOrigin Access IdentityでS3でアクセスコントロールできる
- 必ずCloudFrontを経由する仕組みが実現できる
- 接続地域を制限したいならGeo-Restrictionsを利用
- POSTリクエストの特定のフィールドだけアクセスできるようにもできる
- キャッシュの制御もできる
- TTLを設定できる
- Invalidationでキャッシュの削除もできる
- コンテンツやヘッダーの加工もできる
- ビューワーリクエスト→オリジンリクエスト→オリジンレスポンス→ビューワーレスポンスという4つの区間に分けて加工できる
- ヘッダーを追加したり上書きできる
- エラーページを設定できる
- Lambda@Edgeをトリガできる
- Lambda@Edge内でコンテンツやヘッダを加工できる
- Header、URL、クエリ文字列の読み書き等が可能
- ここまでの設定をパス毎に設定できる(パス毎の単位をBehavierという)
- セカンダリオリジンを設定して、フェイルオーバーの設定もできる
- CloudWatchと連携して各種ログの確認ができる