kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

Amazon CloudFront おぼえがき

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

Real Time Messaging Protocol

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 Elemental MediaConvert でHLSなどのストリーミングプロトコルの動画に変換して、それを配信する
    • 変換結果はS3にupされる
  • HLSのマニフェストで、CloudFront Distributionを指定
    • HLSはマニフェストファイル(m3u8)と、動画ファイルに分かれている

ライブストリーミング動画配信