Transcript
Page 1: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon CloudFront

AWS Black Belt Tech Webinar 2016アマゾン ウェブ サービス ジャパン株式会社ソリューションアーキテクト 北迫 清訓

2016/1/27

Page 2: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

AWS Black Belt Tech Webinar 2016

• AWSJのTechメンバがAWSのプロダクトを

深堀りして解説するWebセミナー– サービスの概要、使いどころの説明

– アップデートのキャッチアップ

• 毎週水曜 18〜19時

• 申し込みサイト– http://aws.amazon.com/jp/event_schedule/

• Twitter ハッシュタグ

– #awsblackbelt で確認

2

Page 3: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Agenda

1. Contents Delivery Network

2. 高速配信機能

3. セキュリティ機能

4. ストリーミング配信機能

5. レポート & ロギング機能

6. Pricing

7. まとめ

3

Page 4: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Contents Delivery Network

Page 5: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Contents Delivery Network

• 大規模なアクセスも世界中にあるエッジのキャパシティを活用して効率的かつ高速にコンテツ配信が可能なサービス

– ユーザからのアクセスを最も近いエッジサーバに誘導することでユーザへの配信を高速化

– エッジサーバでは、コンテンツのキャッシングを行い、オリジンに負荷をかけず効率的に配信

オリジンサーバ

Amazon CloudFrontオリジンサーバ

台数の削減

レスポンス向上 負荷軽減

リクエスト

配信

リクエスト

キャッシュから配信 キャッシュ

コンテンツ取得

CDN

クライアント

5

Page 6: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Contents Delivery Network

• 最適なエッジへの誘導

オリジンサーバ

Amazon CloudFront

クライアント

Internet

位置情報DB

①ドメイン名問い合わせ

CloudFront DNS

Edge Location

②IPアドレス問い合わせ(xxx.cloudfront.net)

③最適なEdgeアドレス応答

④最適なEdgeへアクセス

⑤キャッシュがなければオリジンから取得

DNSリゾルバ

EDNS-Client-Subnetのサポートにより精度を向上

6

Page 7: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

現時点のエッジロケーション

EuropeAmsterdam, Netherlands(2)Dublin, IrelandFrankfurt, Germany (3)London, England (3)Madrid, SpainMarseille, FranceMilan, ItaliaParis, France (2)Stockholm, SwedenWarsaw, Poland

AsiaChennai, IndiaHong Kong, China(2)Mumbai, IndiaManila, PhilippinesOsaka, JapanSeoul, Korea (2)Singapore (2)Taipei, TaiwanTokyo, Japan(2)

South AmericaSao Paulo, BrazilRio de Janeiro, Brazil

North AmericaAtlanta, GAAshburn, VA (3)Chicago, ILDallas, TX (2)Hayward, CAJacksonville, FLLos Angeles, CA(2)Miami, FLNew York, NY (3)Newark, NJPalo Alto, CA San Jose, CASeattle, WA South Bend, INSt. Louis, MO

2016年1月時点

54 Edge Locations

AustraliaMelbourne, AustraliaSydney, Australia

最新のエッジロケーション情報 http://aws.amazon.com/jp/cloudfront/details/7

Page 8: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon CloudFrontの特徴

• 高性能な分散配信(世界54拠点のエッジサーバ) ※2016年1月時点

• 高いパフォーマンス(業界トップクラスのパフォーマンス測定結果)

• キャパシティアクセスからの開放(予測不可能なスパイクアクセスへの対応)

• 完全従量課金(初期費用がなく安価かつスポットも利用可能)

• 設定が容易で即時利用が可能(GUIからの設定で15分程度でサービス利用開始可能)

8

Page 9: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CDN導入における優位性

CloudFront Edge

Edge Capacity

オリジンサーバ

CDNをサイトの前段に入れるだけでサイトアクセスの高速化が見込める

→ 大量にアクセスが来てもレスポンスタイムを平常化

クライアント

9

エッジのキャパシティを活用し、あらゆる規模の配信に対応

エッジとオリジン間の通信の最適化を自動で行い、オリジンからのデータ取得も高速化

