AWS 認定ソリューションアーキテクト – プロフェッショナル 対策
Amazon CloudFront って何?
Amazon CloudFront は、データ、動画、アプリケーション、および API を、低レイテンシーの高速転送により視聴者に安全に配信する、グローバルコンテンツ配信ネットワーク (CDN) サービスです。
https://aws.amazon.com/jp/cloudfront/
特徴
- 元サーバに負荷をかけずに、サイトの高速化とスケーラビリティを簡単に実現可能
- 動的コンテンツにも対応
用語
オリジン
元ネタのコンテンツがあるサーバ
- インターネット経由でアクセスできることが必須
エッジサーバ
コンテンツをキャッシュ & 配信するサーバ。
- CloudFront DNSが位置情報を元にユーザを最も近いエッジサーバに誘導する
CloudFront Distribution
- CloudFrontの各設定のひとまとまりをDistributionという
- Distributionには、
*.cloudfront.net
のようなドメインが与えられる - web Distributionと、RTMP Distribution がある
- 通常は web Distribution を使う
- 以前は「ダウンロード」と「ストリーミング」という名称だった
RTMP
Adobe Flash プレーヤーとサーバーの間で、音声・動画・データをやりとりするストリーミングのプロトコル。(らしい
いろいろな機能
キャッシュコントロール
- 単一ファイルサイズのキャッシュは 最大20GB まで
- URL/リクエスト(GET,HEAD,OPTION)/フォワードオプションの 完全一致 でキャッシュが利用される
- フォワードオプションは、ヘッダ、Cookieの値、クエリストリングを参照できる
- キャッシュを無効化するPathを指定できる(最大3000)
- ワイルドカード指定も可能(最大15個
ダイナミックキャッシング
Behavior Cache TTL(正規表現)を設定することで、path毎にどのオリジンにアクセスするか設定できる
- 静的コンテンツはS3、動的コンテンツはサーバを参照みたいな使い方を想定
AWS Lambda@Edge
エッジロケーション上でLambdaを実行できる仕組み(すごい!!
使いみち
- 動的なレスポンス
- ログ出力
- アクセスコントロールなど
Price Class
設定すると安価なエッジロケーションのみ使用するようになる
- 当然その分遅くなる
その他の機能
- AWS ShieldによるDDos対策(無料
- エッジ側でコンテンツをGzip圧縮できる
具体的な使い方
プライベートコンテンツの配信
- AWS WAF を使って、IPアドレス等のルールを元に CloudFront のアクセスコントロールをする
- 署名付きURL&署名付きcookieでもアクセスコントロールができる
- ユーザ〜CloudFront: 署名付きURL&署名付きcookieでアクセスコントロール
- CloudFront〜S3 : オリジンアクセスアイデンティティという特別な CloudFront ユーザーのみ許可する
- see: https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html
ストリーミング動画配信
- AWS Elemental MediaConvert でHLSなどのストリーミングプロトコルの動画に変換して、それを配信する
- 変換結果はS3にupされる
- HLSのマニフェストで、CloudFront Distributionを指定
- HLSはマニフェストファイル(m3u8)と、動画ファイルに分かれている
ライブストリーミング動画配信
- AWS Elemental MediaLive と、 AWS Elemental MediaPackage でライブ動画を加工して、Amazon CloudFront に送るらしい
- Wowza Streaming Engine など自前で配信サーバを用意する方法もある