AWSマイスターシリーズ
~CloudFront ~
2012年6月11日
荒木 靖宏 (@ar1 )
プリンシパルソリューションアーキテクト
主要な仕様

RTMP (Flash) と HTTP / HTTPS
コンテンツキャッシュ期限を0にも
Adaptive Bitrate Streaming
Private Content
Programmatic Invalidation     Amazon CloudFront

業界標準のアクセスログ
AWS Management Console
全機能を制御できるAPI

                                                  2
他社と比べたときのCloudFrontの特徴

コミットメントなし
  バンド幅、転送量、 期間など
オリジナルコンテンツにはHTTPでアクセス
   S3や、Webサーバ
FLVストリーミングも付加料金なし
  FLV ファイルはS3上に配置
その他S3との密接な連携
  ログやS3クライアント
CloudFrontの利用例

ゲーム
ソフトウェアダウンロード
メディア配信 – オンデマンド & Live
写真共有
ウェブサイト一般




                         4
ケーススタディ
FCバルセロナ
             問題点:
             FCバルセロナは試合中継の日のピークト
             ラフィックの対応に多くの時間とコストをか
             けすぎていた
             解決策:
             AWSの伸縮性(Elastic) と従量課金モデル
             により解決

             FCバルセロナのウェブサイト、ECサイトお
             よびモバイル向けアプリケーションをEC2,
             CloudFront, RDS, Route 53などで構築・運
             用
             ビジネス上の効果:
             試合日の対応の簡素化及び効率化
             商品リリースまでの時間を半分に削減
                                          6
CloudFrontの利用メリット
• いつでも利用開始可能
• 価格
 – CloudFrontの転送課金はEC2向けのネットワーク
   課金より安価
 – 実際の転送量とリクエスト数に応じた支払い
 – エッジロケーション毎に料金が異なる
   • 日本は0.201米ドル/GBから
• コミットしていただければディスカウントあり
 – Reserved Capacity
Reliable

• それぞれの地域内で複数のロケーションで冗長化
• 24x7ではたらく専任のチーム
• 多数の利用実績
• 99.9% SLA
価格




     9
Dynamic Site Acceleration




                            10
動的コンテンツ(dynamic content)とは?

• インタラクティブ
• パーソナライズ
• News
• Weather
• Sports
• Social media
• Advertising

                      11
動的サイトにおけるCloudFront利用
は一部に限られていた
                                    Dynamic Content
              www.mysite.com



                                  Elastic Load               Amazon EC2
                                   Balancing




Your Users                              Static Content


                                                 Amazon S3
             Amazon CloudFront
              static.mysite.com




                                                  12
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
• Console Support NEW!




                 13
今日からの動的サイトの構築
   ユーザはまず CloudFront へ
   最低レイテンシへの誘導                        Dynamic Content
   TCP最適化
   Persistent Connections
                                    Elastic Load               Amazon EC2
                                     Balancing




  Your Users    Amazon CloudFront
                                          Static Content
                 www.mysite.com


      CloudFront から Origin
   動的/静的のコンテンツわけ                                   Amazon S3


オリジンへのPersistent connections
         経路のモニタリング
                                                    14
Multiple Cache Behaviors
• Query Stringsをオリジンに飛ばすかどうかなどを制御
• 登録できる制御パターンは10まで。デフォルト値の設定も必要。
• 最初にマッチしたものが使われる




                                    15
Multiple Origin Servers
• 複数のオリジンが使える。
  • S3 bucket, an ELB, an EC2 instance, a custom origin, etc.
• 10オリジンまで. それぞれ”Origin ID”が付与される




                             Amazon Confidential   16
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にする




                                                  17
Query String Parameters

• オプション機能として提供。有効ににすると、Query Stringもすべて含
  んだfull URLがオリジンに送られる。
