Contenu connexe Similaire à AWS Black Belt Techシリーズ Amazon CloudFront (20) Plus de Amazon Web Services Japan (20) AWS Black Belt Techシリーズ Amazon CloudFront4. Contents Delivery Network
• ⼤大規模なアクセスも世界中にあるエッジのキャパシティを
利利⽤用して効率率率的に配信可能なサービス
– ユーザからのアクセスを最も近いエッジサーバに誘導することでユーザへの
配信を⾼高速化
– エッジサーバでは、コンテンツのキャッシングを⾏行行い、オリジンに負荷をかけ
ず効率率率的に配信
オリジンサーバ
Amazon CloudFront
オリジンサーバ
台数の削減
レスポンス向上 負荷軽減
リクエスト
配信
リクエスト
キャッシュから配信 キャッシュ
コンテンツ取得
CDN
クライアント
5. Contents Delivery Network
• 最適なエッジへの誘導
オリジンサーバ
Amazon CloudFront
クライアント
Internet
位置情報DB
①ドメイン名問い合わせ
CloudFront DNS
Edge Location
②IPアドレス問い合わせ
(xxx.cloudfront.net)
③最適なEdgeアドレス応答
④最適なEdgeへアクセス
⑤キャッシュがなければ
オリジンから取得
DNSリゾルバ
EDNS-‐‑‒Client-‐‑‒Subnet
のサポートにより精度度
を向上
6. 現時点のエッジロケーション
Europe
Amsterdam,
Netherlands(2)
Dublin,
Ireland
Frankfurt,
Germany
(3)
London,
England
(3)
Madrid,
Spain
Marseille,
France
Milan,
Italia
Paris,
France
(2)
Stockholm,
Sweden
Warsaw,
Poland
Asia
Chennai,
India
Hong
Kong,
China(2)
Mumbai,
India
Manila,
Philippines
Osaka,
Japan
Seoul,
Korea
Singapore
(2)
Taipei,
Taiwan
Tokyo,
Japan(2)
South
America
Sao
Paulo,
Brazil
Rio
de
Janeiro,
Brazil
North
America
Atlanta,
GA
Ashburn,
VA
(3)
Dallas,
TX
(2)
Hayward,
CA
Jacksonville,
FL
Los
Angeles,
CA(2)
Miami,
FL
New
York,
NY
(3)
Newark,
NJ
Palo
Alto,
CA
San
Jose,
CA
Seattle,
WA
South
Bend,
IN
St.
Louis,
MO
2014年年12⽉月時点
52
Edge
Locations
Australia
Melbourne,
Australia
Sydney,
Australia
最新のエッジロケーション情報 http://aws.amazon.com/jp/cloudfront/details/
11. CloudFront Distribution
• Distribution
– AWS Management ConsoleもしくはAPIで即時作成可能
– WebもしくはRTMP Distributionを選択可能
– 使⽤用量量が最⼤大1Gbpsもしくは1,000RPSを超える場合は上限緩和申請が必要
– デフォルトでは「xxxx.cloudfront.net」がDistributionのドメイン名として
割り当てられる。
• CNAMEエリアスを利利⽤用して独⾃自ドメイン名の指定も可能
• CNAMEエリアスのワイルドカード指定もサポート (例例: *.example.comなど)
• Route53と組み合わせたZone Apex (例例: example.comなど)が利利⽤用可能
12. CloudFront Edge
PROXY
CACHE
Web Distribution
• サポートプロトコル/HTTPメソッド
– HTTP / HTTPS対応
• GET, HEAD, OPTION(選択可能) (Cacheモード)
• PUT, POST, DELETE, OPTION, PATCH (Proxyモード)
– オリジンへのアクセス
• Internet経由でアクセスできることが必要
• Range GET対応
オリジンサーバ
GET, HEAD, (OPTION)
PUT, POST, DELETE, OPTION, PATCH PUT, POST, DELETE, OPTION, PATCH
クライアント
GET, HEAD, (OPTION)
13. キャッシュコントロール機能
• キャッシュコントロール
– GET / HEAD / OPTION(選択可能)のリクエストが対象
– 単⼀一ファイルサイズのキャッシングは最⼤大20GBまで
– キャッシュ期間指定
• オリジン側で、Cache Controlヘッダー設定がなければデフォルト24時間
– フォワードオプション機能による動的ページ配信 (Webのみ)
• Header (None / Whitelist / All)
• Cookie (None / Whitelist /All)
• Query Strings (No / Yes)
URLおよび有効化したフォーワードオプション機能のパラメー
タ値の完全⼀一致でキャッシュが再利利⽤用される
14. キャッシュコントロール機能
• キャッシュコントロールヘッダーの挙動
– オリジン側のHTTPヘッダー設定と、CloudFront側でのMinimum TTLの組み合わせで動作が変わる
CloudFront Minimum TTL設定
Minimum TTL = 0
(デフォルト)
Minimum TTL >0を設定
オリジンHTTPヘッダー
Cache-‐‑‒Control max-‐‑‒ageを
指定
指定されたmax-‐‑‒age期間
キャッシュ
指定されたmax-‐‑‒ageもしくはMinimum TTLの⻑⾧長い
⽅方の期間キャッシュ
Cache-‐‑‒Control設定なし 24時間キャッシュ
24時間もしくはMinimum TTLの
⻑⾧長い⽅方の期間キャッシュ
Cache-‐‑‒Control max-‐‑‒ageと
s-‐‑‒maxageを指定
指定されたs-‐‑‒maxage期間エッジにキャッシュ
され、max-‐‑‒age期間ブラウザーにキャッシュ
指定されたs-‐‑‒maxageもしくはMinimum TTLの⻑⾧長
い⽅方の期間エッジにキャッシュされ、max-‐‑‒age期間
ブラウザーにキャッシュ
Expiresを指定 Expiresで指定された⽇日付までキャッシュ
Expiresで指定された⽇日付とMinimum TTLの期間を
加算した期間キャッシュ
Cache-‐‑‒Control no-‐‑‒cache,
no-‐‑‒storeを指定
キャッシュされない Minimum TTLの期間キャッシュ
※HTML MetaタグのHTTP Cache-‐‑‒ControlもしくはProgmaが指定されていてもCloudFrontのキャッシュコントロールでは利利⽤用されない
※オリジンがS3の場合はMetadataにHTTPヘッダーを指定
17. ダイナミックコンテンツ機能
• フォワード Header機能
– オリジンに任意のヘッダー情報をフォワードすることで動的なページ⽣生成にも対応
– 全てのHeaderをフォワードするとキャッシュ効率率率が⼤大幅に低下するため必要最⼩小
限のヘッダーを指定することを推奨
– カスタムヘッダーにも対応
– CloudFront独⾃自ヘッダー
• CloudFront側でクライアントの情報を独⾃自に判定し、オリジンにフォワード
Type Header 詳細
接続プロトコル判定 CloudFront-Forwarded-Proto HTTPもしくはHTTPSを設定
デバイス判定 CloudFront-‐‑‒Is-‐‑‒Mobile-‐‑‒Viewer
CloudFront-‐‑‒Is-‐‑‒Tablet-‐‑‒Viewer
CloudFront-‐‑‒Is-‐‑‒Desktop-‐‑‒Viewer
User-‐‑‒Agentをもとに、クライアントデバイスの
情報をTrue/Falseで設定
地域判定 CloudFront-‐‑‒Viewer-‐‑‒Country クライアントのIPアドレスをもとに、地域コー
ドを設定 (ISO-‐‑‒3166-‐‑‒1 alpha-‐‑‒2準拠)
18. ダイナミックコンテンツ機能
• フォワード Cookie機能
– オリジンに任意のCookie情報をフォワードすることで動的なページ⽣生成にも対応
– CloudFrontは指定されたCookie名と値をセットでキャッシュ
– 全てのCookieをフォワードするとキャッシュ効率率率が⼤大幅に低下するため必要最⼩小限
のCookieを指定することを推奨
– 対象のCookie名はワイルドカードの指定も可能
23. セキュリティ機能
• セキュア配信
– HTTPS対応 (強制リダイレクト / HTTPSのみ許可)
– SSL証明書 (デフォルト / 独⾃自証明書 / SNI)
– GEOリストリクション (Whitelist / Blacklist)
– 署名付きURL (有効期間指定)
– CloudTrailのサポート
24. サポートするSSL証明書
• デフォルト証明書
– cloudfront.netドメインのSSL証明書は標準で利利⽤用可能
• 独⾃自SSL証明書
– X.509 PEM形式かつ認証チェーンが含まれること。鍵⻑⾧長は最⼤大2048bit
– CloudFrontにて別途SSL証明書の利利⽤用課⾦金金がされる
– 様々な証明書タイプをサポート
• Domain Validated, Extend Validated, Wildcard, Subject Alternative Name証明書 など
• SNI(Server Name Indication)独⾃自SSL証明書
– CloudFrontの独⾃自SSL証明書費⽤用を負担すること無く独⾃自ドメインでのSSL通信
が可能
– ⼀一部古いブラウザーはSNI拡張をサポートしていないため注意が必要
• Windows XPのIE, Android 2.2デフォルト, バージョン1.7以前のJavaブラウザなど
25. 独⾃自SSL証明書の利利⽤用
• 利利⽤用申請
– 証明書の利利⽤用には上限緩和申請が必要
• 利利⽤用⼿手順
1. 証明書機関で署名を受けた証明書をIAM CLIを利利⽤用してアップロード
2. CloudFrontのDistribution設定画⾯面にてアップロードした証明書を選
択
3. 証明書と同じCNAMEに設定
4. SNIの有無を選択
5. 指定したCNAMEとDistribution作成時に⽣生成されるDomain名を紐紐付
けたレコードをDNSに登録
28. 署名付きURL
• 署名付きURL
– WebおよびRTMP双⽅方に対応
• Webの場合は有効期間を最⼩小化することを推奨
– TCPコネクション確⽴立立中は対象コンテンツのダウンロードが可能
• RTMPの場合は動画再⽣生時間以上の有効期間の設定が必要
– 権限のないアクセスには403を応答
– URLの⽣生成
• 決められたフォーマットでQuery Stringsにパラメータ値を設定
– Canned Policy: http://xxxx.cloudfront.net/file.jpg?Expires=XXX&Signature=XXX&Key-‐‑‒Pair-‐‑‒Id=XXX
– Custom Policy: http://xxxx.cloudfront.net/file.jpg?Policy=XXX&Signature=XXX&Key-‐‑‒Pair-‐‑‒Id=XXX
• CloudFrontの秘密鍵を利利⽤用してSignatureのパラメータ⽂文字列列を署名
• サンプルソースコード (Perl / PHP / C# + .NET Framework / Java)
http://docs.aws.amazon.com/ja_̲jp/AmazonCloudFront/latest/DeveloperGuide/PrivateCFSignatureCodeAndExamples.html
29. 署名付きURL
• オリジンサーバの保護
– オリジンがAmazon S3の場合、Origin Access Identity(OAI)を利利⽤用
• S3のBucketへのアクセスをCloudFrontからのみに制限
– カスタムオリジンの場合、オリジン側のアドレスを公開しないとともに、
CloudFrontが利利⽤用するIPアドレスのみの許可させる
• CloudFrontが利利⽤用するIPアドレスは下記URLから取得可能
https://ip-‐‑‒ranges.amazonaws.com/ip-‐‑‒ranges.json
• JSONフォーマット
– Serviceキーの“CLOUDFRONT”でフィルタすることで抽出可能
CloudFront Edge カスタムオリジンサーバ
S3
クライアント
OAI
IP制限
クライアント
ダイレクト
アクセス
32. ストリーミング配信
• Amazon S3と連携したマネージドオンデマンドストリーミング配信
– RTMP (Flash Media Server)
• Distribution作成時にRTMPを選択
• RTMP, RTMPE, RTMPT, RTMPETをサポート
– Smooth Streaming
• Distribution作成時にWebでSmooth Streamingオプションを有効化
– HLS (Http Live Streaming)
• Distribution作成時にWebを選択
– RTMPおよびSmooth StreamingのコンテンツはS3に格納されている必要がある
– 動画コンテンツもそれぞれのフォーマットで準備が必要(FLV, MP4, iSMV, HLS)
クライアント CloudFront Edge
S3
RTMP/RTMPE/
RTMPT/RTMPETFlash Player /
Silverlight Player
HTTP/HTTPS
34. ストリーミング配信
• CloudFormationテンプレート
CloudFrontとAdobe Media Serverを利利⽤用したHTTPライブ配信
• http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/
LiveStreamingAdobeMediaServer5.0.html
CloudFrontとIIS Media Serviceを利利⽤用したライブ Smooth Streaming配信
• http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/
IISLiveSmoothStreaming4.1.html
CloudFrontとWowzaを利利⽤用したHTTPライブ配信
• http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/live-‐‑‒streaming-‐‑‒
wowza.html
36. CloudFront Reports & Analytics
• Cache Statistics
– キャッシュの利利⽤用状況
• Monitoring and Alarming
– リアルタイムモニタリングと通知
• Popular Objects
– ⼈人気コンテンツの統計情報
• Top Referrers
– リファラーの統計情報
• Usage
– リクエスト数およびデータ転送量量
• Viewers
– クライアントデバイスの統計情報
Cache Statistics / Popular Objects /
Top Referrers / Usage / ViewersはAWS
Management Consoleのみで参照可能
37. CloudFront Reports & Analytics
• Cache Statistics / Popular Objects / Usage /Top Referrers / Viewers に関
してはCloudFrontの利利⽤用状況における傾向分析として利利⽤用
– 直近60⽇日間のグラフが参照可能
– 1時間単位もしくは⽇日単位でのグラフ表⽰示
– グラフへの反映までには3時間程度度Delay
– フィルタリング
• 全DistributionもしくはDistribution単位
• 期間指定
• エッジ地域
• Monitoring and Alarmingはリアルタイムの利利⽤用状況の確認により、アクセス
状況のリアルタイム監視として利利⽤用
– 数分の遅延で利利⽤用状況を把握可能
– Cloudwatchのアラート機能を利利⽤用し、突発的なアクセスやエラーレートの上昇の検知によ
る通知が可能
– 3〜~5分程度度のDelayで検知
38. CloudFront Reports & Analytics
• Cache Statistics
– Total Request
• 全リクエスト数
– Percentage of Viewer Requests by Result Type
• CacheのHit/Miss/Errorの割合
– Bytes Transferred to Viewers
• クライアントへの総データ転送容量量
• Miss Hitしたリクエストに対する総データ転送容量量
– HTTP Status Codes
• 2XX, 3XX, 4XX, 5XX毎の応答数
– Percentage of GET Requests that Didnʼ’t Finish Downloading
• ダウンロードを完了了出来なかったGETリクエストの割合
39. CloudFront Reports & Analytics
• Usage
– Number of HTTP Requests
• HTTPリクエスト数
– Number of HTTPS Requests
• HTTPSリクエスト数
– Data Transferred over HTTP
• HTTPによるクライアントおよびオリジンに対して送信したデータ転送容量量
– Data Transferred over HTTPS
• HTTPによるクライアントおよびオリジンに対して送信したデータ転送容量量
– Data Transferred from CloudFront Edge Location to Your Users
• CloudFront Edgeからクライアントに送信したデータ転送容量量
– Data Transferred from CloudFront to Your Origin
• CloudFront Edgeからオリジンに送信したデータ転送容量量
40. CloudFront Reports & Analytics
• Popular Objects
– Distribution毎のリクエスト数の多いTop 50コンテンツリスト
• Object
• Requests
• Hits, Hit %, Misses
• Total Bytes, Bytes From Misses,
• Incomplete Download, Response Code
41. CloudFront Reports & Analytics
• Top Referrers
– Distribution毎のリクエスト数の多いTop 25のリファラードメイン
• Referrersドメイン
• Request Count
• Request %
42. CloudFront Reports & Analytics
• Viewers
– Distribution毎のクライアントデバイス情報
• Browsers
– ブラウザー種別の⽐比率率率
– ブラウザートレンド
» ⽇日単位でのブラウザー毎のリクエスト数
• Operating Systems
– OS種別の⽐比率率率
– OSトレンド
» ⽇日単位でのOS毎のリクエスト数
• Locations
– Locationトレンド
» ⽇日単位での地域毎のリクエスト数
– Location毎の⽐比率率率 (Request Count/Request%/Bytes)
43. CloudFront Reports & Analytics
• Monitoring and Alarming
– Cloudwatchを利利⽤用するため、しきい値設定によるアラート連携も可能
– CloudFrontのCloudwatchメトリックスはVirginiaリージョンに出⼒力力される
– メトリックス
• 4xxErrorRate, 5xxErrorRate, TotalErrorRate
• BytesDownloaded, BytesUploaded
• Requests
44. Access Log
• CloudFrontアクセスログ
– 任意のS3 Bucketに出⼒力力可能
• 出⼒力力先Bucketのアクセス権設定に注意
– アクセスログの出⼒力力はタイムラグあり
項⽬目 説明
date アクセス⽇日(UTC)
time アクセス時間(UTC)
x-‐‑‒edge-‐‑‒location エッジロケーションID
sc-‐‑‒bytes 配信Byte数(ヘッダー含む)
c-‐‑‒ip クライアントIPアドレス
cs-‐‑‒method HTTPアクセスMethod
cs-‐‑‒uri-‐‑‒stem リクエストURI
sc-‐‑‒status レスポンスコード
cs(Referer) リファラ
cs(User-‐‑‒Agent) クライアントユーザエージェント
項⽬目 説明
cs-‐‑‒uri-‐‑‒query リクエストQuery Strings
cs(Cookie) リクエストCookieヘッダー
x-‐‑‒edge-‐‑‒result-‐‑‒type Hit:キャッシュヒット
RefreshHit:キャッシュがExpireされていた
Miss:キャッシュミス
LimitExceeded: CloudFrontのリミットオーバ
CapacityExceeeded: エッジのキャパシティ不不⾜足
Error:クライアントもしくはオリジンによるエラー
x-‐‑‒edge-‐‑‒request-‐‑‒id CloudFrontのリクエストID
x-‐‑‒host-‐‑‒header リクエストHost Header
cs-‐‑‒protocol リクエストプロトコル(http / https)
cs-‐‑‒bytes リクエストByte数(ヘッダー含む)
time-‐‑‒taken CloudFrontエッジがリクエストを受けて、オリジンからLastByte
を取得するまでにかかった秒数
45. Access Log
• S3 Bucketへの出⼒力力速度度の改善
– ⼤大半のログが1時間程度度でS3に出⼒力力が完了了可能
• 内部的にKinesisを導⼊入
– 1時間あたりで出⼒力力されるファイル数の削減
CloudFront Edge
Kinesis
S3 Bucket
46. CloudFrontログ & レポート
CloudFront
クライアント
S3
Management Console
アクセスログ
アクセスや利利⽤用状況傾向の
確認及び分析
Cache Statistics
Popular Objects
Top Referrers
Usage
Viewers
Cloudwatch Monitoring and Alarming
障害/異異常検知や現状の利利⽤用確認
Access Log
複雑なアクセスや利利⽤用傾向分析
詳細な障害分析
リアルタイム
モニター
レポーティング
Redshift
EMR
52. DNS名前解決の⾼高速化
• Route 53と連携したDNS Lookupの⾼高速化
– CloudFrontのAlternative Domain NameをRoute53を利利⽤用して名
前解決する際は、レコードセットTypeをCNAMEではなくAレコー
ドのAlias設定することでクエリの回数が削減
> nslookup cdn.awssummit.co.jp
Server: 192.168.2.1
Address: 192.168.2.1#53
Non-authoritative answer:
cdn.awssumit.co.jp canonical name =
dxxxx.cloudfront.net.
Name: dXxxx.cloudfront.net
Address: 54.230.234.XXX
Name: dXXXX.cloudfront.net
Address: 54.230.234.XXX
:
CNAME A Record + Alias
cdn .awssummit.co.jp.
> Nslookup cdn.awssummit.co.jp
Server: 192.168.2.1
Address: 192.168.2.1#53
Non-authoritative answer:
Name: cdn.awssumit.co.jp
Address: 54.230.234.XXX
Name: cdn.awssumit.co.jp
Address: 54.230.234.XXX
Name: cdn.awssumit.co.jp
Address: 54.230.235.XXX
:
55. CloudFront プライスモデル
①データ転送アウト
②リクエスト
③独⾃自SSL証明書
EC2 S3オンプレ
2014年年12⽉月時点
④オリジンへのデータ転送アウト
⑥無効リクエスト
⽶米国 ヨーロッパ
⾹香港、韓国、シン
ガポール、台湾 ⽇日本 南⽶米
オーストラ
リア
インド
予約容量量の
価格
最初の10TB/⽉月 $0.0.85 $0.085 $0.140 $0.140 $0.250 $0.140 $0.170 問い合わせ
次の40TB/⽉月 $0.080 $0.080 $0.135 $0.135 $0.200 $0.135 $0.130 問い合わせ
次の100TB/⽉月 $0.060 $0.060 $0.120 $0.120 $0.180 $0.120 $0.110 問い合わせ
次の350TB/⽉月 $0.040 $0.040 $0.100 $0.100 $0.160 $0.100 $0.100 問い合わせ
次の524TB/⽉月 $0.030 $0.030 $0.080 $0.080 $0.140 $0.095 問い合わせ 問い合わせ
次の4PB/⽉月 $0.025 $0.025 $0.070 $0.070 $0.130 $0.090 問い合わせ 問い合わせ
次の5PB/⽉月以上 $0.020 $0.020 $0.060 $0.060 $0.125 $0.085 問い合わせ 問い合わせ
⽶米国 ヨーロッパ
⾹香港、韓国、シン
ガポール、台湾 ⽇日本 南⽶米
オーストラリ
ア
インド
予約容量量の
価格
HTTPリクエスト $0.0075 $0.0090 $0.0090 $0.0090 $0.0160 $0.0090 $0.0090 問い合わせ
HTTPSリクエスト $0.0100 $0.0120 $0.0120 $0.0120 $0.0220 $0.0125 $0.0120 問い合わせ
②リクエスト(10,000件あたり)
③独⾃自SSL証明書
Distributionに関連付けられた証明書1通につき、⽉月$600 ※SNIの場合は不不要
⽶米国 ヨーロッパ
⾹香港、韓国、シン
ガポール、台湾 ⽇日本 南⽶米
オーストラリ
ア インド
予約容量量の
価格
All Data Transfer $0.020 $0.020 $0.060 $0.060 $0.125 $0.100 $0.160 問い合わせ
④オリジンへのデータ転送アウト(GBあたり)
⑥無効リクエスト
最初の1,000ファイルまで追加料料⾦金金なし。それ以上はリクエスト毎に$0.005
⑤データ転送アウト
⑤ CloudFrontへのデータ転送アウト(GBあたり)
別のAWSリージョンまたはAmazon CloudFront、$0.000
①データ転送アウト(GBあたり)
56. CloudFront Price Class
• Price Classを指定することで、安価なエッジロケーション
のみを利利⽤用した配信が可能
– Price Classの変更更により、ユーザへの配信速度度に影響が出る可能性があるため利利⽤用の
際は注意が必要
60. Appendix
• 参考資料料
– Amazon CloudFront Developer Guide
http://docs.aws.amazon.com/ja_̲jp/AmazonCloudFront/latest/DeveloperGuide/
Introduction.html
– Amazon CloudFront FAQ
http://aws.amazon.com/jp/cloudfront/faqs/
– Amazon CloudFront Pricing
http://aws.amazon.com/jp/cloudfront/pricing/