通信の最適化

Page 10: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CDNにおける従量課金の優位性

CloudFront Edge

Edge Capacity

オリジンサーバ配信量に対する従量課金

オリジンサーバ配信量に対する従量課金

CloudFront Edge

想定の難しいアクセス対応への機会損失リスクと従量課金による無駄なコスト負担の回避

Edge Capacity

クライアント

クライアント

10

Page 11: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

即時利用可能なCDNの優位性

オリジンサーバ

通常時

オリジンサーバ

CloudFront Edge

Edge Capacity

イベント・キャンペーン時

イベントに合わせてスポットでCDNを活用

DNSサービス(Route53)

クライアント

クライアント

11

Page 12: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

高速配信機能

Page 13: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Distribution

• Distribution– ドメイン毎に割り当てられるCloudFrontの設定

– AWS Management ConsoleもしくはAPIで即時作成可能

– WebもしくはRTMP Distributionを選択可能

– Distributionあたりの使用量が最大10Gbpsもしくは15,000RPSを超える場合は上限緩和申請が必要

– デフォルトでは「xxxx.cloudfront.net」がDistributionのドメイン名として割り当てられる• CNAMEエリアスを利用して独自ドメイン名の指定が可能

• CNAMEエリアスのワイルドカード指定もサポート (例: *.example.comなど)

• Route53と組み合わせたZone Apex (例: example.comなど)が利用可能

13

Page 14: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

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)

14

Page 15: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

エッジでのGzip圧縮機能

• CloudFrontエッジでコンテンツをGzip圧縮することでより高速にコンテンツを配信リクエストヘッダーにAccept-Encoding:gzipが指定されており、オリジンがGzipに対応していない場合は、CloudFrontエッジにてGzip圧縮を行い配信

– Amazon S3はGzip圧縮をサポートしていないため、有効なオプション

CloudFront Edge

Gzip圧縮 オリジンサーバ

Accept-Encoding:gzip

クライアント

コンテンツリクエスト

キャッシュがある場合は、Gzipされたキャッシュを返す

S3コンテンツが圧縮され高速配信

15

Page 16: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

キャッシュコントロール機能

• キャッシュコントロールキャッシュヒット率を向上させることがCDN導入におけるポイント

– GET / HEAD / OPTION(選択可能)のリクエストが対象

– 単一ファイルサイズのキャッシングは最大20GBまで

– URLパス毎にキャッシュ期間指定が可能

– フォワードオプション機能による動的ページ配信 (Webのみ)• Header / Cookie /Query Strings

URLおよび有効化したフォーワードオプション機能のパラメータ値の完全一致でキャッシュが再利用される

16

Page 17: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

キャッシュコントロール機能

• キャッシュコントロールヘッダーの挙動– Object Cachingにより、キャッシュ時間のコントロールが可能

– オリジン側がHTTPキャッシュコントロールヘッダーを付与しない場合でも上書きが可能

– Behavior毎にキャッシュ設定を行うことで、URLパス毎にキャッシュ期間を変えることも可能

• デフォルトTTL:オリジンがキャッシュコントロールヘッダーを指定しない場合に利用(デフォルト24時間)

• 最小TTL:CloudFront側でキャッシュすべき最小期間

• 最大TTL:CloudFront側でキャッシュすべき最大期間

CloudFront Minimum TTL設定

最小TTL = 0秒 最小TTL >0秒を設定

オリジン

HT

TP

ヘッダー

Cache-Control max-ageを指定

指定されたmax-ageと最大TTLで小さい値の期間キャッシュ

最小TTL<max-age<最大TTL max-age期間

max-age < 最小TTL 最小TTL期間

最大TTL < max-age 最大TTL期間

Cache-Control設定なしデフォルトTTL期間キャッシュ

(標準 24時間)最小TTLまたはデフォルトTTLで大きい値の期間

キャッシュ

17

Page 18: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

キャッシュコントロール機能(つづき)

CloudFront Minimum TTL設定

最小TTL = 0秒 最小TTL >0秒を設定

オリジン

HT

