AWSマイスターシリーズ
~CloudFront ~
2012年6月11日
荒木 靖宏 (@ar1 )
RTMP (Flash) と HTTP / HTTPS
コンテンツキャッシュ期限を0にも
Adaptive Bitrate Streaming
Private Content
Programmatic Invalidation
業界標準のアクセスログ
AWS Management Console
全機能を制御できるAPI
主要な仕様
2
コミットメントなし
バンド幅、転送量、 期間など
オリジナルコンテンツには
HTTPでアクセス
S3や、Webサーバ
FLVストリーミングも付加料金なし
FLV ファイルはS3上に配置
その他
S3との密接な連携
ログやS3クライアント
他社と比べたときのCloudFrontの特徴
ゲーム
ソフトウェアダウンロード
メディア配信
– オンデマンド & Live
写真共有
ウェブサイト一般
CloudFrontの利用例
4問題点: FCバルセロナは試合中継の日のピークト ラフィックの対応に多くの時間とコストをか けすぎていた 解決策: AWSの伸縮性(Elastic) と従量課金モデル により解決 FCバルセロナのウェブサイト、ECサイトお よびモバイル向けアプリケーションをEC2, CloudFront, RDS, Route 53などで構築・運 用 ビジネス上の効果: 試合日の対応の簡素化及び効率化 商品リリースまでの時間を半分に削減
FCバルセロナ
6ケーススタディ
CloudFrontの利用メリット
• いつでも利用開始可能
• 価格
– CloudFrontの転送課金はEC2向けのネットワーク
課金より安価
– 実際の転送量とリクエスト数に応じた支払い
– エッジロケーション毎に料金が異なる
• 日本は0.201米ドル/GBから
• コミットしていただければディスカウントあり
– Reserved Capacity
Reliable
• それぞれの地域内で複数のロケーションで冗長化
• 24x7ではたらく専任のチーム
• 多数の利用実績
• 99.9% SLA
価格
Dynamic Site Acceleration
動的コンテンツ(dynamic content)とは?
• インタラクティブ
• パーソナライズ
• News
• Weather
• Sports
• Social media
• Advertising
11Elastic Load Balancing
動的サイトにおけるCloudFront利用
は一部に限られていた
Amazon CloudFront static.mysite.com 12Dynamic Content
Amazon EC2Static Content
Amazon S3 Your Users www.mysite.com13
Dynamic Site 機能
• Multiple Cache Behaviors
NEW!• Multiple Origin Servers
NEW!• Origin Connection Protocol
• Viewer Connection Protocol
• Minimum Expiration Period
NEW!• Query String Parameters
NEW!• Private Content
Elastic Load Balancing Amazon CloudFront www.mysite.com
今日からの動的サイトの構築
14Dynamic Content
Amazon EC2Static Content
Amazon S3 Your Usersユーザはまず CloudFront へ
最低レイテンシへの誘導
TCP最適化
Persistent Connections
CloudFront から Origin
動的/静的のコンテンツわけ
オリジンへのPersistent connections
経路のモニタリング
15
Multiple Cache Behaviors
• Query Stringsをオリジンに飛ばすかどうかなどを制御
• 登録できる制御パターンは10まで。デフォルト値の設定も必要。 • 最初にマッチしたものが使われる
16
Multiple Origin Servers
• 複数のオリジンが使える。
• S3 bucket, an ELB, an EC2 instance, a custom origin, etc. • 10オリジンまで. それぞれ”Origin ID”が付与される
17
Minimum Expiration Period
• minTTL はAPIとコンソールから • minTTL は0秒にも設定可能 • 使うヘッダ
• If-Modified-Since (クライアントから)
• Cache-Control: no-cache | s-max-age=0 | max-age=0 • Expires: <now or in the past>
• Pragma: no-cache (not in the spec, but for HTTP 1.0 backward compatibility)
• 一切cacheしないためには、Cache-Control: no-store | private、さらに minimun TTLを0にする
18
Query String Parameters
• オプション機能として提供。有効ににすると、Query Stringもすべて含 んだfull URLがオリジンに送られる。 • ロギング機能を有効にしていれば、Query Stringは記録される。 • 注意事項 • Query Stringの順番、大文字小文字に注意 • Private Content機能を使うときにCloudFrontで予約
• Expires, Policy, Signature, and Key-Pair-Id are reserved query
CloudFrontはどう動いているのか
CloudFront’s Global Presence
20 Europe Amsterdam Dublin Frankfurt (2) London (2) Milan (2) Paris Stockholm .. Asia Hong Kong Osaka Singapore (2) Tokyo South America Sao Paulo North America Ashburn, VA (2) Dallas, TX Jacksonville, FL Los Angeles, CA (2) Miami, FL Newark, NJ New York, NY (2) Palo Alto, CA Seattle, WA San Jose, CA South Bend, IN St. Louis, MO .. 32のエッジロケーション(2012年5月末)CDNを使用しないときの動作
Web サーバ
www.example.comにどうアクセスする?
1. クライアントは使用しているDNS解決用サーバに、
www.example.com
のアドレスを問いあわせる
2. www.example.comがCNAMEレコードならば、さらに
IPアドレス(Aレコード)が得られるまで問いあわせる
3. IPアドレスに向けてHTTPでアクセスする
DNSとHTTP
ユーザ local DNS 1 2 3 example.com DNSCloudFront使用時のHTTP配信
様々なIPアドレ スが使用される
CloudFront 1. クライアントは使用しているDNS解決用サーバに、cloudfront.example.comのアドレス を問いあわせる 2. cloudfront.example.comはXXXX.cloudfront.netのCNAME 3. XXXX.cloudfront.netのIPアドレスを問いあわせ。 4. cloudfront.netのDNSが地理情報に応じたCloudFrontのIPアドレスを返す 5. CloudFrontのIPアドレスに向けてHTTPでアクセスする
DNSとHTTP(CloudFront使用時)
ユーザ local DNS 1 2 3 example.com DNS cloudfront.net DNS 地理 情報 4 5CloudFrontの詳細
EC2など、自分で運用しているサーバを使う場合
動的なコンテンツ
Ajaxなどクロスドメイン通信が必要なもの
S3を使う場合
FLVファイルの配信
• Adobe Flash Media Server 3.5相当
• rtmp://[domain_name]/cfx/st/[filename]
静的ファイル
• 画像、テキスト、CSSファイル等
全てのログファイルは
S3に保存
クライアントからのアクセス記録は全エッジロケーションから24時間 以内に収集 オリジンフェッチを使う場合は、S3のバケットを作成する ログをとらないことも可能ログの形式
1時間毎もしくは、50MB毎の分割 例:• mylogs.s3.amazonaws.com/myprefix/EMLARXS993KST
G8.2009-03-17-20.RT4KCN4SGK9.gz
ログファイル
課金はトラフィック量とリクエスト数にかかります
0.0095USD / 1万 HTTP request 0.0130USD / 1万 HTTPS request特定のエッジロケーションだけ使うようにはできない。
エンドユーザの位置次第ですオリジンフェッチは、それぞれのエッジロケーションから
個別にアクセスします
利用の注意点
CNAMEはCloudFrontの設定時に設定したものと一致する必要が
ある
一致しない場合はinvalidとして処理される
HTTPSの場合はカスタムドメインを使用できない
無理に使うと警告されますRoute53を使った場合のドメイン名だけのCloudFrontは指定でき
ない。
Cache-Controlヘッダ、Expiresヘッダを使用
例
Cache-Control: max-age=3600
Expires: Tue, 05 Oct 2011 21:00:00 GMT
最小時間は
0秒
頻繁に更新する場合には、
URL(ファイル)名変更を推奨
ファイルの破棄リクエスト
同時に3リクエストまで 1リクエストで1000URLまでキャッシュの制御
ヘッダでの
制御が必須
ストリーミング
エンドユーザが視聴後にファイルが残らない 部分再生をした場合には、再生部分のみ配送(=低料金)HTTP配信
オフライン再生などのために、ローカルコピーを保存してもらいたいと きに使用する 部分再生の場合であっても通常はファイル全体が配送される動画配信
アドビで
FMS on AWSを購入
http://www.adobe.com/go/learn_fms_aws_order_en.
https://s3.amazonaws.com/cloudfront-live-jp/live-http-streaming-using-cloudfront.txt
CloundFrontはContent Delivery Networkです
Web(HTTP,HTTPS), Flash streaming (RTMP)
使ったぶんだけの支払い
コミットメントなし
オンラインだけでいつでも始められます
オリジンサーバは選択可能
Amazon S3 (Flash streamingの場合は必須)
カスタマオリジンサーバはHTTP(S)が届けばどこでもよい