• ロギング機能を有効にしていれば、Query Stringは記録される。
• 注意事項
  •   Query Stringの順番、大文字小文字に注意
  •   Private Content機能を使うときにCloudFrontで予約
      •   Expires, Policy, Signature, and Key-Pair-Id are reserved query
          parameters




                                                         18
CloudFrontはどう動いているのか




                       19
CloudFront’s Global Presence


                       Europe
                       Amsterdam
                       Dublin
North America          Frankfurt (2)
Ashburn, VA (2)        London (2)
                       Milan (2)                         Asia
Dallas, TX                                               Hong Kong
Jacksonville, FL       Paris
                       Stockholm                         Osaka
Los Angeles, CA (2)                                      Singapore (2)
Miami, FL                                                Tokyo
Newark, NJ
New York, NY (2)
Palo Alto, CA
                       South America
Seattle, WA
                       Sao Paulo
San Jose, CA
South Bend, IN
St. Louis, MO
                      30のエッジロケーション(2012年5月末)



                                                             20
                                   Amazon Confidential
CDNを使用しないときの動作



Web
サーバ
DNSとHTTP                       example.com DNS


     ユーザ       local DNS   2
           1


           3


www.example.comにどうアクセスする?
 1. クライアントは使用しているDNS解決用サーバに、
    www.example.comのアドレスを問いあわせる
 2. www.example.comがCNAMEレコードならば、さらに
    IPアドレス(Aレコード)が得られるまで問いあわせる
 3. IPアドレスに向けてHTTPでアクセスする
CloudFront使用時のHTTP配信
             様々なIPアドレ
             スが使用される
DNSとHTTP(CloudFront使用時)
                                                    example.com DNS
                   local DNS
     ユーザ
                                       2
               1                           cloudfront.net DNS
                                   3
                                                                  地理
                                                                  情報
                               4

           5
                                                     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でアクセスする
CloudFrontの詳細




                25
オリジンサーバの使いわけ

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
特定のエッジロケーションだけ使うようにはできない。
  エンドユーザの位置次第です
オリジンフェッチは、それぞれのエッジロケーションから
個別にアクセスします
カスタムドメイン使用上の注意(1)

CNAMEはCloudFrontの設定時に設定したものと一致する必要が
ある
   一致しない場合はinvalidとして処理される
カスタムドメイン使用上の注意(2)

HTTPSの場合はカスタムドメインを使用できない
  無理に使うと警告されます
カスタムドメイン使用上の注意(3)

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
CloudFrontに関するまとめ

CloundFrontはContent Delivery Networkです
   Web(HTTP,HTTPS), Flash streaming (RTMP)
使ったぶんだけの支払い
   コミットメントなし
   オンラインだけでいつでも始められます
オリジンサーバは選択可能
   Amazon S3 (Flash streamingの場合は必須)
   カスタマオリジンサーバはHTTP(S)が届けばどこでもよい
エッジロケーションは30箇所以上
Apacheでの
動的ページを設定してみる
たとえばこんなの
http://sp1.cedec.araki.net/smokeping/images/World
Regions/NRT_last_10800.png
Cache-Controlヘッダをつける

# a2enmod headers              mod_headers モジュール
# vi httpd.conf




# /etc/init.d/apache2 reload

       mod_expires モジュール等おすきなものでどうぞ
デモ
CloudFrontを設定してみる
2つ目のオリジン追加
CloudFrontをはじめるにあたって
利用のメリット

• 低レイテンシ レイテンシにもとづいてエンドユーザを誘導
• 広帯域 ストリーミングメディアや大ファイルダウンロード
• リライアブル 単一障害点なし。SLAあり。
• スケーラブル 大規模な利用でも世界中のネットワークが利用可
  能
• グローバル 30のエッジロケーション
• Cost-effective つかったぶんのお支払い。最低利用額なし。コ
  ミットなし。
• 簡単 セルフサービスで開始可能。Webコンソール、サードパー
  ティツール、SDKあり。




                                         57
                  Amazon Confidential

20120611 aws meister-reloaded-cloud-front-public