TPヘッダー Cache-Control max-ageと

s-maxageを指定指定されたs-max-ageと最大TTLで小さい値

の期間キャッシュ

最小TTL<s-max-age<最大TTL s-max-age期間

s-max-age < 最小TTL 最小TTL期間

最大TTL < s-max-age 最大TTL期間

Expiresを指定指定されたExpires日付と最大TTLで早い日付

の期間キャッシュ

最小TTL<<最大TTL Expires日付

Expires < 最小TTL 最小TTL期間

最大TTL < Expires 最大TTL期間

Cache-Control no-cache, no-storeを指定

キャッシュされない 最小TTLの期間キャッシュ

※HTML MetaタグのHTTP Cache-ControlもしくはProgmaが指定されていてもCloudFrontのキャッシュコントロールでは利用されない※オリジンがS3で、オリジン側でヘッダー指定する場合は、MetadataにHTTPヘッダーを指定

18

Page 19: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

キャッシュコントロール機能

• キャッシュのInvalidation(無効化)– コンテンツ毎の無効化パス指定

• 同時に最大3,000個までのパス指定が可能

– ワイルドカードを利用した無効化パス指定

• 同時に最大15個まで無効化パスリクエストが指定可能

• オブジェクト数の制限無し

– AWS Management ConsoleもしくはAPIで実行可能

– Invalidationの完了は10-15分程度

AWS SDK / CLI / API

19

Page 20: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ダイナミックコンテンツ機能

• 動的コンテンツキャッシュへの対応– オリジンサーバに対してHeader, Cookie, Query Strings情報

をフォワードすることで、動的なページの配信にも対応

– URLパス(Behavior)と組み合わせ、きめ細かなキャッシュコントロールを実現

– Whitelistを利用して、必要最低限のパラメータのみをフォワード設定することで、キャッシュを有効活用することが重要

– キャッシュしないコンテンツでも、オリジンとの通信の最適化により配信の高速化を実現

20

Page 21: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ダイナミックコンテンツ機能

• フォワード Header機能– オリジンに任意のヘッダー情報をフォワードすることで動的なページ生成にも対応

– 全てのHeaderをフォワードするとキャッシュ効率が大幅に低下するため必要最小限のヘッダーを指定することを推奨

– カスタムヘッダーにも対応

– CloudFront独自ヘッダー

• CloudFront側でクライアントの情報を独自に判定し、オリジンにフォワード

Type Header 詳細

接続プロトコル判定 CloudFront-Forwarded-Proto HTTPもしくはHTTPSを設定

デバイス判定 CloudFront-Is-Mobile-ViewerCloudFront-Is-Tablet-ViewerCloudFront-Is-Desktop-Viewer

User-Agentをもとに、クライアントデバイスの情報をTrue/Falseで設定

地域判定 CloudFront-Viewer-Country クライアントのIPアドレスをもとに、地域コードを設定 (ISO-3166-1 alpha-2準拠)21

Page 22: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ダイナミックコンテンツ機能

• フォワード Cookie機能– オリジンに任意のCookie情報をフォワードすることで動的なページ生成にも対応

– CloudFrontは指定されたCookie名と値をセットでキャッシュ

– 全てのCookieをフォワードするとキャッシュ効率が大幅に低下するため必要最小限のCookieを指定することを推奨

– 対象のCookie名はワイルドカードの指定も可能

22

Page 23: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ダイナミックキャッシング

• Behaviorsを活用したマルチオリジンおよびキャッシュコントロールの個別設定– クライアントからのリクエストパスパターンをもとに、キャッシュポリシーや

オリジンへのアクセスルールの個別指定が可能

Behaviors Path Patternの記述方法• 「*」 0もしくはそれ以上の文字列• 「?」 1文字例) /*.jpg, /image/*, /image/a*.jpg, /a??.jpg

img/*

api/item*

*

Behavior Cache TTL(正規表現)http://www.aws.com/

オリジン

クライアント

img/item01.jpg

api/item?id=10

index.jsp

最小TTL

30 Days

最小TTL

10 min

S3

Default TTL

0 Sec

23

Page 24: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

カスタムエラーページ

• カスタムエラーページ設定– オリジンからのエラーコードに対して、CloudFront側で指定した任意の

エラーページを応答

• エラーページのパスはドメインから指定ができないため、マルチオリジン設定とパスパターンの組み合わせでS3などの別サーバからの取得

– エラーのキャッシュ時間も指定可能

– エラーコード毎にページやキャッシュ時間を設定

• 400,403,404,405,414,500,501,502,503,504

• デフォルトは5分(300秒)

– CloudFrontからの応答を別のステータスコードに差し替えることも可能

24

Page 25: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

カスタムエラーページ

• Amazon S3と組み合わせた構成例Webサーバ側で4XXエラー時のページ設定5XXのカスタムエラー

ページをS3に設定(4XXはオプション)

5XX発生時(4XX発生時)

4XX発生時

CloudFront

S3

オリジン

Custom Error Page

Custom Error Page

Custom Error Page

• 4XX系はCloudFront側ですべてをハンドリングしていない上、クライアント要求のエラーのため、オリジン側で対処

• 5XX系はオリジン側のエラーのため、CloudFront側で対処

クライアント

25

Page 26: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

セキュリティ機能

Page 27: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

セキュリティ機能

• セキュア配信– HTTPS対応 (強制リダイレクト / HTTPSのみ許可)

– SSL証明書(デフォルト / 独自証明書 / SNI / Certification Manager)

– オリジン暗号化通信

– オリジンカスタムヘッダー

– GEOリストリクション (Whitelist / Blacklist)

– 署名付きURL/Cookie (有効期間指定)

– Amazon WAF連携

27

Page 28: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

サポートするSSL証明書

• デフォルト証明書

– cloudfront.netドメインのSSL証明書は標準で利用可能

• 独自SSL証明書

– X.509 PEM形式かつ認証チェーンが含まれること。鍵長は最大2048bit

– CloudFrontにて別途SSL証明書の利用課金がされる

– 様々な証明書タイプをサポート• Domain Validated, Extend Validated, Wildcard, Subject Alternative Name証明書 など

– AWS Certification Managerで発行された証明書

• SNI(Server Name Indication)独自SSL証明書

– CloudFrontの独自SSL証明書費用を負担せず、独自ドメインでのSSL通信が可能

– 一部古いブラウザーはSNI拡張をサポートしていないため注意が必要

• Windows XPのIE, Android 2.2デフォルト, バージョン1.7以前のJavaブラウザなど

28

Page 29: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

独自SSL証明書の利用

• 利用申請– 証明書の利用には上限緩和申請が必要 (デフォルト2)

• 利用手順1-1. 証明書機関で署名を受けた証明書をIAM CLIを利用してアップロード

1-2. AWS Certification ManagerのManagement Console画面より、生成したい証明書のFQDNを指定

※ホスト名にワイルドカードも指定可能

2. CloudFrontのDistribution設定画面にて登録した証明書を選択

3. 証明書と同じCNAMEに設定

4. SNIの有無を選択

5. 指定したCNAMEとDistribution作成時に生成されるDomain名を紐付けたレコードをDNSに登録

29

Page 30: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

オリジン暗号化通信

• CloudFrontエッジとオリジン間の通信方式を制御– SSLプロトコル方式

• TLSv1, TLSv.1.1, TLSv1.2, SSLv3から複数指定可能

– オリジンとの通信プロトコル

• HTTPのみ、HTTPSのみ、クライアントからの通信プロトコルに合わせる

– カスタムオリジンの場合のみ指定可能

CloudFront Edge

カスタムオリジン

クライアント

HTTP/HTTPS暗号化通信方式の指定が可能

S3

標準でHTTPS

30

Page 31: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

オリジンカスタムヘッダー

• エッジからオリジンサーバへの通信でカスタムHTTPヘッダーの追加– オリジンサーバ毎に固定でヘッダーの追加もしくはクライアントからのリク

エストヘッダーの上書きが可能

– Shared-Secret

• CloudFrontとオリジン間で任意のヘッダーおよびヘッダー値を取り決め、オリジン側でヘッダー値のチェックを行うことで、カスタムオリジンはCloudFrontからのアクセスのみに制御する

– リクエストヘッダーの調整

• Cross-Origin Request Sharing(CORS)通信時に、クライアントブラウザーのバージョンなどにより、ブラウザが適切なヘッダーを付与しない場合に、強制的に設定

31

Page 32: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

GEOリストリクション

• 地域指定によるアクセス制御– 接続されるクライアントの地域情報を元に、エッジでアクセス判定

– BlacklistもしくはWhitelistで指定可能

– Distribution全体に対して適用される

– 制限されたアクセスには403を応答

CloudFront Edge

接続クライアントの地域情報をもとに判定

クライアント

GEO Restriction有効

オリジンサーバ

403

32

Page 33: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

署名付きURL/Cookie

• 署名付きURL/Cookieを利用したプライベートコンテンツ配信– Restricted Viewer Accessを有効にするだけで、署名のないアクセスを

全てブロック

• Behavior単位で指定可能

• URLもしくはCookieいずれかを利用可能

– 標準 (Canned Policy)

• 有効期間(時刻を秒単位指定)

• 有効コンテンツパス

– オプション (Custom Policy)

• アクセス元IPアドレス制限

• 有効開始時刻指定

• 許可コンテンツのワイルドカード指定

33

Page 34: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

署名付きURL/Cookie

• 署名付きURL/Cookieを利用した際のアクセスフロー

– 単一コンテンツアクセスの場合は署名付きURL、複数コンテンツアクセスの場合は、署名付きCookieの利用を推奨

クライアントオリジンサーバ

認証サイト認証リクエスト

署名付きURL/Cookieでアクセス

署名付きURL/Cookieなし

署名付きURL/Cookieを生成

CloudFrontPrivate Key

CloudFront Edge

403

34

Page 35: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

署名付き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のパラメータ文字列を署名

• アクセスURL毎に必ず署名が必要

• サンプルソースコード (Perl / PHP / C# + .NET Framework / Java)http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/PrivateCFSignatureCodeAndExamples.html

35

Page 36: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

署名付きCookie

• 署名付きCookie– Webディストリビューションのみサポート

• 許可コンテンツのワイルドカードパス指定ができるため、1つのCookieで対象パス以下のコンテンツにアクセス可能

• Cookieの中に署名付きURLのCustom Policyと同様のパラメータをセット– CloudFront-Key-Pair-Id, CloudFront-Policy, CloudFront-Signature

• Set-Cookie時のポイント– Domain属性を利用して、CloudFrontのAlternate Domain Nameと同じドメイン名を

指定することで、Cookieの有効範囲を制限

– ExpireおよびMax-Age属性を利用しないことで、セッションCookieを作成

– Secure属性を利用することでクライアントリクエスト時にCookieを含める際にCookieの暗号化を行う

• サンプルソースコード(Perl / PHP / C# + .NET Framework / Java)https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html#private-content-overview-sample-code-cookies

36

Page 37: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

署名付きURL/Cookie

• オリジンサーバの保護– オリジンがAmazon S3の場合、Origin Access Identity(OAI)を利用

• S3のBucketへのアクセスをCloudFrontからのみに制限

– カスタムオリジンの場合、下記の2種類が選択可能

• オリジンカスタムヘッダーを利用し、CloudFrontで指定された任意のヘッダーをオリジン側でチェック

• オリジン側のアドレスを公開しないとともに、CloudFrontが利用するIPアドレスのみの許可させる

– CloudFrontが利用するIPアドレスは下記URLから取得可能https://ip-ranges.amazonaws.com/ip-ranges.json

– JSONフォーマット

» Serviceキーの“CLOUDFRONT”でフィルタすることで抽出可能

CloudFront Edge カスタムオリジンサーバ

S3

クライアント

OAI

IP制限/ヘッダ−制限

クライアント

ダイレクトアクセス

ヘッダー付与

37

Page 38: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon WAF連携

• Amazon WAFで定義したWeb ACLをCloudFront Distributionに適用– CloudFrontをサービスの前段に配置することでサイトの保護を実現

– Amazon WAFでの制御

• IPアドレス制限 / SQLインジェクション / ヘッダー, クエリ等のStringマッチング

– Amazon WAFの内容が即時反映

– ブロック時は403(Forbidden)を応答

CloudFront Edge

クライアント

不正なアクセスをブロック

オリジンサーバ403

38

Page 39: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ストリーミング配信機能

Page 40: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ストリーミング配信機能

• CloudFrontを活用したストリーミング配信– 配信規模に応じて多くのネットワーク帯域が必要となるストリーミングを

効率的に配信可能

– 小規模から大規模配信まで柔軟に対応

– 対応可能な配信方式

• Amazon S3をコンテンツストレージとしたオンデマンドストリーミング配信

• ストリーミングサーバと連携したHTTPベースのストリーミング配信(オンデマンド・ライブ双方対応)

40

Page 41: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ストリーミング配信

• 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 EdgeS3

RTMP/RTMPE/RTMPT/RTMPETFlash Player /

Silverlight PlayerHTTP/HTTPS

41

Page 42: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ストリーミング配信

• ストリーミングサーバと連携したHTTPベースのストリーミング配信– シングルコンテンツマルチユース

– オンデマンド・ライブ配信に対応

– AWS CloudFormationを利用した環境デプロイ用テンプレートも提供

クライアント

CloudFront EdgeEC2

Flash Player / Silverlight Player

HTTP/HTTPS

AWS CloudFormation

Template

LIVE

42

Page 43: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ストリーミング配信

• CloudFormationテンプレート

CloudFrontとAdobe Media Serverを利用したHTTPライブ配信• http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LiveStreamingAdob

eMediaServer5.0.html

CloudFrontとIIS Media Serviceを利用したライブ Smooth Streaming配信• http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/IISLiveSmoothStrea

ming4.1.html

CloudFrontとWowzaを利用したHTTPライブ配信• http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/live-streaming-

wowza.html

43

Page 44: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

レポート & ロギング機能

Page 45: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

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のみで参照可能

45

Page 46: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Reports & Analytics

• Cache Statistics / Popular Objects / Usage /Top Referrers / Viewers に関してはCloudFrontの利用状況における傾向分析として利用– 直近60日間のグラフが参照可能– 1時間単位もしくは日単位でのグラフ表示– グラフへの反映までには3時間程度Delay– CSVへのエクスポートも可能– フィルタリング

• 全DistributionもしくはDistribution単位• 期間指定• エッジ地域

• Monitoring and Alarmingはリアルタイムの利用状況の確認により、アクセス状況のリアルタイム監視として利用– 数分の遅延で利用状況を把握可能– Cloudwatchのアラート機能を利用し、突発的なアクセスやエラーレートの上昇の検知に

よる通知が可能– 3〜5分程度のDelayで検知

46

Page 47: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

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リクエストの割合

47

Page 48: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Reports & Analytics

• Monitoring and Alarming– CloudWatchを利用するため、しきい値設定によるアラート連携も可能

– CloudFrontのCloudWatchメトリックスはVirginiaリージョンに出力される

– メトリックス

• 4xxErrorRate, 5xxErrorRate, TotalErrorRate

• BytesDownloaded, BytesUploaded

• Requests

48

Page 49: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Reports & Analytics

• Popular Objects– Distribution毎のリクエスト数の多いTop 50コンテンツリスト

• Object

• Requests

• Hits, Hit %, Misses

• Total Bytes, Bytes From Misses,

• Incomplete Download, Response Code

49

Page 50: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Reports & Analytics

• Top Referrers– Distribution毎のリクエスト数の多いTop 25のリファラードメイン

• Referrersドメイン

• Request Count

• Request %

50

Page 51: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Reports & Analytics

• Usage– Number of Requests

• HTTPリクエスト数

• HTTPSリクエスト数

– Data Transferred by Protocol

• HTTPによるクライアントおよびオリジンに対して送信したデータ転送容量

• HTTPによるクライアントおよびオリジンに対して送信したデータ転送容量

– Data Transferred by Destination

• CloudFront Edgeからクライアントに送信したデータ転送容量

• CloudFront Edgeからオリジンに送信したデータ転送容量

51

Page 52: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Reports & Analytics

• Viewers– Distribution毎のクライアントデバイス情報

• Devices– デバイス種別の比率

– デバイストレンド(日単位でのデバイス毎のリクエスト数)

• Browsers– ブラウザー種別の比率

– ブラウザートレンド(日単位でのブラウザー毎のリクエスト数)

• Operating Systems– OS種別の比率

– OSトレンド (日単位でのOS毎のリクエスト数)

• Locations– Locationトレンド(日単位での地域毎のリクエスト数)

– Location毎の比率 (Request Count/Request%/Bytes)

52

Page 53: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Access Log

• CloudFrontアクセスログ– 任意のS3 Bucketに出力可能

– アクセスログの出力はタイムラグあり

項目 説明

date アクセス日(UTC)

time アクセス時間(UTC)

x-edge-location エッジロケーションID

sc-bytes 配信Byte数(ヘッダー含む)

c-ip クライアントIPアドレス

cs-method HTTPアクセスMethod

cs(Host) CloudFront Distributinドメイン名

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を取得するまでにかかった秒数

x-forwarded-for ViewerがHTTPプロキシなどを利用した場合の元Viewr IP

ssl-protocol クライアントとHTTPS通信をした際の利用したプロトコル

ssl-cipher クライアントとHTTPS通信した際の利用した暗号化方式

x-edge-response-result-type

Viewerにレスポンスを返す直前の処理分類※分類はx-edge-result-typeと同様53

Page 54: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFrontログ & レポート

CloudFrontクライアント

S3

Management Console

アクセスログ

アクセスや利用状況傾向の確認及び分析

Cache StatisticsPopular ObjectsTop ReferrersUsageViewers

Cloudwatch Monitoring and Alarming障害/異常検知や現状の利用確認

Access Log

複雑なアクセスや利用傾向分析データの可視化と詳細な障害分析

リアルタイムモニター

レポーティング

Redshift

ElasticSearch

54

Page 55: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

アーキテクチャ & TIPS

Page 56: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon CloudFrontの使いドコロ

• Amazon S3を利用してWebコンテンツを配信する場合

CloudFrontとS3を組み合わせて利用することを推奨

CloudFront

S3クライアント

Amazon S3はCloudFrontと組み合わせることで、スパイクアクセス含め、よりスケーラブルにあらゆる規模にも対応配信が可能になるフルマネージド配信環境のため、運用が一切不要

56

フルマネージド

キャッシュ

Page 57: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon CloudFrontの使いドコロ

• 大小問わずWebサイトのフロントキャッシュサーバとして

Webサーバ

静的コンテンツ中心のサイト

CloudFront

S3

クライアント

CMS

静的ファイルに出力

フルマネージド

Webサーバ

動的コンテンツ中心のサイト

CloudFront

クライアント

一部HeaderでのClient判定や、POSTなどの動的ページも対応可能

Webサーバの機能(mod_rewriteなど)で静的ファイルのパスをCloudFront経由に強制書換え

パッケージCMSの利用もしくは既存構成に大きな変更が加えられない場合

静的ファイルパスの書換ページアクセ

静的ページ取得 静的ページの

みキャッシュ

キャッシュ

57

Page 58: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon CloudFrontの使いドコロ

• 大小問わずWebサイトのフロントキャッシュサーバとして

Webサーバ

大容量のコンテンツを扱うサイト

CloudFront

クライアント

静的コンテンツストレージとしてS3を活用

動的ページアクセス

静的コンテンツ取得

静的コンテンツキャッシュ

S3

CMS

AWS CLI / SDKを利用してファイル転送やディレクトリ同期

58

Page 59: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon CloudFrontの使いドコロ

• 大小問わず動画配信サイトのフロントキャッシュサーバとして

オンデマンド動画配信プラットフォーム

CloudFront

S3

クライアント

フルマネージド動画配信プラットフォーム

Elastic Transcoder

Flash (RTMP/RTMPE/RTMPT/RTMPET)

HTTP Live Streaming (HLS)

Smooth Streaming

動画フォーマット変換

ストリーミング配信 キャッシング

59

Page 60: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon CloudFrontの使いドコロ

• 大小問わず動画配信サイトのフロントキャッシュサーバとして

ライブ動画配信プラットフォーム

CloudFrontクライアント

マルチデバイスHTTPライブ配信

Flash (RTMP/RTMPE/RTMPT/RTMPET)

HTTP Live Streaming (HLS)

Smooth Streaming

映像送信

ライブ配信配信 配信

AWS Cloud Formation

Template

LiveEncoder

LIVEInternet

ライブ配信サーバ

EC2

一括デプロイ

60

Page 61: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

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

:

61

Page 62: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

リアルタム障害/異常検知

• Cloudwatch Alarmの活用– Requestメトリックス

• 上限値アラーム設定による突発的なアクセス検知

• 下限値アラーム設定によるアクセス障害検知

– TotalErrorRateメトリックス

• 上限値アラーム設定によるオリジンエラー障害検知

62

Page 63: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Amazon S3オリジン自動キャッシュの無効化

• Lambdaを活用した自動キャッシュの無効化– S3への最新コンテンツのアップロードに連動して、CloudFrontから対象

コンテンツのInvalidationを自動発行

– S3のイベントおよびLambdaを利用し、CloudFrontのInvalidation APIをコール

S3

CloudFront

Lambda

オリジン

管理者

アップロード

Lambda Function呼び出し

S3イベント

CloudFrontInvalidation API

呼び出し

キャッシュのInvalidation

※Lambda Functionのプログラムは別途作成する必要あり63

Page 64: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Pricing

Page 65: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront プライスモデル

①データ転送アウト

②リクエスト

③独自SSL証明書

EC2 S3オンプレ

2016年1月時点

④オリジンへのデータ転送アウト

⑥無効リクエスト

米国ヨーロッ

パ香港,フィリピン,韓国,シンガポール,台湾 日本 南米

オーストラリア

インド予約容量の

価格

最初の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あたり)

Page 66: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

CloudFront Price Class

• Price Classを指定することで、安価なエッジロケーションのみを利用した配信が可能– Price Classの変更により、ユーザへの配信速度に影響が出る可能性があるため利用の

際は注意が必要

66

Page 67: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Free Tier

• AWS無料枠– サインアップから1年間

– 50GB/月のデータ転送アウト

– 2万件/月のHTTPおよびHTTPSリクエスト

検証などで是非ご活用ください67

Page 68: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

まとめ

Page 69: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

まとめ

• CloudFrontを活用することで

– 簡単にサイトの高速化とスケーラビリティを実現可能

– 動的コンテンツへの対応も可能

– プレミアムコンテンツもセキュアに配信

– レポート機能でアクセス傾向分析も可能

– いつでも、すぐに利用できるCDNサービス

69

Page 70: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Appendix

• 参考資料

– Amazon CloudFront Developer Guidehttp://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

– Amazon CloudFront FAQhttp://aws.amazon.com/jp/cloudfront/faqs/

– Amazon CloudFront Pricinghttp://aws.amazon.com/jp/cloudfront/pricing/

70

Page 71: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

AWS Black Belt Tech Webinar 2016

• 2月は「エンタープライズアプリケーション&アーキテクチャ点検月間」です!

– 2/3 (水) :お休み

– 2/10 (水) :AWS Well-Architected

– 2/17 (水) :Amazon WorkSpaces

– 2/24 (水) :Amazon WorkDocs

• イベントスケジュールhttp://aws.amazon.com/jp/about-aws/events/

71

Page 72: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

Webinar資料の配置場所

• AWS クラウドサービス活用資料集– http://aws.amazon.com/jp/aws-jp-introduction/

72

Page 73: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

73

Page 74: AWS Black Belt Tech シリーズ 2016 - Amazon CloudFront

ご参加ありがとうございました。

74