Amazon CloudFront 開発者ガイド API Version 2014-01-31 Amazon CloudFront 開発者ガイド Amazon CloudFront: 開発者ガイド Copyright © 2014 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. Abstract Amazon CloudFront を使用して静的および動的なウェブコンテンツをエンドユーザーに高速に配信しま す。 The following are trademarks of Amazon Web Services, Inc.: Amazon, Amazon Web Services Design, AWS, Amazon CloudFront, Cloudfront, Amazon DevPay, DynamoDB, ElastiCache, Amazon EC2, Amazon Elastic Compute Cloud, Amazon Glacier, Kindle, Kindle Fire, AWS Marketplace Design, Mechanical Turk, Amazon Redshift, Amazon Route 53, Amazon S3, Amazon VPC. In addition, Amazon.com graphics, logos, page headers, button icons, scripts, and service names are trademarks, or trade dress of Amazon in the U.S. and/or other countries. Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored by Amazon. Amazon CloudFront 開発者ガイド Amazon CloudFront の概要 .................................................................................................................... 1 CloudFront がコンテンツを配信する方法 ............................................................................................... 4 CloudFront エッジサーバーの場所と IP アドレス範囲 ........................................................................... 7 CloudFront の請求および使用状況レポート ........................................................................................... 8 CloudFront 用の AWS 請求レポート .................................................................................................... 10 CloudFront 使用状況レポート ............................................................................................................... 11 CloudFront 使用状況グラフ .................................................................................................................. 12 AWS 請求書と CloudFront 使用状況レポートの説明 ........................................................................... 16 はじめに ................................................................................................................................................ 19 ディストリビューションの使用 ............................................................................................................ 28 ウェブディストリビューションと RTMP ディストリビューションの概要 ......................................... 29 ウェブディストリビューションと RTMP ディストリビューションの作成 ......................................... 30 CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う ............................... 31 ディストリビューションを削除する ..................................................................................................... 32 代替ドメイン名(CNAME)を使用する ............................................................................................... 33 CloudFront ディストリビューションの価格クラスを選択する ............................................................ 37 Amazon S3 での CloudFront の使用 ..................................................................................................... 38 CloudFront API の変更点 ...................................................................................................................... 39 ウェブディストリビューションの使用 ................................................................................................. 41 ウェブディストリビューションを作成するためのタスクリスト ......................................................... 42 CloudFront コンソールを使用したウェブディストリビューションの作成 .......................................... 43 ウェブディストリビューションのテスト ............................................................................................. 44 Amazon S3 オリジンおよびカスタムオリジンを使用したウェブディストリビューション ................ 44 ウェブディストリビューションを作成または更新する場合に指定する値 ........................................... 46 ウェブディストリビューションを作成または更新する場合に CloudFront がコンソールに表示する 値 ........................................................................................................................................................... 61 Amazon EC2 と他のカスタムオリジンの使用に関する要件および推奨事項 ....................................... 63 コンテンツの地理的ディストリビューションの制限 ........................................................................... 63 オンデマンドスムーズストリーミングの構成 ...................................................................................... 65 オンデマンドプログレッシブダウンロードの構成 ............................................................................... 66 オンデマンド Apple HTTP Live Streaming(HLS)の構成 .................................................................. 66 RTMP ディストリビューションの使用 ................................................................................................. 67 RTMP ディストリビューションの機能 ................................................................................................. 67 RTMP を使用するストリーミングメディアファイルのタスクリスト .................................................. 69 CloudFront コンソールを使用した RTMP ディストリビューションの作成 ......................................... 70 RTMP ディストリビューションを作成または更新する場合に指定する値 .......................................... 71 RTMP ディストリビューションを作成または更新する場合に CloudFront がコンソールに表示す る値 ....................................................................................................................................................... 76 メディアプレーヤーを構成する ............................................................................................................ 77 RTMP ディストリビューションのオリジンとして Amazon S3 バケットを使用する ......................... 78 1 つのオリジンサーバーに対して複数の RTMP ディストリビューションを作成する ........................ 79 Crossdomain.xml を使用してアクセスを制限する ............................................................................... 79 RTMP ディストリビューションのエラーコード .................................................................................. 79 RTMP ディストリビューションをトラブルシューティングする ......................................................... 79 オブジェクトの使用 .............................................................................................................................. 81 CloudFront オブジェクトの URL の形式 .............................................................................................. 81 CloudFront が HTTP および HTTPS リクエストを処理する方法 ........................................................ 84 CloudFront がクエリ文字列パラメータの転送、キャッシュ、およびログ作成を行う方法 ................. 84 CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う方法 ........................................... 86 ディストリビューション内のオブジェクトの追加、削除、または置換 .............................................. 88 CloudFront ディストリビューションへのオブジェクトの追加 ................................................... 88 バージョン付きのオブジェクト名を使用した既存オブジェクトの更新 ..................................... 89 同じオブジェクト名を使用した既存オブジェクトの更新 ........................................................... 89 CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切れ) ........... 90 オブジェクトの無効化(ウェブディストリビューションのみ) ................................................ 94 エラーレスポンスのカスタマイズ ........................................................................................................ 99 CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 ............................ 103 デフォルトルートオブジェクトの指定(ウェブディストリビューションのみ) .............................. 104 API Version 2014-01-31 3 Amazon CloudFront 開発者ガイド 圧縮ファイルの供給 ............................................................................................................................ 107 リクエストとレスポンスの動作 .......................................................................................................... 110 Amazon S3 オリジンにおけるリクエストとレスポンスの動作 ......................................................... 110 カスタムオリジンの場合のリクエストとレスポンスの動作 .............................................................. 116 CloudFront が HTTP 4xx および 5xx ステータスコードを処理およびキャッシュする方法 .............. 123 CloudFront を使用してプライベートコンテンツを供給する .............................................................. 126 タスクリスト: プライベートコンテンツを供給する ........................................................................... 130 オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限す る ......................................................................................................................................................... 131 署名付き URL (信頼された署名者)の作成が可能な AWS アカウントの指定 ................................ 137 署名付き URL の概要 .......................................................................................................................... 143 既定ポリシーを使用して署名付き URL を作成する ........................................................................... 147 カスタムポリシーを使用して署名付き URL を作成する .................................................................... 153 Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う ..................... 161 署名付き URL の署名を作成するためのコードおよび例 .................................................................... 163 Perl を使用して URL 署名を作成する ....................................................................................... 163 PHP を使用して URL 署名を作成する ...................................................................................... 165 C# と .NET Framework を使用して URL 署名を作成する ........................................................ 167 Java を使用して URL 署名を作成する ...................................................................................... 175 HTTPS 接続を使用したオブジェクトへのアクセス ........................................................................... 178 IAM を使用して CloudFront リソースへのアクセスをコントロールする .......................................... 189 アクセスログ ....................................................................................................................................... 194 トラブルシューティング ..................................................................................................................... 204 CloudFront の負荷テスト .................................................................................................................... 207 CloudFront チュートリアル ................................................................................................................ 208 CloudFront および Adobe Media Server 5.0 を使用したライブ HTTP ストリーミング .................... 209 概要 ............................................................................................................................................ 209 ライブストリーミングの構成ステップ ...................................................................................... 210 Amazon Web Services アカウントを作成する ......................................................................... 211 Amazon EC2 キーペアを作成する ............................................................................................ 211 Adobe Media Server をサブスクライブする ............................................................................. 212 ライブストリーミング用の AWS CloudFormation スタックを作成する .................................. 213 Adobe Media Server が実行されていることを確認する ........................................................... 214 ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップす る ............................................................................................................................................... 215 ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Flash Media Playback を埋め込む ................................................................................................................. 219 ライブストリーミング用の AWS CloudFormation スタックを削除する .................................. 221 よくある質問 ............................................................................................................................. 222 その他のドキュメント ............................................................................................................... 229 Amazon CloudFront と IIS Media Services 4.1 を使用したライブスムーズストリーミング ............. 230 アマゾン ウェブ サービスを使用したライブスムーズストリーミングの概要 .......................... 230 アマゾン ウェブ サービスアカウントの作成 ............................................................................ 231 Amazon EC2 キーペアを作成する ............................................................................................ 232 ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する .................... 233 Amazon EC2 Windows Server インスタンスの実行確認 .......................................................... 236 Windows パスワードの取得 ...................................................................................................... 237 ライブストリームの暗号化 ........................................................................................................ 238 ライブスムーズストリームの表示 ............................................................................................. 242 AWS CloudFormation のライブスムーズストリーミングスタックの削除 ................................ 243 よくある質問 ............................................................................................................................. 243 その他のドキュメント ............................................................................................................... 245 Wowza Streaming Engine 4.0 によるライブストリーミング ............................................................. 247 アマゾン ウェブ サービスアカウントの作成 ............................................................................ 247 Amazon EC2 キーペアを作成する ............................................................................................ 248 Wowza Streaming Engine 4.0 のライセンスを取得する ........................................................... 248 AWS Marketplace で Wowza Streaming Engine 4.0 をサブスクライブする ............................ 249 ライブストリーミング用の AWS CloudFormation スタックを作成する .................................. 249 API Version 2014-01-31 4 Amazon CloudFront 開発者ガイド Wowza Streaming Engine 4.0 が実行されていることを確認する ............................................ 251 ライブストリームを公開するエンコーダーをセットアップする .............................................. 252 ウェブアプリケーションを使用してライブストリームを再生する .......................................... 253 ライブストリーミング用の AWS CloudFormation スタックを削除する .................................. 254 よくある質問 ............................................................................................................................. 255 その他のドキュメント ............................................................................................................... 256 CloudFront ディストリビューション内のファイルへのアクセスを地理的場所に基づいて制限する (地理的ブロッキング) ..................................................................................................................... 258 アマゾン ウェブ サービスアカウントの作成 ............................................................................ 260 Digital Element 用のサンプルコード ......................................................................................... 260 Digital Element 用の Java サンプルコード ...................................................................... 261 Digital Element 用の .NET サンプルコード ...................................................................... 265 Digital Element 用の PHP サンプルコード ...................................................................... 268 MaxMind 用のサンプルコード ................................................................................................... 271 MaxMind 用の Java サンプルコード ................................................................................ 271 MaxMind 用の PHP サンプルコード ................................................................................ 275 MaxMind 用の .NET サンプルコード ............................................................................... 278 よくある質問 ............................................................................................................................. 281 その他のサービスおよびドキュメント ...................................................................................... 282 CloudFront および Adobe Flash Player を使用したオンデマンドビデオストリーミング ................. 284 CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミン グ ......................................................................................................................................................... 289 CloudFront および JW Player を使用したオンデマンドビデオストリーミング ................................ 294 リソース .............................................................................................................................................. 299 ドキュメント履歴 ............................................................................................................................... 303 AWS Glossary ..................................................................................................................................... 311 API Version 2014-01-31 5 Amazon CloudFront 開発者ガイド Amazon CloudFront の概要 Abstract Amazon CloudFront ウェブサービスを使用して静的および動的なウェブコンテンツをエンドユーザーに高速に配信 します。 Topics • CloudFront がコンテンツを配信する方法 (p. 4) • CloudFront エッジサーバーの場所と IP アドレス範囲 (p. 7) CloudFront は、静的および動的なウェブコンテンツ(.html、.css、.php、イメージファイルなど)をエ ンドユーザーに高速に配信するウェブサービスです。CloudFront は、エッジロケーションというデー タセンターの世界的ネットワークを経由してコンテンツを配信します。CloudFront を使用して提供さ れているコンテンツをユーザーがリクエストすると、そのユーザーはエッジロケーションにルーティン グされます。エッジロケーションでは最も低いレイテンシー(遅延時間)が提供されるので、コンテン ツは可能な最高のパフォーマンスで配信されます。コンテンツがエッジロケーション内に最も低いレイ テンシーですでに存在している場合、CloudFront はそのコンテンツを即時に配信します。コンテンツ がこのエッジロケーションに現在存在しない場合、CloudFront は、コンテンツの最終バージョンのソー スとして識別されている Amazon S3 バケットまたは HTTP サーバー(ウェブサーバーなど)からコン テンツを取り込みます。 分かりやすく例を挙げて説明しましょう。次のイメージが CloudFront からではなく従来のウェブサー バーから提供されていると仮定します。 API Version 2014-01-31 1 Amazon CloudFront 開発者ガイド (このイメージは、NASA の所有物であり、Visible Earth ウェブサイト http://visibleearth.nasa.gov/ か ら取得されたものです)。 このイメージは、URL http://example.com/globe_west_540.jpg を使用して提供されています。 ユーザーは簡単にこの URL にアクセスしてイメージを表示できます。ただし、イメージが見つかるま でリクエストがネットワークから別のネットワークに(インターネットを構成する相互接続ネットワー クの複雑な集合経由で)ルーティングされたということを、おそらくユーザーは認識しません。 さらに、イメージを提供しているウェブサーバーが米国ワシントン州のシアトルに存在し、米国テキサ ス州のオースチンにいるユーザーがそのイメージをリクエストしたと仮定します。以下のトレースリス ト(www.WatchMouse.com の許可により転載)は、このリクエストがルーティングされる可能性があ る 1 つの経路を示しています。 API Version 2014-01-31 2 Amazon CloudFront 開発者ガイド この例では、イメージが取り込まれるまで、リクエストが米国内を 10 回ルーティングされています。 これは異常に多いホップ数ではありません。ユーザーがヨーロッパにいる場合、リクエストはさらに多 くのネットワークを経由してシアトルのサーバーに到達します。リクエストとイメージが移動する必要 があるネットワークの数と距離は、イメージのパフォーマンス、信頼性、および可用性に多大な影響を 与えます。 CloudFront は、コンテンツを最良の方法で供給できるエッジロケーションに各ユーザーリクエストを ルーティングすることによって、お客様のコンテンツの配信速度を向上させます。通常は、最も低いレ イテンシーを提供する CloudFront エッジロケーションが使われます。これにより、ユーザーのリクエ ストが通過しなければならないネットワークの数が大幅に減少するので、パフォーマンスが向上しま す。ユーザーが経験するレイテンシー(オブジェクトの最初のバイトがロードされるまでの時間)が低 くなり、データ転送速度が高くなります。お客様のオブジェクトのコピーが世界中の複数のエッジロ ケーションに保持されるので、信頼性と可用性の向上も得られます。 API Version 2014-01-31 3 Amazon CloudFront 開発者ガイド CloudFront がコンテンツを配信する方法 CloudFront エッジサーバーの場所の一覧については、CloudFront 製品の詳細情報ページの「Amazon CloudFront グローバルエッジネットワーク」を参照してください。 CloudFront がコンテンツを配信する方法 Abstract CloudFront を構成してコンテンツを高速に配信する方法について説明します。 初期セットアップを行った後、CloudFront はバックグラウンドで動作して、お客様のコンテンツの配 信を高速化します。この概要には、最初のユーザーがお客様のアプリケーションまたはウェブサイトに アクセスする前にお客様が実行する手順と、構成完了後に &CF; がお客様のコンテンツを提供する方 法についての説明の両方が含まれています。 CloudFront のセットアップでは、いくつかの簡単な手順を行います。 コンテンツを配信するように CloudFront を構成する方法 1. お客様はオリジンサーバーを構成します。CloudFront は、このサーバーからファイルを取得し、 世界中の CloudFront エッジロケーションでファイルのディストリビューションを行います。 オリジンサーバーには、お客様のオブジェクトのオリジナルの最終バージョンが保存されます。コ ンテンツを HTTP 経由で提供する場合、オリジンサーバーは Amazon S3 バケットまたは HTTP サーバー(ウェブサーバーなど)になります。HTTP サーバーは、Amazon Elastic Compute Cloud (Amazon EC2)インスタンス、またはお客様が管理するサーバーで実行できます。これらのサー バーはカスタムオリジンとも呼ばれます。 2. 3. 4. 5. Adobe Media Server RTMP プロトコルを使用してオンデマンドでメディアファイルを配信してい る場合、オリジンサーバーは必ず Amazon S3 バケットになります。 ファイルをオリジンサーバーにアップロードします。通常、お客様のファイル(オブジェクトとも 呼ぶ)にはウェブページ、イメージ、メディアファイルなどがありますが、HTTP またはサポート されているバージョンの Adobe RTMP(Adobe Flash Media Server で使用されるプロトコル)経 由で供給できるすべてのものをオブジェクトとして使用できます。 Amazon S3 バケットをオリジンサーバーとして使用している場合、バケット内のオブジェクトを 読み取り可能にして公開することで、オブジェクトの CloudFront URL を知っているユーザーなら だれでもオブジェクトにアクセスできるようにすることができます。オブジェクトを非公開にし て、オブジェクトにアクセスするユーザーを制限することもできます。「CloudFront を使用して プライベートコンテンツを供給する (p. 126)」を参照してください。 CloudFront ディストリビューションを作成します。このディストリビューションは、ユーザーが ウェブサイトまたはアプリケーションを通じてファイルをリクエストしたときに、どのオリジン サーバーからファイルを取得するかを CloudFront に指示します。同時に、詳細も指定します。例 えば、CloudFront ですべてのリクエストをログに記録するかどうかや、ディストリビューション を作成した直後にディストリビューションを有効にするかどうかなどです。 CloudFront はディストリビューションの構成を関係するすべてのエッジロケーション(CloudFront がオブジェクトのコピーをキャッシュするために使用する、地理的に分散して配置されたデータセ ンター内のサーバー群)に送信します。ただし、ディストリビューションのコンテンツは送信され ません。 ウェブサイトやアプリケーションを開発するときには、CloudFront がお客様の URL に提供するド メイン名を使用します。例えば、CloudFront がディストリビューションのドメイン名として d111111abcdef8.cloudfront.net を返した場合、Amazon S3 バケット内(または HTTP サー バーのルートディレクトリ内)の logo.jpg の URL は http://d111111abcdef8.cloudfront.net/logo.jpg になります。 また、独自のドメイン名を使用できるように、CloudFront ディストリビューションを構成するこ ともできます。この場合、URL は http://www.example.com/logo.jpg のようになります。 API Version 2014-01-31 4 Amazon CloudFront 開発者ガイド CloudFront がコンテンツを配信する方法 6. オプションで、ファイルにヘッダーを追加するようにオリジンサーバーを構成することもできま す。このヘッダーは、ファイルが CloudFront エッジロケーションのキャッシュに保持される期間 を示します。デフォルトでは、各オブジェクトはエッジロケーションに 24 時間保持された後に有 効期限切れになります。最小の有効期限切れ時間は 0 秒です。有効期限切れ時間の上限はありませ ん。詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有 効期限切れ) (p. 90)」を参照してください。 CloudFront がコンテンツをユーザーに配信する方法 CloudFront でコンテンツ配信の構成が完了すると、ユーザーがオブジェクトをリクエストしたときに 次の処理が行われます。 1. ユーザーがウェブサイトまたはアプリケーションにアクセスして、イメージファイルや HTML ファ イルなどの 1 つまたは複数のオブジェクトをリクエストします。 2. DNS は、ユーザーのリクエストを最良の方法でそのリクエストに対応できる CloudFront エッジロ ケーション(通常はレイテンシーの点から最寄りの CloudFront エッジロケーション)にルーティ ングします。 3. そのエッジロケーションで、CloudFront は要求されたファイルがキャッシュにあるかどうかを チェックします。ファイルがキャッシュにある場合、CloudFront はファイルをユーザーに返しま す。ファイルがキャッシュにない場合は、次のように処理します。 a. CloudFront は、ディストリビューションに指定された内容とリクエストを照合し、ファイル のリクエストを、対応するファイルタイプに応じて該当のオリジンサーバーに転送します。例 API Version 2014-01-31 5 Amazon CloudFront 開発者ガイド CloudFront がコンテンツを配信する方法 b. c. 4. えば、イメージファイルの場合は Amazon S3 バケット、HTML ファイルの場合は HTTP サー バーです。 オリジンサーバーは、CloudFront エッジロケーションにファイルを返します。 オリジンから最初のバイトが到着した直後に、CloudFront はユーザーへのファイルの転送を 開始します。また、CloudFront はキャッシュにファイルを追加し、次にこのファイルがリク エストされた場合に備えます。 オブジェクトが 24 時間またはファイルヘッダーに指定された期間にわたってエッジキャッシュに 保持された後、CloudFront は次の処理を行います。 a. 次に同じオブジェクトのリクエストが出されると、CloudFront はそのリクエストをオリジン に転送して、エッジロケーションにあるオブジェクトのバージョンが最新かどうかを判別しま す。 b. エッジロケーション内のバージョンが最新の場合、CloudFront はそのオブジェクトをユーザー に配信します。 エッジロケーション内のバージョンが最新でない場合、オリジンは最新のバージョンを CloudFront に送信します。&CF; はそのオブジェクトをユーザーに配信し、最新バージョンを エッジロケーションのキャッシュに保存します。 API Version 2014-01-31 6 Amazon CloudFront 開発者ガイド CloudFront エッジサーバーの場所と IP アドレス範囲 CloudFront エッジサーバーの場所と IP アドレス範 囲 Abstract CloudFront エッジサーバーの場所と IP アドレス範囲の一覧です。 CloudFront エッジサーバーの場所の一覧については、Amazon CloudFront の詳細情報ページの「Amazon CloudFront グローバルエッジネットワーク」を参照してください。 CloudFront エッジサーバーの IP アドレス範囲の一覧については、Amazon CloudFront フォーラムの 「Amazon CloudFront のパブリック IP アドレス範囲」を参照してください。 API Version 2014-01-31 7 Amazon CloudFront 開発者ガイド CloudFront の請求および使用状況レ ポート Abstract Amazon CloudFront の請求書と利用状況に関する情報を取得します。 Amazon CloudFront は、お客様が前払い金を支払う必要がないように、またお客様がコンテンツの量 に義務を負う必要がないように設計されています。他の AWS サービスと同様に、使用時に使用したも のに対してのみ支払いを行います。 以下の図と表を使用して、CloudFront の使用料の概要を説明します。 API Version 2014-01-31 8 Amazon CloudFront 開発者ガイド AWS からの毎月の請求書では、AWS のサービスと機能ごとに使用量と金額が分けられています。この ため、Amazon S3 でのオブジェクトの保存に関する料金()(オリジンサーバーとして Amazon S3 を使用している場合)、バケットとエッジロケーション間のデータ転送に関する料金(2)、および CloudFront からのデータの提供に関する料金(3)が表示されます。 料金 コメント Amazon S3 オリジンサーバー 通常の Amazon S3 ストレージ料金を支払って、お客様のバケッ への保存 トにオブジェクトを保存します。料金は、AWS ステートメン トの Amazon S3 部分に表示されます。 エッジロケーションへのオブ ジェクトのコピー Amazon S3 オリジンサーバーを使用している場合、GET リク エストおよびデータ転送(アウト)に対して通常の Amazon S3 料金が発生します。CloudFront は、エッジロケーションでオブ ジェクトに対する需要がある場合にのみ、そのエッジロケー ションにそのオブジェクトをコピーします。 データ転送料金は、AWS ステートメントの AWS データ転送部 分に表示されます。 API Version 2014-01-31 9 Amazon CloudFront 開発者ガイド CloudFront 用の AWS 請求レポート 料金 コメント エッジロケーションからのオ ブジェクトの提供 リクエストおよびデータ転送(アウト)に対して、CloudFront 料金が発生します。この料金は、対応する Amazon S3 料金よ りも低いものです。CloudFront 料金は、AWS ステートメント の CloudFront 部分に表示されます。詳細については、「Amazon CloudFront 料金表」を参照してください。 オリジンへのデータの送信 ユーザーがデータをオリジンに転送すると、CloudFront 料金が 発生します。転送データには DELETE、OPTIONS、PATCH、 POST、PUT リクエストが含まれます。CloudFront 料金は、AWS ステートメントの CloudFront 部分に表示されます。詳細につ いては、「Amazon CloudFront 料金表」を参照してください。 Note HTTPS リクエストに対する追加料金も発生します。詳細については、「Amazon CloudFront 料金表」を参照してください。 AWS には、CloudFront の使用状況レポートが 2 種類、用意されています。 • 請求レポートは、CloudFront も含めて使用している AWS サービスのアクティビティすべてを高レベ ルで把握します。詳細については、「CloudFront 用の AWS 請求レポート (p. 10)」を参照してくだ さい。 • 使用状況レポートは、特定のサービスのアクティビティの概要を時間、日、または月単位で集約して 示します。詳細については、「CloudFront 使用状況レポート (p. 11)」を参照してください。 さらに、CloudFront の使用状況をグラフィカルに表現する使用状況グラフも表示できます。詳細につ いては、「CloudFront 使用状況グラフ (p. 12)」を参照してください。 CloudFront 用の AWS 請求レポート Abstract CloudFront 用の AWS 請求レポートの内容と、レポートの作成方法について説明します。 AWS Management Console の請求ページで、AWS の使用状況と料金の概要をサービス別に表示でき ます。 また、レポートの詳細版を CSV 形式でダウンロードすることもできます。詳細請求レポートには、 CloudFront に該当する次の値が記載されています。 • ProductCode — AmazonCloudFront • UsageType — 以下の値のいずれかです。 • データ転送のタイプを識別するコード • Invalidations • SSL-Cert-Custom 詳細については、「AWS 請求書と CloudFront 使用状況レポートの説明 (p. 16)」を参照してくださ い。 • ItemDescription — UsageType の請求レートの説明。 • Usage Start Date/Usage End Date — 使用状況に該当する協定世界時(UTC)による日付。 API Version 2014-01-31 10 Amazon CloudFront 開発者ガイド CloudFront 使用状況レポート • Usage Quantity — 以下の値のいずれかです。 • 指定した期間のリクエストの数 • データ転送量(GB) • 無効にされたオブジェクトの数 • SSL 証明書を有効な CloudFront ディストリビューションに関連付けた月数を案分計算した合計 値。たとえば、ある証明書を有効なディストリビューションに 1 か月まるまる関連付け、別の証明 書を有効なディストリビューションに半月だけ関連付けた場合、この値は 1.5 になります。 請求情報の概要を表示し、詳細請求レポートをダウンロードするには 1. 2. 3. 4. 5. AWS Management Console(https://console.aws.amazon.com/console/home)にサインインしま す。 タイトルバーで、自分の IAM ユーザー名をクリックし、[Billing & Cost Management] をクリック します。 ナビゲーションペインで、[Bills] をクリックします。 CloudFront の概要情報を表示するには、[Details] の [CloudFront] をクリックします。 詳細請求レポートを CSV 形式でダウンロードするには、[Download CSV] をクリックし、画面の 指示に従ってレポートを保存します。 CloudFront 使用状況レポート Abstract CloudFront 用の AWS 使用状況レポートの内容と、レポートの作成方法について説明します。 AWS には、CloudFront 使用状況レポートが用意されています。これは請求レポートよりは詳細です が、CloudFront アクセスログほど詳細ではありません。使用状況レポートには、使用状況データが時 間、日、または月単位で集計され、リージョンと使用タイプ別に操作が一覧で示されます(たとえば、 オーストラリアリージョンからデータが転送されたなど)。 CloudFront 使用状況レポートには次の値が含まれています。 • Service — AmazonCloudFront • Operation — HTTP メソッド。値には、DELETE、GET、OPTIONS、HEAD、PATCH、POST、PUT があ ります。 • UsageType — 以下の値のいずれかです。 • データ転送のタイプを識別するコード • Invalidations • SSL-Cert-Custom 詳細については、「AWS 請求書と CloudFront 使用状況レポートの説明 (p. 16)」を参照してくださ い。 • Resource — 使用状況に関連付けられた CloudFront ディストリビューションの ID、または、CloudFront ディストリビューションに関連付けた SSL 証明書の証明書 ID。 • StartTime/EndTime — 使用状況に該当する協定世界時(UTC)による日付。 • UsageValue — (1)指定した期間のリクエストの数、または(2)転送データ量(バイト)。 Amazon S3 を CloudFront のオリジンとして使用している場合は、Amazon S3 の使用状況レポートも 作成することを検討してください。ただし、CloudFront ディストリビューションのオリジンとして以 外の目的でも Amazon S3 を使用している場合は、どの部分が CloudFront で使用されたのか明確にな らない可能性があります。 API Version 2014-01-31 11 Amazon CloudFront 開発者ガイド CloudFront 使用状況グラフ Tip お客様のディストリビューションの CloudFront アクセスログをオンにすることで、お客様の オブジェクトについて CloudFront が受信するすべてのリクエストに関する詳細な情報を取得 することができます。詳細については、「アクセスログ (p. 194)」を参照してください。 CloudFront または Amazon S3 の使用状況レポートをダウンロードするには 1. AWS Management Console(https://console.aws.amazon.com/console/home)にサインインしま す。 2. タイトルバーで、自分の IAM ユーザー名をクリックし、[Billing & Cost Management] をクリック します。 3. 4. ナビゲーションペインで、[Reports] をクリックします。 [AWS Usage Report] で、[AWS Usage Report] をクリックします。 5. 6. [Service] リストで、[CloudFront] または [Amazon Simple Storage Service] をクリックします。 該当する設定を選択します。 • [Usage Types] — CloudFront の使用タイプの詳細な説明については、「the section called “AWS 請求書と CloudFront 使用状況レポートの説明” (p. 16)」を参照してください。 Amazon S3 の場合は、[All Usage Types] を選択します。 • [Operation] — [All Operations] を選択します。 • [Time Period] — レポートの対象とする期間を選択します。 • [Report Granularity] — 時間、日、月単位の小計をレポートに含めるかどうかを選択します。 7. 8. 目的の形式のダウンロードボタンをクリックします。 画面に表示される指示に従って、レポートを表示または保存します。 CloudFront 使用状況グラフ Amazon CloudFront コンソールは、使用状況レポートデータのサブセットに基づいて CloudFront の使 用状況をグラフィカルに表示できます。毎時間または毎日のデータポイントを使用して、過去 60 日間 の指定した日付範囲のグラフを表示できます。 詳細については、「使用状況グラフと CloudFront 使用状況レポートのデータとの関連 (p. 14)」を参照 してください。 CloudFront 使用状況グラフを表示するには 1. 2. 3. AWS Management Console(https://console.aws.amazon.com/console/home)にサインインしま す。 [Navigation] ペインで、[Reports & Analytics] をクリックします。 [Reports and Analytics] ペインで、[From] と [To] を使って、使用状況グラフを表示する日付範囲を 選択します。使用できる範囲は、[Granularity] で選択した値によって決まります。 • [Daily] — 1 日につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日の日付 範囲を選択します。 • [Hourly] — 1 時間につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日以 内の最大 14 日間の日付範囲を選択します。 日時は協定世界時(UTC)に基づいて計算されます。 API Version 2014-01-31 12 Amazon CloudFront 開発者ガイド CloudFront 使用状況グラフ 4. 5. 6. [Granularity] では、グラフに 1 日につき 1 つのデータポイントを表示するか、1 時間につき 1 つの データポイントを表示するかを指定します。14 日を超える日付範囲を指定した場合、1 時間につ き 1 つのデータポイントを指定することはできなくなります。 [Region] では、表示するデータを持つ CloudFront 請求リージョンを選択するか、[All Regions] を 選択します。使用状況グラフは、指定したリージョンのエッジロケーションで CloudFront が処理 するリクエストのデータを含みます。CloudFront がリクエストを処理するリージョンは、ユーザー の場所に対応していることも、していないこともあります。 ディストリビューションの価格クラスに含まれるリージョンのみを選択してください。それ以外の 場合、おそらく使用状況グラフにはデータが含まれません。たとえば、ディストリビューションで 価格クラス 200 を選択した場合、南米およびオーストラリアの請求リージョンは含まれません。 そのため、CloudFront は一般にこれらのリージョンからのリクエストを処理しません。価格クラ スの詳細については、「CloudFront ディストリビューションの価格クラスを選択する (p. 37)」を 参照してください。 [Distribution] リストでは、使用状況グラフにデータを表示するディストリビューションを選択しま す。 • 個々のウェブディストリビューション — 選択した CloudFront ディストリビューションのデータ がグラフに表示されます。[Distribution] リストには、ディストリビューションのディストリビュー ション ID と代替ドメイン名(CNAME)が表示されます(ある場合)。ディストリビューショ ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含 まれます。 • [All Web Distributions (excludes deleted)] — 現在の AWS アカウントに関連付けられているすべ てのウェブディストリビューションのデータが集計されてグラフに表示されます。ただし、削除 したウェブディストリビューションは除外されます。 • [All Deleted Distributions] — 現在の AWS アカウントに関連付けられていて過去 60 日間に削除 されたすべてのウェブおよび RTMP ディストリビューションのデータが集計されてグラフに表 示されます。 7. 8. [Update Graphs] をクリックします。 グラフ内の毎日または毎時間のデータポイントのデータを表示するには、データポイントの上にマ ウスポインタを移動します。 API Version 2014-01-31 13 Amazon CloudFront 開発者ガイド 使用状況グラフと CloudFront 使用状況レポートのデータと の関連 9. 転送データを示すグラフの場合、各グラフの Y 軸の単位をギガバイト、メガバイト、キロバイト のいずれかに変更できることに注意してください。 使用状況グラフと CloudFront 使用状況レポートの データとの関連 使用状況グラフと CloudFront 使用状況レポートの値との対応関係を以下に示します。 グラフ名 CloudFront 使用状況レポートの「Usage Type」列の値 Number of HTTP Requests • region-Requests-HTTP-Static: TTL ≥ 3600 秒のオブジェ クトのために供給された HTTP GET および HEAD リクエ ストの数 • region-Requests-HTTP-Dynamic: TTL < 3600 秒のオブ ジェクトのために供給された HTTP GET および HEAD リ クエストの数 • region-Requests-HTTP-Proxy: CloudFront がお客様のオ リジンに転送した HTTP DELETE、OPTIONS、PATCH、 POST、PUT リクエストの数 API Version 2014-01-31 14 Amazon CloudFront 開発者ガイド 使用状況グラフと CloudFront 使用状況レポートのデータと の関連 グラフ名 CloudFront 使用状況レポートの「Usage Type」列の値 Number of HTTPS Requests • region-Requests-HTTPS-Static: TTL ≥ 3600 秒のオブジェ クトのために供給された HTTPS GET および HEAD リクエ ストの数 • region-Requests-HTTPS-Dynamic: TTL < 3600 秒のオブ ジェクトのために供給された HTTPS GET および HEAD リ クエストの数 • region-Requests-HTTPS-Proxy: CloudFront がお客様の オリジンに転送した HTTPS DELETE、OPTIONS、PATCH、 POST、PUT リクエストの数 Data Transferred over HTTP • region-Out-Bytes-HTTP-Static: TTL >= 3600 秒のオブ ジェクトのために HTTP 経由で供給されたバイト数 • region-Out-Bytes-HTTP-Dynamic: TTL < 3600 秒のオブ ジェクトのために HTTP 経由で供給されたバイト数 • region-Out-Bytes-HTTP-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront からビューアに HTTP 経由で返されたバイト数 • region-Out-OBytes-HTTP-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTP 経由で転送さ れた合計バイト数 Data Transferred over HTTPS • region-Out-Bytes-HTTPS-Static: TTL >= 3600 秒のオブ ジェクトのために HTTPS 経由で供給されたバイト数 • region-Out-Bytes-HTTPS-Dynamic: TTL < 3600 秒のオ ブジェクトのために HTTPS 経由で供給されたバイト数 • region-Out-Bytes-HTTPS-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront からビューアに HTTPS 経由で返されたバイト数 • region-Out-OBytes-HTTPS-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTPS 経由で転送さ れた合計バイト数 API Version 2014-01-31 15 Amazon CloudFront 開発者ガイド AWS 請求書と CloudFront 使用状況レポートの説明 グラフ名 CloudFront 使用状況レポートの「Usage Type」列の値 Data Transferred from CloudFront Edge • region-Out-Bytes-HTTP-Static: TTL >= 3600 秒のオブ Locations to Your Users ジェクトのために HTTP 経由で供給されたバイト数 • region-Out-Bytes-HTTPS-Static: TTL >= 3600 秒のオブ ジェクトのために HTTPS 経由で供給されたバイト数 • region-Out-Bytes-HTTP-Dynamic: TTL < 3600 秒のオブ ジェクトのために HTTP 経由で供給されたバイト数 • region-Out-Bytes-HTTPS-Dynamic: TTL < 3600 秒のオ ブジェクトのために HTTPS 経由で供給されたバイト数 • region-Out-Bytes-HTTP-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront からビューアに HTTP 経由で返されたバイト数 • region-Out-Bytes-HTTPS-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront からビューアに HTTPS 経由で返されたバイト数 Data Transferred from CloudFront to Your Origin • region-Out-OBytes-HTTP-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTP 経由で転送さ れた合計バイト数 • region-Out-OBytes-HTTPS-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTPS 経由で転送さ れた合計バイト数 AWS 請求書と CloudFront 使用状況レポートの説 明 Abstract CloudFront サービスの AWS 請求書と使用状況レポートのコードおよび略語を定義します。 CloudFront サービスの AWS 請求書にはコードや略語が使われていますが、それらは一目見て分かるも のではないかもしれません。次の表の 1 列目には、請求書に記載される項目が一覧になっており、各項 目の内容が説明されています。 また、CloudFront の AWS 使用状況レポートも取得することができます。それには CloudFront の AWS 請求書よりも詳細な内容が記載されています。表の 2 列目には、使用状況レポートに記載される項目が 一覧になっており、請求書の項目と使用状況レポートの項目との相互関係が示されています。 2 つの列のコードには、たいてい、アクティビティの場所を示す 2 文字の略語が入っています。次の表 のコードの region は、AWS 請求書と使用状況レポートでは以下の 2 文字の略語に置き換えられま す。 • AP: 香港、フィリピン、韓国、シンガポール、台湾(アジアパシフィック) • AU: オーストラリア • EU: ヨーロッパ • IN: インド API Version 2014-01-31 16 Amazon CloudFront 開発者ガイド AWS 請求書と CloudFront 使用状況レポートの説明 • JP: 日本 • SA: 南米 • US: 米国 リージョン別料金表の詳細については、「Amazon CloudFront 料金表」を参照してください。 Note 次の表には、Amazon S3 バケットから CloudFront エッジロケーションへのオブジェクト転送 の料金は含まれていません。この料金が発生している場合、AWS 請求書の AWS Data Transfer の部分に料金が表記されます。 CloudFront 請求書の項目 CloudFront 使用状況レポートの「Usage Type」列の値 region-DataTransfer-Out-Bytes ウェブディストリビューション: CloudFront がウェブディストリビュー • region-Out-Bytes-HTTP-Static: TTL >= 3600 秒のオブ ションと RTMP ディストリビューショ ジェクトのために HTTP 経由で供給されたバイト数 ンに供給した合計バイト数。 • region-Out-Bytes-HTTPS-Static: TTL >= 3600 秒のオブ ジェクトのために HTTPS 経由で供給されたバイト数 • ウェブディストリビューション: ユー • region-Out-Bytes-HTTP-Dynamic: TTL < 3600 秒のオブ ザー GET と HEAD リクエストへのレ ジェクトのために HTTP 経由で供給されたバイト数 スポンスのために region の CloudFront エッジロケーションから • region-Out-Bytes-HTTPS-Dynamic: TTL < 3600 秒のオ ブジェクトのために HTTPS 経由で供給されたバイト数 供給された合計バイト数。 • region-Out-Bytes-HTTP-Proxy: DELETE、OPTIONS、 • RTMP ディストリビューション: PATCH、POST、PUT リクエストへの応答として CloudFront region の CloudFront エッジロケー からビューアに HTTP 経由で返されたバイト数 ションからエンドユーザーに転送さ れた合計バイト数。 • region-Out-Bytes-HTTPS-Proxy: DELETE、OPTIONS、 PATCH、POST、PUT リクエストへの応答として CloudFront からビューアに HTTPS 経由で返されたバイト数 RTMP ディストリビューション: • region-FMS-Out-Bytes region-DataTransfer-Out-OBytes region-Out-OBytes-HTTP-Proxy ウェブディストリビューションのみ: DELETE、OPTIONS、PATCH、POST、 PUT リクエストへのレスポンスのため に CloudFront エッジロケーションから オリジンに転送された合計バイト数 DELETE、OPTIONS、PATCH、POST、PUT リクエストへのレ スポンスのために CloudFront エッジロケーションからオリ ジンに HTTP 経由で転送された合計バイト数 region-Out-OBytes-HTTPS-Proxy DELETE、OPTIONS、PATCH、POST、PUT リクエストへのレ スポンスのために CloudFront エッジロケーションからオリ ジンに HTTPS 経由で転送された合計バイト数 API Version 2014-01-31 17 Amazon CloudFront 開発者ガイド AWS 請求書と CloudFront 使用状況レポートの説明 CloudFront 請求書の項目 CloudFront 使用状況レポートの「Usage Type」列の値 region-Requests-Tier1 region-Requests-HTTP-Static ウェブディストリビューションのみ: TTL ≥ 3600 秒のオブジェクトのために供給された HTTP GET HTTP GET および HEAD リクエストの数 および HEAD リクエストの数 region-Requests-HTTP-Dynamic TTL 3600 < 秒のオブジェクトのために供給された HTTP GET および HEAD リクエストの数 region-Requests-Tier2-HTTPS region-Requests-HTTPS-Static ウェブディストリビューションのみ: TTL ≥ 3600 秒のオブジェクトのために供給された HTTPS HTTPS GET および HEAD リクエストの GET および HEAD リクエストの数 数 region-Requests-HTTPS-Dynamic TTL < 3600 秒のオブジェクトのために供給された HTTPS GET および HEAD リクエストの数 region-Requests-HTTP-Proxy region-Requests-HTTP-Proxy ウェブディストリビューションのみ: CloudFront によってオリジンに転送さ れる HTTP DELETE、OPTIONS、 PATCH、POST、PUT リクエストの数 CloudFront 請求書の対応する項目と同じ region-Requests-HTTPS-Proxy region-Requests-HTTPS-Proxy ウェブディストリビューションのみ: CloudFront によってオリジンに転送さ れる HTTPS DELETE、OPTIONS、 PATCH、POST、PUT リクエストの数 CloudFront 請求書の対応する項目と同じ 無効化 無効化 ウェブディストリビューションのみ: オ CloudFront 請求書の対応する項目と同じ ブジェクトを無効化する(オブジェク トを CloudFront エッジロケーションか ら削除する)ための料金。詳細につい ては、「オブジェクトの無効化に対す る支払い (p. 99)」を参照してくださ い。 SSL-Cert-Custom SSL-Cert-Custom ウェブディストリビューションのみ: デ CloudFront 請求書の対応する項目と同じ フォルトの CloudFront SSL 証明書と CloudFront がお客様のディストリビュー ションに割り当てたドメイン名を使用 する代わりに、example.com などの CloudFront 代替ドメイン名を指定した SSL 証明書を使用する場合の料金 API Version 2014-01-31 18 Amazon CloudFront 開発者ガイド ステップ 1: アマゾン ウェブ サービスにサインアップする CloudFront の使用開始 Abstract CloudFront を使用してコンテンツの提供を開始する基本的な手順に従って作業を開始します。 このトピックの例には、CloudFront を使用し、次のことを行う方法の概要が記載されています。 • 1 つの Amazon Simple Storage Service(Amazon S3)バケットにオブジェクトの元のバージョンを 保存する。 • テキストやグラフィックなど、ダウンロードコンテンツを配信する。 • オブジェクトを全員にアクセス可能とする。 • オブジェクトの URL には、独自のドメイン名(http://www.example.com/image.jpg など)の 代わりに、CloudFront ドメイン名 (http://d111111abcdef8.cloudfront.net/image.jpg な ど)を使用する。 • オブジェクトを、デフォルト期間である 24 時間の間、CloudFront エッジロケーションに保管する。 (最低の期間は 0 秒)。 他のオプションを使用する場合の CloudFront の使用方法については、「ウェブディストリビューショ ンを作成するためのタスクリスト (p. 42)」または「RTMP を使用するストリーミングメディアファイ ルのタスクリスト (p. 69)」を参照してください。 いくつかの基本的なステップを実行するだけで、CloudFront を使用してコンテンツの送付を開始する ことができます。最初のステップは、サインアップです。その後、CloudFront ディストリビューショ ンを作成します。次に、CloudFront ドメイン名を使用してウェブページやアプリケーションのコンテ ンツを参照します。 ステップ 1: アマゾン ウェブ サービスにサインアッ プする まだアマゾン ウェブ サービスにサインアップしていない場合は、http://aws.amazon.com からサイン アップします。[今すぐ申し込む] をクリックし、必須事項を入力します。 API Version 2014-01-31 19 Amazon CloudFront 開発者ガイド ステップ 2: コンテンツを Amazon S3 にアップロードし、 オブジェクトに許可を付与する ステップ 2: コンテンツを Amazon S3 にアップロー ドし、オブジェクトに許可を付与する Amazon S3 バケットは、オブジェクトやフォルダを含めることができるコンテナです。 CloudFront は、ソースとして Amazon S3 バケットを使用して、たとえばテキストや画像、動画など、ほぼあらゆ る種類のオブジェクトを配信できます。 複数のバケットを作成できます。また、Amazon S3 で作成で きるデータの量には制限はありません。 デフォルトでは、Amazon S3 バケットと、バケット内のすべてのオブジェクトはプライベートです。 バケットを作成した AWS アカウントのみが、バケット内のオブジェクトの読み取りまたは書き込み許 可を有しています。 CloudFront の URL を使用して、全員に Amazon S3 バケット内のオブジェクトに アクセスを許可する場合、オブジェクトにパブリックの読み取り許可を許諾する必要があります。 (こ れが、&CF; および Amazon S3 を使用して作業を行う際の、最も一般的な誤りの 1 つです。 Amazon S3 バケットで、各オブジェクトに明示的に権限を許諾する必要があります。) Note コンテンツをダウンロードできるユーザーを制限したい場合は、CloudFront のプライベートコ ンテンツ機能を使用することができます。プライベートコンテンツの配信の詳細については、 「CloudFront を使用してプライベートコンテンツを供給する (p. 126)」を参照してください。 コンテンツを Amazon S3 にアップロードし、全員に読み取り許可を付与する 1. 2. 3. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/)を開きます。 Amazon S3 コンソールで、[Create Bucket] をクリックします。 [Create Bucket] ダイアログに、バケット名を入力します。 Important バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもので なければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」 の「バケットの制約と制限」を参照してください。 4. 5. 6. バケットのリージョンを選択します。デフォルトでは、Amazon S3 は米国スタンダードリージョ ンにバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規制 要件に対応するために、最寄りのリージョンを選択してください。 [Create] をクリックします。 [Buckets] ペインでバケットを選択し、[Upload] をクリックします。 7. [Upload – Select Files] ページで、[Add Files] を選択し、アップロードするファイルを選択します。 API Version 2014-01-31 20 Amazon CloudFront 開発者ガイド ステップ 3: CloudFront ウェブディストリビューションを 作成する 8. Amazon S3 バケットにアップロードする各オブジェクトについて、パブリックの読み取り権限を 有効にします。 a. b. c. 9. [Set Details] をクリックします。 [Set Details] ページで、[Set Permissions] をクリックします。 [Set Permissions] ページで、[Make everything public] をクリックします。 [Start Upload] をクリックします。 アップロードが完了したら、その URL でこの項目をナビゲートすることができます。前の例のケー スでは、URL は次のようになります。 http://s3.amazonaws.com/example-myawsbucket/filename Amazon S3 の URL を使って、コンテンツへパブリックにアクセスできることを確認します。ただ し、これはコンテンツを実際に配信するときに使用する URL ではありません。 ステップ 3: CloudFront ウェブディストリビュー ションを作成する CloudFront ウェブディストリビューションを作成するには 1. Amazon CloudFront コンソール(https://console.aws.amazon.com/cloudfront/)を開きます。 2. 3. [Create Distribution] をクリックします。 [Create Distribution Wizard] の最初のページで、デフォルトの選択である [Web] をそのまま選択 し、[Continue] をクリックします。 API Version 2014-01-31 21 Amazon CloudFront 開発者ガイド ステップ 3: CloudFront ウェブディストリビューションを 作成する 4. 以前作成した Amazon S3 バケットを選択します。[Origin ID] および [Restrict Bucket Access] につ いては、デフォルト値をそのまま使用します。 5. [Default Cache Behavior Settings] の下で、デフォルト値をそのまま使用すると、CloudFront は次 のように動作します。 • ディストリビューションの CloudFront URL を使用するすべてのリクエスト(例: http://d111111abcdef8.cloudfront.net/image.jpg)を、ステップ 4 で指定し Amazon S3 バケットに転送します。 • エンドユーザーが HTTP または HTTPS を使用してオブジェクトにアクセスすることを許可しま す。 • オブジェクトに対するリクエストに応答します。 • CloudFront エッジロケーションでオブジェクトを 24 時間キャッシュします。 • オブジェクトのリクエストをオリジンに転送するときに、Cookie とクエリ文字列パラメータを 除外します(ある場合)。(Amazon S3 は Cookie の処理は行わず、一部のクエリ文字列パラ メータのみを処理します)。 • Microsoft スムーズストリーミング形式でメディアファイルを配信するようには構成されていま せん。 • 全員にコンテンツの閲覧を許可します。 キャッシュ動作オプションの詳細については、「キャッシュ動作の設定 (p. 51)」を参照してくだ さい。 API Version 2014-01-31 22 Amazon CloudFront 開発者ガイド ステップ 3: CloudFront ウェブディストリビューションを 作成する 6. [Distribution Details] の下に、適用される値を次のように入力します。 • Price Class: CloudFront サービスに支払う上限価格に対応する価格クラスを選択します。デフォ ルトでは、CloudFront は、すべての CloudFront リージョンのエッジロケーションからオブジェ クトを供給します。 価格クラスの詳細、および選択した価格クラスがディストリビューションの CloudFront パフォー マンスに与える影響の詳細については、「CloudFront ディストリビューションの価格クラスを 選択する (p. 37)」を参照してください。価格クラスと CloudFront リージョンのマッピングを含 め、CloudFront 料金表の詳細については、「Amazon CloudFront 料金表」を参照してください。 • [Alternate Domain Names (CNAMEs)]:(オプション)ディストリビューションを作成するときに CloudFront が割り当てるドメイン名ではなく、オブジェクトの URL に使用する 1 つ以上のドメ イン名を指定します。例えば、次のオブジェクトの URL があります。 /images/image.jpg この URL を次のように表示します。 API Version 2014-01-31 23 Amazon CloudFront 開発者ガイド ステップ 3: CloudFront ウェブディストリビューションを 作成する http://www.example.com/images/image.jpg 次のようには指定しません。 http://d111111abcdef8.cloudfront.net/images/image.jpg この場合、www.example.com の CNAME を作成します。ディストリビューション 1 個につき、 最大で 10 個の CNAME を作成できます。 Important www.example.com の CNAME をディストリビューションに追加する場合、DNS サー ビスを使用して CNAME レコードを作成(または更新)し、www.example.com のクエ リを d111111abcdef8.cloudfront.net にルーティングする必要もあります。ドメ インの DNS サービスプロバイダーのある CNAME レコードを作成する許可が必要です。 通常、これはドメインを所有していることを指しますが、ドメイン所有者向けにアプリ ケーションを開発している場合にも当てはまります。CNAME の詳細については、「代 替ドメイン名(CNAME)を使用する (p. 33)」を参照してください。 • [SSL Certificate]: デフォルト値である [Default CloudFront Certificate] をそのまま使用します。 • [Clients Supported]: [SSL Certificate] でデフォルト値を選択すると、この設定は使用できません。 • [Default Root Object]:(オプション)ビューアがディストリビューション内のオブジェクト (http://www.example.com/product-description.html)ではなくディストリビューショ ンのルート URL(http://www.example.com/)を要求したときに、CloudFront がオリジンに 要求するオブジェクト(index.html など)。デフォルトのルートオブジェクトを指定すると、 ディストリビューションのコンテンツが公開されなくなります。 • [Logging]:(オプション)オブジェクトの各リクエストについての情報のログを CloudFront が作 成し、ログファイルを &S3; バケットに保存する場合、[On] を選択し、バケットとログファイ ル名のオプションのプレフィックスを指定します。ログ作成を有効にしても追加料金はかかりま せんが、ファイルの保存とアクセスについて通常の Amazon S3 料金が発生します。 CloudFront ではログが自動的に削除されることはありませんが、いつでも手動で削除できます。 • Cookie Logging: この例では、オブジェクトのオリジンとして Amazon S3 を使用しており、 Amazon S3 は Cookie の処理を行わないため、[Cookie Logging] の値に [Off] を選択することを お勧めします。 • [Comment:]:(オプション)ディストリビューションとともに保存するコメントを入力します。 • Distribution State: ディストリビューションの作成直後に CloudFront でリクエストの処理を開始 する場合、[Enabled] を選択します。または、ディストリビューションの作成後に CloudFront で リクエストの処理を開始しない場合には、[Disabled] を選択します。 API Version 2014-01-31 24 Amazon CloudFront 開発者ガイド ステップ 3: CloudFront ウェブディストリビューションを 作成する 7. [Create Distribution] をクリックします。 API Version 2014-01-31 25 Amazon CloudFront 開発者ガイド ステップ 4: リンクをテストする 8. CloudFront がディストリビューションを作成した後、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。配信を有効にするよう選択すると、リクエストの 処理を行えるようになります。この所要時間は 15 分以内となります。 CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。(ドメイン名は、選択されたディストリビューションの [General] タブ にも表示されます)。 ステップ 4: リンクをテストする ディストリビューションの作成が終わると、CloudFront に Amazon S3 オリジンサーバーの場所が記憶 され、ドメイン名がディストリビューションに関連付けられます。そのドメイン名を使用して Amazon S3 バケットのコンテンツへのリンクを作成することができ、CloudFront によってそのコンテンツを供 給することができます。 Note リンクのテストを行う前に、ディストリビューションのステータスが [Deployed] に変わるまで 待つ必要があります。 オブジェクトにリンクするには 1. 次の HTML を新規ファイルにコピーします。 • <domain name>を、CloudFront がディストリビューションに割り当てたドメイン名で置換しま す。 • <object name>を、Amazon S3 バケットにあるファイル名で置換します。 <html> <head>My CloudFront Test</head> <body> <p>My text content goes here.</p> <p> <img src="http://<domain name>/<object name>" alt="my test image" /> </body> </html> 例えば、ドメイン名が d111111abcdef8.cloudfront.net で、オブジェクトが image.jpg の 場合、リンクの URL は次のようになります。 http://d111111abcdef8.cloudfront.net/image.jpg。 オブジェクトがバケット内のフォルダにある場合は、そのフォルダを URL に含めます。例えば、 image.jpg がイメージフォルダにある場合、URL は次のようになります。 http://d111111abcdef8.cloudfront.net/images/image.jpg 2. 3. テキストを、.html ファイル名拡張子のついたファイルに保存します。 ブラウザでウェブページを開いて、コンテンツが見られるかどうかを確認します。コンテンツが見 られない場合、すべてのステップが正しく実行されたことを確認します。「トラブルシューティン グ (p. 204)」にあるヒントも参照してください。 API Version 2014-01-31 26 Amazon CloudFront 開発者ガイド ステップ 4: リンクをテストする ブラウザに、イメージファイルが埋め込まれたページが表示されます。これは CloudFront がオブジェ クトを供給するのに適切と判断したエッジロケーションから供給されたものです。 CloudFront 使用の詳細については、「Amazon CloudFront リソース (p. 299)」を参照してください。 API Version 2014-01-31 27 Amazon CloudFront 開発者ガイド ディストリビューションの使用 Abstract CloudFront ディストリビューションを作成して、どこでファイルを取得し、誰がファイルにアクセスし、アクセス ログが必要かどうかを構成します。 Topics • ウェブディストリビューションと RTMP ディストリビューションの概要 (p. 29) • ウェブディストリビューションと RTMP ディストリビューションの作成 (p. 30) • CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 31) • ディストリビューションを削除する (p. 32) • 代替ドメイン名(CNAME)を使用する (p. 33) • CloudFront ディストリビューションの価格クラスを選択する (p. 37) • Amazon S3 での CloudFront の使用 (p. 38) • CloudFront API の変更点 (p. 39) ディストリビューションに対して実行可能なアクション、および CloudFront コンソールと CloudFront API を使用してそのアクションを実行する方法に関するドキュメントへのリンクを次の表に示します。 アクション CloudFront コンソール を使用 CloudFront API を使用: CloudFront API を使用: ウェブディストリビュー RTMP ディストリ ション ビューション ディストリビューション ウェブディストリビュー 「POST Distribution を作成する ション: 「ウェブディス 」を参照してください トリビューションを作成 するためのタスクリス ト (p. 42)」を参照して ください RTMP ディストリ ビューション: 「RTMP を使用するストリーミン グメディアファイルのタ スクリスト (p. 69)」を 参照してください API Version 2014-01-31 28 「POST Streaming Distribution 」を参照してください Amazon CloudFront 開発者ガイド ウェブディストリビューションと RTMP ディストリビュー ションの概要 アクション CloudFront コンソール を使用 CloudFront API を使用: CloudFront API を使用: ウェブディストリビュー RTMP ディストリ ション ビューション ディストリビューション 「CloudFront ディスト 「GET Distribution List のリストを表示する リビューションの一覧表 」を参照してください 示、詳細表示、および更 新を行う (p. 31) 」を参照してください 「GET Streaming Distribution List 」を参照してください。 ディストリビューション 「CloudFront ディスト 「GET Distribution に関するすべての情報を リビューションの一覧表 」を参照してください 取得する 示、詳細表示、および更 新を行う (p. 31) 」を参照してください 「GET Streaming Distribution 」を参照してください ディストリビューション 「CloudFront ディスト 「GET Distribution 構成を取得する リビューションの一覧表 Config 示、詳細表示、および更 」を参照してください 新を行う (p. 31) 」を参照してください 「GET Streaming Distribution Config 」を参照してください ディストリビューション 「CloudFront ディスト 「PUT Distribution を更新する リビューションの一覧表 Config 示、詳細表示、および更 」を参照してください 新を行う (p. 31) 」を参照してください 「PUT Streaming Distribution Config 」」を参照してください ディストリビューション 「ディストリビューショ 「DELETE Distribution を削除する ンを削除する (p. 32) 」を参照してください 」を参照してください 「DELETE Streaming Distribution 」を参照してください ウェブディストリビューションと RTMP ディスト リビューションの概要 Abstract CloudFront ディストリビューションを作成して、どこでファイルを取得し、誰がファイルにアクセスし、アクセス ログが必要かどうかを構成します。 CloudFront を使用してコンテンツを配信するときは、ディストリビューションを作成して、以下のよ うな構成設定を指定します。 • オリジン。これは CloudFront が配信するファイルを取得する Amazon S3 バケットまたは HTTP サー バーです。オリジンとして、最大で 10 個の Amazon S3 バケットと HTTP サーバーの任意の組み合 わせを指定できます。 • ファイルをすべてのユーザーが使用できるようにするか、または選択されたユーザーにアクセスを制 限するか。 • CloudFront でコンテンツへのアクセスに HTTPS を必須にするかどうか。 • CloudFront でオリジンに Cookie またはクエリ文字列を転送するかどうか。 • CloudFront で特定の国のユーザーをコンテンツにアクセスできなくするかどうか。 • CloudFront でアクセスログを作成するかどうか。 API Version 2014-01-31 29 Amazon CloudFront 開発者ガイド ウェブディストリビューション AWS アカウントごとに作成できるウェブディストリビューションと RTMP ディストリビューションの 数に関する現在の制限については、『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。制限の引き上げを要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 供給可能な、ディストリビューションごとのファイル数に制限はありません。 ウェブディストリビューション ウェブディストリビューションを使用して、HTTP または HTTPS 経由で以下のコンテンツを供給でき ます。 • HTTP または HTTPS を使用した静的および動的なダウンロードコンテンツ。たとえ ば、.html、.css、.php、イメージファイル。 • プログレッシブダウンロードと Apple HTTP Live Streaming(HLS)を使用したオンデマンドマルチ メディアコンテンツ。 詳細については、「ウェブディストリビューションの使用 (p. 41)」の該当す るトピックを参照してください。 HTTP または HTTPS を介して Adobe Flash マルチメディアコンテンツを供給することはできません が、CloudFront RTMP ディストリビューションを使用して供給することはできます。以下の「RTMP ディストリビューション (p. 30)」を参照してください。 • ライブイベント。リアルタイムのミーティング、会議、コンサートなど。ライブストリーミングの場 合は、AWS CloudFormation スタックを使用して自動的にディストリビューションを作成します。詳 細については、「CloudFront チュートリアル (p. 208)」の該当するライブストリーミングチュートリ アルを参照してください。 ウェブディストリビューションの場合、オリジンは、Amazon S3 バケットまたは HTTP サーバー(ウェ ブサーバーなど)です。ウェブディストリビューションを作成する際に指定する値を含め、ウェブディ ストリビューションが動作する仕組みの詳細については、「ウェブディストリビューションの使 用 (p. 41)」を参照してください。ウェブディストリビューションの作成については、「ウェブディス トリビューションを作成するためのタスクリスト (p. 42)」を参照してください。 RTMP ディストリビューション RTMP ディストリビューションは、Adobe Media Server と Adobe Real-Time Messaging Protocol (RTMP)を使用してメディアファイルをストリーミングします。RTMP ディストリビューションで は、Amazon S3 バケットをオリジンとして使用する必要があります。 RTMP ディストリビューションを作成する際に指定する値については、「RTMP ディストリビューショ ンの使用 (p. 67)」を参照してください。RTMP ディストリビューションの作成については、「RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 69)」を参照してください。 ウェブディストリビューションと RTMP ディスト リビューションの作成 Abstract CloudFront コンソールまたは CloudFront API を使用して、CloudFront のウェブディストリビューションと RTMP ディストリビューションを作成します。 ウェブディストリビューション: CloudFront コンソールを使用したウェブディストリビューションの作 成については、「ウェブディストリビューションを作成するためのタスクリスト (p. 42)」を参照して API Version 2014-01-31 30 Amazon CloudFront 開発者ガイド CloudFront ディストリビューションの一覧表示、詳細表 示、および更新を行う ください。CloudFront API を使用してウェブディストリビューションを作成する方法については、 『Amazon CloudFront API リファレンス』の「POST Distribution」を参照してください。 RTMP ディストリビューション: CloudFront コンソールを使用した RTMP ディストリビューションの 作成については、「RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 69)」を参 照してください。CloudFront API を使用して RTMP ディストリビューションを作成する方法について は、『Amazon CloudFront API リファレンス』の「POST Streaming Distribution」を参照してくださ い。 CloudFront ディストリビューションの一覧表示、 詳細表示、および更新を行う Abstract CloudFront コンソールを使用して、CloudFront ディストリビューションの一覧表示、詳細表示、更新を行います。 CloudFront コンソールを使用して、AWS アカウントに関連付けられた CloudFront ディストリビュー ションの一覧を表示したり、ディストリビューションの設定を表示したり、ほとんどの設定を更新した りできます。 ディストリビューション構成に対する変更を保存すると、CloudFront はすべてのエッジロケーション への変更の伝達を開始します。エッジロケーションで構成が更新されるまで、CloudFront は以前の構 成に基づいて、そのエッジロケーションからコンテンツを引き続き供給します。エッジロケーションで 構成が更新されると、CloudFront は新しい構成に基づいて、そのエッジロケーションからコンテンツ の供給を直ちに開始します。 変更がすべてのエッジロケーションに瞬時に伝達されるとは限りません。すべてのエッジロケーション への伝達に 15 分ほどかかる場合があります。伝達が完了すると、ディストリビューションのステータ スが [InProgress] から [Deployed] に変わります。エッジロケーションに変更が伝達されている間、特 定のエッジロケーションでコンテンツが以前の構成または新しい構成のどちらに基づいて供給されるか を判別することはできません。 CloudFront コンソールを使用して、CloudFront ディストリビューションの一覧表示、詳細表 示、および更新を行うには 1. 2. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 CloudFront コンソールの上部のペインで、表示または更新するディストリビューションを選択し ます。 Note 上部のペインには、CloudFront コンソールへのサインイン時に使用された AWS アカウン トに関連付けられたすべてのディストリビューションの一覧が表示されます。 3. RTMP ディストリビューションの設定を表示または編集するには、このステップをスキップしてス テップ 4 に進んでください。 ウェブディストリビューションの設定を表示または編集するには、以下のステップを実行します。 a. [Distribution Settings] ペインで、変更する設定のタブ([General]、[Origins]、または [Behaviors) をクリックします。 b. 全般設定については、[Edit] をクリックします。 API Version 2014-01-31 31 Amazon CloudFront 開発者ガイド ディストリビューションを削除する c. オリジンまたはキャッシュ動作については、オリジンまたはキャッシュ動作をクリックして、 [Edit] をクリックします。 該当する値を入力するか、更新します。フィールドの詳細については、以下の各トピックを参 照してください。 • 全般設定: ディストリビューションの詳細 (p. 56) • オリジンの設定: オリジンの設定 (p. 48) • キャッシュ動作の設定: キャッシュ動作の設定 (p. 51) d. 4. [Yes, Edit] をクリックします。 RTMP ディストリビューションの設定を編集または表示するには、以下のステップを実行します。 a. b. c. [Distribution Details] ペインで、[Edit] をクリックします。 該当する値を入力するか、更新します。各フィールドの詳細については、「RTMP ディストリ ビューションを作成または更新する場合に指定する値 (p. 71)」を参照してください。 [Yes, Edit] をクリックします。 ディストリビューションを削除する Abstract CloudFront コンソールを使用して、必要がなくなった CloudFront ディストリビューションを削除します。 ディストリビューションを使用する必要がなくなった場合は、CloudFront コンソールを使用して、以 下の手順に従ってディストリビューションを削除します。 以下の CloudFront API を使用してディストリビューションを削除することもできます。 • ウェブディストリビューションを削除するには、DELETE Distribution API アクションを使用し ます。詳細については、「Amazon CloudFront API リファレンス」の「DELETE Distribution」を参 照してください。 • RTMP ディストリビューションを削除するには、DELETE Streaming Distribution API アクショ ンを使用します。詳細については、「Amazon CloudFront API リファレンス」の「DELETE Streaming Distribution」を参照してください。 Note CloudFront では、AWS アカウントごとに、ウェブディストリビューションと RTMP ディスト リビューションを合わせて計 100 個作成できます。 CloudFront コンソールを使用して CloudFront ディストリビューションを削除するには 1. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 2. 3. CloudFront コンソールの右のペインで、削除するディストリビューションを見つけます。 [State] 列の値が [Disabled] の場合は、このステップをスキップしてステップ 7 に進みます。 [State] の値が [Enabled] であり、[Status] の値が [Deployed] の場合、ステップ 4 に進んでディスト リビューションを無効にしてから、ディストリビューションを削除します。 API Version 2014-01-31 32 Amazon CloudFront 開発者ガイド 代替ドメイン名(CNAME)を使用する 4. 5. [State] の値が [Enabled] であり、[Status] の値が [InProgress] の場合、[Status] が [Deployed] に変 わるまで待機します。次に、ステップ 4 に進んでディストリビューションを無効にしてから、ディ ストリビューションを削除します。 CloudFront コンソールの右のペインで、削除するディストリビューションのチェックボックスを オンにします。 [Disabled] をクリックしてディストリビューションを無効にして、[Yes, Disable] をクリックして 確定します。次に、[Close] をクリックします。 6. [State] 列の値が [Disabled] に直ちに変わります。[Status] 列の値が [Deployed] に変わるまで待機 します。 7. 8. 削除するディストリビューションのチェックボックスをオンにします。 [Delete] をクリックし、[Yes, Delete] をクリックして確定します。次に、[Close] をクリックしま す。 代替ドメイン名(CNAME)を使用する Abstract CloudFront に割り当てられたデフォルトの名前ではなく独自のドメイン名を使用する場合に、CNAME と呼ばれる 代替ドメイン名を使用する方法について説明します。 Topics • 代替ドメイン名に * ワイルドカードを使用する (p. 33) • 代替ドメイン名を使用する上での制限 (p. 34) • 代替ドメイン名の追加 (p. 34) CloudFront では、CNAME とも呼ばれる代替ドメイン名を使用すると、オブジェクトへのリンクに、 CloudFront によってディストリビューションに割り当てられたドメイン名ではなく、独自のドメイン 名(例: www.example.com)を使用できます。代替ドメイン名は、ウェブディストリビューションと RTMP ディストリビューションの両方でサポートされます。 ディストリビューションを作成すると、ディストリビューションのドメイン名が CloudFront から返さ れます。例えば、次のようなドメイン名です。 d111111abcdef8.cloudfront.net オブジェクトに CloudFront ドメイン名を使用した場合、/images/image.jpg というオブジェクトの URL は次のようになります。 http://d111111abcdef8.cloudfront.net/images/image.jpg オブジェクトの URL に、CloudFront によってディストリビューションに割り当てられた cloudfront.net ドメイン名ではなく、www.example.com などの独自のドメイン名を使用する場合、 www.example.com のディストリビューションに代替ドメイン名を追加できます。したがっ て、/images/image.jpg には次の URL を使用できます。 http://www.example.com/images/image.jpg 代替ドメイン名に * ワイルドカードを使用する 代替ドメイン名を追加するとき、サブドメインを個別に指定する代わりに、ドメイン名の最初に * ワイ ルドカードを使用できます。例えば、代替ドメイン名を *.example.com にしている場合は、 www.example.com、product-name.example.com、marketing.product-name.example.com な API Version 2014-01-31 33 Amazon CloudFront 開発者ガイド 代替ドメイン名を使用する上での制限 ど、末尾が example.com であればどんなドメイン名でもオブジェクト URL に使用できます。オブジェ クトの名前は、ドメイン名に関係なく同じです。例えば、次のようになります。 www.example.com/images/image.jpg product-name.example.com/images/image.jpg marketing.product-name.example.com/images/image.jpg 代替ドメイン名は、アスタリスクとドット( *. )で始まる必要があります。*domain.example.com のように、サブドメインの一部を置き換えるためにワイルドカードを使用することはできません。ま た、subdomain.*.example.com のように、ドメイン名の真ん中のサブドメインを置き換えることも できません。 ワイルドカード代替ドメイン名と別の代替ドメイン名が同じ CloudFront ディストリビューション内に ある限り、その両方が重複してもかまいません。例えば、www.example.com と *.example.com の 両方を代替ドメイン名として使用することはできますが、これらは同じディストリビューション内にあ る必要があります。 代替ドメイン名を使用する上での制限 代替ドメイン名の使用には、以下の制限があることに注意してください。 • ディストリビューションに追加できる代替ドメイン名の数に関する現在の制限については、『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。制限の引 き上げを要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 • ドメインの DNS サービスプロバイダーのある CNAME レコードを作成する許可が必要です。通常、 これはドメインを所有していることを指しますが、ドメイン所有者向けにアプリケーションを開発し ている場合にも当てはまります。 • 代替ドメイン名が別の CloudFront ディストリビューションにすでに存在する場合は、AWS アカウン トがその他のディストリビューションを所有していても、代替ドメイン名を CloudFront ディストリ ビューションに追加することはできません。 • DNS プロトコルでは、Zone Apex とも呼ばれる、DNS 名前空間の最上位ノードに対して CNAME レ コードを作成することができません。例えば、example.com という DNS 名を登録した場合、Zone Apex は example.com になります。example.com の CNAME レコードを作成することはできませ んが、www.example.com、newproduct.example.com などの CNAME レコードを作成すること はできます。 DNS サービスとして Route 53 を使用する場合、CNAME の代わりにエイリアスリソースレコード セットを作成できます。エイリアスリソースレコードセットを使用した場合、Route 53 クエリに対 する料金はかかりません。また、Zone Apex のドメイン名(example.com)に対してエイリアスリ ソースレコードセットを作成することもできます。詳細については、「Amazon Route 53 開発者ガ イド」の「Routing Queries to an Amazon CloudFront Distribution」を参照してください。 • 代替ドメイン名を含む HTTPS をビューアが使用するように構成する場合は、追加の構成が必要で す。詳細については、「代替ドメイン名と HTTPS の使用 (p. 181)」を参照してください。 代替ドメイン名の追加 以下のタスクリストでは、CloudFront コンソールを使用して代替ドメイン名をディストリビューショ ンに追加するプロセスを説明します。これにより、ディストリビューションに関連付けられた CloudFront ドメインの代わりに、独自のドメイン名をリンクの中で使用できます。 API Version 2014-01-31 34 Amazon CloudFront 開発者ガイド 代替ドメイン名の追加 Note ビューアで代替ドメイン名を含む HTTPS を使用する場合は、「代替ドメイン名と HTTPS の 使用 (p. 181)」を参照してください。 CloudFront API を使用したディストリビューションの更新について は、「ディストリビューションの 使用 (p. 28)」を参照してください。 CloudFront コンソールを使用して代替ドメイン名を追加するプロセス 1. 2. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 CloudFront コンソールで、以下の手順を使用して、ドメイン名を代替ドメイン名として [Alternate Domain Names (CNAMEs)] フィールドに含めるようにディストリビューションを更新します。 a. b. c. d. CloudFront コンソールの上部のペインで、更新するディストリビューションを選択し、 [Distribution Settings] をクリックします。 [General] タブで、[Edit] をクリックします。 該当の代替ドメイン名を [Alternate Domain Names (CNAMEs)] フィールドに追加します。ド メイン名をコンマで区切るか、新しい行にドメイン名を 1 つずつ設定します。 ウェブディストリビューションのみ: [SSL Certificate] で該当するオプションを選択します。 • SSL を使用しない場合: [Default CloudFront Certificate] をクリックします。 • SSL を使用する場合: [Custom SSL Certificate Stored in IAM] をクリックし、リストから証 明書を選択します。 必要な証明書がリストに表示されない場合、「HTTPS で代替ドメイン名を使用するに は (p. 184)」の手順を参照して、IAM 証明書ストアに証明書を正しくアップロードしたこと を確認します。 この設定を選択した場合、オブジェクト URL でのみ代替ドメイン名を使用することをお勧 めします(https://example.com/logo.jpg)。CloudFront のディストリビューションドメイン 名(https://d111111abcdef8.cloudfront.net/logo.jpg)を使用した場合、ビューアが SNI をサ ポートしていると、CloudFront は正常に動作します。しかし、ビューアが SNI をサポート していないと、[Clients Supported] の値に応じてビューアは次のいずれかの動作を示しま す。 • [All Clients]: ビューアが SNI をサポートしていない場合、CloudFront ドメイン名が SSL 証明書のドメイン名と一致しないため、警告が表示されます。 • [Only Clients that Support Server Name Indication (SNI)]: CloudFront はオブジェクトを返 さないでビューアとの接続を中断します。 e. ウェブディストリビューションのみ: [Clients Supported] で該当するオプションを選択します。 • [All Clients]: CloudFront が専用の IP アドレスを使用して HTTPS コンテンツを供給します。 このオプションを選択した場合、有効になっているディストリビューションに SSL 証明書 を関連付けると、追加料金がかかります。詳細については、 http://aws.amazon.com/cloudfront/pricing を参照してください。 • [Only Clients that Support Server Name Indication (SNI)]: 古いブラウザなど SNI をサポート しないクライアントは、別の方法を使用してコンテンツにアクセスする必要があります。 f. 詳細については、「CloudFront で HTTPS リクエストを供給する方法の選択 (p. 182)」を参照 してください。 [Yes, Edit] をクリックします。 API Version 2014-01-31 35 Amazon CloudFront 開発者ガイド 代替ドメイン名の追加 3. CloudFront コンソールで、対象のディストリビューションの [General] タブに移動し、ディストリ ビューションのステータスが [Deployed] に変わっていることを確認します。ディストリビューショ ンに対する更新がデプロイされる前に代替ドメインの使用を試みた場合、以下のステップで作成す るリンクは機能しません。 4. DNS サービスプロバイダーから提供された方法を使用して、CNAME リソースレコードセットを ドメインのホストゾーンに追加します。この新しい CNAME リソースレコードセットによって、 DNS クエリがドメイン(例: www.example.com)からディストリビューションの CloudFront ドメ イン名(例: d111111abcdef8.cloudfront.net)にリダイレクトされます。詳細については、DNS サービスプロバイダーから提供されたドキュメントを参照してください。 DNS サービスとして Amazon Route 53 を使用する場合、CNAME の代わりにエイリアスリソース レコードセットを作成できます。エイリアスリソースレコードセットを使用した場合、Route 53 クエリに対する料金はかかりません。また、Zone Apex のドメイン名(example.com)に対してエ イリアスリソースレコードセットを作成することもできます。Zone Apex では、DNS によって CNAME の使用が許可されていません。詳細については、「Amazon Route 53 開発者ガイド」の 「Routing Queries to an Amazon CloudFront Distribution」を参照してください。 Important ドメイン名用の CNAME レコードがすでに存在する場合は、そのリソースレコードセット を更新するか、ディストリビューションの CloudFront ドメイン名を指す新しいリソース レコードセットで置き換えます。 また、CNAME リソースレコードセットがディストリビューションのドメイン名を指して おり、どのオリジンサーバーも指していないことを確認します。 5. dig などのツールを使用して、ステップ 4 で作成した CNAME リソースレコードセットがディスト リビューションのドメイン名を指していることを確認します。dig の詳細については、 http://www.kloth.net/services/dig.php を参照してください。 以下の例は、images.example.com ドメインへの dig リクエストと、応答のうちの関連する部分を 示しています。 [prompt]> dig images.example.com ; <<> DiG 9.3.3rc2 <<> images.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;images.example.com. IN ;; ANSWER SECTION: images.example.com. 10800 IN ... ... A CNAME d111111abcdef8.cloudfront.net. Answer Section の行は、CloudFront ディストリビューションのドメイン名である d111111abcdef8.cloudfront.net に images.example.com のクエリをルーティングする CNAME リ ソースレコードセットを示しています。CNAME の右側の名前が CloudFront ディストリビューショ ンのドメイン名になっている場合、CNAME リソースレコードセットは適切に構成されています。 名前が、Amazon S3 バケットのドメイン名など、別の値になっている場合、CNAME リソースレ コードセットの構成が誤っています。この場合、ステップ 4 に戻り、ディストリビューションのド メイン名を指すように CNAME レコードを修正します。 API Version 2014-01-31 36 Amazon CloudFront 開発者ガイド CloudFront ディストリビューションの価格クラスを選択す る 6. 7. いくつかのテストリンクを作成し、その URL の中でディストリビューションの CloudFront ドメイ ン名ではなく独自のドメイン名を使用することで、代替ドメイン名をテストします。 アプリケーションで CloudFront ディストリビューションのドメイン名ではなく代替ドメイン名を 使用するように、オブジェクトへのリンクを変更します。 CloudFront ディストリビューションの価格クラス を選択する Abstract CloudFront ディストリビューションの作成時に価格クラスを選択します。または、CloudFront コンソールまたは CloudFront API を使用して、既存のディストリビューションを更新します。 CloudFront では、世界中にエッジロケーションがあります。各エッジロケーションのコストは異なる ため、請求する料金は、リクエストの供給元のエッジロケーションによって異なります。 CloudFront エッジロケーションは地理的リージョンに分類され、リージョンは価格クラスに分類され ます。デフォルトの価格クラスにはすべてのリージョンが含まれます。また、ほとんどのリージョン (米国リージョン、ヨーロッパリージョン、香港リージョン、韓国リージョン、およびシンガポール リージョン、日本リージョン、およびインドリージョン)が含まれ、最もコストのかかるリージョンが 除外されている別の価格クラスがあります。さらに、最もコストの低いリージョン(米国リージョンお よびヨーロッパリージョン)のみが含まれる価格クラスもあります。 デフォルトでは、CloudFront はパフォーマンスのみに基づいてオブジェクトのリクエストに応答しま す。つまり、オブジェクトは、ビューアにとってレイテンシーが最も低いエッジロケーションから供給 されます。コスト削減を優先し、一部の地理的リージョンにおけるレイテンシーの延長を容認できるの であれば、使用する CloudFront リージョンが限定された価格クラスを選択することもできます。オブ ジェクトは、この価格クラス内のエッジロケーションからのみ供給されますが、さらに、選択された価 格クラス内のエッジロケーションのうちレイテンシーが最も短いエッジロケーションからコンテンツが 供給されます。ただし、一部のユーザー、特に、価格クラスに含まれない地理的リージョンのユーザー については、コンテンツが供給されるどの CloudFront エッジロケーションよりもレイテンシーが長く なる場合があります。例えば、米国とヨーロッパのみを含む価格クラスを選択した場合、オーストラリ アとアジアのビューアのレイテンシーは、オーストラリアとアジアを含む価格クラスを選択した場合よ りも長くなります。 一部のエッジロケーションを含まない価格クラスを選択した場合も、コンテンツのリクエストが、価格 クラスに含まれないリージョンのエッジロケーションから処理されることがあります。この場合、オブ ジェクトの供給元である、コストの高いリージョンの料金は請求されません。代わりに、選択された価 格クラスのリージョンの中で最もコストの低いリージョンの料金が請求されます。 価格クラスは、CloudFront ディストリビューションの作成時に選択できます。また、CloudFront コン ソールまたは CloudFront API を使用して、既存のディストリビューションを更新することもできます。 CloudFront コンソールまたは API を使用して、ウェブディストリビューションまたは RTMP ディスト リビューションを作成または更新する方法に関する各トピックについては、「ディストリビューション の使用 (p. 28)」を参照してください。 CloudFront 料金および価格クラスの詳細については、「Amazon CloudFront 料金表」を参照してくだ さい。 API Version 2014-01-31 37 Amazon CloudFront 開発者ガイド Amazon S3 での CloudFront の使用 Amazon S3 での CloudFront の使用 Abstract すでに Amazon S3 を使用してコンテンツを配信している場合は、CloudFront を追加してコストを下げます。 現在、CNAME を使用して Amazon S3 バケットからコンテンツを配信している場合は、以下の手順を 行うことにより、CloudFront への移行を支障なく行うことができます。 お客様のオブジェクトが Amazon S3 に保存されている場合、ユーザーがオブジェクトを Amazon S3 バケットから直接取得するか、またはオブジェクトを Amazon S3 から取得するように CloudFront を 構成してユーザーがオブジェクトを CloudFront から取得するか指定できます。 使用量が多ければ、Amazon S3 データ転送よりも CloudFront データ転送のほうが料金が安いので、 ユーザーがオブジェクトに頻繁にアクセスする場合は、CloudFront を追加することにより、オブジェ クトの配信にかかる費用を抑えることができます。また、Amazon S3 だけからダウンロードするより も、CloudFront を使用したほうが、ユーザーにより近い場所にオブジェクトが保存されているので、 より速くダウンロードできます。 Important 現在のところ、CloudFront は Amazon S3 Cross-Origin Resource Sharing(CORS)をサポー トしていません。 現在、コンテンツをお客様の Amazon S3 バケットのドメイン名(MyAWSBucket.s3.amazonaws.com など)からではなくお客様自身のドメイン名(example.com など)を使用してお客様の Amazon S3 バ ケットから直接配信している場合は、以下の手順を行うことにより、支障なく CloudFront を追加でき ます。 コンテンツをすでに Amazon S3 から配信している場合に CloudFront を追加する手順 1. 該当するトピックで説明されているプロセスを使用して、CloudFront ディストリビューションを 作成します。 • ウェブディストリビューションを作成するためのタスクリスト (p. 42) • RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 69) ディストリビューションを作成するときに、オリジンサーバーとして Amazon S3 バケットの名前 を指定します。 Important バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもので なければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」 の「バケットの制約と制限」を参照してください。 Amazon S3 で CNAME を使用している場合、ディストリビューションにもその CNAME を指定し ます。 2. Amazon S3 バケット内にあるパブリックに読み出し可能なオブジェクトへのリンクを含むテスト ウェブページを作成して、リンクをテストします。この初期テストでは、オブジェクト URL にお 客様のディストリビューションの CloudFront ドメイン名(例: http://d111111abcdef8.cloudfront.net/images/image.jpg)を使用します。 CloudFront URL の形式の詳細については、「CloudFront オブジェクトの URL の形式 (p. 81)」を 参照してください。 API Version 2014-01-31 38 Amazon CloudFront 開発者ガイド CloudFront API の変更点 3. Amazon S3 の CNAME を使用している場合、アプリケーションでは、バケットの名前(例: myawsbucket.s3.amazonaws.com)を使用する代わりにお客様のドメイン名(例: example.com) を使用して、Amazon S3 バケットのオブジェクトを参照しています。引き続き、ディストリビュー ションの CloudFront ドメイン名(例: d111111abcdef8.cloudfront.net)を使用する代わりにお客様 のドメイン名を使用してオブジェクトを参照する場合、DNS サービスプロバイダーを使用して設 定を更新する必要があります。 Amazon S3 の CNAME を適切に機能させるために、DNS サービスプロバイダーには、ドメインに 対するエンドユーザークエリを Amazon S3 バケットに現在ルーティングしている、ドメインの CNAME リソースレコードセットがあります。次のオブジェクトが要求されたとします。 http://example.com/images/image.jpg このリクエストは自動的に再ルーティングされ、次のオブジェクトが表示されます。 http://myawsbucket.s3.amazonaws.com/images/image.jpg クエリを Amazon S3 バケットではなく CloudFront ディストリビューションにルーティングする には、DNS サービスプロバイダーから提供された方法を使用して、ドメインの CNAME リソース レコードセットを更新する必要があります。この更新された CNAME レコードによって、お客様 のドメインからディストリビューションの CloudFront ドメイン名に、DNS クエリのリダイレクト が開始されます。詳細については、DNS サービスプロバイダーから提供されたドキュメントを参 照してください。 Note DNS サービスとして Route 53 を使用している場合の CNAME リソースレコードセットの 更新方法については、「Creating, Changing, and Deleting Resource Record Sets」を参照 してください。 CloudFront での CNAME の使用の詳細については、「代替ドメイン名(CNAME)を使用す る (p. 33)」を参照してください。 CNAME リソースレコードセットを更新してから変更が DNS システム全体に伝達されるまで最大 で 72 時間かかりますが、通常は、それよりも早く終了します。この間、コンテンツに対する一部 の要求は引き続き Amazon S3 バケットにルーティングされ、それ以外の要求は CloudFront にルー ティングされます。 CloudFront API の変更点 Abstract CloudFront API に関して注意する必要のある変更点を示します。 ウェブディストリビューションまたは RTMP ディストリビューションの作成または更新を行ったり、 オブジェクトを無効にしたりする場合に、リクエストの本文に含める XML ドキュメントの形式が、 CloudFront API の 2012-05-05 バージョンから大幅に変更されました。以前のバージョンの API では、 複数値を受け付けるエレメント(CNAME、信頼された署名者など)の 1 つ以上の値が誤って容易に削 除されることが確認されていました。2012-05-05 リリースに加えられた変更の目的は、偶発的な削除 を防止することと、ユーザーが Quantity エレメントに指定したと考えている値の数と実際に指定さ れた値の数に不一致が生じた場合に通知することです。 2012-05-05 API バージョン以降を、それよりも前の API バージョンで作成されたウェブディストリ ビューションおよび RTMP ディストリビューションで使用する場合は、以下の点に注意してください。 • 2012-05-05 以降の CloudFront API を使用して作成または更新されたウェブディストリビューション を、2012-05-05 よりも前のバージョンの API を使用して更新することはできません。 API Version 2014-01-31 39 Amazon CloudFront 開発者ガイド CloudFront API の変更点 • 新しい API バージョンを使用して、ディストリビューションのリストや、ディストリビューション に関する情報、ディストリビューション構成を取得できます。CloudFront は XML ドキュメントを新 しい XML 形式で返します。 • 以前の API バージョンを使用して作成されたディストリビューションを更新するには、2012-05-05 以降のバージョンの GET Distribution または GET Streaming Distribution を使用して新しい XML 形 式で XML ドキュメントを取得し、必要に応じてデータを変更した後に、2012-05-05 以降の PUT Distribution Config または PUT Streaming Distribution Config を使用して CloudFront に変更を送信し ます。 • 以前の API バージョンを使用して作成されたディストリビューションを、新しい API を使用して削 除することができます。この場合、ディストリビューションを無効にしておく必要があります。 API Version 2014-01-31 40 Amazon CloudFront 開発者ガイド ウェブディストリビューションの使 用 Abstract CloudFront ウェブディストリビューションを構成して管理します。 Topics • ウェブディストリビューションを作成するためのタスクリスト (p. 42) • CloudFront コンソールを使用したウェブディストリビューションの作成 (p. 43) • ウェブディストリビューションのテスト (p. 44) • Amazon S3 オリジンおよびカスタムオリジンを使用したウェブディストリビューション (p. 44) • ウェブディストリビューションを作成または更新する場合に指定する値 (p. 46) • ウェブディストリビューションを作成または更新する場合に CloudFront がコンソールに表示する 値 (p. 61) • Amazon EC2 と他のカスタムオリジンの使用に関する要件および推奨事項 (p. 63) • コンテンツの地理的ディストリビューションの制限 (p. 63) • オンデマンドスムーズストリーミングの構成 (p. 65) • オンデマンドプログレッシブダウンロードの構成 (p. 66) • オンデマンド Apple HTTP Live Streaming(HLS)の構成 (p. 66) このセクションでは、CloudFront ウェブディストリビューションを構成して管理する方法について説 明します。ディストリビューションの基本的な説明については、「ディストリビューションの使 用 (p. 28)」を参照してください。CloudFront RTMP ディストリビューションの詳細については、「RTMP ディストリビューションの使用 (p. 67)」を参照してください。 API Version 2014-01-31 41 Amazon CloudFront 開発者ガイド ウェブディストリビューションを作成するためのタスクリ スト ウェブディストリビューションを作成するための タスクリスト Abstract CloudFront のウェブディストリビューションを作成します。 以下のタスクリストでは、ウェブディストリビューションの作成処理の概要について説明します。 ウェブディストリビューションを作成するには 1. 1 つ以上の Amazon S3 バケットを作成するか、HTTP サーバーをオリジンサーバーとして構成し ます。オリジンとは、ウェブコンテンツのオリジナルバージョンを保存する場所です。CloudFront は、ファイルに対するリクエストを受け取ると、オリジンにアクセスし、エッジロケーションに配 信するファイルを取得します。オリジンサーバーとして、最大で 10 個の Amazon S3 バケットと HTTP サーバーの任意の組み合わせを使用できます。 Amazon S3 を使用する場合は、バケット名をすべて小文字にする必要があります。また、バケッ ト名にスペースを含めることはできません。 2. Amazon EC2 サーバーまたは別のカスタムオリジンを使用する場合は、「Amazon EC2 と他のカ スタムオリジンの使用に関する要件および推奨事項 (p. 63)」を確認してください。 コンテンツをオリジンサーバーにアップロードします。CloudFront の署名付き URL を使用して、 コンテンツへのアクセスを制限しない場合は、オブジェクトをパブリックに読み出し可能にしま す。 Caution オリジンサーバーのセキュリティを確保する責任はお客様にあります。サーバーへのアク セス許可を CloudFront に持たせる必要があります。また、コンテンツを保護するための セキュリティ設定を適切に行う必要があります。 3. CloudFront ウェブディストリビューションを作成します。 • CloudFront コンソールを使用してウェブディストリビューションを作成する方法については、 「CloudFront コンソールを使用したウェブディストリビューションの作成 (p. 43)」を参照して ください。 • CloudFront API を使用してウェブディストリビューションを作成する方法については、「Amazon CloudFront API リファレンス」の「POST Distribution」を参照してください。 4. オプション: CloudFront コンソールを使用してディストリビューションを作成している場合は、 ディストリビューションのキャッシュ動作またはオリジンをさらに作成します。詳細については、 「CloudFront コンソールを使用して、CloudFront ディストリビューションの一覧表示、詳細表示、 および更新を行うには (p. 31)」を参照してください。 5. ウェブディストリビューションをテストします。詳細については、「ウェブディストリビューショ ンのテスト (p. 44)」を参照してください。 ステップ 3 でディストリビューションを作成した後に CloudFront から返されたドメイン名を使用 して、お客様のコンテンツにアクセスするためのウェブサイトまたはアプリケーションを開発しま す。例えば、CloudFront がディストリビューションのドメイン名として d111111abcdef8.cloudfront.net を返した場合、Amazon S3 バケット内または HTTP サーバーの ルートディレクトリ内のファイル image.jpg の URL は http://d111111abcdef8.cloudfront.net/image.jpg になります。 6. API Version 2014-01-31 42 Amazon CloudFront 開発者ガイド CloudFront コンソールを使用したウェブディストリビュー ションの作成 ディストリビューションの作成時に 1 つ以上の代替ドメイン名(CNAME)を指定した場合、独自 のドメイン名を使用できます。この場合、image.jpg の URL を http://www.example.com/image.jpg にすることができます。 次の点に注意してください。 • 署名付き URL を使用してコンテンツへのアクセスを制限する場合は、「CloudFront を使用して プライベートコンテンツを供給する (p. 126)」を参照してください。 • 圧縮されたコンテンツを供給する場合は、「圧縮ファイルの供給 (p. 107)」を参照してください。 • Amazon S3 オリジンおよびカスタムオリジンに対する CloudFront のリクエスト動作およびレス ポンス動作については、「リクエストとレスポンスの動作 (p. 110)」を参照してください。 CloudFront コンソールを使用したウェブディスト リビューションの作成 Abstract CloudFront コンソールを使用して CloudFront のウェブディストリビューションを作成します。 以下の手順では、CloudFront コンソールを使用してウェブディストリビューションを作成する方法を 説明します。CloudFront API を使用してウェブディストリビューションを作成する場合は、「Amazon CloudFront API リファレンス」の「POST Distribution」を参照してください。 AWS アカウントごとに作成できるウェブディストリビューションの数に関する現在の制限については、 『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。 制限の引き上げを要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 CloudFront コンソールを使用して CloudFront ウェブディストリビューションを作成するには 1. 2. 3. 4. 5. 6. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 [Create Distribution] をクリックします。 [Create Distribution Wizard] の最初のページで、デフォルトの選択である [Web] をそのまま選択 し、[Continue] をクリックします。 ディストリビューションの設定項目を指定します。詳細については、「ウェブディストリビュー ションを作成または更新する場合に指定する値 (p. 46)」を参照してください。 [Create Distribution] をクリックします。 CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。配信を有効にするよう選択すると、リクエストの 処理を行えるようになります。この所要時間は 15 分以内となります。 CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。(ドメイン名は、選択されたディストリビューションの [General] タブ にも表示されます)。 ディストリビューションをデプロイする場合は、新しい CloudFront URL または CNAME を使用してコ ンテンツにアクセスできることを確認します。詳細については、「ウェブディストリビューションのテ スト (p. 44)」を参照してください。 API Version 2014-01-31 43 Amazon CloudFront 開発者ガイド ウェブディストリビューションのテスト ウェブディストリビューションのテスト Abstract CloudFront 用のウェブディストリビューションをテストします。 ディストリビューションの作成が終わると、CloudFront に オリジンサーバーの場所が記憶され、ドメ イン名がディストリビューションに関連付けられます。CloudFront ドメイン名を使用してオブジェク トへのリンクを作成できます。これで、CloudFront は、オブジェクトをウェブページまたはアプリケー ションに供給できます。 Note リンクのテストを行う前に、ディストリビューションのステータスが [Deployed] に変わるまで 待つ必要があります。 ウェブディストリビューション内のオブジェクトへのリンクを作成するには 1. 以下の HTML コードを新しいファイルにコピーし、domain-name をディストリビューションのド メイン名で置き換えて、object-name をオブジェクトの名前で置き換えます。 <html> <head>My CloudFront Test</head> <body> <p>My text content goes here.</p> <p><img src="http://domain-name/object-name" alt="my test image" </body> </html> 例えば、ドメイン名が d111111abcdef8.cloudfront.net で、オブジェクトが image.jpg の 場合、リンクの URL は次のようになります。 http://d111111abcdef8.cloudfront.net/image.jpg。 オブジェクトがオリジンサーバー内のフォルダにある場合は、そのフォルダも URL に含める必要 があります。例えば、image.jpg がオリジンサーバーのイメージフォルダにある場合、URL は次の ようになります。 http://d111111abcdef8.cloudfront.net/images/image.jpg 2. 3. HTML コードを、html ファイル名拡張子の付いたファイルに保存します。 ブラウザでウェブページを開いて、オブジェクトが見られるかどうかを確認します。 ブラウザに、イメージファイルが埋め込まれたページが表示されます。これは CloudFront がオブジェ クトを供給するのに適切と判断したエッジロケーションから供給されたものです。 Amazon S3 オリジンおよびカスタムオリジンを使 用したウェブディストリビューション ウェブディストリビューションを作成する場合、エッジロケーションに配信するファイルに対するリク エストを CloudFront がどの場所に送信するかを指定します。CloudFront は、オリジンとして Amazon S3 バケットおよび HTTP サーバー(ウェブサーバーなど)を使用することをサポートします。 API Version 2014-01-31 44 Amazon CloudFront 開発者ガイド オリジンとしての Amazon S3 バケットの使用 オリジンとしての Amazon S3 バケットの使用 ディストリビューションのオリジンとして Amazon S3 を使用する場合、CloudFront が配信するすべて のオブジェクトを、Amazon S3 バケットに配置します。オブジェクトを Amazon S3 に格納するには、 Amazon S3 でサポートされる任意の方法を使用できます(例: Amazon S3 コンソールや API、サード パーティツール)。他の Amazon S3 バケットと同様に、バケット内に階層を作成してオブジェクトを 保存できます。 既存の Amazon S3 バケットを CloudFront オリジンサーバーとして使用してもバケットに変更は一切 ありません。Amazon S3 オブジェクトの保存やアクセスで通常使用しているとおりに通常の Amazon S3 価格でバケットを使用できます。バケットへのオブジェクトの保存には、通常の Amazon S3 料金 が発生します。CloudFront の使用料の詳細については、「CloudFront の請求および使用状況レポー ト (p. 8)」を参照してください。 Important バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったものでなけ ればなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」の「バ ケットの制約と制限」を参照してください。 CloudFront が オブジェクトを取得する Amazon S3 バケットを指定するとき、バケット名を指定する 方法は、バケットをウェブサイトエンドポイントとして構成しているかどうかによって変わります。 バケットはウェブサイトエンドポイントとして構成されていない 一般に、次の形式を使用します。 bucket-name.s3.amazonaws.com バケットが米国スタンダードリージョンにあり、バージニア北部にリクエストをルーティングする 場合は、次の形式を使用します。 bucket-name.s3-external-1.amazonaws.com この形式でバケット名を指定した場合、以下の CloudFront 機能を使用することができます。 • SSL を使用して Amazon S3 バケットと通信するように CloudFront を構成します。詳細につい ては、「HTTPS 接続を使用したオブジェクトへのアクセス (p. 178)」を参照してください。 • オリジンアクセスアイデンティティを使用して、ユーザーに Amazon S3 URL ではなく CloudFront URL を使用してコンテンツにアクセスするよう要求します。詳細については、「オリジンアク セスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を参 照してください。 • POST リクエストと PUT リクエストを CloudFront に送信して、バケットのコンテンツを更新し ます。詳細については、トピック「CloudFront がリクエストを処理して Amazon S3 オリジン サーバーに転送する方法 (p. 110)」の「HTTP メソッド (p. 113)」を参照してください。 バケットはウェブサイトエンドポイントとして構成されている バケットの Amazon S3 静的ウェブサイトホスティングエンドポイントを入力します。この値は、 Amazon S3 コンソールの [Static Website Hosting] の [Properties] ページに表示されます。 この形式でバケット名を指定すると、Amazon S3 リダイレクトと Amazon S3 カスタムエラード キュメントを使用できます。(CloudFront でもカスタムエラーページが提供されています。詳細 については、「エラーレスポンスのカスタマイズ (p. 99)」を参照してください。)Amazon S3 の 諸機能について詳しくは、「Amazon S3 ドキュメント」を参照してください。. 以下の形式を使用してバケットを指定しないでください。 • Amazon S3 のパススタイル(s3.amazonaws.com/bucket-name) • Amazon S3 の CNAME (ある場合) API Version 2014-01-31 45 Amazon CloudFront 開発者ガイド Amazon EC2 または他のカスタムオリジンの使用 Amazon EC2 または他のカスタムオリジンの使用 カスタムオリジンは、HTTP サーバーです(例: ウェブサーバー)。HTTP サーバーには、Amazon EC2 インスタンス、またはプライベートで管理する HTTP サーバーを使用できます。カスタムオリジンを 使用する場合、サーバーの DNS 名に加えて、オリジンからオブジェクトを取得するときに CloudFront が使用する HTTP ポート、HTTPS ポート、およびプロトコルを指定します。 カスタムオリジンを使用する場合、以下の機能を除いて、ほとんどの CloudFront 機能がサポートされ ます。 • RTMP ディストリビューション – サポートされません。 • プライベートコンテンツ – 署名付き URL を使用してカスタムオリジンからコンテンツを配信できま すが、CloudFront の場合、カスタムオリジンにアクセスするには、オリジンがパブリックにアクセ ス可能な状態になっている必要があります。詳細については、「CloudFront を使用してプライベー トコンテンツを供給する (p. 126)」を参照してください。 カスタムオリジンを使用する場合の要件および推奨事項については、「Amazon EC2 と他のカスタム オリジンの使用に関する要件および推奨事項 (p. 63)」を参照してください。 ウェブディストリビューションを作成または更新 する場合に指定する値 新しいウェブディストリビューションの作成や、既存のディストリビューションの更新を行う場合、以 下の値を指定します。CloudFront コンソールを使用したウェブディストリビューションの作成または 更新について詳しくは、該当するトピックを参照してください。 • ウェブディストリビューションの使用 (p. 41) • CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 31) 配信形式 (p. 47) オリジンの設定 (p. 48) • • • • オリジンドメイン名 (p. 48) オリジン ID (p. 49) バケットアクセスの制限(Amazon S3 のみ) (p. 49) オリジンアクセスアイデンティティ(Amazon S3 のみ) (p. 49) • 新しいアイデンティティに関するコメント(Amazon S3 のみ) (p. 49) • アイデンティティ(Amazon S3 のみ) (p. 49) • バケットに読み取り許可を付与する(Amazon S3 のみ) (p. 50) • HTTP ポート(Amazon EC2および他のカスタムオリジンのみ) (p. 51) • HTTPS ポート(Amazon EC2および他のカスタムオリジンのみ) (p. 51) • オリジンプロトコルポリシー(Amazon EC2、ウェブサイトエンドポイントとして構成された Amazon S3 バケット、および他のカスタムオリジンのみ) (p. 50) キャッシュ動作の設定 (p. 51) • パスパターン (p. 51) • オリジン(既存のディストリビューションのみ) (p. 53) API Version 2014-01-31 46 Amazon CloudFront 開発者ガイド 配信形式 • ビューアプロトコルポリシー (p. 53) • 許可される HTTP メソッド (p. 53) • オブジェクトキャッシュ (p. 54) • 最小 TTL (p. 54) • Cookie の転送(Amazon EC2および他のカスタムオリジンのみ) (p. 54) • ホワイトリスト Cookie (Amazon EC2および他のカスタムオリジンのみ) (p. 55) • 転送クエリ文字列 (p. 55) • スムーズストリーミング (p. 55) • ビューアのアクセス制限(署名付き URL の使用) (p. 55) • 信頼された署名者 (p. 55) • AWS アカウント番号 (p. 56) ディストリビューションの詳細 (p. 56) • • • • • • • • • • • 価格クラス (p. 56) 代替ドメイン名(CNAME) (p. 56) SSL 証明書 (p. 57) Clients Supported(サポートされるクライアント) (p. 58) デフォルトのルートオブジェクト (p. 58) ログ作成 (p. 58) ログ用のバケット (p. 58) ログのプレフィックス (p. 59) Cookie のログ作成 (p. 59) コメント (p. 59) ディストリビューションの状態 (p. 59) Custom Error Pages(カスタムエラーページ)と Error Caching(エラーキャッシュ) (p. 60) • • • • Error Code(エラーコード) (p. 60) Response Page Path(レスポンスページのパス) (p. 60) Response Code(レスポンスコード) (p. 60) Error Caching Minimum TTL(エラーキャッシュ最小 TTL) (p. 60) 制限 (p. 60) • Enable Geo Restriction(地域制限の有効化) (p. 61) • Restriction Type(制限タイプ) (p. 61) • Countries(国) (p. 61) 配信形式 ディストリビューションを作成する場合、配信方法を指定します。ウェブディストリビューションの場 合、この値は常に [Web] です。既存のディストリビューションの配信方法を変更することはできませ ん。 API Version 2014-01-31 47 Amazon CloudFront 開発者ガイド オリジンの設定 オリジンの設定 ディストリビューションを作成または更新する場合、1 つ以上の場所に関する情報を指定します。これ は、オリジンと呼ばれるものであり、ウェブコンテンツのオリジナルバージョンを保存する場所です。 CloudFront はオリジンからウェブコンテンツを取得し、世界中のエッジサーバーネットワーク経由で ビューアにウェブコンテンツを供給します。各オリジンは、Amazon S3 バケットまたは HTTP サーバー (ウェブサーバーなど)です。 ディストリビューションに作成できるオリジンの数に関する現在の制限については、『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。制限の引き上げ を要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 オリジンを削除する場合は、まず、そのオリジンに関連付けられたキャッシュ動作を編集または削除す る必要があります。 Caution オリジンを削除する場合は、そのオリジンによって以前供給されていたファイルが別のオリジ ンで利用可能であり、現在、そのファイルへのリクエストがキャッシュ動作によって新しいオ リジンにルーティングされていることを確認します。 ディストリビューションを作成または更新する場合、オリジンごとに以下の値を指定します。 オリジンドメイン名 CloudFront がこのオリジンのオブジェクトの取得先としている Amazon S3 バケットまたは HTTP サー バーの DNS ドメイン名(例: myawsbucket.s3.amazonaws.com や www.example.com)。 オリジンが HTTP サーバーである場合は、リソースのドメイン名を入力します。ファイルはパブリッ クに読み取り可能である必要があります。 オリジンが Amazon S3 バケットである場合、CloudFront コンソールで [Origin Domain Name] フィー ルドをクリックすると、現在の AWS アカウントに関連付けられた Amazon S3 バケットの一覧が表示 されます。次の点に注意してください。 • バケットがウェブサイトとして構成されている場合は、バケットの Amazon S3 静的ウェブサイトホ スティングエンドポイントを入力します。[Origin Domain Name] フィールドの一覧からバケット名 を選択しないでください。静的ウェブサイトホスティングエンドポイントは、Amazon S3 コンソー ルの [Static Website Hosting] の [Properties] ページに表示されます。 • 使用しているバケットが別の AWS アカウントのものであり、そのバケットがウェブサイトとして構 成されていない場合は、次の形式で名前を入力します。 bucket-name.s3.amazonaws.com バケットが米国スタンダードリージョンにあり、バージニア北部にリクエストをルーティングする場 合は、次の形式を使用します。 bucket-name.s3-external-1.amazonaws.com • CloudFront のオリジンアクセスアイデンティティを使用して Amazon S3 内のコンテンツを保護しな い限り、ファイルをパブリックに読み出し可能とする必要があります。詳細については、「オリジン アクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を参 照してください。 API Version 2014-01-31 48 Amazon CloudFront 開発者ガイド オリジンの設定 Important オリジンが Amazon S3 バケットの場合、バケット名は DNS 命名要件に準拠する必要がありま す。詳細については、「Amazon Simple Storage Service 開発者ガイド」の「バケットの制約 と制限」を参照してください。 オリジンの [Origin Domain Name] の値を変更すると、CloudFront エッジロケーションに変更が直ちに 複製されます。CloudFront は、該当のエッジロケーションでディストリビューション構成が更新され るまで、リクエストを以前の HTTP サーバーまたは Amazon S3 バケットに引き続き転送します。該当 のエッジロケーションでディストリビューション構成が更新されると、CloudFront は新しい HTTP サー バーまたは Amazon S3 バケットへのリクエストの転送を直ちに開始します。 オリジンを変更しても、CloudFront が、新しいオリジンからのオブジェクトでエッジキャッシュを再 生成する必要はありません。アプリケーション内でビューアのリクエストが変更されていない限り、各 オブジェクトの TTL の有効期限が切れるか、要求頻度の低いオブジェクトが削除されるまで、CloudFront は、引き続き、エッジキャッシュにすでに保持されているオブジェクトを供給します。 オリジン ID このディストリビューション内でこのオリジンを他のオリジンから一意に区別する文字列。デフォルト のキャッシュ動作に加えてキャッシュ動作を作成する場合、ここで指定したオリジン ID を使用し、作 成したキャッシュ動作のパスパターンにリクエストが一致した場合にリクエストのルーティング先とす るオリジンを識別します。詳細については、「キャッシュ動作の設定 (p. 51)」を参照してください。 バケットアクセスの制限(Amazon S3 のみ) Amazon S3 URL ではなく CloudFront URL のみを使用して &S3 バケット内のオブジェクトにアクセス するようエンドユーザーに要求する場合は、[Yes] をクリックします。次に、適用可能な値を指定しま す。 エンドユーザーが CloudFront URL または Amazon S3 URL を使用してオブジェクトにアクセスできる ようにするには、[No] をクリックします。 詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセ スを制限する (p. 131)」を参照してください。 オリジンアクセスアイデンティティ(Amazon S3 のみ) [Restrict Bucket Access] で [Yes] を選択した場合、新しいオリジンアクセスアイデンティティを作成す るか、AWS アカウントに関連付けられた既存のオリジンアクセスアイデンティティを使用するかを選 択します。オリジンアクセスアイデンティティがすでにある場合は、それを再利用し、メンテナンスを 簡素化することをお勧めします。オリジンアクセスアイデンティティの詳細については、「オリジンア クセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を参照し てください。 新しいアイデンティティに関するコメント(Amazon S3 のみ) [Origin Access Identity] で [Create a New Identity] を選択した場合、新しいオリジンアクセスアイデン ティティを識別するコメントを入力します。このディストリビューションが作成されると、CloudFront はオリジンアクセスアイデンティティを作成します。 アイデンティティ(Amazon S3 のみ) [Origin Access Identity] で [Use an Existing Identity] を選択した場合、使用するオリジンアクセスアイデ ンティティを選択します。別の AWS アカウントに関連付けられたオリジンアクセスアイデンティティ を使用することはできません。 API Version 2014-01-31 49 Amazon CloudFront 開発者ガイド オリジンの設定 バケットに読み取り許可を付与する(Amazon S3 のみ) CloudFront で、オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取 り許可を自動的に付与するには、[Yes, Update Bucket Policy] をクリックします。 Important [Yes, Update Bucket Policy] をクリックすると、CloudFront は、指定されたオリジンアクセス アイデンティティにバケット内のオブジェクトの読み取り許可を付与するようにバケットポリ シーを更新します。ただし、CloudFront がバケットポリシー内の既存の許可、または個々のオ ブジェクトに対する許可を削除することはありません。現在、Amazon S3 URL を使用してバ ケット内のオブジェクトにアクセスするための許可を持っているユーザーは、CloudFront がバ ケットポリシーを更新した後もその許可を依然として持っています。既存のバケットポリシー、 およびバケット内のオブジェクトに対する既存の許可を表示または変更するには、Amazon S3 から提供される方法を使用します。詳細については、「オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り許可を付与する (p. 134)」を参照してくださ い。 許可を手動で更新する場合、例えば、バケットの許可を更新する代わりにオブジェクトに対する ACL を更新する場合は、[No, I will Update Permissions] をクリックします。 オリジンプロトコルポリシー(Amazon EC2、ウェブサイトエ ンドポイントとして構成された Amazon S3 バケット、および 他のカスタムオリジンのみ) CloudFront がオリジンサーバーからオブジェクトをフェッチするときに使用するプロトコルポリシー。 適用可能な値を選択します。 • [HTTP Only]: CloudFront は HTTP のみを使用してオリジンにアクセスします。 Important Amazon S3 バケットをウェブサイトエンドポイントとして構成している場合、[HTTP Only] を指定する必要があります。Amazon S3 はこの構成では HTTPS 接続をサポートしていませ ん。 • [Match Viewer]: CloudFront は、ビューアのリクエストのプロトコルに応じて HTTP または HTTPS を使用し、オリジンからオブジェクトをフェッチします。ビューアが HTTP と HTTPS の両方のプロ トコルを使用してリクエストを行った場合も、CloudFront がオブジェクトをキャッシュするのは 1 回だけです。 Important CloudFront がこのオリジンに転送する HTTPS ビューアリクエストの場合、オリジンサー バーの SSL 証明書のドメイン名のうち 1 つは、[Origin Domain Name] で指定したドメイン 名に一致する必要があります。それ以外の場合、CloudFront は、ビューアリクエストに対し て、リクエストされたオブジェクトではなく、HTTP ステータスコード 502(不正なゲート ウェイ)を返します。詳細については、「ビューア、CloudFront、およびオリジン間の通信 に対して HTTPS を要求する方法 (p. 179)」を参照してください。 API Version 2014-01-31 50 Amazon CloudFront 開発者ガイド キャッシュ動作の設定 HTTP ポート(Amazon EC2および他のカスタムオリジンのみ) オプション。カスタムオリジンがリッスンしている HTTP ポート。有効な値には、ポート 80、443、 および 1024 ~ 65535 が含まれます。デフォルト値はポート 80 です。 HTTPS ポート(Amazon EC2および他のカスタムオリジンの み) オプション。カスタムオリジンがリッスンしている HTTPS ポート。有効な値には、ポート 80、443、 および 1024 ~ 65535 が含まれます。デフォルト値はポート 443 です。 キャッシュ動作の設定 キャッシュ動作を使用すると、ウェブサイトにあるファイルの特定の URL パスパターンに応じてさま ざまな CloudFront 機能を構成できます。例えば、CloudFront のオリジンサーバーとして使用している ウェブサーバーの images ディレクトリ内にあるすべての .jpg ファイルに 1 つのキャッシュ動作を適 用することができます。キャッシュ動作ごとに構成可能な機能として以下が含まれます。 • パスパターン。 • CloudFront ディストリビューションに対して複数のオリジンを構成した場合、CloudFront でリクエ ストをどのオリジンに転送するか。 • クエリ文字列をオリジンに転送するかどうか。 • 指定したファイルへのアクセスに署名付き URL を必要とするかどうか。 • これらのファイルへのアクセスに HTTPS を使用するようエンドユーザーに要求するかどうか。 • オリジンがファイルに追加する Cache-Control ヘッダーの値に関係なく、これらのファイルを CloudFront キャッシュに保持する最小時間。 新しいディストリビューションを作成する場合、デフォルトのキャッシュ動作の設定を指定します。デ フォルトのキャッシュ動作では、ディストリビューションの作成時に指定されたオリジンにすべてのリ クエストが自動的に転送されます。ディストリビューションを作成した後、追加のキャッシュ動作を作 成し、パスパターン(例: *.jpg)に一致するオブジェクトのリクエストを受け取ったときに CloudFront がどのように応答するかを定義できます。追加のキャッシュ動作を定義した場合、デフォルトのキャッ シュ動作は常に最後に処理されます。他のキャッシュ動作は、CloudFront コンソールに表示された順 序で処理されるか、CloudFront API が使用されている場合は、ディストリビューションの DistributionConfig エレメントに示された順序で処理されます。詳細については、「パスパター ン (p. 51)」を参照してください。 キャッシュ動作を作成する場合、CloudFront がオブジェクトの取得先とする 1 つのオリジンを指定し ます。結果として、CloudFront がすべてのオリジンからオブジェクトを配信する場合、少なくともオ リジンと同じ数のキャッシュ動作(デフォルトのキャッシュ動作を含む)が必要です。例えば、2 つの オリジンとデフォルトのキャッシュ動作のみがある場合、デフォルトのキャッシュ動作によって、 CloudFront は 1 つのオリジンからオブジェクトを取得します。その他のオリジンは一切使用されませ ん。 ディストリビューションに追加できるキャッシュ動作の数に関する現在の制限については、『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。制限の引き 上げを要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 パスパターン パスパターン(例: /images/*.jpg)を使用して、このキャッシュ動作をどのリクエストに割り当て るかを指定します。CloudFront がエンドユーザーリクエストを受け取ると、要求されたパスは、ディ API Version 2014-01-31 51 Amazon CloudFront 開発者ガイド キャッシュ動作の設定 ストリビューションに含まれるキャッシュ動作の順序でパスパターンと照合されます。最初の一致に よって、そのリクエストに適用されるキャッシュ動作が決まります。例えば、以下の 3 つのパスパター ンを持つ 3 つのキャッシュ動作がこの順序で設定されているとします。 • /images/*.jpg • /images/* • /*.gif ファイル /images/sample.gif のリクエストは 1 番目のパスパターンを満たさないため、関連付け られたキャッシュ動作はこのリクエストに適用されません。ファイルは 2 番目のパスパターンを満たし ます。リクエストは 3 番目のパスパターンにも一致しますが、2 番目のパスパターンに関連付けられた キャッシュ動作が適用されます。 Note 新しいディストリビューションを作成すると、デフォルトのキャッシュ動作の [Path Pattern] の値が *(すべてのファイル)に設定され、変更することはできません。この値によって、 CloudFront は、オブジェクトに対するすべてのリクエストを、オリジンドメイン名 (p. 48) フィールドに指定されたオリジンに転送します。オブジェクトのリクエストが、他のどのキャッ シュ動作のパスパターンにも一致しない場合、CloudFront は、デフォルトのキャッシュ動作に 指定された動作を適用します。 Caution パスパターンとその順序を慎重に定義します。適切に定義されていない場合、コンテンツへの 意図されないアクセスがエンドユーザーに与えられる場合があります。例えば、リクエスト が、2 つのキャッシュ動作のパスパターンに一致したと仮定します。最初のキャッシュ動作は 署名付き URL を要求しませんが、2 番目のキャッシュ動作は署名付き URL を要求します。エ ンドユーザーは署名付き URL を使用せずにオブジェクトにアクセスできます。これは、 CloudFront が、最初の一致に関連付けられたキャッシュ動作を処理するためです。 指定されたパスは、指定されたディレクトリ内のあらゆるファイル、および指定されたディレクトリ以 下のサブディレクトリ内のあらゆるファイルのリクエストに適用されます。CloudFront はパスパター ンを評価する際にクエリ文字列や Cookie を考慮しません。例えば、/images ディレクトリに product1 および product2 サブディレクトリが含まれる場合、パスパターン /images/*.jpg は、/images、/images/product1、および /images/product2 ディレクトリ内のあらゆる .jpg ファ イルのリクエストに適用されます。異なるキャッシュ動作を、/images および /images/product2 ディレクトリのファイルではなく /images/product1 ディレクトリのファイルに割り当てる場 合、/images/product1 用の独立したキャッシュ動作を作成し、そのキャッシュ動作を /images ディ レクトリ用のキャッシュ動作の上(前)の位置に移動します。 パスパターンには、以下のワイルドカード文字を使用できます。 • * は、0 個以上の文字に一致します。 • ? は、正確に 1 個の文字に一致します。 以下の例を使用して、ワイルドカード文字がどのように機能するかを示します。 パスパターン パスパターンに一致するファイル /*.jpg すべての .jpg ファイル。 /images/*.jpg /images ディレクトリ内、および /images ディレクトリ下のサブディレクトリ 内のすべての .jpg ファイル。 API Version 2014-01-31 52 Amazon CloudFront 開発者ガイド キャッシュ動作の設定 パスパターン パスパターンに一致するファイル /a*.jpg • ファイル名が a で始まるすべての .jpg ファイル(例: apple.jpg、 appalachian_trail_2012_05_21.jpg)。 • ファイルパスが a で始まるすべての .jpg ファイル(例: /abra/cadabra/magic.jpg)。 /a??.jpg ファイル名が a で始まり、ファイル名の後に正確に他の 2 文字が続くすべての .jpg ファイル(例: ant.jpg、abe.jpg)。 /*.doc* ファイル名拡張子が .doc で始まるすべてのファイル(例: .doc、.docx、.docm ファイル)。この場合、パスパターン *.doc? を使用することはできません。こ のパスパターンは .doc ファイルのリクエストに適用されないためです。? ワイ ルドカード文字は正確に 1 個の文字を置き換えるものです。 パスパターンの最大長は 255 文字です。値には以下の文字を含めることができます。 • A ~ Z、a ~ z パスパターンでは大文字と小文字が区別されるので、パスパターン /*.jpg はファイル /LOGO.JPG には適用されません。 • 0-9 • _-.*$/~"'@:+ • &。& として受け渡しされます オリジン(既存のディストリビューションのみ) 既存のオリジンの [Origin ID] の値を入力します。これは、リクエスト(http://example.com/logo.jpg な ど)がキャッシュ動作(*.jpg)またはデフォルトキャッシュ動作(*)のパスパターンに一致するとき に、CloudFront にリクエストをルーティングさせる宛先となるオリジンです。 ビューアプロトコルポリシー CloudFront エッジロケーションのコンテンツへのアクセスに使用するビューアのプロトコルポリシー を選択します。 • [HTTP and HTTPS]: ビューアは両方のプロトコルを使用できます。 • [Redirect HTTP to HTTPS]: ビューアは両方のプロトコルを使用できますが、HTTP リクエストは自 動的に HTTPS リクエストにリダイレクトされます。 • [HTTPS Only]: ビューアは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。 詳細については、「HTTPS 接続を使用したオブジェクトへのアクセス (p. 178)」を参照してください。 許可される HTTP メソッド CloudFront が処理してオリジンに転送する HTTP メソッドを指定します。 • GET、HEAD: オリジンからのオブジェクトの取得またはオブジェクトヘッダーの取得は、CloudFront を使用した場合のみ可能です。 • GET、HEAD、PUT、POST、PATCH、DELETE、OPTIONS: CloudFront を使用してオブジェクトの 取得、追加、更新、削除、オブジェクトヘッダーの取得を行えます。また、ウェブフォームからの データの送信など、その他の POST 操作も実行できます。 API Version 2014-01-31 53 Amazon CloudFront 開発者ガイド キャッシュ動作の設定 Note CloudFront は GET リクエストと HEAD リクエストへのレスポンスをキャッシュします。 CloudFront はその他のメソッドを使用するリクエストへのレスポンスをキャッシュしませ ん。 Caution GET、HEAD、PUT、POST、PATCH、DELETE、OPTIONS を選択する場合は、すべきでな い操作をユーザーが実行できないようにするために、Amazon S3 バケットまたはカスタムオリ ジンへのアクセスを制限することが必要になる場合があります。 • Amazon S3 をディストリビューションのオリジンとして使用している場合: Amazon S3 コン テンツへのアクセスを制限する CloudFront オリジンアクセスアイデンティティを作成して、 そのオリジンアクセスアイデンティティに適切な許可を付与します。例えば、PUT を使用し たいというだけの理由で、上記のメソッドを受け入れて転送するように CloudFront を構成 するという場合は、Amazon S3 バケットのポリシーまたは ACL を DELETE リクエストを適 切に処理するように引き続き構成する必要があります。詳細については、「オリジンアクセ スアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を 参照してください。 • カスタムオリジンを使用している場合: すべてのメソッドを処理するようにオリジンサーバー を構成します。例えば、POST を使用したいというだけの理由で、上記のメソッドを受け入 れて転送するように CloudFront を構成するという場合は、オリジンサーバーを DELETE リ クエストを適切に処理するように引き続き構成する必要があります。 オブジェクトキャッシュ オリジンサーバーで Cache-Control ヘッダーをオブジェクトに追加することで、オブジェクトを CloudFront キャッシュに保持する時間を制御する場合、[Use Origin Cache Headers] を選択します。 Cache-Control ヘッダーに関係なく、オブジェクトを CloudFront キャッシュに保持する最小時間を 指定するには、[Customize] を選択します。次に、オブジェクトを CloudFront キャッシュに保持する最 小秒数を [Minimum TTL] フィールドに指定します。Cache-Control ヘッダーにこれより低い値が指定 されている場合でもこのフィールドの値が適用されます。 最小 TTL オブジェクトが更新されたかどうかを CloudFront がオリジンに照会するまでに、オブジェクトを CloudFront キャッシュに保持する最小時間(秒)を指定します。詳細については、「CloudFront エッ ジキャッシュにオブジェクトを保持する時間の指定(有効期限切れ) (p. 90)」を参照してください。 Cookie の転送(Amazon EC2および他のカスタムオリジンの み) CloudFront からオリジンサーバーに Cookie を転送するかどうかと、転送する場合にどれを転送するか を指定します。選択された Cookie (Cookie のホワイトリスト)のみを転送するように選択した場合、 Cookie 名を [Whitelist Cookies] フィールドに入力します。[All] を選択した場合、アプリケーションで使 用されている Cookie の数に関係なく、CloudFront はすべての Cookie を転送します。 API Version 2014-01-31 54 Amazon CloudFront 開発者ガイド キャッシュ動作の設定 Amazon S3 は、Cookie を処理しません。オリジンに Cookie を転送するとキャッシュ可能性が低下し ます。リクエストを Amazon S3 オリジンに転送するキャッシュ動作の場合、[Forward Cookies] で [None] を選択します。 オリジンへの Cookie の転送の詳細については、「CloudFront が Cookie の転送、キャッシュ、および ログ作成を行う方法 (p. 86)」を参照してください。 ホワイトリスト Cookie (Amazon EC2および他のカスタムオ リジンのみ) [Forward Cookies] リストで [Whitelist] を選択した場合、このキャッシュ動作に応じて CloudFront がオ リジンサーバーに転送する Cookie の名前を [Whitelist Cookies] フィールドに入力します。各 Cookie 名 を新しい行に入力します。 キャッシュ動作ごとにホワイトリストに登録できる Cookie 名の数に関する現在の制限については、 『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。 制限の引き上げを要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 転送クエリ文字列 オリジンサーバーが URL 内のクエリ文字列に基づいてオブジェクトの別のバージョンを返す場合、 [Yes] をクリックします。オリジンがクエリ文字列に関係なくオブジェクトの同じバージョンを返す場 合、[No] をクリックします。これにより、CloudFront がキャッシュからリクエストを処理できる可能 性が高くなり、パフォーマンスが向上し、オリジンの負荷が低下します。クエリ文字列の詳細について は、「CloudFront がクエリ文字列パラメータの転送、キャッシュ、およびログ作成を行う方法 (p. 84)」 を参照してください。 スムーズストリーミング このキャッシュ動作に関連付けられたオリジンを使用して Microsoft スムーズストリーミング形式のメ ディアファイルを配信する場合、[Yes] をクリックします。それ以外の場合、[No] をクリックします。 Note [Yes] を指定した場合でも、コンテンツが [Path Pattern] の値と一致すれば、このキャッシュ動 作を使用してそのほかのコンテンツを配信できます。 詳細については、「オンデマンドスムーズストリーミングの構成 (p. 65)」を参照してください。 ビューアのアクセス制限(署名付き URL の使用) このキャッシュ動作の PathPattern に一致するオブジェクトのリクエストでパブリック URL を使用 する場合、[No] をクリックします。 このキャッシュ動作の PathPattern に一致するオブジェクトのリクエストで署名付き URL を使用す る場合、[Yes] をクリックします。次に、署名付き URL の作成に使用する AWS アカウントを指定しま す。このアカウントは信頼された署名者として知られています。 信頼された署名者の詳細については、「署名付き URL (信頼された署名者)の作成が可能な AWS ア カウントの指定 (p. 137)」を参照してください。 信頼された署名者 このキャッシュ動作の信頼された署名者として使用する AWS アカウントを選択します。 API Version 2014-01-31 55 Amazon CloudFront 開発者ガイド ディストリビューションの詳細 • Self: 信頼されたアカウントとして AWS Management Console へのサインインに現在使用している アカウントを使用します。現在、IAM ユーザーとしてサインインしている場合は、関連付けられた AWS アカウントを、信頼された署名者として追加します。 • Specify Accounts: 信頼された署名者のアカウント番号を [AWS Account Numbers] フィールドに入力 します。 署名付き URL を作成するには、AWS アカウント番号に少なくとも 1 つのアクティブな CloudFront キーペアが必要です。 Caution コンテンツの配信ですでに使用されているディストリビューションを更新する場合は、オブ ジェクトの署名付き URL の生成を開始する準備ができたときにのみ、信頼された署名者を追 加します。信頼された署名者がディストリビューションに追加されると、ユーザーは、この キャッシュ動作の PathPattern に一致するオブジェクトへのアクセスに、署名付き URL を 使用する必要があります。 AWS アカウント番号 現在のアカウントに加えて、または現在のアカウントの代わりに、AWS アカウントを使用して署名付 き URL を作成する場合、このフィールドの行ごとに 1 つの AWS アカウント番号を入力します。次の 点に注意してください。 • 指定するアカウントに少なくとも 1 つのアクティブな CloudFront キーペアが必要です。詳細につい ては、「信頼された署名者の CloudFront キーペアを作成する (p. 138)」を参照してください。 • IAM ユーザーの CloudFront キーペアを作成できないため、信頼された署名者として IAM ユーザーを 使用することはできません。 • アカウントの AWS アカウント番号を取得する方法については、「Amazon Web Services General Reference」の「How Do I Get Security Credentials?」を参照してください。 • 現在のアカウントのアカウント番号を入力した場合、CloudFront は、自動的に [Self] チェックボック スをオンにして、[AWS Account Numbers] リストからアカウント番号を削除します。 ディストリビューションの詳細 以下の値はディストリビューション全体に適用されます。 価格クラス CloudFront サービスに支払う上限価格に対応する価格クラスを選択します。デフォルトでは、CloudFront は、すべての CloudFront リージョンのエッジロケーションからオブジェクトを供給します。 価格クラスの詳細、および選択した価格クラスがディストリビューションの CloudFront パフォーマン スに与える影響の詳細については、「CloudFront ディストリビューションの価格クラスを選択す る (p. 37)」を参照してください。価格クラスと CloudFront リージョンのマッピングを含め、CloudFront 料金表の詳細については、「Amazon CloudFront 料金表」を参照してください。 代替ドメイン名(CNAME) オプション。ディストリビューションを作成するときに CloudFront が割り当てるドメイン名ではなく、 オブジェクトの URL に使用する 1 つ以上のドメイン名を指定します。例えば、次のオブジェクトの URL があります。 /images/image.jpg API Version 2014-01-31 56 Amazon CloudFront 開発者ガイド ディストリビューションの詳細 この URL を次のように表示します。 http://www.example.com/images/image.jpg 次のようには指定しません。 http://d111111abcdef8.cloudfront.net/images/image.jpg この場合、www.example.com の CNAME を追加します。 Important www.example.com の CNAME をディストリビューションに追加する場合、DNS サービスを 使用して CNAME レコードを作成(または更新)し、www.example.com のクエリを d111111abcdef8.cloudfront.net にルーティングする必要もあります。ドメインの DNS サービスプロバイダーのある CNAME レコードを作成する許可が必要です。通常、これはドメ インを所有していることを指しますが、ドメイン所有者向けにアプリケーションを開発してい る場合にも当てはまります。 ディストリビューションに追加できる代替ドメイン名の数に関する現在の制限については、『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。制限の引き 上げを要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 代替ドメイン名の詳細については、「代替ドメイン名(CNAME)を使用する (p. 33)」を参照してくだ さい。CloudFront URL の詳細については、「CloudFront オブジェクトの URL の形式 (p. 81)」を参照 してください。 SSL 証明書 ビューアがオブジェクトへのアクセスに HTTPS を使用する場合、該当する SSL 証明書を選択します。 • デフォルトの CloudFront 証明書(*.cloudfront.net): オブジェクトの URL 内で CloudFront ドメイン 名を使用する場合(例: https://d111111abcdef8.cloudfront.net/image1.jpg)、このオプ ションを選択します。また、ビューアが HTTP を使用してオブジェクトにアクセスする場合も、こ のオプションを選択します。 • IAM 証明書ストア内の証明書の名前: オブジェクトの URL 内で独自のドメイン名を使用する場合(例: https://example.com/image1.jpg)、IAM 証明書ストアに以前アップロードした適用可能な証 明書を選択します。詳細については、「代替ドメイン名と HTTPS の使用 (p. 181)」を参照してくださ い。 この設定を選択した場合、オブジェクト URL でのみ代替ドメイン名を使用することをお勧めします (https://example.com/logo.jpg)。CloudFront のディストリビューションドメイン名 (https://d111111abcdef8.cloudfront.net/logo.jpg)を使用した場合、ビューアが SNI をサポートして いると、CloudFront は正常に動作します。しかし、ビューアが SNI をサポートしていないと、[Clients Supported] の値に応じてビューアは次のいずれかの動作を示します。 • [All Clients]: ビューアが SNI をサポートしていない場合、CloudFront ドメイン名が SSL 証明書の ドメイン名と一致しないため、警告が表示されます。 • [Only Clients that Support Server Name Indication (SNI)]: CloudFront はオブジェクトを返さないで ビューアとの接続を中断します。 API Version 2014-01-31 57 Amazon CloudFront 開発者ガイド ディストリビューションの詳細 Clients Supported(サポートされるクライアント) 代替ドメイン名を指定し、IAM 証明書ストア内の SSL 証明書を指定した場合、CloudFront が HTTPS リクエストを処理する方法を、すべてのクライアントで動作する方法にするか、それともほとんどのク ライアントで動作する方法にするかを選択します。 • [All Clients]: どのクライアントもコンテンツにアクセスできます。ただし、この機能を使用するには 許可を得る必要があり、追加の月額料金が発生します。 • [Only Clients that Support Server Name Indication (SNI)]: 最新のブラウザはすべて SNI をサポートす るため、コンテンツにアクセスできます。しかし、まだ使用されている一部のブラウザは SNI をサ ポートしていません。このようなブラウザのユーザーは、他の方法を使用して、たとえばオリジンか らオブジェクトを直接取得することで、コンテンツにアクセスする必要があります。 詳細については、「代替ドメイン名と HTTPS の使用 (p. 181)」を参照してください。 デフォルトのルートオブジェクト オプション。ビューアがディストリビューション内のオブジェクト (http://www.example.com/product-description.html)ではなくディストリビューションの ルート URL (http://www.example.com/)を要求するときに、CloudFront が要求する、オリジン からのオブジェクト(index.html など)。デフォルトのルートオブジェクトを指定すると、ディスト リビューションのコンテンツが公開されなくなります。 名前の最大長は 255 文字です。名前には以下の文字を含めることができます。 • • • • A ~ Z、a ~ z 0-9 _-.*$/~"' &。& として受け渡しされます デフォルトのルートオブジェクトを指定する場合、オブジェクト名のみを指定します(例: index.html)。オブジェクト名の前に / を追加しないでください。 詳細については、「デフォルトルートオブジェクトの指定(ウェブディストリビューションの み) (p. 104)」を参照してください。 ログ作成 CloudFront がオブジェクトに対する各リクエストの情報をログに記録し、ログファイルを Amazon S3 バケットに保存するかどうか。ログ作成はいつでも有効または無効にできます。ログ作成を有効にして も追加料金はかかりませんが、Amazon S3 バケットへのファイルの保存と Amazon S3 バケット内の ファイルへのアクセスについては通常の Amazon S3 料金が発生します。ログの削除はいつでも行うこ とができます。CloudFront アクセスログの詳細については、「アクセスログ (p. 194)」を参照してくだ さい。 ログ用のバケット [Logging] で [On] を選択した場合に、CloudFront がアクセスログを保存する Amazon S3 バケット(例: myawslogbucket.s3.amazonaws.com)。ログ作成を有効にした場合、CloudFront はオブジェクト に対する各エンドユーザーリクエストの情報を記録し、ファイルを、指定された Amazon S3 バケット に保存します。ログ作成はいつでも有効または無効にできます。CloudFront アクセスログの詳細につ いては、「アクセスログ (p. 194)」を参照してください。 API Version 2014-01-31 58 Amazon CloudFront 開発者ガイド ディストリビューションの詳細 ログのプレフィックス オプション。[Logging] で [On] を選択した場合、このディストリビューションのアクセスログファイル 名の先頭に CloudFront が追加する文字列(ある場合)を指定します(例: exampleprefix/)。末尾 のスラッシュ(/)はオプションですが、ログファイルの参照を容易にするためにこれを使用すること をお勧めします。CloudFront アクセスログの詳細については、「アクセスログ (p. 194)」を参照してく ださい。 Cookie のログ作成 CloudFront で Cookie をアクセスログに含めるようにするには、[On] を選択します。Cookie をログに 含めるように選択した場合、CloudFront はすべての Cookie をログに記録します。このディストリビュー ションのキャッシュ動作がどのように構成されているか(オリジンにすべての Cookie を転送するか、 Cookie を転送しないか、指定された一連の Coolie を転送するか)は関係ありません。 Amazon S3 は Cookie を処理しません。したがって、ディストリビューションに Amazon EC2 または 他のカスタムオリジンも含まれていない限り、[Cookie Logging] の値に [Off] を選択することをお勧め します。 Cookie の詳細については、「CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う方 法 (p. 86)」を参照してください。 コメント オプション。ディストリビューションを作成するときに、最大で 128 文字のコメントを含めることが できます。コメントの更新はいつでも行うことができます。 ディストリビューションの状態 ディストリビューションがデプロイされた後にディストリビューションを有効または無効のどちらにす るかを示します。 • Enabled: ディストリビューションが完全にデプロイされた後、ディストリビューションのドメイン 名を使用するリンクをデプロイでき、エンドユーザーがコンテンツを取り込むことができます。ディ ストリビューションを有効(Enabled)にすると、CloudFront は、そのディストリビューションに関 連付けられたドメイン名を使用するコンテンツへのエンドユーザーすべてのリクエストを受け付けて 処理します。 CloudFront ディストリビューションの作成、変更、削除を行った場合、その変更が CloudFront デー タベースに伝達されるまで時間がかかります。変更直後に出したディストリビューションに関する情 報のリクエストには、変更が反映されていない可能性があります。通常、伝達は数分以内で完了しま すが、システムの高負荷またはネットワークパーティションによっては、それより時間がかかる可能 性があります。 • Disabled: ディストリビューションがデプロイされ、その使用準備ができていても、エンドユーザー はディストリビューションを使用できません。ディストリビューションを無効にするときはいつで も、そのディストリビューションに関連付けられたドメイン名を使用するコンテンツへのエンドユー ザーリクエストを CloudFront は受け付けません。(ディストリビューションの構成を更新すること で)ディストリビューションを無効から有効に切り替えるまで、誰もディストリビューションを使用 できません。 ディストリビューションの無効と有効は何度でも切り替えることができます。ディストリビューション の構成を更新するプロセスに従います。詳細については、「CloudFront ディストリビューションの一 覧表示、詳細表示、および更新を行う (p. 31)」を参照してください。 API Version 2014-01-31 59 Amazon CloudFront 開発者ガイド Custom Error Pages(カスタムエラーページ)と Error Caching(エラーキャッシュ) Custom Error Pages(カスタムエラーページ)と Error Caching(エラーキャッシュ) Amazon S3 またはカスタムオリジンが HTTP 4xx または 5xx ステータスコードを CloudFront に返す場 合、CloudFront にオブジェクトをビューアーに返させることができます(例: HTML ファイル)。オリ ジンまたはカスタムエラーページからのエラーレスポンスを CloudFront エッジキャッシュにキャッシ ングする時間を指定することもできます。詳細については、「エラーレスポンスのカスタマイズ (p. 99)」 を参照してください。 Note 以下の値は [Create Distribution] ウィザードに含まれていないため、ディストリビューションを 更新するときにのみ、カスタムエラーページを構成することができます。 Error Code(エラーコード) CloudFront から対応するカスタムエラーページが返されるようにする HTTP ステータスコード。 CloudFront がキャッシュする HTTP ステータスコードの全部または一部に対応するカスタムエラーペー ジを返すように、または全く返さないように、CloudFront を構成できます。 Response Page Path(レスポンスページのパス) オリジンが Error Code に指定された HTTP ステータスコード(例: 403)を返すときに、CloudFront が ビューアに返すカスタムエラーページのパス(例: /4xx-errors/403-forbidden.html)。 オブジェ クトとカスタムエラーページを別の場所に保存する場合は、次の状況に該当するときに適用されるキャッ シュ動作をディストリビューションに組み込む必要があります。 • Path Pattern の値が、カスタムエラーメッセージのパスと一致する。例えば、4xx エラーのカスタム エラーページを /4xx-errors というディレクトリーの Amazon S3 バケットに保存したとします。 このとき、パスパターンによってカスタムエラーページのリクエストがルーティングされる場所の キャッシュ動作を、ディストリビューションに組み込む必要があります(例: /4xx-errors/*)。 • Origin の値が、カスタムエラーページを含むオリジンの Origin ID の値を指定している。 Response Code(レスポンスコード) CloudFront からカスタムエラーページとともにビューアに返す HTTP ステータスコード。 Error Caching Minimum TTL(エラーキャッシュ最小 TTL) CloudFront がオリジンサーバーからのエラーレスポンスをキャッシュする最小時間。 制限 特定の国のユーザーをコンテンツにアクセスできなくする必要がある場合、CloudFront ディストリ ビューションを構成して、ホワイトリストに指定した国のユーザーだけにコンテンツへのアクセスを許 可したり、またはブラックリストに指定した国のユーザーにはコンテンツへのアクセスを許可しないよ うにしたりできます。詳細については、「コンテンツの地理的ディストリビューションの制限 (p. 63)」 を参照してください。 Note 以下の値は [Create Distribution] ウィザードに含まれていないため、ディストリビューションを 更新するときにのみ、地域制限を構成できます。 API Version 2014-01-31 60 Amazon CloudFront 開発者ガイド ウェブディストリビューションを作成または更新する場合 に CloudFront がコンソールに表示する値 Enable Geo Restriction(地域制限の有効化) 特定の国のユーザーをコンテンツにアクセスできなくするかどうか。地域制限の構成に追加料金は発生 しません。 Restriction Type(制限タイプ) どの国のユーザーがコンテンツにアクセスできるかを指定する方法。 • ホワイトリスト: Countries リストには、その国のユーザーはコンテンツにアクセスできると指定する すべての国が含まれます。 • ブラックリスト: [Countries] リストには、その国のユーザーはコンテンツにアクセスできないと指定 するすべての国が含まれます。 Countries(国) ホワイトリストまたはブラックリストに追加する国。国を追加するには、左のリストで国を選択して、 [Add] をクリックします。 次の点に注意してください。 • 連続する複数の国を追加するには、最初の国を選択し、Shift キーを押したまま最後の国を選択して、 [Add] をクリックします。 • 連続しない複数の国を追加するには、最初の国を選択肢、Ctrl キーを押したまま残りの国を選択し て、[Add] をクリックします。 • 左のリストで国を見つけるには、国のフルネームの最初の2、3文字を入力します。 • 各国名の前の 2 文字のコードは、CloudFront API を使用してディストリビューションを作成または 更新する場合に入力する値です。国際標準化機構の国コードが使用されています。コード順、国順に 並べ替えることのできる使いやすい一覧については、Wikipedia の ISO 3166-1 alpha-2 の項目を参照 してください。 ウェブディストリビューションを作成または更新 する場合に CloudFront がコンソールに表示する値 新しいウェブディストリビューションの作成や、既存のディストリビューションの更新を行う場合、 CloudFront は以下の情報を CloudFront コンソールに表示します。 Note 有効な信頼済み署名者、つまり有効な CloudFront キーペアを持つ AWS アカウントのうち有効 な署名付き URL の作成に使用できる AWS アカウントは、CloudFront コンソールに現在表示 されません。 ディストリビューション ID ([General] タブ) CloudFront API を使用してディストリビューションに対するアクションを実行する場合、ディストリ ビューション ID を使用して、どのディストリビューションに対してアクションを実行するかを指定し ます(例: EDFDVBD6EXAMPLE)。ディストリビューション ID を変更することはできません。 API Version 2014-01-31 61 Amazon CloudFront 開発者ガイド ディストリビューションのステータス([General] タブ) ディストリビューションのステータス([General] タ ブ) ディストリビューションのステータス値として考えられるものを次の表に示します。 値 説明 InProgress ディストリビューションは依然として作成中または更新中です。 Deployed ディストリビューションの作成または更新が完了し、変更が CloudFront システ ム全体に完全に伝達されました。 Note エンドユーザーが CloudFront を使用してコンテンツにアクセスできるようにするには、ディ ストリビューションのステータスが [Deployed] であることを確認するのに加えて、ディストリ ビューションを有効にする必要があります。詳細については、「ディストリビューションの状 態 (p. 59)」を参照してください。 最終更新日時([General] タブ) ディストリビューションが最後に変更された日時。ISO 8601 形式が使用されます(例: 2012-05-19T19:37:58Z)。詳細については、http://www.w3.org/TR/NOTE-datetime を参照してくださ い。 ドメイン名([General] タブ) オブジェクトへのリンク内で、ディストリビューションのドメイン名を使用します。例えば、ディスト リビューションのドメイン名が d111111abcdef8.cloudfront.net の場合、/images/image.jpg へのリンクは http://d111111abcdef8.cloudfront.net/images/image.jpg になります。ディ ストリビューションの CloudFront ドメイン名を変更することはできません。オブジェクトへのリンク の CloudFront URL の詳細については、「CloudFront オブジェクトの URL の形式 (p. 81)」を参照して ください。 1 つ以上の代替ドメイン名(CNAME)を指定した場合、オブジェクトへのリンクに、CloudFront ドメ イン名ではなく独自のドメイン名を使用できます。CNAME の詳細については、「代替ドメイン名 (CNAME) (p. 56)」を参照してください。 Note CloudFront ドメイン名は一意です。ディストリビューションのドメイン名は以前のディストリ ビューションで使用されておらず、今後の別のディストリビューションでも再利用されませ ん。 API Version 2014-01-31 62 Amazon CloudFront 開発者ガイド Amazon EC2 と他のカスタムオリジンの使用に関する要件 および推奨事項 Amazon EC2 と他のカスタムオリジンの使用に関 する要件および推奨事項 Abstract Amazon EC2 インスタンスおよび他のカスタムオリジンを CloudFront と共に使用する際は、ここで説明した推奨 事項と要件に従います。 Amazon EC2 インスタンスおよび他のカスタムオリジンを CloudFront とともに使用するには、次のガ イドラインに従います。 • すべてのサーバーで同じコンテンツをホストし、供給します。 • すべてのサーバーで X-Amz-Cf-Id ヘッダーエントリをログに記録します。CloudFront はデバッグ のためにこの情報を必要とします。 • カスタムオリジンがリッスンしている HTTP および HTTPS ポートへのアクセスリクエストを制限し ます。 • 実装内のすべてのサーバーの時計を同期します。 • 冗長サーバーを使用して障害に対処します。 • リクエストとレスポンス動作、およびサポートされる HTTP ステータスコードについては、「リク エストとレスポンスの動作 (p. 110)」を参照してください。 カスタムオリジンで Amazon Elastic Compute Cloud を使用する場合は、以下の点に従うことをお勧め します。 1. 2. 3. ウェブサーバーのソフトウェアを自動的にインストールする Amazon マシンイメージを使用しま す。詳細については、Amazon EC2 に関するドキュメントを参照してください。 Elastic Load Balancing ロードバランサーを使用して、複数の Amazon EC2 インスタンスにわたる トラフィックを処理するほかに、Amazon EC2 インスタンスの変更からアプリケーションを隔離 します。例えば、ロードバランサーを使用する場合、アプリケーションを変更せずに Amazon EC2 インスタンスの追加と削除ができます。詳細については、Elastic Load Balancing に関するドキュ メントを参照してください。 CloudFront ディストリビューションを作成する場合は、オリジンサーバーのドメイン名にロード バランサーの URL を指定します。詳細については、「ウェブディストリビューションの使用 (p. 41)」 を参照してください。 コンテンツの地理的ディストリビューションの制 限 エンドユーザーがコンテンツをリクエストすると、通常 CloudFront はユーザーがいる場所に関係なく リクエストされたコンテンツを供給します。特定の国のユーザーをお客様のコンテンツにアクセスでき なくする必要がある場合、CloudFront ウェブディストリビューションを構成して次のいずれかに設定 することができます。 • ホワイトリストに指定された国のユーザーだけにコンテンツのアクセスを許可します。 • ブラックリストに指定された国のユーザーがコンテンツにアクセスできないようにします。 例えば、お客様のコンテンツを配信することが著作権上の理由で許可されていない国からリクエストが 届いた場合、そのリクエストをブロックすることができます。これを地域制限または地理的ブロッキン グと呼びます。 API Version 2014-01-31 63 Amazon CloudFront 開発者ガイド コンテンツの地理的ディストリビューションの制限 Note CloudFront は、サードパーティーの GeoIP データベースを使用して、ユーザーがいる場所を 判別します。IP アドレスと国とのマッピングの正確さは、リージョンによって異なります。最 近のテストによれば、AWS での全体的な正確性は 99.8% です。 地域制限は次のような仕組みになっています。 1. 仮に、自分のコンテンツをリヒテンシュタイン王国でのみ配信する権限を持っているとしましょう。 自分の CloudFront ウェブディストリビューションを更新して、リヒテンシュタイン王国のみを含む ホワイトリストを追加します。(または、リヒテンシュタイン王国以外のすべての国を含むブラッ クリストを追加することもできます。) 2. モナコ王国に住むユーザーがお客様のコンテンツをリクエストすると、DNS はそのリクエストをイ タリア、ミラノにある CloudFront エッジロケーションにルーティングします。 3. ミラノのエッジロケーションはお客さまのディストリビューションを検索し、モナコ王国のユーザー はコンテンツをダウンロードすることは許可されていないと判断します。 4. CloudFront はユーザーに HTTP ステータスコード 403(Forbidden)を返します。 オプションで、ユーザーにカスタムエラーメッセージを返すよう CloudFront を構成することができま すし、リクエストされたオブジェクトのエラーレスポンスを CloudFront がキャッシュする時間を指定 することもできます(デフォルト値は 5 分)。詳細については、「エラーレスポンスのカスタマイ ズ (p. 99)」を参照してください。 地域制限はディストリビューション全体に適用されます。ある一部のコンテンツに特定の制限を適用 し、別の部分のコンテンツに別の制限を適用する(または制限を適用しない)必要がある場合は、別々 の CloudFront ウェブディストリビューションを作成する必要があります。 CloudFront アクセスログの作成を有効にすれば、CloudFront が HTTP ステータスコード 403 を出して 拒否したリクエストを識別することができます。しかし、アクセスログだけでは、ユーザーのいる場所 に基づいて CloudFront が拒否したリクエストと、別の理由でオブジェクトへのアクセス許可がユーザー になかったために CloudFront が拒否したリクエストとを区別することができません。Digital Element や MaxMind などの地理位置情報サービスを利用していれば、アクセスログの c-ip(クライアント IP) 列にある IP アドレスに基づいてリクエストの場所を識別できます。CloudFront アクセスログの詳細に ついては、「アクセスログ (p. 194)」を参照してください。 Note 国境に従わない地理的リージョンでコンテンツの配信を制限する必要がある場合、個別のファ イルの配信を制限したい場合、地域制限をアプリケーションに組み込みたい場合は、CloudFront をサードパーティー製のサービスと組み合わせることができます。詳細については、チュート リアルの「CloudFront ディストリビューション内のファイルへのアクセスを地理的場所に基づ いて制限する(地理的ブロッキング) (p. 258)」を参照してください。 以下の手順では、CloudFront コンソールを使用して、地域制限を既存のウェブディストリビューショ ンに追加する方法を説明します。コンソールを使用してウェブディストリビューションを作成する方法 の詳細については、「ウェブディストリビューションの使用 (p. 41)」を参照してください。 CloudFront コンソールを使用して、地域制限を CloudFront ウェブディストリビューションに 追加するには 1. 2. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 CloudFront コンソールの上部ペインで、更新するディストリビューションを選択します。 API Version 2014-01-31 64 Amazon CloudFront 開発者ガイド オンデマンドスムーズストリーミングの構成 Note 上部のペインには、CloudFront コンソールへのサインイン時に使用された AWS アカウン トに関連付けられたすべてのディストリビューションの一覧が表示されます。 3. [Distribution Settings] ペインで、[Restrictions] タブをクリックします。 tab. 4. 5. 6. [Edit] をクリックします。 適切な値を入力します。詳細については、「制限 (p. 60)」を参照してください。 [Yes, Edit] をクリックします。 オンデマンドスムーズストリーミングの構成 CloudFront を使用して、Microsoft スムーズストリーミング形式に変換したメディアファイルのオンデ マンドストリーミングを実行できます。スムーズストリーミングコンテンツをオンデマンドで配信する には、2 種類の方法があります。 • ディストリビューションのオリジンとして、Microsoft スムーズストリーミング形式に変換したファ イルをストリーミングできるウェブサーバーを指定します。 • CloudFront ディストリビューションでスムーズストリーミングを有効にします。スムーズストリー ミングはキャッシュ動作のプロパティです。つまり、1 つのディストリビューションで、他のコンテ ンツに加えてスムーズストリーミングメディアファイルも配信できます。 スムーズストリーミングを有効にする場合は、以下に注意してください。 • 他のコンテンツがキャッシュ動作の [Path Pattern] の値と一致した場合、同じキャッシュ動作を使用 して、そのコンテンツも配信できます。 • CloudFront は、スムーズストリーミングメディアファイルで Amazon S3 バケットまたはカスタムオ リジンを使用できます。ただし、サーバーがスムーズストリーミング用に構成されている場合、 CloudFront でオリジンとして Microsoft IIS Server を使用することはできません。 • スムーズストリーミング形式のメディアファイルを無効にすることはできません。有効期限が切れる 前にファイルを更新する場合は、ファイルの名前を変更する必要があります。詳細については、「ディ ストリビューション内のオブジェクトの追加、削除、または置換 (p. 88)」を参照してください。 スムーズストリーミングクライアントについては、Microsoft ウェブサイトの「Smooth Streaming Primer」を参照してください。 CloudFront を使用して、スムーズストリーミング形式でファイルをストリーミングできるウェブサー バーを使用しないで、Microsoft スムーズストリーミング形式でエンコードされたメディアファイルの ストリーミングを行うには、以下の作業を実行します。 1. 2. スムーズストリーミングでフラグメント化された MP4 形式にメディアファイルを変換します。ス ムーズストリーミング形式に変換できるアプリケーションの一覧については、Microsoft ウェブサ イトの「Smooth Streaming Primer」を参照してください。 次のいずれかを行ってください。 • CloudFront コンソールを使用している場合: デフォルトのキャッシュ動作、または、既存のウェ ブディストリビューションのカスタムキャッシュ動作を更新して、スムーズストリーミングを有 効にします(ディストリビューションの作成時にスムーズストリーミングを構成することはでき ません。そのため既存のディストリビューションを更新する必要があります)。コンソールを使 用してディストリビューションを更新する方法については、「CloudFront ディストリビューショ ンの一覧表示、詳細表示、および更新を行う (p. 31)」を参照してください。 API Version 2014-01-31 65 Amazon CloudFront 開発者ガイド オンデマンドプログレッシブダウンロードの構成 • CloudFront API を使用している場合: デフォルトのキャッシュ動作またはカスタムキャッシュ動 作の DistributionConfig 複合型に SmoothStreaming エレメントを追加します。 3. 4. 5. スムーズストリーミングプレゼンテーションのファイルを該当するオリジンにアップロードしま す。 clientaccesspolicy.xml または crossdomainpolicy.xml ファイルを作成し、それをディス トリビューションのルートのアクセスできる場所に追加します(例: http://d111111abcdef8.cloudfront.net/clientaccesspolicy.xml)。詳細については、 Microsoft Developer Network ウェブサイトの「Making a Service Available Across Domain Boundaries」を参照してください。 アプリケーションでリンクする場合は、次の形式でクライアントマニフェストを指定します。 http://d111111abcdef8.cloudfront.net/video/presentation.ism/Manifest オンデマンドプログレッシブダウンロードの構成 CloudFront で、プログレッシブダウンロードを使用してメディアファイルを配信するには、以下の作 業を実行します。 1. 2. 3. 4. 該当する場合、メディアファイルを変換します。 CloudFront ウェブディストリビューションを作成します。特別な設定は必要ありません。 ディストリビューションの作成時に指定したオリジンにファイルをアップロードします。 アプリケーション(メディアプレーヤーなど)でリンクする場合、CloudFront を使って配信する 他のオブジェクトと同じ形式でメディアファイルの名前を指定します。詳細については、 「CloudFront オブジェクトの URL の形式 (p. 81)」を参照してください。 オンデマンド Apple HTTP Live Streaming(HLS) の構成 CloudFront で、Apple HTTP Live Streaming(HLS)形式を使用してメディアファイルをストリーミン グ配信するには、以下の作業を実行します。 1. 2. 3. 4. HLS 形式にメディアファイルを変換します。Amazon Elastic Transcoder など、HLS 形式をサポー トする任意の変換アプリケーションを使用できます。 CloudFront ウェブディストリビューションを作成します。特別な設定は必要ありません。 ディストリビューションの作成時に指定したオリジンにファイルをアップロードします。 アプリケーション(メディアプレーヤーなど)でリンクする場合、CloudFront を使って配信する 他のオブジェクトと同じ形式でマスタープレイリストを指定します。詳細については、「CloudFront オブジェクトの URL の形式 (p. 81)」を参照してください。 API Version 2014-01-31 66 Amazon CloudFront 開発者ガイド RTMP ディストリビューションの機能 RTMP ディストリビューションの使 用 Abstract Amazon CloudFront を使用して RTMP ディストリビューションを構成して管理します。 Topics • RTMP ディストリビューションの機能 (p. 67) • RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 69) • CloudFront コンソールを使用した RTMP ディストリビューションの作成 (p. 70) • RTMP ディストリビューションを作成または更新する場合に指定する値 (p. 71) • RTMP ディストリビューションを作成または更新する場合に CloudFront がコンソールに表示する 値 (p. 76) • メディアプレーヤーを構成する (p. 77) • RTMP ディストリビューションのオリジンとして Amazon S3 バケットを使用する (p. 78) • 1 つのオリジンサーバーに対して複数の RTMP ディストリビューションを作成する (p. 79) • Crossdomain.xml を使用してアクセスを制限する (p. 79) • RTMP ディストリビューションのエラーコード (p. 79) • RTMP ディストリビューションをトラブルシューティングする (p. 79) このセクションでは、RTMP ディストリビューションを構成して管理する方法について説明します。 RTMP ディストリビューションを作成する方法については、「RTMP を使用するストリーミングメディ アファイルのタスクリスト (p. 69)」を参照してください。 RTMP ディストリビューションの機能 CloudFront を使用してメディアファイルのストリーミングを行うには、2 種類のファイルをエンドユー ザーに提供します。 • メディアファイル • メディアプレーヤー(例: JW Player、Flowplayer、Adobe Flash) API Version 2014-01-31 67 Amazon CloudFront 開発者ガイド RTMP ディストリビューションの機能 エンドユーザーは、メディアファイルを、そのメディアファイル用に提供されたメディアプレーヤーを 使用して視聴します。エンドユーザーは、自分のコンピューターまたは他のデバイスにすでにインス トールされているメディアプレーヤー(ある場合)を使用しません。 エンドユーザーがメディアファイルのストリーミングを実行すると、メディアプレーヤーは、CloudFront からファイルをダウンロードしながら、ファイルのコンテンツの再生を開始します。メディアファイル はエンドユーザーのシステムにローカルに保存されません。 CloudFront を使用してメディアプレーヤーとメディアファイルの両方を供給するには、2 種類のディス トリビューションが必要です。メディアプレーヤー用のウェブディストリビューションとメディアファ イル用の RTMP ディストリビューションです。ウェブディストリビューションでは HTTP 経由でファ イルが供給されます。RTMP ディストリビューションでは RTMP(または RTMP の変種)経由でメディ アファイルのストリーミングが行われます。 以下の例では、メディアファイルとメディアプレーヤーを Amazon S3 内の異なるバケットに保存する ことを前提としていますが、これは必須ではありません。メディアファイルとメディアプレーヤーは、 同じ Amazon S3 バケットに保存できます。また、CloudFront とカスタムオリジンを使用するなど、別 の方法を使用して、メディアプレーヤーをエンドユーザーが使用できるようにできます。ただし、メ ディアファイルでは、Amazon S3 バケットをオリジンとして使用する必要があります。 以下の図では、お客様のサイトは、メディアプレーヤーのキャッシュされたコピーを d1234.cloudfront.net ドメイン経由で各エンドユーザーに供給します。次に、メディアプレーヤー が、メディアファイルのキャッシュされたコピーに s5678.cloudfront.net ドメイン経由でアクセ スします。 メディアプレーヤーバケットは、メディアプレーヤーを保持しており、通常の HTTP ディスト リビューションのオリジンサーバーになっています。この例では、ディストリビューションの ドメイン名は d1234.cloudfront.net です。(d1234.cloudfront.net の d は、これが ウェブディストリビューションであることを示します。) API Version 2014-01-31 68 Amazon CloudFront 開発者ガイド RTMP を使用するストリーミングメディアファイルのタス クリスト ストリーミングメディアバケットは、メディアファイルを保持しており、RTMP ディストリ ビューションのオリジンサーバーになっています。この例では、ディストリビューションのド メイン名は s5678.cloudfront.net です。(s5678.cloudfront.net の s は、これが RTMP ディストリビューションであることを示します。) メディアファイルを配信するように CloudFront を構成すると、CloudFront は Adobe Flash Media Server 3.5 をストリーミングサーバーとして使用し、Adobe の Real-Time Messaging Protocol (RTMP)を使 用してメディアファイルのストリーミングを行います。CloudFront は、ポート 1935 およびポート 80 経由で RTMP リクエストを受け取ります。 CloudFront は、以下の RTMP プロトコルの変種をサポートします。 • RTMP – Adobe の Real-Time Message Protocol • RTMPT – HTTP でトンネルされた Adobe ストリーミング • RTMPE – 暗号化された Adobe • RTMPTE – 暗号化され、HTTP でトンネルされた Adobe RTMP の基本概要、および Adobe Flash Media Server でサポートされるファイル形式については、 Adobe ウェブサイトにある「Flash Media Server 3 を使用したストリーミングの概要」を参照してくだ さい。概要には、サポートされるコーデックやコンテナに関する情報が含まれます。 インターネットで入手可能なリソースが、Flash ファイルで使用するビットレートの決定に役立つ場合 があります。例えば、Adobe ウェブサイトに「Flash ビデオ(FLV)のビットレート計算」という資料 があります。 CloudFront は、動的ストリーミングに関する、Adobe Flash Media Server 3.5 のすべての機能をサポー トします。動的ストリーミングを使用すると、再生中に、異なる品質のストリームに切り替えることが できます。詳細については、Adobe ウェブサイトにある「Flash Media Server 3.5 の動的ストリーミン グ: パート 1」を参照してください。 ストリームコンテンツを供給するには、エンドユーザーにメディアプレーヤーを提供する必要がありま す。Adobe Flash を使用して、独自のプレーヤーを作成することもできます。詳細については、 http://www.adobe.com/products/flashplayer/ を参照してください。既存のプレーヤーを使用することも できます。詳細については、以下のチュートリアルを参照してください。 • CloudFront および Adobe Flash Player を使用したオンデマンドビデオストリーミング (p. 284) • CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミング (p. 289) • CloudFront および JW Player を使用したオンデマンドビデオストリーミング (p. 294) RTMP を使用するストリーミングメディアファイ ルのタスクリスト Abstract オンデマンドストリーミング用の RTMP ディストリビューションを作成して構成します。 このセクションは、メディアプレーヤーで Adobe RTMP プロトコルを使用してオンデマンドストリー ミングを構成するための一般的なプロセスをまとめたものです。メディアプレーヤーとして Adobe Flash Player、Flowplayer、または JW Player を使用している場合は、代わりに、該当するチュートリ アルを参照してください。 • CloudFront および Adobe Flash Player を使用したオンデマンドビデオストリーミング (p. 284) API Version 2014-01-31 69 Amazon CloudFront 開発者ガイド CloudFront コンソールを使用した RTMP ディストリビュー ションの作成 • CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミング (p. 289) • CloudFront および JW Player を使用したオンデマンドビデオストリーミング (p. 294) 以下のタスクリストでは、ウェブディストリビューションの作成処理の概要について説明します。 RTMP ディストリビューションを作成するには 1. 2. 3. 4. 5. メディアファイル用の Amazon S3 バケットを作成します。メディアプレーヤー用に別の Amazon S3 バケットを使用している場合、そのメディアプレーヤーファイル用の Amazon S3 バケットも 作成します。 バケット名をすべて小文字にする必要があります。また、バケット名にスペースを含めることはで きません。 メディアファイルを再生するメディアプレーヤーを選択して構成します。詳細については、メディ アプレーヤーに関するドキュメントを参照してください。 CloudFront がファイルを取得するオリジンに、メディアプレーヤー用のファイルをアップロード します。メディアプレーヤーのオリジンとして Amazon S3 バケットを使用している場合は、ファ イル(バケットではない)をパブリックに読み出し可能にします。 メディアプレーヤー用のウェブディストリビューションを作成します。(既存のディストリビュー ションを使用することもできます)。詳細については、「ウェブディストリビューションを作成す るためのタスクリスト (p. 42)」を参照してください。 メディアプレーヤー用に作成した Amazon S3 バケットにメディアファイルをアップロードし、コ ンテンツ(バケットではない)をパブリックに読み出し可能にします。 Important Flash Video コンテナ内のメディアファイルには .flv ファイル名拡張子が含まれている必要 があります。含まれていない場合、メディアのストリーミングが行われません。 6. メディアプレーヤーファイルとメディアファイルは、同じバケットに配置できます。 メディアファイル用の RTMP ディストリビューションを作成します。 • CloudFront コンソールを使用してウェブディストリビューションを作成する方法については、 「CloudFront コンソールを使用した RTMP ディストリビューションの作成 (p. 70)」を参照して ください。 • CloudFront API を使用してウェブディストリビューションを作成する方法については、「Amazon CloudFront API リファレンス」の「POST Streaming Distribution」を参照してください。 7. メディアプレーヤーを構成します。詳細については、「メディアプレーヤーを構成する (p. 77)」 を参照してください。 再生するコンテンツの取得に問題がある場合は、「RTMP ディストリビューションをトラブルシュー ティングする (p. 79)」を参照してください。 CloudFront コンソールを使用した RTMP ディスト リビューションの作成 以下の手順では、CloudFront コンソールを使用して RTMP ディストリビューションを作成する方法を 説明します。CloudFront API, を使用して RTMP ディストリビューションを作成する場合は、「Amazon CloudFront API リファレンス」の「POST Streaming Distribution」を参照してください。 API Version 2014-01-31 70 Amazon CloudFront 開発者ガイド RTMP ディストリビューションを作成または更新する場合 に指定する値 AWS アカウントごとに作成できる RTMP ディストリビューションの数に関する現在の制限について は、『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してくださ い。制限の引き上げを要求するには、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 CloudFront コンソールを使用して RTMP ディストリビューションを作成するには 1. 2. 3. 4. 5. 6. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 [Create Distribution] をクリックします。 [Create Distribution Wizard] の最初のページで、[RTMP] をクリックし、[Continue] をクリックしま す。 ディストリビューションの設定項目を指定します。詳細については、「RTMP ディストリビュー ションを作成または更新する場合に指定する値 (p. 71)」を参照してください。 [Create Distribution] をクリックします。 CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。配信を有効にするよう選択すると、リクエストの 処理を行えるようになります。この所要時間は 15 分以内となります。 CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [General] タブに も表示されます。 RTMP ディストリビューションを作成または更新 する場合に指定する値 CloudFront を使用してメディアファイルのストリーミングを行うには、RTMP ディストリビューショ ンを作成し、以下の値を指定します。 Topics • オリジンドメイン名(Amazon S3 バケット) (p. 72) • バケットアクセスの制限(Amazon S3 のみ) (p. 72) • オリジンアクセスアイデンティティ(Amazon S3 のみ) (p. 73) • 新しいアイデンティティに関するコメント(Amazon S3 のみ) (p. 73) • アイデンティティ(Amazon S3 のみ) (p. 73) • バケットに読み取り許可を付与する(Amazon S3 のみ) (p. 73) • 価格クラス (p. 73) • 代替ドメイン名(CNAME) (p. 74) • ログ作成 (p. 74) • ログ用のバケット (p. 74) • ログのプレフィックス (p. 74) • コメント (p. 74) • ディストリビューションの状態 (p. 74) • ビューアのアクセス制限(署名付き URL の使用) (p. 75) • 信頼された署名者 (p. 75) • AWS アカウント番号 (p. 75) API Version 2014-01-31 71 Amazon CloudFront 開発者ガイド オリジンドメイン名(Amazon S3 バケット) オリジンドメイン名(Amazon S3 バケット) CloudFront がこのオリジンのオブジェクトの取得先としている Amazon S3 バケットの DNS ドメイン 名(例: myawsbucket.s3.amazonaws.com)。CloudFront コンソールで [Origin Domain Name] フィー ルドをクリックすると、現在の AWS アカウントに関連付けられた Amazon S3 バケットの一覧が表示 されます。異なる AWS アカウントからのバケットを使用するには、バケットのドメイン名を次の形式 で入力します。 bucket-name.s3.amazonaws.com バケットが米国スタンダードリージョンにあり、バージニア北部にリクエストをルーティングする場合 は、次の形式を使用します。 bucket-name.s3-external-1.amazonaws.com CloudFront のオリジンアクセスアイデンティティを使用して Amazon S3 内のコンテンツを保護しない 限り、ファイルをパブリックに読み出し可能とする必要があります。詳細については、「オリジンアク セスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を参照して ください。 Important バケット名は DNS 命名要件に準拠する必要があります。詳細については、「Amazon Simple Storage Service 開発者ガイド」の「バケットの制約と制限」を参照してください。 CloudFront が現在のオリジンのオブジェクトの取得先としているバケットが変更されると、CloudFront エッジロケーションに対して変更の複製が直ちに開始されます。CloudFront は、該当のエッジロケー ションでディストリビューション構成が更新されるまで、引き続き、リクエストを以前の Amazon S3 バケットに転送します。該当のエッジロケーションでディストリビューション構成が更新されると、 CloudFront は新しい Amazon S3 バケットへのリクエストの転送を直ちに開始します。 バケットを変更しても、CloudFront が、新しいオリジンからのオブジェクトでエッジキャッシュを再 生成する必要はありません。アプリケーション内でビューアのリクエストが変更されていない限り、各 オブジェクトの TTL の有効期限が切れるか、要求頻度の低いオブジェクトが削除されるまで、CloudFront は、引き続き、エッジキャッシュにすでに保持されているオブジェクトを供給します。 詳細については、「RTMP ディストリビューションのオリジンとして Amazon S3 バケットを使用す る (p. 78)」を参照してください。 バケットアクセスの制限(Amazon S3 のみ) Amazon S3 URL ではなく CloudFront URL のみを使用して &S3 バケット内のオブジェクトにアクセス するようエンドユーザーに要求する場合は、[Yes] をクリックします。次に、適用可能な値を指定しま す。 エンドユーザーが CloudFront URL または Amazon S3 URL を使用してオブジェクトにアクセスできる ようにするには、[No] をクリックします。 詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセ スを制限する (p. 131)」を参照してください。 API Version 2014-01-31 72 Amazon CloudFront 開発者ガイド オリジンアクセスアイデンティティ(Amazon S3 のみ) オリジンアクセスアイデンティティ(Amazon S3 の み) [Restrict Bucket Access] で [Yes] を選択した場合、新しいオリジンアクセスアイデンティティを作成す るか、AWS アカウントに関連付けられた既存のオリジンアクセスアイデンティティを使用するかを選 択します。オリジンアクセスアイデンティティがすでにある場合は、それを再利用し、メンテナンスを 簡素化することをお勧めします。オリジンアクセスアイデンティティの詳細については、「オリジンア クセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を参照し てください。 新しいアイデンティティに関するコメント(Amazon S3 のみ) [Origin Access Identity] で [Create a New Identity] を選択した場合、新しいオリジンアクセスアイデン ティティを識別するコメントを入力します。このディストリビューションが作成されると、CloudFront はオリジンアクセスアイデンティティを作成します。 アイデンティティ(Amazon S3 のみ) [Origin Access Identity] で [Use an Existing Identity] を選択した場合、使用するオリジンアクセスアイデ ンティティを選択します。別の AWS アカウントに関連付けられたオリジンアクセスアイデンティティ を使用することはできません。 バケットに読み取り許可を付与する(Amazon S3 の み) CloudFront で、オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取 り許可を自動的に付与するには、[Yes, Update Bucket Policy] をクリックします。 Important [Yes, Update Bucket Policy] をクリックすると、CloudFront は、指定されたオリジンアクセス アイデンティティにバケット内のオブジェクトの読み取り許可を付与するようにバケットポリ シーを更新します。ただし、CloudFront がバケットポリシー内の既存の許可、または個々のオ ブジェクトに対する許可を削除することはありません。現在、Amazon S3 URL を使用してバ ケット内のオブジェクトにアクセスするための許可を持っているユーザーは、CloudFront がバ ケットポリシーを更新した後もその許可を依然として持っています。既存のバケットポリシー、 およびバケット内のオブジェクトに対する既存の許可を表示または変更するには、Amazon S3 から提供される方法を使用します。詳細については、「オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り許可を付与する (p. 134)」を参照してくださ い。 許可を手動で更新する場合、例えば、バケットの許可を更新する代わりにオブジェクトに対する ACL を更新する場合は、[No, I will Update Permissions] をクリックします。 価格クラス CloudFront サービスに支払う上限価格に対応する価格クラス。デフォルトでは、CloudFront は、すべ ての CloudFront リージョンのエッジロケーションからオブジェクトを供給します。 API Version 2014-01-31 73 Amazon CloudFront 開発者ガイド 代替ドメイン名(CNAME) 価格クラスの詳細、および選択した価格クラスがディストリビューションの CloudFront パフォーマン スに与える影響の詳細については、「CloudFront ディストリビューションの価格クラスを選択す る (p. 37)」を参照してください。価格クラスと CloudFront リージョンのマッピングを含め、CloudFront 料金表の詳細については、「Amazon CloudFront 料金表」を参照してください。 代替ドメイン名(CNAME) オプション。1 つ以上の CNAME エイリアスをディストリビューションに関連付けることができます。 これにより、ディストリビューションの作成時に CloudFront によって割り当てられたドメイン名を使 用する代わりに、お客様のドメイン名(例: example.com)をオブジェクトの URL 内で使用できます。 詳細については、「代替ドメイン名(CNAME)を使用する (p. 33)」を参照してください。 ログ作成 CloudFront がオブジェクトに対する各リクエストの情報をログに記録し、ログファイルを Amazon S3 バケットに保存するかどうか。ログ作成はいつでも有効または無効にできます。ログ作成を有効にして も追加料金はかかりませんが、Amazon S3 バケットへのファイルの保存と Amazon S3 バケット内の ファイルへのアクセスについては通常の Amazon S3 料金が発生します。ログの削除はいつでも行うこ とができます。CloudFront アクセスログの詳細については、「アクセスログ (p. 194)」を参照してくだ さい。 ログ用のバケット [Logging] で [On] を選択した場合に、CloudFront がアクセスログを保存する Amazon S3 バケット(例: myawslogbucket.s3.amazonaws.com)。ログ作成を有効にした場合、CloudFront はオブジェクト に対する各エンドユーザーリクエストの情報を記録し、ファイルを、指定された Amazon S3 バケット に保存します。ログ作成はいつでも有効または無効にできます。CloudFront アクセスログの詳細につ いては、「アクセスログ (p. 194)」を参照してください。 ログのプレフィックス オプション。[Logging] で [On] を選択した場合、このディストリビューションのアクセスログファイル 名の先頭に CloudFront が追加する文字列(ある場合)を指定します(例: exampleprefix/)。末尾 のスラッシュ(/)はオプションですが、ログファイルの参照を容易にするためにこれを使用すること をお勧めします。CloudFront アクセスログの詳細については、「アクセスログ (p. 194)」を参照してく ださい。 コメント オプション。ディストリビューションを作成するときに、最大で 128 文字のコメントを含めることが できます。コメントの更新はいつでも行うことができます。 ディストリビューションの状態 ディストリビューションを作成する場合、作成後にディストリビューションを有効または無効のどちら にするかを指定する必要があります。 • Enabled: ディストリビューションが完全にデプロイされた後、ディストリビューションのドメイン 名を使用するリンクをデプロイでき、エンドユーザーがコンテンツを取り込むことができます。ディ ストリビューションを有効(Enabled)にすると、CloudFront は、そのディストリビューションに関 連付けられたドメイン名を使用するコンテンツへのエンドユーザーのすべてのリクエストを受け付け て処理することができます。 API Version 2014-01-31 74 Amazon CloudFront 開発者ガイド ビューアのアクセス制限(署名付き URL の使用) CloudFront ディストリビューションの作成、変更、削除を行った場合、その変更が CloudFront デー タベースに伝達されるまで時間がかかります。変更直後に出したディストリビューションに関する情 報のリクエストには、変更が反映されていない可能性があります。通常、伝達は数分以内で完了しま すが、システムの高負荷またはネットワークパーティションによっては、それより時間がかかる可能 性があります。 • Disabled: ディストリビューションがデプロイされ、その使用準備ができていても、エンドユーザー はディストリビューションを使用できません。ディストリビューションを無効にすると、そのディス トリビューションに関連付けられたドメイン名を使用するコンテンツへのエンドユーザーリクエスト を CloudFront は受け付けません。(ディストリビューションの構成を更新することで)ディストリ ビューションを無効から有効に切り替えるまで、誰もディストリビューションを使用できません。 ディストリビューションの無効と有効は何度でも切り替えることができます。ディストリビューション の構成の更新方法については、「CloudFront ディストリビューションの一覧表示、詳細表示、および 更新を行う (p. 31)」を参照してください。 ビューアのアクセス制限(署名付き URL の使用) このディストリビューションによって供給されるオブジェクトへのリクエストでパブリック URL が使 用される場合、[No] をクリックします。リクエストで署名付き URL を使用する場合、[Yes] をクリッ クします。次に、署名付き URL の作成に使用する AWS アカウントを指定します。このアカウントは 信頼された署名者として知られています。 信頼された署名者の詳細については、「署名付き URL (信頼された署名者)の作成が可能な AWS ア カウントの指定 (p. 137)」を参照してください。 信頼された署名者 このディストリビューションの信頼された署名者として使用する AWS アカウントを選択します。 • Self: 信頼されたアカウントとして AWS Management Console へのサインインに現在使用している アカウントを使用します。現在、IAM ユーザーとしてサインインしている場合は、関連付けられた AWS アカウントを、信頼された署名者として追加します。 • Specify Accounts: 信頼された署名者のアカウント番号を [AWS Account Numbers] フィールドに入力 します。 署名付き URL を作成するには、AWS アカウント番号に少なくとも 1 つのアクティブな CloudFront キーペアが必要です。 Caution コンテンツの配信ですでに使用されているディストリビューションを更新する場合は、オブ ジェクトの署名付き URL の生成を開始する準備ができたときにのみ、信頼された署名者を追 加します。信頼された署名者がディストリビューションに追加されると、ユーザーは、この ディストリビューションで供給されるオブジェクトへのアクセスに、署名付き URL を使用す る必要があります。 AWS アカウント番号 現在のアカウントに加えて、または現在のアカウントの代わりに、AWS アカウントを使用して署名付 き URL を作成する場合、このフィールドの行ごとに 1 つの AWS アカウント番号を入力します。次の 点に注意してください。 • 指定するアカウントに少なくとも 1 つのアクティブな CloudFront キーペアが必要です。詳細につい ては、「信頼された署名者の CloudFront キーペアを作成する (p. 138)」を参照してください。 API Version 2014-01-31 75 Amazon CloudFront 開発者ガイド RTMP ディストリビューションを作成または更新する場合 に CloudFront がコンソールに表示する値 • IAM ユーザーの CloudFront キーペアを作成できないため、信頼された署名者として IAM ユーザーを 使用することはできません。 • アカウントの AWS アカウント番号を取得する方法については、「Amazon Web Services General Reference」の「How Do I Get Security Credentials?」を参照してください。 • 現在のアカウントのアカウント番号を入力した場合、CloudFront は、自動的に [Self] チェックボック スをオンにして、[AWS Account Numbers] リストからアカウント番号を削除します。 RTMP ディストリビューションを作成または更新 する場合に CloudFront がコンソールに表示する値 新しい RTMP ディストリビューションの作成や、既存のディストリビューションの更新を行う場合、 CloudFront は以下の情報を CloudFront コンソールに表示します。 Note 有効な信頼済み署名者、つまり有効な CloudFront キーペアを持つ AWS アカウントのうち有効 な署名付き URL の作成に使用できる AWS アカウントは、CloudFront コンソールに現在表示 されません。 ディストリビューション ID CloudFront API を使用してディストリビューションに対するアクションを実行する場合、ディストリ ビューション ID を使用して、どのディストリビューションに対してアクションを実行するかを指定し ます(例: EDFDVBD6EXAMPLE)。ディストリビューション ID を変更することはできません。 ステータス ディストリビューションのステータス値として考えられるものを次の表に示します。 値 説明 InProgress ディストリビューションは依然として作成中または更新中です。 Deployed ディストリビューションの作成または更新が完了し、変更が CloudFront システ ム全体に完全に伝達されました。 エンドユーザーが CloudFront を使用してコンテンツにアクセスできるようにするには、ディストリ ビューションのステータスが [Deployed] であることを確認するのに加えて、ディストリビューション を有効にする必要があります。詳細については、「ディストリビューションの状態 (p. 74)」を参照し てください。 最終更新日時 ディストリビューションが最後に変更された日時。ISO 8601 形式が使用されます(例: 2012-05-19T19:37:58Z)。詳細については、http://www.w3.org/TR/NOTE-datetime を参照してくださ い。 API Version 2014-01-31 76 Amazon CloudFront 開発者ガイド ドメイン名 ドメイン名 オブジェクトへのリンクには、代替ドメイン名(CNAME)を使用しない限り、ディストリビューショ ンのドメイン名を使用します。例えば、ディストリビューションのドメイン名が d111111abcdef8.cloudfront.net の場合、例の /images/image.jpg ファイルへのリンクは http://d111111abcdef8.cloudfront.net/images/image.jpg になります。ディストリビュー ションの CloudFront ドメイン名を変更することはできません。オブジェクトへのリンクの CloudFront URL の詳細については、「CloudFront オブジェクトの URL の形式 (p. 81)」を参照してください。 1 つ以上の代替ドメイン名(CNAME)を指定した場合、オブジェクトへのリンクに、CloudFront ドメ イン名ではなく独自のドメイン名を使用できます。CNAME の詳細については、「代替ドメイン名 (CNAME) (p. 56)」を参照してください。 Note CloudFront ドメイン名は一意です。ディストリビューションのドメイン名は以前のディストリ ビューションで使用されておらず、今後の別のディストリビューションでも再利用されませ ん。 メディアプレーヤーを構成する メディアファイルを再生するには、ファイルへの正しいパスを使用してメディアプレーヤーを構成する 必要があります。メディアの構成方法は、使用するメディアプレーヤーと、メディアプレーヤーの使用 方法によって異なります。 メディアプレーヤーを構成する場合、メディアファイルに指定するパスのドメイン名の直後に文字 cfx/st を含める必要があります。次に例を示します。 rtmp://s5c39gqb8ow64r.cloudfront.net/cfx/st/mediafile.flv。 Note CloudFront は、Adobe の FMS 命名要件に従います。各プレーヤーには、ストリームの指定方 法に関して独自のルールがあります。上の例は、JW Player 用です。プレーヤーのドキュメン トを確認してください。例えば、Adobe の Flash Media Server は、.flv 拡張子が再生パスに 含まれることを許可しません。多くのプレーヤーが .flv 拡張子を自動で削除します。 メディアプレーヤーが、ファイル名から切り離されたパスを要求する場合があります。例えば、JW Player ウィザードでは、変数 streamer および file を指定します。 • streamer – rtmp://s5c39gqb8ow64r.cloudfront.net/cfx/st(末尾のスラッシュなし) • file – mediafile.flv バケット内のディレクトリにメディアファイルを保存している場合(例: videos/mediafile.flv)、 JW Player の変数は次のようになります。 • streamer – rtmp://s5c39gqb8ow64r.cloudfront.net/cfx/st(末尾のスラッシュなし) • file – videos/mediafile.flv JW Player ウィザードを使用するには、JW Player ウェブサイトの「Setup Wizard」ページにアクセス します。 API Version 2014-01-31 77 Amazon CloudFront 開発者ガイド MPEG ファイル MPEG ファイル MP3 オーディオファイルまたは H.264/MPEG-4 ビデオファイルを供給するには、ファイル名の先頭に プレフィックス mp3: または mp4: を追加することが必要になる場合があります。メディアプレーヤー によっては、プレフィックスを自動で追加するように構成できます。メディアプレーヤーは、ファイル 拡張子のないファイル名の指定を要求する場合もあります(例: magicvideo.mp4 ではなく magicvideo)。 RTMP ディストリビューションのオリジンとして Amazon S3 バケットを使用する ディストリビューションを作成するときに、CloudFront がエッジロケーションに配信するファイルを CloudFront がどの場所で取得するかを指定します。RTMP ディストリビューションの場合、Amazon S3 バケットを使用する必要があります。カスタムオリジンはサポートされません。オブジェクトをバ ケットに挿入するには、Amazon S3 でサポートされる任意の方法を使用できます(例: Amazon S3 API、サードパーティツール)。他の Amazon S3 バケットと同様に、バケット内に階層を作成できま す。バケットへのオブジェクトの保存には、通常の Amazon S3 料金が発生します。CloudFront の使用 料の詳細については、「CloudFront の請求および使用状況レポート (p. 8)」を参照してください。 既存の Amazon S3 バケットを CloudFront オリジンサーバーとして使用してもバケットに変更は一切 ありません。Amazon S3 オブジェクトの保存やアクセスで通常使用しているとおりに(通常の Amazon S3 価格で)バケットを使用できます。 RTMP ディストリビューションとウェブディストリビューションに同じ Amazon S3 バケットを使用で きます。 Note RTMP ディストリビューションを作成した後で、そのオリジンサーバーを変更することはでき ません。RTMP ディストリビューションの Amazon S3 バケットを変更する必要がある場合は、 新しいバケットを使用する新しいディストリビューションを作成し、新しいディストリビュー ションのドメイン名を使用するようにリンクまたは DNS レコードを更新する必要があります。 その後、オリジナルのディストリビューションを削除できます。詳細については、「ディスト リビューションを削除する (p. 32)」を参照してください。 CloudFront がオブジェクトの取得先としている Amazon S3 バケットの名前をお客様が指定する場合、 一般に次の形式を使用します。 bucket-name.s3.amazonaws.com バケットが米国スタンダードリージョンにあり、バージニア北部にリクエストをルーティングする場合 は、次の形式を使用します。 bucket-name.s3-external-1.amazonaws.com 以下の値を使用してバケットの名前を指定しないでください。 • Amazon S3 のパススタイル(s3.amazonaws.com/bucket-name) • Amazon S3 の CNAME (ある場合) API Version 2014-01-31 78 Amazon CloudFront 開発者ガイド 1 つのオリジンサーバーに対して複数の RTMP ディストリ ビューションを作成する Important バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったものでなけ ればなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」の「バ ケットの制約と制限」を参照してください。 1 つのオリジンサーバーに対して複数の RTMP ディ ストリビューションを作成する 通常、Amazon S3 バケットごとに 1 つの RTMP ディストリビューションを作成しますが、同じバケッ トに対して複数の RTMP ディストリビューションを作成するように選択できます。例えば、1 つの Amazon S3 バケットに 2 つのディストリビューションがある場合、どちらかのディストリビューショ ンを使用して 1 つのメディアファイルを参照できます。この場合、オリジンサーバーに media.flv と いうメディアファイルがあると、CloudFront は、個々の media.flv オブジェクトを参照したかのよう に、各ディストリビューションを操作します。1 つのディストリビューションで 1 つの media.flv に アクセスでき、もう 1 つのディストリビューションで別の media.flv にアクセスできます。 Crossdomain.xml を使用してアクセスを制限する Adobe Flash Media Server の crossdomain.xml ファイルには、特定のドメイン内のメディアファイ ルにどのドメインがアクセスできるかを指定します。CloudFront はデフォルトファイルを提供します。 デフォルトファイルでは、すべてのドメインが RTMP ディストリビューション内のメディアファイル にアクセスすることが許可されます。この動作を変更することはできません。より制限のある crossdomain.xml ファイルを Amazon S3 バケットに含めた場合、CloudFront はそれを無視します。 RTMP ディストリビューションのエラーコード 以下の表に、CloudFront がメディアプレーヤーに送信する可能性があるエラーコードを示します。エ ラーコードは、Event.info.application.message または Event.info.description で返され る文字列の一部です。 エラー 説明 DistributionNotFound ディストリビューションが見つかりませんでした。 DistributionTypeMismatch ディストリビューションが RTMP ディストリビューション ではありません。 InvalidInstance インスタンスが無効です。 InvalidURI URI が無効です。 RTMP ディストリビューションをトラブルシュー ティングする メディアファイルの再生に問題がある場合、以下の項目を確認してください。 API Version 2014-01-31 79 Amazon CloudFront 開発者ガイド RTMP ディストリビューションをトラブルシューティング する 確認項目 説明 メディアプレーヤーファ イル用のディストリ ビューションとメディア ファイル用のディストリ ビューションを分けま す。 メディアプレーヤーは通常の HTTP ディストリビューションによって供給 される必要があり(例: ドメイン名 d111111abcdef8.cloudfront.net)、メ ディアファイルは RTMP ディストリビューションによって供給される必要 があります(例: ドメイン名 s5c39gqb8ow64r.cloudfront.net)。この 2 つ に対して同じディストリビューションを使用していないことを確認します。 ファイルパス内の /cfx/st ファイルのパスに /cfx/st が含まれていることを確認します。Amazon S3 バケット内のオブジェクトへのパスに、/cfx/st を含める必要はありませ ん。詳細については、「メディアプレーヤーを構成する (p. 77)」を参照し てください。 MPEG-4 ファイル名 一部のメディアプレーヤーでは、ファイル名の前に mp4: が必要です。.mp4 拡張子の除外を要求するメディアプレーヤーもあります。詳細については、 「MPEG ファイル (p. 78)」を参照してください。 ファイアウォールのポー Adobe Flash Media Server は、RTMP 用にポート 1935 を使用します。ファ ト 1935 イアウォールでこのポートが開かれていることを確認します。開かれてい ない場合、"ビデオを再生できない" ことを示す一般的なメッセージが返さ れます。ポート 80 を使用して HTTP でトンネルするように、RTMPT に切 り替えることもできます。 Adobe Flash Player メッ デフォルトでは、Adobe Flash Player は、再生しようとしているビデオファ セージング イルがない場合にメッセージを表示しません。代わりに、Adobe Flash Player は、ファイルが現れるまで待機します。エンドユーザーの操作性を高める には、この動作の変更が必要になる場合があります。 ビデオがない場合にプレーヤーからメッセージを送信するには、 play("vid") の代わりに play("vid",0,-1) を使用します。 API Version 2014-01-31 80 Amazon CloudFront 開発者ガイド CloudFront オブジェクトの URL の形式 オブジェクトの使用 Abstract CloudFront でオブジェクトを使用する方法の基本について説明します。 Topics • CloudFront オブジェクトの URL の形式 (p. 81) • CloudFront が HTTP および HTTPS リクエストを処理する方法 (p. 84) • CloudFront がクエリ文字列パラメータの転送、キャッシュ、およびログ作成を行う方法 (p. 84) • CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う方法 (p. 86) • ディストリビューション内のオブジェクトの追加、削除、または置換 (p. 88) • エラーレスポンスのカスタマイズ (p. 99) • CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 (p. 103) • デフォルトルートオブジェクトの指定(ウェブディストリビューションのみ) (p. 104) • 圧縮ファイルの供給 (p. 107) このセクションでは、CloudFront でオブジェクトを使用する方法について説明します。 CloudFront オブジェクトの URL の形式 Abstract CloudFront オブジェクトを操作するときに使用できる URL の形式について説明します。 Topics • Amazon S3 内のオブジェクトのパブリック URL の形式 (p. 82) • カスタムオリジン内のオブジェクトのパブリック URL の形式 (p. 83) • パブリック URL がディレクトリの無効化に与える影響 (p. 83) • 署名付き URL の形式 (p. 84) ディストリビューションを作成すると、そのディストリビューションに関連付けられた CloudFront ド メイン名を受け取ります。オブジェクトへのリンクを作成する場合にこのドメイン名を使用します。別 API Version 2014-01-31 81 Amazon CloudFront 開発者ガイド Amazon S3 内のオブジェクトのパブリック URL の形式 のドメイン名(例: www.example.com)があり、それを使用する場合は、CNAME エイリアスを追加 できます。詳細については、「代替ドメイン名(CNAME)を使用する (p. 33)」を参照してください。 CloudFront ディストリビューション内のオブジェクトへのアクセスをエンドユーザーに与える URL を 作成する場合は、その URL をパブリック URL または署名付き URL にします。 パブリック URL を使用すると、ユーザーは以下のオブジェクトにアクセスできます。 • 制限のないオブジェクト。 • エンドユーザーが CloudFront 経由でアクセスする必要があり、署名付き URL を必要としない Amazon S3 バケット内のオブジェクト。Amazon S3 URL を使用してこれらのオブジェクトにアクセスする ことはできません。 署名付き URL を必要とするように構成されたキャッシュ動作に指定されたオブジェクトへのアクセス には、署名付き URL が必要です。オブジェクトのリクエスト(例: image.jpg)が複数のキャッシュ 動作のパスパターンに一致する場合、CloudFront は、ディストリビューション内で最初に設定されて いるキャッシュ動作に基づいてリクエストを処理します。最初のキャッシュ動作で署名付き URL が要 求されず、2 番目のキャッシュ動作で署名付き URL が要求される場合、エンドユーザーは署名付き URL なしで image.jpg にアクセスできます。 パスパターンを含め、キャッシュ動作の詳細については、「キャッシュ動作の設定 (p. 51)」を参照し てください。署名付き URL の詳細については、「CloudFront を使用してプライベートコンテンツを供 給する (p. 126)」を参照してください。 Amazon S3 内のオブジェクトのパブリック URL の 形式 Amazon S3 バケット内のオブジェクトのパブリック URL では、以下の形式が使用されます。 http://<CloudFront domain name>/<object name in Amazon S3 bucket> Important ディストリビューションでストリーミングコンテンツを供給する場合は、ファイルへのパスに 追加の文字が必要になります。詳細については、「メディアプレーヤーを構成する (p. 77)」を 参照してください。 例えば、mybucket という Amazon S3 バケットがあるとします。このバケットに は、/images/image.jpg というパブリックに読み出し可能なオブジェクトが含まれます。 CloudFront ディストリビューションを作成し、mybucket.s3.amazonaws.com をこのディストリ ビューションのオリジンサーバーとして指定します。CloudFront は、ディストリビューションのドメ イン名として d111111abcdef8.cloudfront.net を返し、ディストリビューション ID として EDFDVBD6EXAMPLE を返します。 この例では、オブジェクトにアクセスするための URL として、次の URL をエンドユーザーに提供しま す。 http://d111111abcdef8.cloudfront.net/images/image.jpg。 ウェブディストリビューションでは、コンテンツを複数の Amazon S3 バケットに保存する場合、URL の形式は同じです。つまり、URL に Amazon S3 バケットに関する情報は含まれません。リクエストを 該当のバケットにルーティングするには、バケットごとにオリジンを作成し、リクエストを各オリジン にルーティングする 1 つ以上のキャッシュ動作を作成します。キャッシュ動作のパスパターンには、そ のキャッシュ動作に関連付けられたオリジン(Amazon S3 バケット)にどのリクエストをルーティン グするかを指定します。CloudFront ディストリビューションにおけるオリジンおよびキャッシュ動作 API Version 2014-01-31 82 Amazon CloudFront 開発者ガイド カスタムオリジン内のオブジェクトのパブリック URL の 形式 の設定の詳細については、「ウェブディストリビューションを作成または更新する場合に指定する 値 (p. 46)」を参照してください。 Amazon S3 バケットの名前およびパスの詳細については、「Amazon Simple Storage Service 開発者ガ イド」の「バケットの仮想ホスティング」を参照してください。 エンドユーザーがこのオブジェクトにアクセスすると、CloudFront は、常に、適切なエッジロケーショ ンからオブジェクトを供給します。オブジェクトがエッジロケーションにない場合、CloudFront は、 EDFDVBD6EXAMPLE ディストリビューション(mybucket.s3.amazonaws.com)に関連付けられたオ リジンサーバーにアクセスし、エッジロケーション用のオブジェクトのコピーを取得して、エンドユー ザーに供給します。 カスタムオリジン内のオブジェクトのパブリックURL の形式 カスタムオリジン内のオブジェクトのパブリック URL の形式は、Amazon S3内のオブジェクトのパブ リック URL と良く似ています。 http://<CloudFront domain name>/<object name in custom origin> オブジェクトがオリジンサーバーのフォルダにある場合は、CloudFront URL にそのフォルダ名を含め る必要があります。例えば、image.jpg が images フォルダにある場合、URL は次のようになりま す。 http://d111111abcdef8.cloudfront.net/images/image.jpg CloudFront は、パブリック URL 内のオブジェクトのパスと名前を使用して、ディストリビューション の作成時に指定されたドメインからオブジェクトを取得します。例えば、カスタムオリジンのドメイン が example.com であり、オブジェクトのパスと名前が /images/image.jpg の場合、CloudFront は オブジェクトを次の場所から取得します。 http://example.com/images/image.jpg コンテンツを複数のカスタムオリジンに保存する場合、URL の形式は同じです。URL にカスタムオリ ジンに関する情報は含まれません。リクエストを該当のカスタムオリジンにルーティングするには、オ リジンを各カスタムオリジンのディストリビューションに追加し、リクエストを各オリジンにルーティ ングする 1 つ以上のキャッシュ動作を作成します。キャッシュ動作のパスパターンには、そのキャッ シュ動作に関連付けられたオリジンにどのリクエストをルーティングするかを指定します。CloudFront ディストリビューションにおけるオリジンおよびキャッシュ動作の設定の詳細については、「ウェブ ディストリビューションを作成または更新する場合に指定する値 (p. 46)」を参照してください。 パブリック URL がディレクトリの無効化に与える影 響 ディレクトリへのアクセスをエンドユーザーに提供する CloudFront URL を使用する場合、次のよう に、末尾のスラッシュ(/)を付けるかどうかに関して、同じ URL 形式を常に使用することをお勧めし ます。 http://d111111abcdef8.cloudfront.net/images/ http://d111111abcdef8.cloudfront.net/images ブラウザおよび他のウェブアプリケーションは、この両方の形式を同じディレクトリに解決します。た だし、CloudFront は、パブリック URL を指定されたとおりに正確に保存します。ディレクトリを無効 にする場合は、全く同じディレクトリを指定する必要があります。スラッシュを含めるかどうかについ ても正確に指定します。ディレクトリの指定方法に関して標準がない場合は、スラッシュを付けた形式 API Version 2014-01-31 83 Amazon CloudFront 開発者ガイド 署名付き URL の形式 とスラッシュを付けない形式を使用してディレクトリを無効にして、CloudFront がディレクトリをエッ ジロケーションから削除したことを確認する必要があります。1 か月の無料の無効化回数の上限に達し た場合、この 2 つのディレクトリのうち 1 つしか存在しない場合でも、お客様は両方の無効化に対し て料金を支払う必要があります。 署名付き URL の形式 署名付き URL を使用すると、エンドユーザーは、プライベートコンテンツを供給するように構成され たディストリビューション内のオブジェクトにアクセスできます。URL には、キャッシュされたオブ ジェクトへのアクセスを制限する特別な情報が含まれます。署名付き URL の形式の詳細については、 「CloudFront を使用してプライベートコンテンツを供給する (p. 126)」を参照してください。 CloudFront が HTTP および HTTPS リクエストを 処理する方法 Abstract CloudFront が HTTP および HTTPS プロトコルの両方でリクエストを処理する方法について説明します。 Amazon S3 オリジンの場合、デフォルトでは、CloudFrontは、HTTP および HTTPS プロトコルで、 CloudFront ディストリビューション内のオブジェクトのリクエストを受け取ります。次に、CloudFront は、リクエストと同じプロトコルを使用して、リクエストを Amazon S3 バケットに転送します。 カスタムオリジンでは、ディストリビューションを作成する場合、CloudFront がオリジンにアクセス する方法を指定できます(HTTP のみか、ビューアが使用しているプロトコルと一致させる)。カスタ ムオリジンにおいて CloudFront が HTTP および HTTPS リクエストを処理する方法については、「プ ロトコル (p. 119)」を参照してください。 エンドユーザーが HTTPS を使用してのみオブジェクトにアクセスできるようにウェブディストリビュー ションを制限する方法については、「HTTPS 接続を使用したオブジェクトへのアクセス (p. 178)」を参 照してください。(このオプションは、RTMP プロトコルを使用する RTMP ディストリビューション には適用されません)。 Note HTTPS リクエストの料金は HTTP リクエストの料金よりも高くなります。請求料率の詳細に ついては、CloudFront 料金表体系を参照してください。 CloudFront がクエリ文字列パラメータの転送、 キャッシュ、およびログ作成を行う方法 Abstract CloudFront がクエリ文字列パラメータのオリジンへの転送、キャッシュ、ログ作成を行う方法について説明しま す。 ウェブディストリビューションでは、CloudFront からクエリ文字列パラメータがオリジンに転送され るようにするかどうかを選択できます。RTMP ディストリビューションでは、クエリ文字列パラメータ がオリジンに転送されるように CloudFront を構成することはできません。 この両方の種類のディストリビューションにおいて、ログ作成を有効にした場合、CloudFront は、ク エリ文字列パラメータを含め、完全な URL をログに記録します。ウェブディストリビューションでは、 API Version 2014-01-31 84 Amazon CloudFront 開発者ガイド クエリ文字列パラメータとウェブディストリビューション クエリ文字列が転送されるように CloudFront を構成したかどうかに関係なく、そのようになります。 CloudFront ログ作成の詳細については、「アクセスログ (p. 194)」を参照してください。 詳細については、該当するトピックを参照してください。 • クエリ文字列パラメータとウェブディストリビューション (p. 85) • クエリ文字列パラメータと RTMP ディストリビューション (p. 86) クエリ文字列パラメータとウェブディストリビュー ション ウェブディストリビューションでは、CloudFront がオリジンにリクエストを転送するときにクエリ文 字列を含めるかどうかを指定できます。例えば、次の URL の ?parameter1=a パートを CloudFront か ら転送するかどうかを指定できます。 http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter1=a クエリ文字列をオリジンに転送するように CloudFront を構成した場合、CloudFront は、オブジェクト をキャッシュするときに URL のクエリ文字列部分を含めます。例えば、以下のクエリ文字列によって CloudFront は 3 つのオブジェクトをキャッシュします。これは、オリジンがクエリ文字列に関係なく 常に同じ image.jpg を返す場合も当てはまります。 • http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter1=a • http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter1=b • http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter1=c オリジンがクエリ文字列に基づいてオブジェクトの別のバージョン(例: /images/image.jpg)を返 す場合は、CloudFront コンソールの [Forward Query Strings] で [Yes] を選択します。または、CloudFront API を使用する場合は、DistributionConfig 複合型の QueryString エレメントの値に true を指 定します。 オリジンがクエリ文字列に関係なくオブジェクトの同じバージョンを返す場合は、[No] を選択するか、 false を指定します。これにより、CloudFront がキャッシュからリクエストを処理できる可能性が高 くなり、パフォーマンスが向上し、オリジンの負荷が低下します。 クエリ文字列では、パラメータの順序が重要になります。クエリ文字列をオリジンに転送するように CloudFront を構成した場合、以下のクエリ文字列によって CloudFront は 2 つのオブジェクトをキャッ シュします。 • http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter1=a¶meter2=b • http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter2=b¶meter1=a また、クエリ文字列では、大文字小文字も重要になります。クエリ文字列をオリジンに転送するように CloudFront を構成した場合、以下のクエリ文字列によって CloudFront は 2 つのオブジェクトをキャッ シュします。 • http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter1=a • http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter1=A 署名付き URL を使用してコンテンツへのアクセスを制限している場合(信頼された署名者をディスト リビューションに追加した場合)、CloudFront は以下のクエリ文字列パラメータを削除してから URL の残りをオリジンに転送します。 API Version 2014-01-31 85 Amazon CloudFront 開発者ガイド クエリ文字列パラメータと RTMP ディストリビューション • Expires • Key-Pair-Id • Policy • Signature つまり、署名付き URL を使用しており、クエリ文字列パラメータをオリジンに転送するように CloudFront を構成している場合、独自のクエリ文字列パラメータに Expires、Key-Pair-Id、Policy、または Signature という名前を付けることはできません。 クエリ文字列パラメータと RTMP ディストリビュー ション RTMP ディストリビューションでは、CloudFront は、オリジンサーバーからのオブジェクトをリクエ ストする場合にすべてのクエリ文字列パラメータを削除します。例えば、CloudFront が次のリクエス トを受け取り、media.flv が CloudFront キャッシュにまだ存在していないと仮定します。 http://d111111abcdef8.cloudfront.net/media/media.flv?parameter1=a この場合、次の URL がオリジンサーバーに送信されます。 http://d111111abcdef8.cloudfront.net/media/media.flv CloudFront が Cookie の転送、キャッシュ、およ びログ作成を行う方法 Abstract CloudFront が Cookie のオリジンへの転送、キャッシュ、ログ作成を行う方法について説明します。 HTTP および HTTPS のウェブディストリビューションでは、CloudFront で Cookie をオリジンに転送 するかどうかを選択できます。RTMP ディストリビューションでは、Cookie を処理するように CloudFront を構成することはできません。 Important Amazon S3 および一部の HTTP サーバーは Cookie を処理しません。Cookie を処理しないオ リジンに Cookie を転送するように CloudFront キャッシュ動作を構成しないでください。キャッ シュ可能性が低下します。つまり、パフォーマンスが低下します。 Cookie とウェブディストリビューション ウェブディストリビューションでは、CloudFront で Cookie をオリジンに転送するかどうかを選択でき ます。転送するように選択した場合は、CloudFront ですべての Cookie を転送するか、または指定され た Cookie のみを転送するかを選択できます。指定された Cookie のみを転送する場合、転送する Cookie のホワイトリストを指定します。Cookie 設定は、CloudFront がどの Cookie をオリジンに転送するか にのみ影響します。オリジンが Cookie を CloudFront に返す場合、CloudFront は、ディストリビュー ションの Cookie 設定に関わらず、それをすべてビューアに転送します。 キャッシュ動作ごとにホワイトリストに登録できる Cookie 名の数に関する現在の制限については、 『Amazon Web Services General Reference』の「Amazon CloudFront の上限」を参照してください。 制限の引き上げを要求するには、 API Version 2014-01-31 86 Amazon CloudFront 開発者ガイド Cookie とウェブディストリビューション https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を参照してください。 Note オリジンに Cookie を転送するように CloudFront を構成していない場合、CloudFront は、オリ ジンに転送するリクエストから Cookie ヘッダーを削除し、クライアントに返すレスポンスか ら Set-Cookie ヘッダーを削除します。 Cookie をオリジンに転送するように CloudFront を構成した場合、以下の処理が行われます。 • CloudFront は、リクエストをオリジンに転送するときに、Cookie の名前と値のペアを含めますが、 Cookie の属性(パス、有効期限切れ時間など)を含めません。例えば、以下の Cookie ヘッダーで は、CloudFront は、Cookie の名前と値のペア country=ata を転送しますが、Cookie 属性 $Path=/ を転送しません。 Cookie: country=ata; $Path=/; • 指定された Cookie のリストのみを転送するように CloudFront を構成した場合、CloudFront は、リ クエストをオリジンに転送する前に、リストにないすべての Cookie を削除します。 • If-Modified-Since および If-None-Match の条件付きリクエストはサポートされません。 • CloudFront は、リクエストをオリジンに転送する前に、Cookie 名の自然な順序で Cookie を並べ替 えます。 オリジンから CloudFront に Cookie が返されると、以下の処理が行われます。 • 特定のキャッシュ動作においてすべての Cookie をオリジンに転送するように CloudFront を構成し ている場合、CloudFront は、オリジンから返された応答およびすべての Cookie と Cookie 属性を キャッシュします。また、CloudFront は、オブジェクトおよびすべての Cookie と Cookie 属性を ビューアに返します。 • 特定のキャッシュ動作において、指定された Cookie のみをオリジンに転送するように CloudFront を構成している場合、CloudFront は、応答、指定された Cookie、および関連する Cookie 属性を キャッシュします。また、CloudFront は、指定された Cookie と Cookie 属性を含めて、オブジェク トをビューアに返します。 オリジンがホワイトリストに登録された Cookie と登録されていない Cookie の両方を返した場合、 CloudFront はホワイトリストに登録された Cookie のみをキャッシュします。ただし、ホワイトリス トに登録されているかどうかにかかわらず、Cookie はすべてビューアに返されます。 • CloudFront で Cookie と Cookie 属性をキャッシュしない場合は、CloudFront への応答に以下のヘッ ダーを追加するようにオリジンサーバーを構成します。 no-cache="Set-Cookie" Cookie をオリジンに転送するように CloudFront を構成した場合、CloudFront は、ビューアがリクエス トに含めた Cookie を使用して、キャッシュ内のオブジェクトを一意に識別します。例えば、オブジェ クト /images/image1.jpg に対する 3 つのリクエストがあり、それらに 3 つの異なる名前と値のペ アが含まれる場合、CloudFront は、名前と値のペアごとに 1 回ずつ、同じオブジェクトを 3 回キャッ シュします。これは、オリジンがリクエスト内の Cookie 値を無視し、同じ image1.jpg オブジェクト を CloudFront に常に返す場合にも当てはまります。結果として、同じオブジェクトのリクエストを CloudFront がオリジンサーバーに転送する回数が多くなり、パフォーマンスが低下し、オリジンサー バーの負荷が高くなります。特定の Cookie の値に基づいてオリジンサーバーの応答が変わることがな い場合は、その Cookie をオリジンに転送しないように CloudFront を構成することをお勧めします。 Cookie 名と値は、大文字と小文字を区別します。例えば、同じオブジェクトに対する 2 つの Cookie があり、それらの名前が、大文字小文字が異なる以外は同一の場合、CloudFront はそのオブジェクト を 2 回キャッシュします。 API Version 2014-01-31 87 Amazon CloudFront 開発者ガイド Cookie と RTMP ディストリビューション Cookie をオリジンに転送しないように CloudFront を構成した場合や、指定された Cookie のリストの みを転送するように CloudFront を構成した場合でも、リクエストと Cookie をログに記録するように CloudFront を構成した場合、CloudFront はすべての Cookie とすべての Cookie 属性をログに記録しま す。CloudFront ログ作成の詳細については、「アクセスログ (p. 194)」を参照してください。 CloudFront コンソールを使用し、CloudFront で Cookie をオリジンに転送するようにディストリビュー ションを更新する方法については、「CloudFront ディストリビューションの一覧表示、詳細表示、お よび更新を行う (p. 31)」を参照してください。CloudFront API を使用してディストリビューションを 更新する方法については、「Amazon CloudFront API リファレンス」の「PUT Distribution Config」を 参照してください。 Cookie と RTMP ディストリビューション RTMP ディストリビューションでは、CloudFront は、オリジンサーバーからのオブジェクトを要求す る場合、すべての Cookie を削除してからリクエストをオリジンに転送します。オリジンがオブジェク トとともに何らかの Cookie を返した場合、CloudFront は、オブジェクトをビューアに返す前にその Cookie を削除します。RTMP ディストリビューションでは、CloudFront は Cookie をエッジキャッシュ にキャッシュしません。 RTMP ディストリビューションでは、Cookie をログに記録するように CloudFront を構成することはで きません。 ディストリビューション内のオブジェクトの追加、 削除、または置換 Abstract CloudFront ディストリビューションのオブジェクトを追加、削除、置換します。 オブジェクトをディストリビューションに追加する方法については、「CloudFront ディストリビュー ションへのオブジェクトの追加 (p. 88)」を参照してください。 ディストリビューション内のオブジェクトを置き換える場合は、バージョン付きのオブジェクト名を使 用することをお勧めします。詳細については、「バージョン付きのオブジェクト名を使用した既存オブ ジェクトの更新 (p. 89)」を参照してください。同じ名前のオブジェクトでオブジェクトを置き換える こともできます。「同じオブジェクト名を使用した既存オブジェクトの更新 (p. 89)」を参照してくだ さい。ディストリビューション内のオブジェクトを置き換えるのにどのような方法を選択したかに関係 なく、オブジェクトを CloudFront キャッシュから削除するタイミングを指定することをお勧めします。 詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切 れ) (p. 90)」を参照してください。 オブジェクトをディストリビューションから直ちに削除する必要がある場合は、オブジェクトを無効に することができます。詳細については、「オブジェクトの無効化(ウェブディストリビューションの み) (p. 94)」を参照してください。 CloudFront ディストリビューションへのオブジェク トの追加 Abstract CloudFront で配布するオブジェクトを追加します。 API Version 2014-01-31 88 Amazon CloudFront 開発者ガイド バージョン付きのオブジェクト名を使用した既存オブジェ クトの更新 オブジェクトをオリジンに追加する場合、オブジェクトをディストリビューション内の Amazon S3 バ ケットの 1 つに追加しているか、カスタムオリジンの場合は指定されたドメイン内のディレクトリに追 加していることを確認してください。 オブジェクトをオリジンに追加し、オブジェクトへの CloudFront リンクを公開する場合、CloudFront エッジロケーションは、オブジェクトのエンドユーザーリクエストを受け取るまで、オリジンからオブ ジェクトをフェッチしません。 CloudFront サーバーは、供給するオブジェクトの MIME タイプを判別しません。オブジェクトをオリ ジンにアップロードする場合、オブジェクトの Content-Type ヘッダーフィールドを設定する必要が あります。 バージョン付きのオブジェクト名を使用した既存オ ブジェクトの更新 Abstract コンテンツを識別するバージョン付きのオブジェクト名を使用して、CloudFront で現在配布しているオブジェクト を更新します。 CloudFront ディストリビューション内の既存のオブジェクトを更新する場合、何らかのバージョン識 別名をオブジェクト名またはディレクトリ名に含めて、コンテンツを容易に制御できるようにすること をお勧めします。この識別名には、日付タイムスタンプ、連番など、同じオブジェクトの 2 つのバー ジョンを区別する方法を使用できます。 例えば、グラフィックファイルに image.jpg ではなく image_1.jpg という名前を付けることができま す。ファイルの新しいバージョンを供給する場合は、新しいファイルに image_2.jpg という名前を付け て、image_2.jpg を指すようにリンクを更新します。また、すべてのグラフィックを images_v1 ディレ クトリに配置することもできます。1 つ以上のグラフィックの新しいバージョンを供給する場合は、新 しい images_v2 ディレクトリを作成し、そのディレクトリを指すようにリンクを更新します。バージョ ニングを行うことで、CloudFront で新しいバージョンの供給を開始するのにオブジェクトの有効期限 切れを待つ必要がなくなり、オブジェクトの無効化に対して料金を支払う必要もなくなります。 オブジェクトにバージョンを設定した場合も、有効期限切れ日付を設定することをお勧めします。詳細 については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切 れ) (p. 90)」を参照してください。 Note バージョン付きのオブジェクト名またはディレクトリ名の指定は、Amazon S3 オブジェクトの バージョニングとは関係がありません。 同じオブジェクト名を使用した既存オブジェクトの 更新 Abstract 同じオブジェクト名を使用して、CloudFront で現在配布しているオブジェクトを更新します。 CloudFront ディストリビューション内の既存のオブジェクトを更新し、同じオブジェクト名を使用す ることできますが、これはお勧めしません。CloudFront は、オブジェクトが要求された場合にのみ、 オブジェクトをエッジロケーションに配信します。新しいまたは更新されたオブジェクトがオリジンに 配置された場合ではありません。オリジン内の既存のオブジェクトを同じ名前の新しいバージョンで更 新した場合、以下の両方のイベントが発生するまで、エッジロケーションはオリジンから新しいバー ジョンを取得しません。 API Version 2014-01-31 89 Amazon CloudFront 開発者ガイド CloudFront エッジキャッシュにオブジェクトを保持する時 間の指定(有効期限切れ) • キャッシュ内にあるオブジェクトの旧バージョンが有効期限切れになった。詳細については、 「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切れ) (p. 90)」を 参照してください。 • エッジロケーションにオブジェクトのエンドユーザーリクエストが存在する。 オブジェクトを置き換えるときに同じ名前を使用した場合、CloudFront で新しいファイルの供給を開 始するタイミングを制御できません。デフォルトでは、CloudFront はエッジロケーションのキャッシュ にオブジェクトを 24 時間保持します。(詳細については、「CloudFront エッジキャッシュにオブジェ クトを保持する時間の指定(有効期限切れ) (p. 90)」を参照してください)。例えば、ウェブサイト 全体のすべてのオブジェクトを置き換えると仮定します。 • 人気のないページのオブジェクトは、どのエッジロケーションにも存在しない可能性があります。こ れらのオブジェクトの新しいバージョンについては、次回のリクエストで供給が開始されます。 • ページによっては、そのオブジェクトが一部のエッジロケーションに存在し、他のエッジロケーショ ンに存在しない場合があります。したがって、供給元のエッジロケーションによって、エンドユー ザーに表示されるバージョンが異なります。 • 最も人気のあるページの新しいバージョンのオブジェクトは、最大で 24 時間供給されない可能性が あります。そのようなページのオブジェクトは、新しいバージョンで置き換えられる直前に、 CloudFront が取り込んでいる可能性があるためです。 CloudFront エッジキャッシュにオブジェクトを保持 する時間の指定(有効期限切れ) Abstract オブジェクトが CloudFront キャッシュとブラウザキャッシュに保持される時間を制御します。 Topics • ウェブディストリビューションで CloudFront がキャッシュにオブジェクトを保持する最小時間の 指定 (p. 92) • RTMP ディストリビューションで CloudFront がキャッシュにオブジェクトを保持する最小時間の 指定 (p. 93) • Amazon S3 コンソールを使用したオブジェクトへのヘッダーの追加 (p. 93) CloudFront が別のリクエストをオリジンに転送するまでにオブジェクトを CloudFront キャッシュに保 持する時間を制御できます。この期間を短くすると、動的なコンテンツを供給できます。この期間を長 くすると、カスタマーはより良いパフォーマンスを得ることができます。オブジェクトがエッジキャッ シュから直接供給される可能性が高くなるためです。期間を長くすると、オリジンの負荷も軽減されま す。 Note CloudFront がオリジンに別のリクエストを転送して、リクエストされたオブジェクトを再度取 得することを試みるまでに、エラー(例: 404 Not found)が CloudFront キャッシュに保持され る時間を制御することもできます。詳細については、「CloudFront が HTTP 4xx および 5xx ス テータスコードを処理およびキャッシュする方法 (p. 123)」を参照してください。 通常、CloudFront は、オブジェクトが有効期限切れになるまで、エッジロケーションからオブジェク トを供給します。オブジェクトが有効期限切れになると、エッジロケーションがオブジェクトのエンド ユーザーリクエストを次に受け取ったときに、CloudFront は、リクエストをオリジンサーバーに転送 し、キャッシュにオブジェクトの最新バージョンが含まれていることを確認します。 API Version 2014-01-31 90 Amazon CloudFront 開発者ガイド CloudFront エッジキャッシュにオブジェクトを保持する時 間の指定(有効期限切れ) • CloudFront に最新バージョンがすでにある場合、オリジンはステータスコード 304 (変更なし)の みを返します。 • CloudFront に最新バージョンがない場合、オリジンはステータスコード 200 (OK)とオブジェクト の最新バージョンを返します。 エッジロケーションにあるオブジェクトのうち、頻繁に要求されないオブジェクトは、CloudFront に よって削除される場合があります。つまり、オブジェクトが有効期限切れ日付前に削除されます。これ により、人気のあるオブジェクト用にスペースが確保されます。 デフォルトでは、各オブジェクトは 24 時間後に自動的に有効期限切れになります。別の有効期限切れ 時間を指定するには、Cache-Control max-age ディレクティブまたは Expires ヘッダーフィール ドの値を各オブジェクトに追加するようにオリジンを構成します。 • Cache-Control max-age ディレクティブでは、CloudFront がオリジンサーバーからオブジェクト を再度取得するまでにオブジェクトをキャッシュに保持する時間(秒)を指定できます。CloudFront がサポートする最小の有効期限切れ時間は、ウェブディストリビューションで 0 秒、RTMP ディス トリビューションで 3600 秒です。最大で 2038 年までです。値は次の形式で指定します。 Cache-Control: max-age= 例えば、次のディレクティブは CloudFront に関連付けられているオブジェクトを 3600 秒(1 時間) キャッシュに保持するよう指示します。 Cache-Control: max-age=3600 ブラウザキャッシュに保持される期間とは異なる期間、オブジェクトを CloudFront エッジキャッシュ に保持する場合、Cache-Control max-age ディレクティブと Cache-Control s-maxage ディレ クティブを併用できます。詳細については、「ウェブディストリビューションで CloudFront がキャッ シュにオブジェクトを保持する最小時間の指定 (p. 92)」を参照してください。 • Expires ヘッダーフィールドでは、「RFC 2616、ハイパーテキスト転送プロトコル –– HTTP/1.1 セ クション 3.3.1、完全な日付」に規定された形式を使用して、有効期限切れ日時を指定できます。 Sat, 30 Jun 2012 23:59:59 GMT Important Expires ヘッダー内の有効期限切れ日時が経過すると、エッジロケーションがオブジェクト のリクエストを受け取るたびに、CloudFront はオリジンサーバーからオブジェクトを再取得 します。 オブジェクトのキャッシュを制御するには、Expires ヘッダーフィールドではなく、Cache-Control max-age ディレクティブを使用することをお勧めします。Cache-Control max-age と Expires の 両方の値を指定した場合、CloudFront は max-age の値のみを使用します。 エンドユーザーからの GET リクエスト内にある HTTP Cache-Control または Pragma ヘッダーフィー ルドを使用して、オリジンサーバーに戻ってオブジェクトを取得するように CloudFront を強制するこ とはできません。CloudFront は、エンドユーザーからのそのようなヘッダーフィールドを無視します。 Cache-Control および Expires ヘッダーフィールドの詳細については、「RFC 2616、ハイパーテキ スト転送プロトコル –– HTTP/1.1」の以下のセクションを参照してください。 • セクション 14.9 キャッシュ制御 • セクション 14.21 期限 API Version 2014-01-31 91 Amazon CloudFront 開発者ガイド CloudFront エッジキャッシュにオブジェクトを保持する時 間の指定(有効期限切れ) AWS SDK for PHP を使用して Cache-Control および Expires ヘッダーフィールドを追加する方法 の例については、「Amazon Simple Storage Service 開発者ガイド」の「AWS SDK for PHP を使用し た 1 つのオブジェクトのアップロード」を参照してください。これらのフィールドを追加できるサード パーティツールもあります。 ウェブディストリビューションで CloudFront がキャッシュにオ ブジェクトを保持する最小時間の指定 ウェブディストリビューションでは、Cache-Control または Expires ヘッダーをオブジェクトに追 加する場合、別のリクエストをオリジンに転送するまでに CloudFront がキャッシュにオブジェクトを 保持する最小時間を指定できます。これらのヘッダーは、別のリクエストを CloudFront に転送するま でにブラウザがオブジェクトをキャッシュに保持する期間に影響します。 最小 TTL = 0 (デフォルト) 最小 TTL > 0 オリジンが Cache-Control CloudFront とブラウザーは、 • CloudFront キャッシュ: オブ ジェクトは、Cache-Control max-age ディレクティブをオブ Cache-Control max-age ディ レクティブのオブジェクトを max-age ディレクティブの ジェクトに追加する キャッシュ します。 値、または CloudFront の [Minimum TTL] の値のうち、ど ちらか大きいほうの時間、 キャッシュに保持されます。 • ブラウザキャッシュ: オブジェ クトは、Cache-Control max-age ディレクティブの値 の間、キャッシュに保持されま す。 オリジンが Cache-Control • CloudFront キャッシュ: オブ • CloudFront キャッシュ: 24 時 ジェクトが 24 時間キャッシュ 間または CloudFront の max-age ディレクティブを追加 されます。 [Minimum TTL] のうち、どちら しない か大きいほうの時間、オブジェ • ブラウザキャッシュ: ブラウザ クトがキャッシュに保持されま によります。 す。 • ブラウザキャッシュ: ブラウザ によります。 オリジンが Cache-Control max-age と Cache-Control s-maxage ディレクティブをオ ブジェクトに追加する • CloudFront キャッシュ: オブ • CloudFront キャッシュ: オブ ジェクトは、Cache-Control ジェクトは、Cache-Control s-maxage ディレクティブの s-maxage ディレクティブの 値の間、キャッシュに保持さ 値、または CloudFront の れます。 [Minimum TTL] の値のうち、ど ちらか大きいほうの時間、 • ブラウザキャッシュ: オブジェ キャッシュに保持されます。 クトは、Cache-Control max-age ディレクティブの値 • ブラウザキャッシュ: オブジェ クトは、Cache-Control の間、キャッシュに保持され max-age ディレクティブの値 ます。 の間、キャッシュに保持されま す。 API Version 2014-01-31 92 Amazon CloudFront 開発者ガイド CloudFront エッジキャッシュにオブジェクトを保持する時 間の指定(有効期限切れ) 最小 TTL = 0 (デフォルト) 最小 TTL > 0 オリジンが Expires ヘッダーを CloudFront およびブラウザーは • CloudFront キャッシュ: Expires ヘッダーの日付までオ Expires ヘッダーの日付まで 追加する ブジェクトをキャッシュしま オブジェクトがキャッシュに保 す。この日付を超えると、 持されます。この日付を超える CloudFront は各リクエストをオ と、オブジェクトは、 リジンに転送します。 CloudFront の [Minimum TTL] の値の間、キャッシュに保持さ れます。 • ブラウザキャッシュ: Expires ヘッダーの日付までオブジェク トがキャッシュに保持されま す。この日付を超えると、ブラ ウザはリクエストをすべて CloudFront に転送します。 オリジンが、Cache-Control CloudFront とブラウザはヘッ no-cache、no-store、および ダーを尊重します。 private ディレクティブ、また はこのいずれかをオブジェクト に追加する • CloudFront キャッシュ: 最小 TTL の期間、オブジェクトが キャッシュに保持されます。 • ブラウザキャッシュ: ブラウザ はヘッダーを優先します。 CloudFront コンソールを使用してウェブディストリビューションの設定を変更する方法については、 「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 31)」を参照して ください。CloudFront API を使用してウェブディストリビューションの設定を変更する方法について は、「PUT Config」を参照してください。 RTMP ディストリビューションで CloudFront がキャッシュに オブジェクトを保持する最小時間の指定 RTMP ディストリビューションでは、CloudFront はオブジェクトをエッジキャッシュにデフォルトで 24 時間保持します。Cache-Control または Expires ヘッダーをオブジェクトに追加して、CloudFront が別のリクエストをオリジンに転送するまでのキャッシュ保持期間を 1 時間(3600 秒)までに減らす ことができます。それより低い値を指定しても、CloudFront は 3600 秒を使用します。 Amazon S3 コンソールを使用したオブジェクトへのヘッダーの 追加 Note Amazon S3 コンソールを使用した場合、1 回で 1 つのオブジェクトにのみヘッダーを追加でき ますが、一部のサードパーティツールを使用した場合、1 回で複数の Amazon S3 オブジェク トにヘッダーを追加できます。Amazon S3 をサポートするサードパーティツールの詳細につい ては、ウェブで AWS S3 を検索してください。 API Version 2014-01-31 93 Amazon CloudFront 開発者ガイド オブジェクトの無効化(ウェブディストリビューションの み) Amazon S3 コンソールを使用して、Cache-Control または Expires ヘッダーフィールドを Amazon S3 オブジェクトに追加するには 1. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/)を開きます。 2. 3. 4. Amazon S3 コンソールの [Buckets] ペインで、ファイルを含むバケットの名前をクリックします。 [Objects and Folders] ペインで、ヘッダーフィールドの追加先とする最初のオブジェクトを選択し ます。 [Objects and Folders] ペインの上部で、[Actions]、[Properties] の順にクリックします。 5. 6. [Properties] ペインで、[Metadata] タブをクリックします。 [Metadata] タブで、[Add More Metadata] をクリックします。 7. 8. [Key] リストで、必要に応じて [Cache-Control] または [Expires] をクリックします。 [Value] フィールドに適用可能な値を入力します。 • [Cache-Control] フィールドでは、次のように入力します。 max-age=number of seconds that you want objects to stay in a CloudFront edge cache • [Expires] フィールドでは、日時を HTML 形式で入力します。 9. [Save] をクリックします。 10. ヘッダーフィールドを他のオブジェクトに追加する場合は、[Objects and Folders] ペインで、次の オブジェクトの名前をクリックし、ステップ 6 ~ 9 を繰り返します。 オブジェクトの無効化(ウェブディストリビューショ ンのみ) Abstract 有効期限が切れる前にオブジェクトを無効にすることで、CloudFront ディストリビューションキャッシュからオブ ジェクトを削除します。 Topics • オブジェクトを無効化するか、バージョン付きオブジェクト名を使用するかの選択 (p. 95) • 無効にするオブジェクトの決定 (p. 95) • オブジェクトの無効化および無効化に関する情報の表示 (p. 95) • オブジェクトを無効にするためのサードパーティツール (p. 98) • 無効化の制限 (p. 98) • オブジェクトの無効化に対する支払い (p. 99) オブジェクトが有効期限切れになる前に CloudFront エッジサーバーキャッシュからオブジェクトを削 除する場合、以下のどちらかの処理を行うことができます。 • オブジェクトを無効にします。エンドユーザーが次にオブジェクトを要求したときに、CloudFront はオリジンに戻ってオブジェクトの最新バージョンをフェッチします。 • オブジェクトのバージョニングを使用して、異なる名前を持つ異なるバージョンのオブジェクトを供 給します。詳細については、「バージョン付きのオブジェクト名を使用した既存オブジェクトの更 新 (p. 89)」を参照してください。 API Version 2014-01-31 94 Amazon CloudFront 開発者ガイド オブジェクトの無効化(ウェブディストリビューションの み) Important ウェブディストリビューションで提供されるほとんどの種類は無効にできます。しかし、該当 するキャッシュ動作についてスムーズストリーミングを有効にしても、Microsoft スムーズスト リーミング形式のメディアファイルを無効にすることはできません。さらに、RTMP ディスト リビューションで供給されるオブジェクトを無効にすることはできません。 月ごとに、指定された数のオブジェクトを無料で無効にできます。この制限を超えると、無効にするオ ブジェクトごとに料金が発生します。例えば、ディレクトリとディレクトリ内のすべてのファイルを無 効にする場合、ディレクトリと各ファイルを個々に無効にする必要があります。多数のファイルを無効 にする必要がある場合は、新しいディストリビューションを作成し、その新しいディストリビューショ ンを参照するようにオブジェクトパスを変更する方法が、容易で安価な場合があります。無効化に関す る料金の詳細については、「オブジェクトの無効化に対する支払い (p. 99)」を参照してください。 オブジェクトを無効化するか、バージョン付きオブジェクト名 を使用するかの選択 ディストリビューションから供給されるオブジェクトのバージョンを制御するには、オブジェクトを無 効にするか、バージョン付きファイル名をオブジェクトに設定します。オブジェクトを頻繁に更新する 必要がある場合は、以下の理由で、オブジェクトのバージョニングを第一に使用することをお勧めしま す。 • バージョニングを使用すると、ローカルにキャッシュされている、または企業のキャッシュプロキシ の背後にキャッシュされているバージョンをエンドユーザーが保持している場合でも、リクエストが どのオブジェクトを返すかを制御できます。オブジェクトを無効にした場合、キャッシュ内でオブ ジェクトが有効期限切れになるまで、ユーザーに旧バージョンが引き続き表示されることがありま す。 • CloudFront アクセスログにファイル名が含まれるので、バージョニングを使用すると、オブジェク トの変更結果の分析が容易になります。 • バージョニングは、さまざまなバージョンのオブジェクトをさまざまなエンドユーザーに供給する方 法を提供します。 • バージョニングによって、オブジェクトのリビジョン間のロールフォワードとロールバックが簡素化 されます。 • バージョニングのほうがコストが安くなります。CloudFront が新しいバージョンのオブジェクトを エッジロケーションに転送することに関して料金を支払う必要がありますが、オブジェクトの無効化 に関してファイル単位で料金を支払う必要はありません。 オブジェクトのバージョニングの詳細については、「バージョン付きのオブジェクト名を使用した既存 オブジェクトの更新 (p. 89)」を参照してください。 無効にするオブジェクトの決定 すべての CloudFront エッジキャッシュ内のすべてのオブジェクトを無効にする必要があり、ユーザー がオリジンのすべてのオブジェクトに必ずしもアクセスしない場合は、ビューアが CloudFront からど のオブジェクトを要求したかを確認し、そのオブジェクトのみを無効にできます。ビューアがどのオブ ジェクトを要求したかを確認するには、CloudFront アクセスログの作成を有効にします。アクセスロ グの詳細については、「アクセスログ (p. 194)」を参照してください。 オブジェクトの無効化および無効化に関する情報の表示 CloudFront コンソールまたは CloudFront API アクションを使用して、無効化の作成と実行、以前に送 信された無効化のリストの表示、および個々の無効化に関する詳細情報の表示を行うことができます。 また、既存の無効化のコピー、オブジェクトパスのリストの編集、および編集された無効化の実行を行 うこともできます。 API Version 2014-01-31 95 Amazon CloudFront 開発者ガイド オブジェクトの無効化(ウェブディストリビューションの み) 該当するトピックを参照してください。 • CloudFront コンソールを使用したオブジェクトの無効化 (p. 96) • CloudFront コンソールを使用した既存の無効化のコピー、編集、および再実行 (p. 97) • CloudFront コンソールを使用した無効化のリストの表示 (p. 98) • CloudFront コンソールを使用した無効化に関する情報の表示 (p. 98) • CloudFront API を使用したオブジェクトの無効化および無効化に関する情報の表示 (p. 98) CloudFront コンソールを使用したオブジェクトの無効化 作成する無効化の数に制限はありませんが、進行中のディストリビューションごとに含めることができ る無効化は 1 回につき 3 個のみです。各リクエストには、無効にするオブジェクトを最大で 1000 個含 めることができます。これらの制限を超えた場合、CloudFront コンソールにエラーメッセージが表示 されます。現在進行中の無効化の数を確認するには、[Invalidations] タブの [Status] 列を確認します。 CloudFront コンソールを使用してオブジェクトを無効にするには 1. 2. 3. 4. 5. 6. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 無効にするオブジェクトのディストリビューションをクリックします。 [Distribution Settings] をクリックします。 [Invalidations] タブをクリックします。 [Create Invalidation] をクリックします。 無効にするオブジェクトのパスを入力します。次の点に注意してください。 • ウェブディストリビューションに関連付けられたオブジェクトのみを無効にできます。 • CloudFront からの供給を停止する各オブジェクトおよび各ディレクトリを明示的に無効にする 必要があります。ワイルドカードを使用してオブジェクトのグループを無効にすることはできま せん。また、ディレクトリパスを指定してディレクトリ内のすべてのオブジェクトを無効するこ ともできません。 • パスはディストリビューションを基準とする相対パスです。先頭の / はオプションです。例え ば、http://d111111abcdef8.cloudfront.net/images/image2.jpg のオブジェクトを無 効にするには、次のように指定します。 /images/image2.jpg または images/image2.jpg • クエリ文字列をオリジンに転送するように CloudFront を構成している場合、オブジェクトを無 効にするときにクエリ文字列を含める必要があります。例えば、次のように指定します。 • images/image.jpg?parameter1=a • images/image.jpg?parameter1=b 同じオブジェクトに対する 5 つの異なるクエリ文字列がクライアントリクエストに含まれている 場合、そのオブジェクトを、クエリ文字列ごとに 1 回ずつ、5 回無効にする必要があります。詳 細については、「CloudFront がクエリ文字列パラメータの転送、キャッシュ、およびログ作成 を行う方法 (p. 84)」を参照してください。使用中のクエリ文字列を確認するには、CloudFront ログ作成を有効にすることができます。詳細については、「アクセスログ (p. 194)」を参照して ください。 • 署名付き URL を使用している場合は、URL の疑問符(?)の前の部分のみを含めてオブジェク トを無効にします。 • オブジェクトがディレクトリであり、ディレクトリの指定方法(末尾のスラッシュ(/)を付け るかどうか)に関して標準化されていない場合、末尾のスラッシュを付けたものと付けないもの API Version 2014-01-31 96 Amazon CloudFront 開発者ガイド オブジェクトの無効化(ウェブディストリビューションの み) を使用してディレクトリを無効にすることをお勧めします(例: images および images/)。詳 細については、「パブリック URL がディレクトリの無効化に与える影響 (p. 83)」を参照してく ださい。 • 最大で 1000 個のオブジェクトを指定できます。 • パスの最大長は 4000 文字です。 • デフォルトルートオブジェクトを無効にする場合、他のオブジェクトのパスを指定する場合と同 じ方法でパスを指定します。 • パスに ASCII 以外の文字が含まれるか、RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt)に規定 された安全でない文字が含まれる場合、その文字を URL エンコードします。パスに含まれる他 の文字を URL エンコードしないでください。URL エンコードした場合、CloudFront は、更新さ れたオブジェクトの旧バージョンを無効にしません。 • オリジンに Cookie を転送するように CloudFront を構成した場合、CloudFront エッジキャッシュ にオブジェクトの複数のバージョンが含まれている場合があります。オブジェクトを無効にする と、CloudFront は、関係付けられた Cookie に関係なく、そのオブジェクトのキャッシュされた あらゆるバージョンを無効にします。一部のバージョンを選択して無効にすることも、関連付け られた Cookie に基づいてその他のバージョンを選択して無効にすることもできません。詳細に ついては、「CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う方法 (p. 86)」を 参照してください。 7. [Invalidate] をクリックします。 CloudFront コンソールを使用した既存の無効化のコピー、編集、および再実行 以前に作成した無効化をコピーし、オブジェクトパスのリストを更新して、更新した有効化を実行する ことができます。既存の無効化をコピーし、オブジェクトパスを更新して、更新した無効化を実行せず に保存することはできません。 Important 進行中の無効化をコピーし、オブジェクトパスのリストを更新して、更新した無効化を実行し た場合、コピーした無効化を CloudFront が停止または削除することはありません。あるオブ ジェクトパスがオブジェクトとコピーの両方に含まれる場合、CloudFront はこのオブジェクト の無効化を 2 回試みます。この 2 回の無効化は月ごとの無料の無効化の最大数に対してカウン トされます。無料で行うことができる有効化の最大数にすでに達している場合は、各オブジェ クトの両方の無効化に対して料金が発生します。詳細については、「無効化の制限 (p. 98)」を 参照してください。 CloudFront コンソールを使用して、既存の無効化のコピー、編集、および再実行を行う 1. 2. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 コピーする無効化が含まれるディストリビューションをクリックします。 3. 4. [Distribution Settings] をクリックします。 [Invalidations] タブをクリックします。 5. コピーする無効化をクリックします。 6. コピーする無効化が不明な場合は、無効化をクリックし、[Details] をクリックすると、その無効化 の詳細情報が表示されます。 [Copy] をクリックします。 7. 8. 必要に応じて、オブジェクトパスのリストを更新します。 [Invalidate] をクリックします。 API Version 2014-01-31 97 Amazon CloudFront 開発者ガイド オブジェクトの無効化(ウェブディストリビューションの み) CloudFront コンソールを使用した無効化のリストの表示 コンソールを使用して、ディストリビューションにおいて作成および実行された最後の 100 個の無効 化のリストを表示できます。100 個を超える無効化のリストを取得する場合は、GET Invalidation List API アクションを使用します。詳細については、「Amazon CloudFront API リファレンス」の「GET Invalidation List」を参照してください。 CloudFront コンソールを使用して、無効化のリストを表示するには 1. 2. 3. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 無効化リストの表示の対象となるディストリビューションをクリックします。 [Distribution Settings] をクリックします。 4. [Invalidations] タブをクリックします。 CloudFront コンソールを使用した無効化に関する情報の表示 ディストリビューション ID、無効化 ID、無効化のステータス、無効化が作成された日時、オブジェク トパスの完全リストを含め、無効化に関する詳細情報を表示できます。 CloudFront コンソールを使用して、無効化に関する情報を表示するには 1. 2. 3. 4. 5. 6. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 詳細情報の表示の対象となる無効化が含まれるディストリビューションをクリックします。 [Distribution Settings] をクリックします。 [Invalidations] タブをクリックします。 詳細情報の表示の対象となる無効化をクリックします。 [Details] をクリックします。 CloudFront API を使用したオブジェクトの無効化および無効化に関する情報の 表示 オブジェクトの無効化に関する情報、および CloudFront API, を使用して無効化に関する情報を表示す る方法については、「Amazon CloudFront API リファレンス」の該当するトピックを参照してくださ い。 • オブジェクトの無効化: POST Invalidation • 無効化のリストの取得: GET Invalidation List • 特定の無効化に関する情報の取得: GET Invalidation オブジェクトを無効にするためのサードパーティツール CloudFront から提供される無効化方法に加えて、いくつかのサードパーティツールでオブジェクトを 無効にするための方法が提供されます。ツールのリストについては、「オブジェクトの無効化 (p. 301)」 を参照してください。 無効化の制限 実行する無効化リクエストの数に制限はありませんが、進行中のディストリビューションごとに含める ことができる無効化リクエストは 1 回につき 3 個のみです。各リクエストには、無効にするオブジェ API Version 2014-01-31 98 Amazon CloudFront 開発者ガイド エラーレスポンスのカスタマイズ クトを最大で 1000 個含めることができます。この制限を超えた場合、CloudFront はエラーメッセージ を返します。 Note 通常、CloudFront が無効化リクエストを完了するまで、リクエストのサイズに応じて 10 ~ 15 分かかります。 オブジェクトの無効化に対する支払い 1 か月に要求したオブジェクトの無効化のうち、最初の 1000 個は無料です。1 か月に 1000 個を超え る、オブジェクトの各無効化に対して支払いが発生します。この上限は、1 つの AWS アカウントで作 成されたすべてのディストリビューションにおいて行われたオブジェクトの無効化の総数に適用されま す。例えば、AWS アカウント [email protected] を使用して 3 個のディストリビューションを作成 したとします。ある月に、各ディストリビューションに 600 個のオブジェクトの無効化(合計で 1,800 個の無効化)が含まれました。この場合、AWS は、その月に 800 個のオブジェクトの無効化に対して 料金を請求します。無効化の料金表に関する具体的な情報については、「Amazon CloudFront 料金表」 を参照してください。 Note 無効化の料金表の目的上、オブジェクトの無効化リクエストは 1 つの Path エレメントオブ ジェクトとして定義されます。Path エレメントの詳細については、「オブジェクトの無効化 および無効化に関する情報の表示 (p. 95)」を参照してください。 エラーレスポンスのカスタマイズ Abstract オブジェクトを使用できないときにカスタムエラーメッセージを表示します。 Topics • カスタムエラーページのキャッシュ動作を作成または更新する (p. 100) • レスポンスコードを変更する (p. 101) • CloudFront がエラーをキャッシュする時間を制御する (p. 101) • カスタムエラーページが利用不可である場合の CloudFront の応答 (p. 102) • カスタムエラーページの料金 (p. 102) • エラーレスポンス動作を構成する (p. 102) CloudFront から供給されているオブジェクトが何らかの理由で使用できなくなったとき、通常、ウェ ブサーバーは CloudFront に HTTP ステータスコードを返します。例えば、ビューアが無効な URL を 指定している場合、ウェブサーバーは 404 ステータスコードを CloudFront に返し、CloudFront はその ステータスコードをビューアに返します。ビューアには、次のような簡潔で特に書式設定されていない デフォルトメッセージが表示されます。 Not Found: The requested URL /myfilename.html was not found on this server. デフォルトメッセージはなく、お客様のウェブサイトの他のページと同じ書式設定のカスタムエラー メッセージを表示することを希望する場合は、カスタムエラーメッセージを含むオブジェクト(例: HTML ファイル)が CloudFront からビューアに返されるようにすることができます。 API Version 2014-01-31 99 Amazon CloudFront 開発者ガイド カスタムエラーページのキャッシュ動作を作成または更新 する サポートされている HTTP ステータスコードごとに異なるオブジェクトを指定することができます。 または、サポートされているすべてのステータスコードに同じオブジェクトを使用することもできま す。一部のステータスコードにオブジェクトを指定して、それ以外には指定しないことも可能です。 CloudFront を通して供給されているオブジェクトは、様々な理由で使用できなくなることがあります。 理由は、大きく 2 つに分類できます。以下にそれぞれを説明します。 • クライアントエラーは、リクエストに問題があります。例えば、指定した名前のオブジェクトを取得 できない、または Amazon S3 バケット内のオブジェクトを取得するために必要な許可をユーザーが 持っていないという場合です。クライアントエラーが発生すると、オリジンは 400 番台の HTTP ス テータスコードを CloudFront に返します。 • サーバーエラーは、オリジンサーバーに問題があります。例えば、HTTP サーバーが混雑していたり 使用不能であったりする場合です。サーバーエラーが発生すると、オリジンサーバーから 500 番台 の HTTP ステータスコードが CloudFront に返されるか、または一定の時間オリジンサーバーから CloudFront へのレスポンスがなくなり(ゲートウェイタイムアウトと見なされて)504 ステータス コードが返されます。 CloudFront がカスタムエラーページを返すことのできる HTTP ステータスコードは、以下のとおりで す。 • 400、403、404、405、414 • 500、501、502、503、504 CloudFront がオリジンからのエラーレスポンスを処理する方法の詳細な説明は、「CloudFront が HTTP 4xx および 5xx ステータスコードを処理およびキャッシュする方法 (p. 123)」を参照してください。 カスタムエラーページのキャッシュ動作を作成また は更新する オブジェクトとカスタムエラーページを別の場所に保存する場合は、次の状況に該当するときに適用さ れるキャッシュ動作をディストリビューションに組み込む必要があります。 API Version 2014-01-31 100 Amazon CloudFront 開発者ガイド レスポンスコードを変更する • Path Pattern の値が、カスタムエラーメッセージのパスと一致する。例えば、4xx エラーのカスタム エラーページを /4xx-errors というディレクトリーの Amazon S3 バケットに保存したとします。 このとき、パスパターンによってカスタムエラーページのリクエストがルーティングされる場所の キャッシュ動作を、ディストリビューションに組み込む必要があります(例: /4xx-errors/*)。 • Origin の値が、カスタムエラーページを含むオリジンの Origin ID の値を指定している。 詳細については、トピック「ウェブディストリビューションを作成または更新する場合に指定する 値 (p. 46)」の「キャッシュ動作の設定 (p. 51)」を参照してください。 レスポンスコードを変更する CloudFront から返される HTTP ステータスコードを選択するとともに、特定の HTTP ステータスコー ドにカスタムエラーページを指定することができます。例えば、オリジンから 500 ステータスコード が CloudFront に返されるときに、CloudFront からカスタムエラーページと 200 ステータスコード (OK)がビューアに返されるようにしたいことがあります。オリジンから返されるステータスコード とは異なるステータスコードが CloudFront から返されるようにしたいのには、様々な理由があります。 • インターネットデバイス(一部のファイアウォールやコーポレートプロキシーなど)の中には、HTTP 4xx と 5xx を遮断して、レスポンスをビューアに返さないものがあります。200 に置き換えるなら、 レスポンスが遮断されることはほぼなくなります。 • 各種のクライアントエラーとサーバーエラーを区別しなくてよいのであれば、4xx および 5xx のすべ てのステータスコードに対して 400 または 500 を CloudFront が返す値として指定することができま す。 • 200 ステータスコード(OK)と静的ウェブサイトが返されるようにして、お客様のウェブサイトが 停止していることをカスタマーに気づかれないようにすることもできます。 CloudFront からカスタムエラーページとともにビューアに返せる HTTP ステータスコードは、以下の とおりです。 • 200 • 400、403、404、405、414 • 500、501、502、503、504 CloudFront がエラーをキャッシュする時間を制御す る デフォルトでは、オリジンから HTTP 4xx または 5xx ステータスコードが返されると、CloudFront は これらのエラーレスポンスを 5 分間キャッシュし、その後オブジェクトに対する次のリクエストをオリ ジンに送信して、エラーの原因となった問題が解決され、リクエストしたオブジェクトが利用可能に なったかどうか確認します。 CloudFront がキャッシュする 4xx および 5xx ステータスコードそれぞれに対して、エラーキャッシュ 期間(エラーキャッシュ最小 TTL)を指定 (p. 102)することができます。期間を指定する場合は、以下 の点に注意してください。 • 短いエラーキャッシュ期間を指定すると、長い期間を指定した場合に比べて CloudFront からオリジ ンに転送されるリクエストの数が多くなります。5xx エラーの場合、期間を短く設定することによっ て、オリジンからエラーが返されることになった問題が悪化する可能性があります。 • オリジンがオブジェクトに関するエラーを返すと、CloudFront は、エラーキャッシュ期間が終了す るまで、オブジェクトのリクエストにエラーレスポンスで応答するか、またはカスタムエラーページ で応答します。長いエラーキャッシュ期間を指定するなら、オブジェクトが再び利用可能になった後 API Version 2014-01-31 101 Amazon CloudFront 開発者ガイド カスタムエラーページが利用不可である場合の CloudFront の応答 も、CloudFront は長い間、リクエストにエラーレスポンスまたはカスタムエラーページで引き続き 応答するかもしれません。 CloudFront がエラーをキャッシュする時間を個別のオブジェクトに対して制御することを希望する場 合は、以下のようにして、対象のオブジェクトのエラーレスポンスに適切なヘッダーを追加するように オリジンサーバーを構成できます。 • オリジンが Cache-Control max-age または Cache-Control s-maxage ディレクティブ、ある いは Expires ヘッダーを追加する場合: CloudFront は、ヘッダーの値と [Error Caching Minimum TTL] の値を比較してより大きい値の期間、エラーレスポンスをキャッシュします。 • オリジンが他の Cache-Control ディレクティブを追加し、ヘッダーは追加しない場合: CloudFront は、[Error Caching Minimum TTL] の値の期間、エラーレスポンスをキャッシュします。 オブジェクトに対する 4xx または 5xx ステータスコードの有効期限切れ時間が必要な待機時間よりも 長い場合は、リクエストされたオブジェクトの URL を使ってそのステータスコードを無効化できます。 オリジンが複数のオブジェクトに対してエラーレスポンスを返している場合は、各オブジェクトについ て個別に無効化する必要があります。オブジェクトの無効化については、「オブジェクトの無効化(ウェ ブディストリビューションのみ) (p. 94)」を参照してください。 カスタムエラーページが利用不可である場合の CloudFront の応答 HTTP ステータスコードに対してカスタムエラーページを返すように CloudFront を構成したのに、カ スタムエラーページが利用不可である場合、CloudFront は CloudFront がカスタムエラーページを持つ オリジンから受信したステータスコードをビューアに返します。例えば、カスタムオリジンから 500 ステータスコードが返され、500 ステータスコードのためのカスタムエラーページを Amazon S3 バ ケットから取得するように CloudFront を構成してあるとします。ところが、だれかがうっかりカスタ ムエラーページをバケットから削除してしまいました。そのオブジェクトをリクエストしたビューアに 対して、CloudFront は HTTP 404 ステータスコード(Not found)を返します。 カスタムエラーページの料金 CloudFront がカスタムエラーページをビューアに返したときに、リクエストしたオブジェクトの料金 ではなく、カスタムエラーページの標準 CloudFront 料金を支払います。CloudFront 料金の詳細につい ては、「CloudFront の請求および使用状況レポート (p. 8)」を参照してください。 エラーレスポンス動作を構成する CloudFront API または CloudFront コンソールを使用して、CloudFront エラーレスポンスを構成できま す。CloudFront API を使用してエラーレスポンスを構成する方法については、「Amazon CloudFront API リファレンス」の「PUT Distribution Config」に記載されている CustomErrorResponses エレメ ントの箇所を参照してください。 コンソールを使用して CloudFront エラーレスポンスを構成するには 1. オリジンから HTTP 4xx または 5xx エラーが返されたときに CloudFront がビューアに返すカスタ ムエラーページを作成します。ページは CloudFront からアクセス可能な場所に保存します。 カスタムオリジンを使用していない場合であっても、カスタムエラーページは Amazon S3 バケッ トに保存することをお勧めします。カスタムエラーページを HTTP サーバーに保存した場合、こ のサーバーが 5xx エラーを返し始めるなら、オリジンサーバーが利用不可であるために、CloudFront はビューアに返すべきファイルを取得できません。 API Version 2014-01-31 102 Amazon CloudFront 開発者ガイド CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 2. 3. 4. 5. 少なくとも、カスタムエラーページに対する read 許可が CloudFront に付与されていることを確 認してください。 Amazon S3 許可の詳細については、「Amazon Simple Storage Service 開発者ガイド」の「アクセ スコントロール」を参照してください。Amazon S3 コンソールを使用して許可を更新する方法に ついては、「Amazon Simple Storage Service Console User Guide」を参照してください。 (オプション)可能であれば、Cache-Control ディレクティブまたは Expires ヘッダーを、特 定のオブジェクトに対するエラーレスポンスとともに追加するようにオリジンサーバーを構成しま す。詳細については、「CloudFront がエラーをキャッシュする時間を制御する (p. 101)」を参照し てください。 AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 ディストリビューションのリストで、更新するディストリビューションを選択して、[Distribution Settings] をクリックします。 6. [Error Pages] タブをクリックします。その後、[Create Custom Error Response] をクリックする か、または既存のエラーコードをクリックするかして、[Edit] をクリックします。 7. 適切な値を入力します。詳細については、「Custom Error Pages(カスタムエラーページ)と Error Caching(エラーキャッシュ) (p. 60)」を参照してください。 カスタムエラーページを返すように CloudFront を構成した場合は、該当するキャッシュ動作を追 加または更新します。詳細については、「カスタムエラーページのキャッシュ動作を作成または更 新する (p. 100)」を参照してください。 変更を保存するには、[Yes, Edit] をクリックします。 8. 9. CloudFront がオブジェクトの部分的リクエスト(レ ンジ GET)を処理する方法 Abstract CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法について説明します。 大きなオブジェクトの場合、エンドユーザーのブラウザまたはクライアントは、複数の GET リクエス トを実行し、Range リクエストヘッダーを使用して、小さい単位でオブジェクトをダウンロードする API Version 2014-01-31 103 Amazon CloudFront 開発者ガイド デフォルトルートオブジェクトの指定(ウェブディストリ ビューションのみ) 場合があります。Range GET リクエストとも呼ばれるこのバイト範囲のリクエストでは、部分的なダ ウンロードの効率、および部分的に失敗した転送からの回復の効率が向上します。 CloudFront は Range GET リクエストを受け取ると、そのリクエストを受け取ったエッジロケーション のキャッシュをチェックします。そのエッジロケーションのキャッシュにオブジェクト全体またはオブ ジェクトの要求された部分がすでに含まれる場合、CloudFront は要求された範囲をキャッシュから直 ちに供給します。 要求された範囲がキャッシュに含まれない場合、CloudFront はリクエストをオリジンに転送します。 (パフォーマンスを最適化するために、CloudFront は、Range GET でクライアントから要求された範 囲よりも大きい範囲を要求する場合があります)。次に実行される処理は、オリジンが Range GET リ クエストをサポートするかどうかによって異なります。 • オリジンが Range GET リクエストをサポートする場合: 要求された範囲が返されます。CloudFront は、要求された範囲を供給します。また、その範囲をキャッシュして、今後のリクエストに備えま す。(Amazon S3 は、Apache、IIS など、一部の HTTP サーバーと同様に、Range GET リクエスト をサポートします。使用している HTTP サーバーがこれをサポートしているかどうかについては、 使用している HTTP サーバーに関するドキュメントを参照してください)。 • オリジンが Range GET リクエストをサポートしない場合: オブジェクト全体が返されます。CloudFront は、オブジェクト全体を供給します。また、そのオブジェクト全体をキャッシュして、今後のリクエ ストに備えます。CloudFront はオブジェクト全体をエッジキャッシュにキャッシュした後、要求さ れた範囲を供給することで Range GET リクエストに応答します。 どちらの場合も、CloudFront は、オリジンから 1 バイト目が到着した直後に、要求された範囲または オブジェクトをエンドユーザーに供給します。 通常、CloudFront は、Range ヘッダーの RFC 仕様に準拠します。ただし、Range ヘッダーが以下の 要件に準拠しない場合、CloudFront は、指定された範囲とステータスコード 206 を返す代わりに、完 全なオブジェクトと HTTP ステータスコード 200 を返します。 • 範囲は昇順に指定されている必要があります。例えば、100-200,300-400 は有効で、 300-400,100-200 は無効です。 • 範囲は重複できません。例えば、100-200,150-250 は無効です。 • すべての範囲指定が有効である必要があります。例えば、範囲の一部に負の値を指定することはでき ません。 Range リクエストヘッダーの詳細については、「ハイパーテキスト転送プロトコル –– HTTP//1.1」 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35)の「セクション 14.35 範囲」を 参照してください。 デフォルトルートオブジェクトの指定(ウェブディ ストリビューションのみ) Abstract CloudFront を構成して、特定のオブジェクト(デフォルトはルートオブジェクト)を返し、ディストリビューショ ンのコンテンツを公開しないようにします。 エンドユーザーがディストリビューション内のオブジェクトではなくディストリビューションのルート URL を要求した場合に特定のオブジェクト(デフォルトルートオブジェクト)を返すように CloudFront を構成できます。デフォルトのルートオブジェクトを指定すると、ディストリビューションのコンテン ツが公開されなくなります。 API Version 2014-01-31 104 Amazon CloudFront 開発者ガイド デフォルトルートオブジェクトの指定(ウェブディストリ ビューションのみ) 例えば、次のリクエストはオブジェクト image.jpg を指します。 http://d111111abcdef8.cloudfront.net/image.jpg 次のリクエストは、特定のオブジェクトではなく、同じディストリビューションのルート URL を指し ます。 http://d111111abcdef8.cloudfront.net/ デフォルトルートオブジェクトを定義した場合、ディストリビューションのルートを呼び出すエンド ユーザーリクエストはデフォルトルートオブジェクトを返します。例えば、ファイル index.html を デフォルトルートオブジェクトとして指定したと仮定します。 http://d111111abcdef8.cloudfront.net/ 上のリクエストは次のオブジェクトを返します。 http://d111111abcdef8.cloudfront.net/index.html ただし、デフォルトルートオブジェクトを定義しても、ディストリビューションのサブディレクトリに 対するエンドユーザーリクエストはデフォルトルートオブジェクトを返しません。例えば、index.html がデフォルトルートオブジェクトであり、CloudFront が CloudFront ディストリビューション下の install ディレクトリに対するエンドユーザーリクエストを受け取ったと仮定します。 http://d111111abcdef8.cloudfront.net/install/ index.html のコピーが install ディレクトリ内にあっても、CloudFront はデフォルトルートオブ ジェクトを返しません。 CloudFront がサポートするすべての HTTP メソッドを許可するようにディストリビューションを構成 する場合、デフォルトのルートオブジェクトがすべてのメソッドに適用されます。たとえば、デフォル トのルートオブジェクトが index.php であり、POST リクエストをドメインのルート (http://example.com)に送信するようにアプリケーションを作成するなら、CloudFront はリクエスト を http://example.com/index.php に送信します。 CloudFront のデフォルトルートオブジェクトの動作は、Amazon S3 のインデックスドキュメントの動 作とは異なります。Amazon S3 バケットをウェブサイトとして構成し、インデックスドキュメントを 指定した場合、ユーザーがバケット内のサブディレクトリを要求しても、Amazon S3 はインデックス ドキュメントを返します。(インデックスドキュメントのコピーがすべてのサブディレクトリに含まれ る必要があります)。Amazon S3 バケットをウェブサイトとして構成する方法およびインデックスド キュメントの詳細については、「Amazon Simple Storage Service 開発者ガイド」の「Amazon S3 での 静的ウェブサイトのホスティング」を参照してください。 Important デフォルトルートオブジェクトは CloudFront ディストリビューションにのみ適用されること に注意してください。オリジンのセキュリティを依然として管理する必要があります。例え ば、Amazon S3 オリジンを使用する場合、Amazon S3 バケットの ACL も依然として適切に設 定する必要があり、バケットに対する必要なアクセスレベルを確保する必要があります。 デフォルトルートオブジェクトを定義しない場合、ディストリビューションのルートの要求はオリジン サーバーに渡されます。Amazon S3 オリジンを使用する場合、以下のいずれかが返される場合があり ます。 • Amazon S3 バケットのコンテンツのリスト – 以下のいずれかの条件が満たされる場合、CloudFront を使用してディストリビューションにアクセスするユーザーにオリジンのコンテンツが表示されま す。 • バケットが適切に構成されていない。 API Version 2014-01-31 105 Amazon CloudFront 開発者ガイド デフォルトルートオブジェクトの指定(ウェブディストリ ビューションのみ) • ディストリビューションに関連付けられたバケットに対する Amazon S3 許可、およびバケット内 のオブジェクトに対する Amazon S3 許可で、すべてのユーザーへのアクセスが付与されている。 • エンドユーザーがオリジンのルート URL を使用してオリジンにアクセスしている。 • オリジンのプライベートコンテンツのリスト – オリジンをプライベートディストリビューション(構 成者と CloudFront のみがアクセス可能)として構成している場合、ディストリビューションに関連 付けられた Amazon S3 バケットのコンテンツは、CloudFront 経由でディストリビューションにアク セスできる認証情報を持っているユーザーにも表示されます。この場合、ユーザーは、オリジンの ルート URL を使用してコンテンツにアクセスできません。プライベートコンテンツの配信の詳細に ついては、「CloudFront を使用してプライベートコンテンツを供給する (p. 126)」を参照してくださ い。 • エラー 403 アクセス不可 – CloudFront は、ディストリビューションに関連付けられた Amazon S3 バケットに対する許可またはそのバケット内のオブジェクトに対する許可によって CloudFront およ びすべてのユーザーのアクセスが拒否された場合にこのエラーを返します。 ウェブディストリビューションのコンテンツが公開されたり、エラーが返されたりすることを回避する には、以下の手順を実行して、ディストリビューションのデフォルトルートオブジェクトを指定しま す。 ディストリビューションのデフォルトルートオブジェクトを指定するには 1. デフォルトルートオブジェクトを、ディストリビューションが指しているオリジンにアップロード します。 ファイルには、CloudFront でサポートされるあらゆるタイプを使用できます。ファイル名に対す る制約事項のリストについては、「DistributionConfig Complex Type」の DefaultRootObject エ レメントの説明を参照してください。 Note デフォルトルートオブジェクトのファイル名が長すぎるか、そのファイル名に無効な文字 が含まれている場合、CloudFront はエラー HTTP 400 Bad Request InvalidDefaultRootObject を返します。また、CloudFront はコードをキャッシュに 5 分間保持し、結果をアクセスログに書き込みます。 2. 3. オブジェクトの許可によって CloudFront に少なくとも read アクセスが付与されていることを確 認します。 Amazon S3 許可の詳細については、「Amazon Simple Storage Service 開発者ガイド」の「アクセ スコントロール」を参照してください。Amazon S3 コンソールを使用して許可を更新する方法に ついては、「Amazon Simple Storage Service Console User Guide」を参照してください。 CloudFront コンソールまたは CloudFront API を使用して、デフォルトルートオブジェクトを参照 するようにディストリビューションを更新します。 CloudFront コンソールを使用して、デフォルトルートオブジェクトを指定するには、次を実行し ます。 a. b. c. d. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 上部ペインにあるディストリビューションのリストで、更新するディストリビューションを選 択します。 [Distribution Details] ペインの [General] タブで、[Edit] をクリックします。 [Edit Distribution] ダイアログボックスの [Default Root Object] フィールドに、デフォルトルー トオブジェクトのファイル名を入力します。 API Version 2014-01-31 106 Amazon CloudFront 開発者ガイド 圧縮ファイルの供給 オブジェクト名のみを入力します(例: index.html)。オブジェクト名の前に / を追加しな いでください。 e. 変更を保存するには、[Yes, Edit] をクリックします。 CloudFront API を使用して、構成を更新するには、ディストリビューションの DefaultRootObject エレメントの値を指定します。CloudFront API を使用してデフォルトルートオブジェクトを指定す る方法については、「Amazon CloudFront API リファレンス」の「PUT Distribution Config」を参 照してください。 4. ルート URL を要求することで、デフォルトルートオブジェクトが有効になっていることを確認し ます。ブラウザにデフォルトルートオブジェクトが表示されない場合、以下のステップを実行しま す。 a. b. CloudFront コンソールにディストリビューションのステータスを表示し、ディストリビュー ションが完全にデプロイされていることを確認します。 ステップ 2 と 3 を繰り返し、適切な許可を付与したこと、およびデフォルトルートオブジェ クトを指定するようにディストリビューションの構成を適切に更新したことを確認します。 圧縮ファイルの供給 Abstract 圧縮ファイルを供給してユーザーが高速にダウンロードできるようにします。 Amazon CloudFront は、オリジンサーバーから圧縮ファイルと非圧縮ファイルを供給できます。 CloudFront は、オリジンサーバーを使用して、ファイルを圧縮したり、ファイルの圧縮バージョンと 非圧縮バージョンを利用したりします。CloudFront がオリジンサーバーに代わって圧縮を実行するこ とはありません。いくつかの条件を満たした場合、CloudFront は圧縮コンテンツを Amazon S3 から供 給することもできます。詳細については、「圧縮するファイルタイプの選択 (p. 109)」を参照してくだ さい。 圧縮コンテンツを供給することで、ダウンロード時間が短縮されます。ファイルが小さくなるためで す。場合によって、オリジナルの半分以下のサイズになることがあります。特に、JavaScript および CSS ファイルでは、ダウンロード時間が短縮されると、ユーザーにウェブページが表示されるまでの 時間が短縮されます。また、CloudFront のデータ転送コストは供給されたデータの総量に基づくので、 圧縮ファイルを供給すると、非圧縮ファイルを供給するよりもコストが安くなります。 CloudFront は、ビューア(ウェブブラウザ、メディアプレーヤーなど)がリクエストヘッダーに Accept-Encoding: gzip を含めることで圧縮コンテンツを要求した場合にのみ圧縮データを供給で きます。コンテンツは、gzip; を使用して圧縮される必要があります。他の圧縮アルゴリズムはサポー トされません。リクエストヘッダーに追加のコンテンツエンコード(deflate、sdch など)が含まれ る場合、CloudFront はそれらを削除してからリクエストをオリジンサーバーに転送します。gzip が Accept-Encoding フィールドにない場合、CloudFront はファイルの非圧縮バージョンのみを供給し ます。Accept-Encoding リクエストヘッダーフィールドの詳細については、「ハイパーテキスト転送 プロトコル –– HTTP//1.1」(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)の「セクション 14.3 エンコードの受け入れ」を参照してください。 詳細については、以下のトピックを参照してください。 Topics • CloudFront がカスタムオリジンから圧縮コンテンツを供給する方法 (p. 108) • Amazon S3 からの圧縮ファイルの供給 (p. 108) • 圧縮するファイルタイプの選択 (p. 109) API Version 2014-01-31 107 Amazon CloudFront 開発者ガイド CloudFront がカスタムオリジンから圧縮コンテンツを供給 する方法 CloudFront がカスタムオリジンから圧縮コンテンツ を供給する方法 ここでは、通常、CloudFront が圧縮コンテンツをカスタムオリジンからウェブアプリケーションにど のように供給するかについて説明します。 1. 選択されたファイルタイプを圧縮するようにウェブサーバーを構成します。詳細については、「圧 縮するファイルタイプの選択 (p. 109)」を参照してください。 2. 3. CloudFront ディストリビューションを作成します。 CloudFront URL を使用してファイルにアクセスするようにウェブアプリケーションのプログラム を作成します。 ユーザーがウェブブラウザでアプリケーションにアクセスします。 4. 5. 6. 7. CloudFront は、ユーザーにとって最も低いレイテンシーのエッジロケーションにウェブリクエス トを転送します。これは、地理的に最も近いエッジロケーションではない場合があります。 エッジロケーションで、CloudFront は、各リクエスト内で参照されているオブジェクトがキャッ シュにあるかどうかを確認します。ブラウザが Accept-Encoding: gzip をリクエストヘッダー に含めている場合、CloudFront はファイルの圧縮バージョンがあるかどうかを確認します。圧縮 バージョンがない場合、CloudFront は非圧縮バージョンがあるかどうかを確認します。 ファイルがキャッシュにある場合、CloudFront はファイルをウェブブラウザに返します。ファイ ルがキャッシュにない場合は、以下の処理が行われます。 a. b. c. d. CloudFront は、リクエストをオリジンサーバーに転送します。 圧縮して供給する必要があるファイルタイプ(ステップ 1 を参照)をリクエストが要求してい る場合、ウェブサーバーはファイルを圧縮します。 ウェブサーバーは、(必要に応じて圧縮または非圧縮した)ファイルを CloudFront に返しま す。 CloudFront はファイルをキャッシュに追加し、ファイルをユーザーのブラウザに供給します。 Amazon S3 からの圧縮ファイルの供給 Amazon S3から圧縮ファイルを供給する場合は、以下の手順を実行します。 1. 2. 3. 4. ファイルごとに圧縮ファイルと非圧縮ファイルの 2 つのバージョンを作成します。CloudFront キャッシュ内でファイルの圧縮バージョンと非圧縮バージョンが互いに上書きしないように、各 ファイルに一意の名前を付けます(例: welcome.js と welcome.js.gz)。 Amazon S3 コンソール(https://console.aws.amazon.com/s3/)を開きます。 両方のバージョンを Amazon S3 にアップロードします。 圧縮ファイルごとに Content-Encoding ヘッダーフィールドを追加し、フィールド値を gzip に 設定します。 AWS SDK for PHP を使用して Content-Encoding ヘッダーフィールドを追加する方法の例につ いては、「Amazon Simple Storage Service 開発者ガイド」の「AWS SDK for PHP を使用した 1 つのオブジェクトのアップロード」を参照してください。このフィールドを追加できるサードパー ティツールもあります。 Amazon S3 コンソールを使用して、Content-Encoding ヘッダーフィールドを追加し、フィール ド値を設定するには、以下の手順を実行します。 a. Amazon S3 コンソールの [Buckets] ペインで、圧縮ファイルを含むバケットの名前をクリック します。 API Version 2014-01-31 108 Amazon CloudFront 開発者ガイド 圧縮するファイルタイプの選択 b. e. [Objects and Folders] ペインの上部で [Actions] をクリックし、[Actions] リストで [Properties] をクリックします。 [Properties] ペインで、[Metadata] タブをクリックします。 [Objects and Folders] ペインで、Content-Encoding ヘッダーフィールドの追加の対象とな るファイルの名前をクリックします。 [Metadata] タブで、[Add More Metadata] をクリックします。 f. [Key] リストで、[Content-Encoding] をクリックします。 g. [Value] フィールドに「gzip」と入力します。 h. i. [Save] をクリックします。 残りの圧縮ファイルに対して、ステップ 4d ~ 4h を繰り返します。 c. d. 5. (例えば、php、asp、または jsp を使用して) CloudFront 内のコンテンツにリンクする HTML を 生成する場合、ビューアからのリクエストにより、リクエストヘッダーに Accept-Encoding: gzip が含まれているかどうかを評価します。含まれる場合、圧縮オブジェクトの名前を指すよう に、対応するリンクを書き換えます。 圧縮するファイルタイプの選択 HTML、CSS、JavaScript ファイルなど、いくつかのファイルタイプでは十分な圧縮が行われます。ま た、ファイルタイプによっては、数パーセントの圧縮が行われる場合がありますが、これは、コンテン ツを圧縮するためにウェブサーバーで必要とされる追加のプロセッサーサイクルを正当化するのに十分 な圧縮率ではありません。さらに、いくつかのタイプのファイルでは、圧縮されると大きくなるものも あります。通常、十分に圧縮されないファイルタイプとして、すでに圧縮されているグラフィックファ イル(.jpg、.gif)、ビデオ形式、およびオーディオ形式があります。ディストリビューション内にある ファイルタイプの圧縮をテストして、圧縮による十分なメリットがあることを確認することをお勧めし ます。 API Version 2014-01-31 109 Amazon CloudFront 開発者ガイド Amazon S3 オリジンにおけるリクエストとレスポンスの動 作 リクエストとレスポンスの動作 Abstract CloudFront がリクエストとレスポンスを処理する方法について説明します。 以下のセクションでは、CloudFront がビューアリクエストを処理してそのリクエストを Amazon S3 ま たはカスタムオリジンに転送する方法、および CloudFront がオリジンからのレスポンスを処理する方 法(CloudFront が 4xx および 5xx HTTP ステータスコードを処理およびキャッシュする方法を含む) について説明します。 Topics • Amazon S3 オリジンにおけるリクエストとレスポンスの動作 (p. 110) • カスタムオリジンの場合のリクエストとレスポンスの動作 (p. 116) • CloudFront が HTTP 4xx および 5xx ステータスコードを処理およびキャッシュする方法 (p. 123) Amazon S3 オリジンにおけるリクエストとレスポ ンスの動作 Abstract オリジンサーバーとして Amazon S3 を使用している場合に、CloudFront がリクエストとレスポンスを処理する方 法について説明します。 Topics • CloudFront がリクエストを処理して Amazon S3 オリジンサーバーに転送する方法 (p. 110) • CloudFront が Amazon S3 オリジンサーバーからのレスポンスを処理する方法 (p. 114) CloudFront がリクエストを処理して Amazon S3 オ リジンサーバーに転送する方法 CloudFront がビューアリクエストを処理して Amazon S3 オリジンに転送する方法については、該当す るトピックを参照してください。 API Version 2014-01-31 110 Amazon CloudFront 開発者ガイド CloudFront がリクエストを処理して Amazon S3 オリジン サーバーに転送する方法 Topics • キャッシュ期間および最小 TTL (p. 111) • クライアント IP アドレス (p. 111) • 条件付きの GET (p. 111) • Cookie (p. 112) • Cross-Origin Resource Sharing (CORS) (p. 112) • CloudFront が削除または更新するヘッダーフィールド (p. 112) • HTTP メソッド (p. 113) • リクエストの最大長と URL の最大長 (p. 113) • プロトコル (p. 114) • クエリ文字列 (p. 114) • リクエストのタイムアウト (p. 114) キャッシュ期間および最小 TTL ウェブディストリビューションでは、CloudFront が別のリクエストをオリジンに転送するまでにオブ ジェクトを CloudFront キャッシュに保持する時間を制御できます。これを行うには、次の手順を実行 します。 • Cache-Control または Expires ヘッダーフィールドを各オブジェクトに追加するようにオリジン を構成します。 • CloudFront キャッシュ動作で、最小 TTL の値を指定します。 • デフォルト値の 24 時間を使用します。 詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切 れ) (p. 90)」を参照してください。 クライアント IP アドレス CloudFront は、X-Forwarded-For リクエストヘッダーでクライアント IP アドレスを Amazon S3 に 転送します。X-Forwarded-For リクエストヘッダーは次のようになります。 X-Forwarded-For: 192.0.2.235 X-Forwarded-For リクエストヘッダーに IP アドレスが複数含まれる場合、最初のアドレスは常にク ライアント IP アドレスです。他のアドレスは、リクエストが渡された後続の各プロキシを示します。 最後の IP アドレスは、リクエストを CloudFront に転送したプロキシを示します。 X-Forwarded-For: client-IP-address, proxy-IP-address, another-proxy-IP-address 条件付きの GET CloudFront は、エッジキャッシュで有効期限切れになっているオブジェクトに対するリクエストを受 け取ると、リクエストを Amazon S3 オリジンに転送し、オブジェクトの最新バージョンを取得する か、CloudFront エッジキャッシュに最新バージョンがすでに存在することを Amazon S3 に確認しま す。Amazon S3 はオブジェクトを CloudFront に最初に送信するときに、ETag 値と LastModified 値をレスポンスに含めます。CloudFront が Amazon S3 に転送する新しいリクエストには、次のどちら かまたは両方が追加されます。 • オブジェクトの有効期限切れバージョンの ETag 値が含まれる If-Match または If-None-Match ヘッダー。 API Version 2014-01-31 111 Amazon CloudFront 開発者ガイド CloudFront がリクエストを処理して Amazon S3 オリジン サーバーに転送する方法 • オブジェクトの有効期限切れバージョンの LastModified 値が含まれる If-Modified-Since ヘッ ダー。 Amazon S3 は、この情報を使用して、オブジェクトが更新されているかどうかを判別します。つまり、 オブジェクト全体を CloudFront に返すか、または HTTP 304 ステータスコード(変更なし)のみを返 すかを判別します。 Cookie Amazon S3 は Cookie を処理しません。Cookie を Amazon S3 オリジンに転送するようにキャッシュ 動作を構成した場合、CloudFront は Cookie を転送しますが、Amazon S3 は Cookie を無視します。 Cross-Origin Resource Sharing (CORS) 現在のところ、CloudFront は Amazon S3 Cross-Origin Resource Sharing をサポートしていません。 CloudFront が削除または更新するヘッダーフィールド CloudFront は、リクエストを Amazon S3 オリジンに転送する前に、以下のヘッダーフィールドを削除 または更新します。 • Accept • Accept-Charset • Accept-Encoding: 値が gzip を含む場合、CloudFront は Amazon S3 オリジンに Accept-Encoding: gzip を転送します。値が gzip含まない場合、CloudFront はリクエストをオリジンに転送する前に Accept-Encoding ヘッダーフィールドを削除します。 • Accept-Language • Authorization: • GET、HEAD の各リクエスト: CloudFront は、リクエストをオリジンに転送する前に Authorization ヘッダーフィールドを削除します。 • DELETE、OPTIONS、PATCH、POST、PUT の各リクエスト: CloudFront は、リクエストをオリジン に転送する前にヘッダーフィールドを削除しません。 • Connection: CloudFront は、Amazon S3 オリジンにリクエストを転送する前にこのヘッダーを Connection: Keep-Alive ヘッダーに置き換えます。 • Cookie: Cookie を転送するように CloudFront を構成している場合、Amazon S3 オリジンに Cookie ヘッダーフィールドが転送されます。そうでない場合、CloudFront は Cookie ヘッダーフィールド を削除します。詳細については、「CloudFront が Cookie の転送、キャッシュ、およびログ作成を行 う方法 (p. 86)」を参照してください。 • Expect • Host: CloudFront は、リクエストされたオブジェクトに関連付けられた Amazon S3 バケットの名前 に値を設定します。 • Proxy-Authenticate • Proxy-Authorization • Proxy-Connection • Referer • TE • Trailer • Transfer-Encoding: • GET、HEAD の各リクエスト: CloudFront は、リクエストをオリジンに転送する前にヘッダーフィー ルドを削除します。 API Version 2014-01-31 112 Amazon CloudFront 開発者ガイド CloudFront がリクエストを処理して Amazon S3 オリジン サーバーに転送する方法 • DELETE、OPTIONS、PATCH、POST、PUT の各リクエスト: 値が Transfer-Encoding: chunked の場合、CloudFront はリクエストをオリジンに転送する前に、ヘッダーフィールドを削除しませ ん。それ以外の値の場合、CloudFront はリクエストをオリジンに転送する前に、ヘッダーフィー ルドを削除します。 • Upgrade • User-Agent: CloudFront はこのヘッダーフィールドの値を Amazon CloudFront に置き換えます。 HTTP メソッド サポートするすべての HTTP メソッドを処理するよう CloudFront を構成すると、CloudFront はビュー アからの以下のリクエストを受け入れて Amazon S3 オリジンに転送します。 • DELETE • GET • HEAD • OPTIONS • PATCH • POST • PUT CloudFront はレスポンスを GET リクエストと HEAD リクエストにキャッシュし、それ以外のメソッド を使用するリクエストにはレスポンスをキャッシュしません。 マルチパートアップロードを使用してオブジェクトを Amazon S3 バケットに追加する場合は、CloudFront オリジンアクセスアイデンティティをディストリビューションに追加して、そのオリジンアクセスアイ デンティティに適切な許可を付与する必要があります。詳細については、「オリジンアクセスアイデン ティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を参照してください。 Caution CloudFront がサポートするすべての HTTP メソッドを受け入れて Amazon S3 に転送するよう に CloudFront を構成する場合、お客様の Amazon S3 コンテンツへのアクセスを制限する CloudFront オリジンアクセスアイデンティティを作成して、そのオリジンアクセスアイデン ティティに適切な許可を付与する必要があります。たとえば、PUT を使用したいので、上記の メソッドを受け入れて転送するように CloudFront を構成するという場合は、削除すべきでな いリソースをビューアが削除できないようにするために、DELETE リクエストを適切に処理す る Amazon S3 バケットポリシーまたは ACL を構成する必要があります。詳細については、 「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限 する (p. 131)」を参照してください。 Amazon S3 がサポートする操作の詳細については、「Amazon S3 ドキュメント」を参照してくださ い。 リクエストの最大長と URL の最大長 パス、クエリ文字列(ある場合)、ヘッダーを含め、リクエストの最大長は 20480 バイトです。 CloudFront はリクエストから URL を構築します。この URL の最大長は 8192 文字です。 リクエストまたは URL がこの制限を超過した場合、CloudFront はリクエストを破棄します。 API Version 2014-01-31 113 Amazon CloudFront 開発者ガイド CloudFront が Amazon S3 オリジンサーバーからのレスポ ンスを処理する方法 プロトコル CloudFront は、ビューアリクエストのプロトコル(HTTP または HTTPS)に基づいて、HTTP または HTTPS リクエストをオリジンサーバーに転送します。 クエリ文字列 ウェブディストリビューションでは、CloudFront でクエリ文字列パラメータを Amazon S3 オリジンに 転送するかどうかを構成できます。RTMP ディストリビューションでは、CloudFront はクエリ文字列 パラメータを転送しません。詳細については、「CloudFront がクエリ文字列パラメータの転送、キャッ シュ、およびログ作成を行う方法 (p. 84)」を参照してください。 リクエストのタイムアウト CloudFront が Amazon S3 オリジンにデータをリクエストしたときに、Amazon S3 が 30 秒以内に応答 しない場合、CloudFront は接続を中断して、オリジンに対する接続をさらに 2 回試みます。3 回目の 試みでもオリジンが応答しない場合、CloudFront は同じオリジンのコンテンツに対する別のリクエス トを受け取るまで接続を試みません。 CloudFront が Amazon S3 オリジンサーバーからの レスポンスを処理する方法 Topics • 取り消されたリクエスト (p. 121) • Cross-Origin Resource Sharing (CORS) (p. 114) • CloudFront が削除または更新するヘッダーフィールド (p. 114) • 最大ファイルサイズ (p. 115) • リダイレクト (p. 115) 取り消されたリクエスト オブジェクトがエッジキャッシュになく、CloudFront がオブジェクトをオリジンから取得したものの、 リクエストされたそのオブジェクトを配信する前にビューアがセッションを終了すると(ブラウザを閉 じるなど)、CloudFront はそのオブジェクトをエッジロケーションにキャッシュしません。 Cross-Origin Resource Sharing (CORS) 現在のところ、CloudFront は Amazon S3 Cross-Origin Resource Sharing をサポートしていません。 CloudFront が削除または更新するヘッダーフィールド CloudFront は、Amazon S3 オリジンからのレスポンスをビューアに転送する前に、以下のヘッダー フィールドを削除または更新します。 • Proxy-Connection • Set-Cookie: Cookie を転送するように CloudFront を構成している場合、Set-Cookie ヘッダー フィールドがクライアントに転送されます。詳細については、「CloudFront が Cookie の転送、キャッ シュ、およびログ作成を行う方法 (p. 86)」を参照してください。 • Trailer • Transfer-Encoding: Amazon S3 オリジンがこのヘッダーフィールドを返す場合、CloudFront は 値を chunked に設定してビューアにレスポンスを返します。 API Version 2014-01-31 114 Amazon CloudFront 開発者ガイド CloudFront が Amazon S3 オリジンサーバーからのレスポ ンスを処理する方法 • Upgrade • Vary • Via: CloudFront は値を次のように設定します。 Via: 1.1 alphanumeric-string.cloudfront.net (CloudFront) その後、ビューアにこのレスポンスを返します。以下に例を示します。 Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront) 最大ファイルサイズ CloudFront がビューアに返すレスポンス本文の最大サイズは 20 GB です。これには、Content-Length ヘッダーの値を指定しないチャンク転送レスポンスが含まれます。 リダイレクト すべてのリクエストを別のホスト名にリダイレクトするように Amazon S3 バケットを構成できます。 別のホスト名には、別の Amazon S3 バケットまたは HTTP サーバーを使用できます。すべてのリクエ ストをリダイレクトするようにバケットを構成しており、バケットが CloudFront ディストリビューショ ンのオリジンの場合、ディストリビューションのドメイン名(例: d111111abcdef8.cloudfront.net)ま たはディストリビューションに関連付けられた代替ドメイン名(CNAME)(例: example.com)を使用 してすべてのリクエストを CloudFront ディストリビューションにリダイレクトするようにバケットを 構成することをお勧めします。このように構成しない場合、ビューアリクエストは CloudFront をバイ パスし、オブジェクトは新しいオリジンから直接提供されます。 Note 代替ドメイン名にリクエストをリダイレクトする場合は、CNAME レコードを追加してドメイ ンの DNS サービスを更新する必要もあります。詳細については、「代替ドメイン名(CNAME) を使用する (p. 33)」を参照してください。 すべてのリクエストをリダイレクトするようにバケットを構成した場合の動作を以下に示します。 1. 2. ビューア(例: ブラウザ)が CloudFront にオブジェクトを要求します。 CloudFront は、ディストリビューションのオリジンである Amazon S3 バケットにリクエストを転 送します。 3. 4. Amazon S3 は、HTTP ステータスコード 301 (Moved Permanently)と新しい場所を返します。 CloudFront は、リダイレクトのステータスコードと場所をキャッシュし、ビューアに値を返しま す。CloudFront がリダイレクトに従って新しい場所からオブジェクトを取得することはありませ ん。 5. ビューアはオブジェクトに対する別のリクエストを送信しますが、今回は、CloudFront から取得 した新しい場所を指定します。 • Amazon S3 バケットがディストリビューションのドメイン名または代替ドメイン名を使用して すべてのリクエストを CloudFront ディストリビューションにリダイレクトする場合、CloudFront は新しい場所にある Amazon S3 バケットまたは HTTP サーバーのオブジェクトを要求します。 新しい場所からオブジェクトが返されると、CloudFront はオブジェクトをビューアに返し、エッ ジロケーションにオブジェクトをキャッシュします。 • Amazon S3 バケットがリクエストを別の場所にリダイレクトする場合、2 番目のリクエストは CloudFront をバイパスします。新しい場所にある Amazon S3 バケットまたは HTTP サーバーが オブジェクトをビューアに直接返すので、オブジェクトは CloudFront エッジキャッシュに一切 キャッシュされません。 API Version 2014-01-31 115 Amazon CloudFront 開発者ガイド カスタムオリジンの場合のリクエストとレスポンスの動作 カスタムオリジンの場合のリクエストとレスポン スの動作 Abstract CloudFront がカスタムオリジンサーバーのビューアリクエストとレスポンスを処理する方法について説明します。 Topics • CloudFront がリクエストを処理してカスタムオリジンサーバーに転送する方法 (p. 116) • CloudFront がカスタムオリジンサーバーからのレスポンスを処理する方法 (p. 120) CloudFront がリクエストを処理してカスタムオリジ ンサーバーに転送する方法 CloudFront がビューアリクエストを処理してカスタムオリジンに転送する方法については、該当する トピックを参照してください。 Topics • 認証 (p. 116) • キャッシュ期間および最小 TTL (p. 116) • クライアント IP アドレス (p. 117) • 圧縮 (p. 117) • 条件付きリクエスト (p. 117) • Cookie (p. 117) • 暗号化 (p. 117) • CloudFront が削除または更新するヘッダーフィールド (p. 118) • HTTP メソッド (p. 118) • HTTP バージョン (p. 119) • リクエストの最大長と URL の最大長 (p. 119) • プロトコル (p. 119) • クエリ文字列 (p. 120) • リクエストのタイムアウト (p. 120) • ユーザーエージェントヘッダー (p. 120) 認証 CloudFront には認証情報をビューアからオリジンに転送する方法がないため、クライアント認証をリ クエストするようにはオリジンサーバーを構成しないでください。HTTP または HTTPS のいずれかを 使用してオリジンにリクエストを転送するように CloudFront を構成することができます。詳細につい ては、「ビューア、CloudFront、およびオリジン間の通信に対して HTTPS を要求する方法 (p. 179)」を 参照してください。 キャッシュ期間および最小 TTL ウェブディストリビューションでは、CloudFront が別のリクエストをオリジンに転送するまでにオブ ジェクトを CloudFront キャッシュに保持する時間を制御できます。これを行うには、次の手順を実行 します。 API Version 2014-01-31 116 Amazon CloudFront 開発者ガイド CloudFront がリクエストを処理してカスタムオリジンサー バーに転送する方法 • Cache-Control または Expires ヘッダーフィールドを各オブジェクトに追加するようにオリジン を構成します。 • CloudFront キャッシュ動作で、最小 TTL の値を指定します。 • デフォルト値の 24 時間を使用します。 詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切 れ) (p. 90)」を参照してください。 クライアント IP アドレス CloudFront は、X-Forwarded-For リクエストヘッダーでクライアント IP アドレスをオリジンに転送 します。X-Forwarded-For リクエストヘッダーは次のようになります。 X-Forwarded-For: 192.0.2.235 X-Forwarded-For リクエストヘッダーに IP アドレスが複数含まれる場合、最初のアドレスは常にク ライアント IP アドレスです。他のアドレスは、リクエストが渡された後続の各プロキシを示します。 最後の IP アドレスは、リクエストを CloudFront に転送したプロキシを示します。 X-Forwarded-For: client-IP-address, proxy-IP-address, another-proxy-IP-address 圧縮 CloudFront は、"identity" および "gzip" の Accept-Encoding フィールド値を持つリクエストを 転送します。詳細については、「圧縮ファイルの供給 (p. 107)」を参照してください。 条件付きリクエスト CloudFront は、エッジキャッシュで有効期限切れになっているオブジェクトに対するリクエストを受 け取ると、リクエストをオリジンに転送し、オブジェクトの最新バージョンを取得するか、CloudFront エッジキャッシュに最新バージョンがすでに存在することをオリジンに確認します。通常、オリジンは オブジェクトを CloudFront に最後に送信するときに、ETag 値または LastModified 値、あるいはそ の両方の値をレスポンスに含めます。CloudFront がオリジンに転送する新しいリクエストには、次の どちらかまたは両方が追加されます。 • オブジェクトの有効期限切れバージョンの ETag 値が含まれる If-Match または If-None-Match ヘッダー。 • オブジェクトの有効期限切れバージョンの LastModified 値が含まれる If-Modified-Since ヘッ ダー。 オリジンは、この情報を使用して、オブジェクトが更新されているかどうかを判別します。つまり、オ ブジェクト全体を CloudFront に返すか、または HTTP 304 ステータスコード(変更なし)のみを返す かを判別します。 Cookie Cookie をオリジンに転送するように CloudFront を構成できます。詳細については、「CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う方法 (p. 86)」を参照してください。 暗号化 CloudFront は、SSLv3 または TLSv1 プロトコルと、AES128-SHA1 または RC4-MD5 暗号を使用し て、HTTPS リクエストをオリジンサーバーに転送します。オリジンサーバーが AES128-SHA1 と RC4-MD5 のいずれの暗号もサポートしていない場合、CloudFront はオリジンへの SSL 接続を確立す ることができません。 API Version 2014-01-31 117 Amazon CloudFront 開発者ガイド CloudFront がリクエストを処理してカスタムオリジンサー バーに転送する方法 オリジンへの HTTPS 接続を確立すると、CloudFront は Server Name Indication(SNI)拡張機能を追 加し、ご使用のディストリビューションに適した Origin Domain Name の値を組み込みます。SNI の詳 細については、「RFC 4366, Transport Layer Security (TLS) Extensions」のセクション 3.1 を参照して ください。 CloudFront が削除または更新するヘッダーフィールド CloudFront は、リクエストをオリジンに転送する前に、以下のヘッダーフィールドを削除または更新 します。 • Accept • Accept-Charset • Accept-Encoding: 値が gzip を含む場合、CloudFront はオリジンに Accept-Encoding: gzip を転送します。値が gzip含まない場合、CloudFront はリクエストをオリジンに転送する前に Accept-Encoding ヘッダーフィールドを削除します。 • Accept-Language • Authorization: • GET、HEAD の各リクエスト: CloudFront は、リクエストをオリジンに転送する前に Authorization ヘッダーフィールドを削除します。 • DELETE、OPTIONS、PATCH、POST、PUT の各リクエスト: CloudFront は、リクエストをオリジン に転送する前にヘッダーフィールドを削除しません。 • Connection: CloudFront は、オリジンにリクエストを転送する前にこのヘッダーを Connection: Keep-Alive ヘッダーに置き換えます。 • Cookie: Cookie を転送するように CloudFront を構成している場合、オリジンに Cookie ヘッダー フィールドが転送されます。そうでない場合、CloudFront は Cookie ヘッダーフィールドを削除し ます。詳細については、「CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う方 法 (p. 86)」を参照してください。 • Expect • Host: CloudFront は、リクエストされたオブジェクトに関連付けられたオリジンのドメイン名に値を 設定します。 • Proxy-Authenticate • Proxy-Authorization • Proxy-Connection • Referer • TE • Trailer • Transfer-Encoding: • GET、HEAD の各リクエスト: CloudFront は、リクエストをオリジンに転送する前にヘッダーフィー ルドを削除します。 • DELETE、OPTIONS、PATCH、POST、PUT の各リクエスト: 値が Transfer-Encoding: chunked の場合、CloudFront はリクエストをオリジンに転送する前に、ヘッダーフィールドを削除しませ ん。それ以外の値の場合、CloudFront はリクエストをオリジンに転送する前に、ヘッダーフィー ルドを削除します。 • Upgrade • User-Agent: CloudFront はこのヘッダーフィールドの値を Amazon CloudFront に置き換えます。 HTTP メソッド サポートするすべての HTTP メソッドを処理するよう CloudFront を構成すると、CloudFront はビュー アからの以下のリクエストを受け入れてカスタムオリジンに転送します。 API Version 2014-01-31 118 Amazon CloudFront 開発者ガイド CloudFront がリクエストを処理してカスタムオリジンサー バーに転送する方法 • DELETE • GET • HEAD • OPTIONS • PATCH • POST • PUT CloudFront はレスポンスを GET リクエストと HEAD リクエストにキャッシュし、それ以外のメソッド を使用するリクエストにはレスポンスをキャッシュしません。 カスタムオリジンが上記のメソッドを処理するかどうかを構成する方法の詳細については、オリジンの ドキュメントを参照してください。 Caution CloudFront がサポートするすべての HTTP メソッドを受け入れてオリジンに転送するように CloudFront を構成する場合、オリジンサーバーがすべてのメソッドを処理するように構成しま す。たとえば、POST を使用したいので、上記のメソッドを受け入れて転送するように CloudFront を構成する場合は、削除すべきでないリソースをビューアが削除できないようにするために、 DELETE リクエストを適切に処理するようオリジンサーバーを構成する必要があります。詳細 については、HTTP サーバーのドキュメントを参照してください。 HTTP バージョン CloudFront は HTTP/1.1 を使用してカスタムオリジンにリクエストを転送します。 リクエストの最大長と URL の最大長 パス、クエリ文字列(ある場合)、ヘッダーを含め、リクエストの最大長は 20480 バイトです。 CloudFront はリクエストから URL を構築します。この URL の最大長は 8192 文字です。 リクエストまたは URL がこの制限を超過した場合、CloudFront はリクエストを破棄します。 プロトコル CloudFront は、以下の項目に基づいて、HTTP または HTTPS リクエストをオリジンサーバーに転送し ます。 • ビューアが CloudFront に送信したリクエストのプロトコル(HTTP または HTTPS)。 • CloudFront コンソールの [Origin Protocol Policy] フィールドの値。または、CloudFront API を使用す る場合は、DistributionConfig 複合型の OriginProtocolPolicy エレメントの値。CloudFront コンソールでは、オプションは [HTTP Only] と [Match Viewer] です。 [HTTP Only] を指定した場合、CloudFront は、ビューアリクエストのプロトコルに関係なく、HTTP プ ロトコルのみを使用してリクエストをオリジンサーバーに転送します。 [Match Viewer] を指定した場合、ビューアリクエストのプロトコルを使用してリクエストをオリジン サーバーに転送します。ビューアが HTTP と HTTPS の両方のプロトコルを使用してリクエストを行っ た場合も、CloudFront がオブジェクトをキャッシュするのは 1 回だけです。 API Version 2014-01-31 119 Amazon CloudFront 開発者ガイド CloudFront がカスタムオリジンサーバーからのレスポンス を処理する方法 Caution ビューアリクエストで HTTPS プロトコルが使用されており、オリジンサーバーから無効な証 明書または自己署名証明書が返された場合、CloudFront は TCP 接続を中断します。 使用しているプロトコルが不明な場合は、HTTP のみを指定することをお勧めします。 CloudFront コンソールを使用してディストリビューションを更新する方法については、「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 31)」を参照してください。 CloudFront API を使用してディストリビューションを更新する方法については、「Amazon CloudFront API リファレンス」の「PUT Distribution Config」を参照してください。 クエリ文字列 CloudFront でクエリ文字列パラメータをオリジンに転送するかどうかを構成できます。詳細について は、「CloudFront がクエリ文字列パラメータの転送、キャッシュ、およびログ作成を行う方法 (p. 84)」 を参照してください。 リクエストのタイムアウト CloudFront がオリジンにデータをリクエストしたときに、オリジンが 30 秒以内に応答しない場合、 CloudFront は接続を中断して、オリジンに対する接続をさらに 2 回試みます。3 回目の試みでもオリ ジンが応答しない場合、CloudFront は同じオリジンのコンテンツに対する別のリクエストを受け取る まで接続を試みません。 ユーザーエージェントヘッダー CloudFront は、リクエストをオリジンに転送する前に、次の値が指定された User-Agent ヘッダーを 追加します。 User-Agent = Amazon CloudFront CloudFront は、ビューアからのリクエストに User-Agent ヘッダーが含まれているかどうかに関係な く、このヘッダーを追加します。ビューアからのリクエストに User-Agent ヘッダーが含まれる場合、 CloudFront はそのヘッダーを削除します。 CloudFront がカスタムオリジンサーバーからのレス ポンスを処理する方法 CloudFront がカスタムオリジンサーバーからのレスポンスを処理する方法については、該当するトピッ クを参照してください。 Topics • キャッシュ (p. 121) • 取り消されたリクエスト (p. 121) • コンテンツネゴシエーション (p. 121) • Cookie (p. 121) • 中断された TCP 接続 (p. 121) • CloudFront が削除または更新するヘッダーフィールド (p. 121) • 最大ファイルサイズ (p. 122) • オリジンが使用できない場合 (p. 122) • リダイレクト (p. 122) • 転送エンコード (p. 123) API Version 2014-01-31 120 Amazon CloudFront 開発者ガイド CloudFront がカスタムオリジンサーバーからのレスポンス を処理する方法 キャッシュ • オリジンサーバーが Date および Last-Modified ヘッダーフィールドに有効かつ正確な値を設定し ていることを確認します。 • ビューアからのリクエストに If-Match または If-None-Match リクエストヘッダーフィールドが 含まれる場合、ETag レスポンスヘッダーフィールドを設定します。ETag の値が指定されていない 場合、CloudFront は以降の If-Match または If-None-Match ヘッダーを無視します。 取り消されたリクエスト オブジェクトがエッジキャッシュになく、CloudFront がオブジェクトをオリジンから取得したものの、 リクエストされたそのオブジェクトを配信する前にビューアがセッションを終了すると(ブラウザを閉 じるなど)、CloudFront はそのオブジェクトをエッジロケーションにキャッシュしません。 コンテンツネゴシエーション Vary ヘッダーで受け付けられる唯一の値は Accept-Encoding です。CloudFront は他の値を無視し ます。 Cookie キャッシュ動作の Cookie を有効にしており、オリジンが Cookie とオブジェクトを返す場合、CloudFront はオブジェクトと Cookie の両方をキャッシュします。これにより、オブジェクトのキャッシュ可能性 が低下します。詳細については、「CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う 方法 (p. 86)」を参照してください。 中断された TCP 接続 オリジンがオブジェクトを CloudFront に返している間に CloudFront とオリジン間の TCP 接続が中断 した場合、CloudFront の動作は、オリジンが Content-Length ヘッダーをレスポンスに含めたかどう かによって異なります。 • Content-Length ヘッダーあり: CloudFront は、オブジェクトをオリジンから取得すると、ビューアに オブジェクトを返します。ただし、Content-Length ヘッダーの値がオブジェクトのサイズに一致 しない場合、CloudFront はオブジェクトをキャッシュしません。 • Transfer-Encoding: Chunked: CloudFront は、オブジェクトをオリジンから取得すると、ビューアに オブジェクトを返します。ただし、チャンクレスポンスが完了していない場合、CloudFront はオブ ジェクトをキャッシュしません。 • Content-Length ヘッダーなし: CloudFront はオブジェクトをビューアに返して、オブジェクトをキャッ シュしますが、オブジェクトが完全でない場合があります。Content-Length ヘッダーがない場合、 CloudFront は、TCP 接続が誤って中断されたか、または故意に中断されたかを判断できません。 Content-Length ヘッダーを追加して、不完全なオブジェクトがキャッシュされないように HTTP サーバーを構成することをお勧めします。 CloudFront が削除または更新するヘッダーフィールド CloudFront は、オリジンからのレスポンスをビューアに転送する前に、以下のヘッダーフィールドを 削除または更新します。 • Proxy-Connection API Version 2014-01-31 121 Amazon CloudFront 開発者ガイド CloudFront がカスタムオリジンサーバーからのレスポンス を処理する方法 • Set-Cookie: Cookie を転送するように CloudFront を構成している場合、Set-Cookie ヘッダー フィールドがクライアントに転送されます。詳細については、「CloudFront が Cookie の転送、キャッ シュ、およびログ作成を行う方法 (p. 86)」を参照してください。 • Trailer • Transfer-Encoding: オリジンがこのヘッダーフィールドを返す場合、CloudFront は値を chunked に設定してビューアにレスポンスを返します。 • Upgrade • Vary • Via: オリジンがこのヘッダーフィールドを CloudFront に返すかどうかにかかわらず、CloudFront は 次の値を設定します。 Via: 1.1 alphanumeric-string.cloudfront.net (CloudFront) その後、ビューアにこのレスポンスを返します。以下に例を示します。 Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront) 最大ファイルサイズ CloudFront がビューアに返すレスポンス本文の最大サイズは 20 GB です。これには、Content-Length ヘッダーの値を指定しないチャンク転送レスポンスが含まれます。 オリジンが使用できない場合 オリジンサーバーが使用できないときに、CloudFront がエッジキャッシュに存在するオブジェクトの リクエストを受け取り、そのオブジェクトが(例えば、Cache-Control max-age ディレクティブに 指定された期間が経過しているために)有効期限切れになっている場合、CloudFront は有効期限切れ バージョンのオブジェクトを供給するか、またはカスタムエラーページを供給します。詳細について は、「CloudFront が HTTP 4xx および 5xx ステータスコードを処理およびキャッシュする方法 (p. 123)」 を参照してください。 場合によって、要求頻度の低いオブジェクトは削除されてエッジキャッシュで使用できなくなることが あります。CloudFront は、削除されたオブジェクトを供給することはできません。 リダイレクト オリジンサーバーでオブジェクトの場所を変更した場合、リクエストを新しい場所にリダイレクトする ようにウェブサーバーを構成できます。リダイレクトが構成された後、ビューアがオブジェクトのリク エストを最初に送信したときに、CloudFront はリクエストをオリジンに送信し、オリジンはリダイレ クトで応答します(例: 302 Moved Temporarily)。CloudFront はリダイレクトをキャッシュし、 ビューアにリダイレクトを返します。CloudFront はリダイレクトに従いません。 リクエストを以下のどちらかの場所にリダイレクトするようにウェブサーバーを構成できます。 • オリジンサーバーのオブジェクトの新しい URL。ビューアが新しい URL へのリダイレクトに従う場 合、ビューアは CloudFront をバイパスし、オリジンに直接アクセスします。つまり、オリジンにあ るオブジェクトの新しい URL にリクエストをリダイレクトしないことをお勧めします。 • オブジェクトの新しい CloudFront URL。新しい CloudFront URL を含むリクエストがビューアから 送信されると、CloudFront は、オリジンの新しい場所からオブジェクトを取得し、エッジロケーショ ンにキャッシュした後、ビューアにオブジェクトを返します。オブジェクトに対する以降のリクエス トはエッジロケーションによって処理されます。これにより、オリジンのオブジェクトを要求する ビューアに関連するレイテンシーと負荷が回避されます。ただし、オブジェクトに対する新しいすべ てのリクエストに、CloudFront への 2 つのリクエストに対する料金がかかります。 API Version 2014-01-31 122 Amazon CloudFront 開発者ガイド CloudFront が HTTP 4xx および 5xx ステータスコードを処 理およびキャッシュする方法 転送エンコード CloudFront は、Transfer-Encoding ヘッダーの chunked 値のみをサポートします。オリジンが Transfer-Encoding: chunked を返した場合、CloudFront は、エッジロケーションで受け取ったオ ブジェクトをクライアントに返し、そのオブジェクトをチャンク形式でキャッシュして以降のリクエス トに備えます。 レスポンスのコンテンツ長を事前に決定できない場合は、チャンクエンコーディングを使用することを お勧めします。詳細については、「中断された TCP 接続 (p. 121)」を参照してください。 CloudFront が HTTP 4xx および 5xx ステータス コードを処理およびキャッシュする方法 Abstract エラーが発生したときに CloudFront が HTTP ステータスコードを処理しキャッシュする方法について説明します。 Topics • カスタムエラーページが構成されている場合に CloudFront がエラーを処理する方法 (p. 124) • カスタムエラーページが構成されていない場合に CloudFront がエラーを処理する方法 (p. 124) • CloudFront がキャッシュする HTTP 4xx および 5xx ステータスコード (p. 125) CloudFront が Amazon S3 バケットまたはカスタムオリジンサーバーのオブジェクトをリクエストする と、オリジンサーバーは HTTP 4xx または 5xx ステータスコードを返すことがあります。このステータ スコードは、エラーが発生したことを示します。CloudFront の動作は、以下の条件によって左右され ます。 • カスタムエラーページが構成されているかどうか。 • オリジンからのエラーレスポンスを CloudFront がキャッシュする時間(エラーキャッシュ最小 TTL) が構成されているかどうか。 • ステータスコード。 • 5xx ステータスコードの場合、リクエストされたオブジェクトが現在 CloudFront エッジキャッシュ にあるかどうか。 CloudFront コンソールでのカスタムエラーページの設定の詳細については、「Custom Error Pages(カ スタムエラーページ)と Error Caching(エラーキャッシュ) (p. 60)」を参照してください。CloudFront コンソールでのエラーキャッシュ最小 TTL の詳細については、「Error Caching Minimum TTL(エラー キャッシュ最小 TTL) (p. 60)」を参照してください。 CloudFront がキャッシュする HTTP ステータスコードのリストについては、「CloudFront がキャッシュ する HTTP 4xx および 5xx ステータスコード (p. 125)」を参照してください。 ログ作成を有効にしている場合、CloudFront は、HTTP ステータスコードに関係なく結果をログに書き 込みます。 API Version 2014-01-31 123 Amazon CloudFront 開発者ガイド カスタムエラーページが構成されている場合に CloudFront がエラーを処理する方法 カスタムエラーページが構成されている場合に CloudFront がエラーを処理する方法 オリジンが HTTP 4xx または 5xx ステータスコードを返したとき、リクエストされたオブジェクトが エッジキャッシュに存在せず、カスタムエラーページが構成されている場合、CloudFront は以下のよ うに動作します。 1. 最初のリクエストを受け取った CloudFront エッジキャッシュで、CloudFront はディストリビュー ション構成を確認して、オリジンサーバーから返されたステータスコードに対応するカスタムエラー ページのパスを取得します。 2. CloudFront は、カスタムエラーページのパスと一致するパスパターンを持つ、ディストリビューショ ン内の最初のキャッシュ動作を検索します。 3. CloudFront エッジロケーションは、キャッシュ動作に指定されているオリジンに、カスタムエラー ページのリクエストを送信します。 4. オリジンはカスタムエラーページをエッジロケーションに返します。 5. CloudFront は、リクエストを送信したビューアにカスタムエラーページを返し、エラーキャッシュ 最小 TTL(デフォルトで 5 分)に指定された時間カスタムエラーページのキャッシュも行います。 6. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、リ クエストされたオブジェクトを再度取得することを試みます。 オリジンが HTTP 5xx ステータスコードを返したとき、リクエストされたオブジェクトがエッジキャッ シュに存在し、カスタムエラーページが構成されている場合、CloudFront は以下のように動作します。 1. オブジェクトは失効していますが、CloudFront はそのオブジェクトを返します。エラーキャッシュ 最小 TTL の期間、CloudFront はビューアリクエストに対してエッジキャッシュのオブジェクトを返 してレスポンスを続けます。 2. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、リ クエストされたオブジェクトを再度取得することを試みます。オブジェクトが頻繁に要求されない 場合、CloudFront はそのオブジェクトをエッジキャッシュから削除することがありますが、オリジ ンサーバーは 5xx レスポンスを依然として返します。オブジェクトが CloudFront エッジキャッシュ に保持される期間については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指 定(有効期限切れ) (p. 90)」を参照してください。 カスタムエラーページが構成されていない場合に CloudFront がエラーを処理する方法 リクエストされたオブジェクトがエッジキャッシュに存在せず、オリジンが HTTP 4xx ステータスコー ドまたはHTTP 5xx ステータスコードを返したとき、カスタムエラーページを構成していない場合、 CloudFront は以下のように動作します。 1. CloudFront は 4xx または 5xx ステータスコードをビューアに返します。 2. また、CloudFront は、リクエストを受け取ったエッジキャッシュにステータスコードをキャッシュ します。 3. エラーキャッシュ最小 TTL(デフォルトで 5 分)の期間、CloudFront はそれ以後に同じオブジェク トを要求するビューアリクエストに、キャッシュされた 4xx または 5xx ステータスコードでレスポ ンスします。 4. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、リ クエストされたオブジェクトを再度取得することを試みます。 API Version 2014-01-31 124 Amazon CloudFront 開発者ガイド CloudFront がキャッシュする HTTP 4xx および 5xx ステー タスコード オリジンが HTTP 5xx ステータスコードを返したとき、リクエストされたオブジェクトがエッジキャッ シュに存在し、カスタムエラーページを構成していない場合、CloudFront は以下のように動作します。 1. オブジェクトは失効していますが、CloudFront はそのオブジェクトを返します。エラーキャッシュ 最小 TTL の期間、CloudFront はビューアリクエストに対してエッジキャッシュのオブジェクトを返 してレスポンスを続けます。 2. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、リ クエストされたオブジェクトを再度取得することを試みます。オブジェクトが頻繁に要求されない 場合、CloudFront はそのオブジェクトをエッジキャッシュから削除することがありますが、オリジ ンサーバーは 5xx レスポンスを依然として返します。オブジェクトが CloudFront エッジキャッシュ に保持される期間については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指 定(有効期限切れ) (p. 90)」を参照してください。 CloudFront がキャッシュする HTTP 4xx および 5xx ステータスコード CloudFront は、Amazon S3 またはカスタムオリジンサーバーから返される以下の HTTP 4xx および 5xx ステータスコードをキャッシュします。HTTP ステータスコードのカスタムエラーページを構成し てある場合は、CloudFront はカスタムエラーページをキャッシュします。 400 Bad Request 403 Forbidden 404 Not Found 405 Method Not Allowed 414 Request-URI Too Large 500 Internal Service Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Time-out API Version 2014-01-31 125 Amazon CloudFront 開発者ガイド プライベートコンテンツの概要 CloudFront を使用してプライベート コンテンツを供給する Abstract コンテンツにアクセスするときに CloudFront URL を必須にすることで、CloudFront を使用してプライベートコン テンツへのアクセスを制限します。 インターネットを通じてコンテンツを配信する多くの企業が、選ばれたユーザー(料金を支払っている ユーザーなど)のドキュメント、ビジネスデータ、メディアストリーム、またはコンテンツに対して、 アクセスを制限する必要があると考えています。CloudFront を使用してこのプライベートコンテンツ を安全に供給するには、以下の方法を使用できます。 • コンテンツへのアクセスにユーザーが標準の CloudFront パブリック URL ではなく特別な CloudFront 署名付き URL を使用するよう要求します。 • Amazon S3 コンテンツへのアクセスにユーザーが Amazon S3 URL ではなく CloudFront URL を使 用するよう要求します。 プライベートコンテンツの概要 プライベートコンテンツへのエンドユーザーアクセスは 2 つの方法を使用して制御可能です。 API Version 2014-01-31 126 Amazon CloudFront 開発者ガイド プライベートコンテンツの機能 CloudFront エッジキャッシュ内のオブジェクトへのアクセスを制限できます。オブジェク トへのアクセスにユーザーが特別な署名付き URL を使用するよう要求する CloudFront を 構成できます。次に、署名付き URL を(手動またはプログラムで)作成してユーザーに配 信します。 オブジェクトの署名付き URL を作成する場合、以下の項目を指定できます。 • 最終日時。この日時以降、URL が有効ではなくなります。 • (オプション)URL が有効になる日時。 • (オプション)コンテンツへのアクセスに使用可能なコンピューターの IP アドレスまた はアドレス範囲。 署名付き URL の 1 つのパートは、パブリック/プライベートキーペアからのプライベート キーを使用してハッシュ化および署名されます。ユーザーが署名付き URL を使用してオブ ジェクトにアクセスすると、CloudFront は URL の署名部分と無署名部分を比較します。 これらが一致しない場合、CloudFront はオブジェクトを供給しません。 Amazon S3 バケット内のオブジェクトへのアクセスを制限できます。Amazon S3 バケッ ト内のコンテンツにエンドユーザーが CloudFront URL を使用してアクセスでき、Amazon S3 URL を使用してアクセスできないように、Amazon S3 バケット内のコンテンツを保護 できます。これにより、アクセスを制限しようとしているコンテンツに対して、ユーザー が CloudFront をバイパスし、Amazon S3 URL を使用してアクセスできなくなります。 ユーザーが CloudFront URL を使用するよう要求するには、以下の処理を行います。 • オリジンアクセスアイデンティティと呼ばれる特別な CloudFront ユーザーを作成しま す。 • バケット内のオブジェクトの読み取り許可をオリジンアクセスアイデンティティに与え ます。 • 他のユーザーに与えられているそれらのオブジェクトの読み取り許可を削除します。 プライベートコンテンツの機能 プライベートコンテンツを使用して Amazon S3 コンテンツへのアクセスを保護する方法の概要を以下 に示します。各ステップの詳細については後で説明します。 API Version 2014-01-31 127 Amazon CloudFront 開発者ガイド プライベートコンテンツ用の HTTP サーバーの使用 Note プライベートコンテンツをセットアップするには、CloudFront コンソールまたは CloudFront API バージョン 2009-09-09 以降を使用する必要があります。 1. 2. 3. 4. 5. 6. 7. 8. アクセスを制限しようとしているコンテンツに対して、ユーザーが CloudFront をバイパスし、 Amazon S3 URL を使用してアクセスできないように、Amazon S3 のコンテンツを保護します。 このステップはオプションですが、ユーザーがコンテンツの Amazon S3 URL を覚えた場合に備え て、このステップを実行することをお勧めします。 a. b. 特別な CloudFront ユーザーであるオリジンアクセスアイデンティティを作成します。 オリジンアクセスアイデンティティをディストリビューションに関連付けます。(ウェブディ ストリビューションでは、オリジンアクセスアイデンティティをオリジンに関連付けます。そ うすることで、Amazon S3 コンテンツのすべてまたは一部のみの保護が可能です)。 c. オリジンアクセスアイデンティティのみがオブジェクトにアクセスできるように Amazon S3 内の許可を変更します。 詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのア クセスを制限する (p. 131)」を参照してください。 CloudFront ディストリビューションで、1 つ以上の信頼された署名者を指定します。これは、署名 付き URL の作成許可が与えられる AWS アカウントです。 詳細については、「署名付き URL (信頼された署名者)の作成が可能な AWS アカウントの指 定 (p. 137)」を参照してください。 署名付き URL を必要とするオブジェクトやアプリケーションのパートに対して署名付き URL を作 成するようにアプリケーションを開発します。 署名付き URL の詳細については、「署名付き URL の概要 (p. 143)」を参照してください。 署名付き URL を必要とするオブジェクトをエンドユーザーが要求します。 アプリケーションは、オブジェクトにアクセスするための資格がエンドユーザーにあることを検証 します。例えば、エンドユーザーがサインインしていること、コンテンツへのアクセス料を支払っ ていること、他のいくつかのアクセス要件を満たしていることを検証します。 アプリケーションは署名付き URL を作成してエンドユーザーに返します。 署名付き URL を使用すると、ユーザーはコンテンツのダウンロードやストリーミングができます。 このステップは自動で実行されます。ユーザーは、コンテンツにアクセスする以外に、何も行う必 要はありません。例えば、ユーザーがウェブブラウザでコンテンツにアクセスすると、アプリケー ションは署名付き URL をブラウザに返します。ブラウザは、直ちに、署名付き URL を使用して CloudFront エッジキャッシュ内のオブジェクトにアクセスします。ユーザーからの介入はありま せん。 CloudFront は、URL が改ざんされておらず、依然として有効であることを確認します。例えば、 URL の開始日時と終了日時を指定した場合、CloudFront は、アクセスが許可されている期間にユー ザーがコンテンツへのアクセスを試みていることを確認します。URL が有効な場合、CloudFront は標準の操作を実行します。つまり、オブジェクトがエッジキャッシュにすでに存在するかどうか を確認し、必要に応じてリクエストをオリジンに転送して、オブジェクトをユーザーに返します。 プライベートコンテンツ用の HTTP サーバーの使用 オリジンが Amazon S3 バケットまたは HTTP サーバーのどちらであるかに関係なく、あらゆる CloudFront ディストリビューションで署名付き URL を使用できます。ただし、CloudFront で HTTP サーバーのオブジェクトにアクセスするには、オブジェクトがパブリックにアクセス可能な状態で維持 されている必要があります。オブジェクトがパブリックにアクセス可能であるため、HTTP サーバーの オブジェクトの URL を知っているユーザーは、CloudFront 署名付き URL によって提供される保護な API Version 2014-01-31 128 Amazon CloudFront 開発者ガイド 署名付き URL の有効期間の選択 しで、オブジェクトにアクセスできます。署名付き URL を使用し、オリジンが HTTP サーバーの場合 は、HTTP サーバーのオブジェクトの URL をカスタマーまたは組織外部のユーザーに提供しないでく ださい。 署名付き URL の有効期間の選択 短期間(おそらく数分)のみ有効な署名付き URL を使用してプライベートコンテンツを配信できます。 このように短期間有効な署名付き URL は、限定された目的で、コンテンツをエンドユーザーにオンザ フライで配信する場合に適しています。例えば、映画レンタルや音楽ダウンロードをカスタマーにオン デマンドで配信する場合に適しています。署名付き URL を短期間だけ有効にする場合、開発したアプ リケーションを使用して、署名付き URL を自動生成することが必要になる場合があります。ユーザー がオブジェクトのダウンロードまたはメディアファイルの再生を開始すると、CloudFront は、URL 内 の有効期限切れ時刻と現在の時刻を比較して、URL が依然として有効かどうかを判別します。 これよりも有効期間の長い(おそらく数年間の)署名付き URL を使用して、プライベートコンテンツ を配信できます。有効期間の長い署名付き URL は、プライベートコンテンツを既知のエンドユーザー に配信する場合に役立ちます。例えば、事業計画を投資家に配信したり、教育資料を従業員に配信した りする場合に役立ちます。この長い期間の署名付き URL を自動で生成するアプリケーションを開発す るか、プライベートコンテンツの構成ツール (p. 301) に示されたサードパーティ GUI ツールの 1 つを使 用できます。 サンプルコードおよびサードパーティツール 署名付き URL の、ハッシュ化および署名されたパートを作成するサンプルコードについては、以下の トピックを参照してください。 • • • • Perl を使用して URL 署名を作成する (p. 163) PHP を使用して URL 署名を作成する (p. 165) C# と .NET Framework を使用して URL 署名を作成する (p. 167) Java を使用して URL 署名を作成する (p. 175) 署名付き URL を作成するその他のサンプルコードは、Amazon CloudFront の「サンプルコード & ライ ブラリ」ページで取得できます。 署名付き URL の作成を含め、プライベートコンテンツをサポートするサードパーティツールの詳細に ついては、「プライベートコンテンツの構成ツール (p. 301)」を参照してください。 API Version 2014-01-31 129 Amazon CloudFront 開発者ガイド タスクリスト: プライベートコンテンツを供給する タスクリスト: プライベートコンテンツを供給する Abstract ステップに従って CloudFront を構成してプライベートコンテンツを供給します。 プライベートコンテンツを供給するように CloudFront を構成するには、以下のタスクを実行します。 1. 2. 3. オプション: CloudFront ディストリビューションと Amazon S3 バケットを構成し、Amazon S3 コ ンテンツへのアクセスにユーザーが CloudFront URL のみを使用するよう要求します。詳細につい ては、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制 限する (p. 131)」を参照してください。 署名付き URL の作成に使用する AWS アカウントを指定します。詳細については、「署名付き URL (信頼された署名者)の作成が可能な AWS アカウントの指定 (p. 137)」を参照してください。 署名付き URL を手動またはプログラムで作成し、認可されたエンドユーザーに与えます。詳細に ついては、「署名付き URL の概要 (p. 143)」を参照してください。 API Version 2014-01-31 130 Amazon CloudFront 開発者ガイド オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する Abstract オリジンアクセスアイデンティティを作成して使用することで、Amazon S3 コンテンツへのアクセスを制限しま す。 Topics • CloudFront オリジンアクセスアイデンティティを作成してディストリビューションに追加する (p. 132) • オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り許可を付 与する (p. 134) 通常、Amazon S3 バケットを CloudFront ディストリビューションのオリジンとして使用する場合、す べてのユーザーにバケット内のオブジェクトの読み取り許可を与えます。これにより、すべてのユー ザーが CloudFront URL または Amazon S3 URL を使用してオブジェクトにアクセスできます。CloudFront は Amazon S3 URL を公開しませんが、アプリケーションが何らかのオブジェクトを Amazon S3 から 直接供給したり、Amazon S3 内の特定のオブジェクトへの直接リンクが公言されたりした場合、ユー ザーは Amazon S3 URL を知ることができます。 CloudFront 署名付き URL を使用して Amazon S3 バケット内のオブジェクトへのアクセスを提供する 場合は、ユーザーが Amazon S3 URL を使用して Amazon S3 オブジェクトにアクセスできないように することが必要になる場合もあります。ユーザーが Amazon S3 内のオブジェクトに直接アクセスする と、ユーザーは CloudFront 署名付き URL によって提供される制御をバイパスします。これには、URL が有効期限切れになった場合の制御や、オブジェクトへのアクセスに使用可能な IP アドレスの制御が 含まれます。また、ユーザーが CloudFront URL と Amazon S3 URL の両方を使用してオブジェクトに アクセスする場合、CloudFront アクセスログが不完全になり、役に立たなくなります。 特別な CloudFront ユーザーであるオリジンアクセスアイデンティティを作成することで、Amazon S3 コンテンツへのアクセスを制限します。オリジンアクセスアイデンティティにオブジェクトへのアクセ ス許可を与え、他のすべてのユーザーから許可を削除するように、Amazon S3 許可を変更します。ユー ザーが CloudFront URL を使用して Amazon S3 オブジェクトにアクセスすると、CloudFront オリジン アクセスアイデンティティがユーザーに代わってオブジェクトを取得します。ユーザーが Amazon S3 URL を使用してオブジェクトへのアクセスを試みると、ユーザーはアクセスを拒否されます。オリジ ンアクセスアイデンティティには、Amazon S3 バケット内のオブジェクトにアクセスするための許可 がありますが、ユーザーにはありません。 Note オリジンアクセスアイデンティティを作成するには、CloudFront コンソールまたは CloudFront API バージョン 2009-09-09 以降を使用する必要があります。 URL が署名されているかどうかに関係なく、ユーザーがオブジェクトに CloudFront URL のみを使用し てアクセスしていることを確認するには、以下のタスクを実行します。 1. オリジンアクセスアイデンティティを作成してディストリビューションに追加します。詳細につい ては、「CloudFront オリジンアクセスアイデンティティを作成してディストリビューションに追 加する (p. 132)」を参照してください。 Note ディストリビューションを作成するときに、オリジンアクセスアイデンティティを作成し てディストリビューションに追加することもできます。 API Version 2014-01-31 131 Amazon CloudFront 開発者ガイド CloudFront オリジンアクセスアイデンティティを作成して ディストリビューションに追加する 2. オリジンアクセスアイデンティティのみが読み取り許可(または読み取りとダウンロードの許可) を持つように、Amazon S3 バケットに対する許可またはバケット内のオブジェクトに対する許可 を変更します。 詳細については、「オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクト の読み取り許可を付与する (p. 134)」を参照してください。 CloudFront オリジンアクセスアイデンティティを作 成してディストリビューションに追加する AWS アカウントは最大で 100 個の CloudFront オリジンアクセスアイデンティティを持つことができ ます。ただし、1 つのオリジンアクセスアイデンティティを、必要な数のディストリビューションに追 加できるため、通常は 1 つのオリジンアクセスアイデンティティで十分です。 ディストリビューションの作成時にオリジンアクセスアイデンティティを作成してディストリビュー ションに追加しなかった場合は、ここで、CloudFront コンソールまたは CloudFront API を使用して、 作成と追加を行うことができます。 • CloudFront コンソールを使用する場合: オリジンアクセスアイデンティティの作成とディストリビュー ションへの追加を同時に行えます。詳細については、「CloudFront コンソールを使用して、オリジ ンアクセスアイデンティティを作成してディストリビューションに追加する (p. 132)」を参照してく ださい。 • CloudFront API を使用する場合: オリジンアクセスアイデンティティを作成した後に、それをディス トリビューションに追加します。以下の各トピックの手順を実行します。 • CloudFront API を使用してオリジンアクセスアイデンティティを作成する (p. 133) • CloudFront API を使用してディストリビューションにオリジンアクセスアイデンティティを追加す る (p. 134) CloudFront コンソールを使用して、オリジンアクセスアイデン ティティを作成してディストリビューションに追加する ディストリビューションの作成時にオリジンアクセスアイデンティティを作成しなかった場合、以下の 手順を実行します。 CloudFront コンソールを使用して CloudFront オリジンアクセスアイデンティティを作成する には 1. 2. 3. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 オリジンアクセスアイデンティティの追加先であるディストリビューションの リックします。 アイコンをク 編集モードに変更します。 • ウェブディストリビューション: [Origins] タブをクリックし、編集するオリジンをクリックし、 [Edit] をクリックします。[Origin Type] が [S3 Origin] となっているオリジンに対してのみ、オリ ジンアクセスアイデンティティを作成できます。 • RTMP ディストリビューション: [Edit] をクリックします。 4. 5. [Restrict Bucket Access] では、[Yes] をクリックします。 使用するオリジンアクセスアイデンティティがすでにある場合は、[Use an Existing Identity] をク リックします。次に、[Your Identities] リストでアイデンティティを選択します。 API Version 2014-01-31 132 Amazon CloudFront 開発者ガイド CloudFront オリジンアクセスアイデンティティを作成して ディストリビューションに追加する Note オリジンアクセスアイデンティティがすでにある場合は、それを再利用し、メンテナンス を簡素化することをお勧めします。 6. アイデンティティを作成する場合は、[Create a New Identity] をクリックします。次に、アイデン ティティの説明を [Comment] フィールドに入力します。 [Origin Domain Name] に指定された Amazon S3 バケット内のオブジェクトの読み取り許可を、 CloudFront でオリジンアクセスアイデンティティに自動的に与える場合は、[Yes, Update Bucket Policy] をクリックします。 Important [Yes, Update Bucket Policy] をクリックすると、CloudFront は、指定されたオリジンアク セスアイデンティティにバケット内のオブジェクトの読み取り許可を付与するようにバ ケット許可を更新します。ただし、CloudFront は既存の許可を削除しません。現在、 Amazon S3 URL を使用してバケット内のオブジェクトにアクセスするための許可を持っ ているユーザーは、CloudFront がバケット許可を更新した後もその許可を依然として持っ ています。既存のバケット許可を表示または削除するには、Amazon S3 によって提供され る方法を使用します。詳細については、「オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り許可を付与する (p. 134)」を参照してください。 7. 8. Amazon S3 バケットに対する許可を手動で更新する場合は、[No, I Will Update Permissions] をク リックします。 [Yes, Edit] をクリックします。 オリジンアクセスアイデンティティをウェブディストリビューションに追加しており、複数のオリ ジンがある場合は、必要な回数だけステップ 3 ~ 7 を繰り返します。 CloudFront API を使用してオリジンアクセスアイデンティティ を作成する オリジンアクセスアイデンティティがすでにあり、別のオリジンアクセスアイデンティティを作成する のではなくそれを再利用する場合は、このステップをスキップして「CloudFront API を使用してディス トリビューションにオリジンアクセスアイデンティティを追加する (p. 134)」に進んでください。 CloudFront API を使用して CloudFront オリジンアクセスアイデンティティを作成するには、POST Origin Access Identity API アクションを使用します。レスポンスに新しいオリジンアクセスアイ デンティティの Id と S3CanonicalUserId が含まれます。これらの値をプロセスの後半で使用する ため、これらの値を書き留めておきます。 • Id エレメント: Id エレメントの値を使用して、オリジンアクセス ID をディストリビューションと関 連付けます。 • S3CanonicalUserId エレメント: CloudFront に Amazon S3 バケットまたはオブジェクトへのアクセ スを与える場合に S3CanonicalUserId エレメントの値を使用します。 POST Origin Access Identity API アクションの詳細については、「Amazon CloudFront API リ ファレンス」の「POST Origin Access Identity」を参照してください。オリジンアクセスアイデンティ ティに対して実行可能な他のアクションのリストについては、「Amazon CloudFront API リファレン ス」の「Actions on Origin Access Identities」を参照してください。 API Version 2014-01-31 133 Amazon CloudFront 開発者ガイド オリジンアクセスアイデンティティに Amazon S3 バケッ ト内のオブジェクトの読み取り許可を付与する CloudFront API を使用してディストリビューションにオリジン アクセスアイデンティティを追加する CloudFront API を使用して、CloudFront オリジンアクセスアイデンティティを既存のディストリビュー ションに追加したり、オリジンアクセスアイデンティティを含む新しいディストリビューションを作成 したりできます。どちらの場合も、OriginAccessIdentity エレメントを含めます。このエレメント には、オリジンアクセスアイデンティティの作成時に POST Origin Access Identity API アクショ ンによって返された Id エレメントの値が含まれます。ウェブディストリビューションの場合、 OriginAccessIdentity エレメントを 1 つ以上のオリジンに追加します。RTMP ディストリビュー ションの場合、OriginAccessIdentity エレメントをディストリビューションに追加します。 「Amazon CloudFront API リファレンス」の該当するトピックを参照してください。 • 新しいウェブディストリビューションを作成する:「POST Distribution」 • 既存のウェブディストリビューションを更新する:「PUT Distribution Config」 • 新しい RTMP ディストリビューションを作成する:「POST Streaming Distribution」 • 既存の RTMP ディストリビューションを更新する:「PUT Streaming Distribution Config」 オリジンアクセスアイデンティティに Amazon S3 バ ケット内のオブジェクトの読み取り許可を付与する ディストリビューションの作成または更新を行う場合、オリジンアクセスアイデンティティを追加する とともに、オリジンアクセスアイデンティティにバケットへのアクセス許可を与えるようにバケットポ リシーを自動的に更新できます。また、バケットポリシーまたは ACL を手動で変更するように選択す ることもできます。ACL とは、バケット内の個々のオブジェクトに対する許可を制御するものです。 どちらの方法を使用する場合も、バケットに対するバケットポリシーと、オブジェクトに対する許可を 見直して、以下の点を確認する必要があります。 • CloudFront URL を使用してオブジェクトを要求するユーザーに代わって、CloudFront がバケット内 のオブジェクトにアクセスできること。 • ユーザーが Amazon S3 URL を使用してオブジェクトにアクセスできないこと。 Caution CloudFront がサポートするすべての HTTP メソッドを受け入れて Amazon S3 に転送するよう に CloudFront を構成する場合、お客様の Amazon S3 コンテンツへのアクセスを制限する CloudFront オリジンアクセスアイデンティティを作成して、そのオリジンアクセスアイデン ティティに適切な許可を付与します。例えば、PUT メソッドを使用したいので、上記のメソッ ドを受け入れて転送するように CloudFront を構成するという場合は、削除すべきでないリソー スをユーザーが削除できないようにするために、DELETE リクエストを適切に処理する Amazon S3 バケットポリシーまたは ACL を構成する必要があります。 次の点に注意してください。 • 許可を更新しなくてもオブジェクトをバケットに追加できるため、ACL を更新するよりも Amazon S3 バケットポリシーを更新するほうが簡単な場合があります。ただし、ACL を使用すると、各オブ ジェクトに対する許可を付与できるため、より詳細な制御が可能になります。 • デフォルトでは、Amazon S3 バケットと、バケット内のすべてのオブジェクトはプライベートです。 バケットを作成した AWS アカウントのみが、バケット内のオブジェクトの読み取りまたは書き込み 許可を有しています。 API Version 2014-01-31 134 Amazon CloudFront 開発者ガイド オリジンアクセスアイデンティティに Amazon S3 バケッ ト内のオブジェクトの読み取り許可を付与する • オリジンアクセスアイデンティティを既存のディストリビューションに追加する場合、バケットポリ シーまたはすべてのオブジェクト ACL を必要に応じて変更し、オブジェクトがパブリックに公開さ れないようにします。 • Amazon S3 バケットのコンテンツを引き続き更新できるように、追加の許可を 1 つ以上のセキュア 管理者アカウントに付与します。 Important Amazon S3 許可への変更を保存してから変更が有効になるまでわずかな遅延が生じる場合があ ります。変更が有効になるまでは、バケット内のオブジェクトにアクセスしようとすると、許 可が拒否されたことを示すエラーを受け取ることがあります。 S3 バケットポリシーを更新する AWS Management Console または Amazon S3 API を使用して Amazon S3 バケットポリシーを更新で きます。 • バケットに対する適切な許可を CloudFront オリジンアクセスアイデンティティに付与します。 オリジンアクセスアイデンティティを指定するには、CloudFront コンソールの [Origin Access Identity] ページにある [Amazon S3 Canonical User ID] の値を使用します。CloudFront API を使用する場合 は、オリジンアクセスアイデンティティの作成時に返された S3CanonicalUserId エレメントの値 を使用します。 • Amazon S3 URL を使用したアクセスが望まれないすべてのユーザーへのアクセスを拒否します。 詳細については、「Amazon Simple Storage Service 開発者ガイド」の「バケットポリシーの使用」を 参照してください。 例えば、同じ「Amazon Simple Storage Service 開発者ガイド」にあるトピック「Amazon S3バケット ポリシーの参考例」の「正規 ID を使用した CloudFront オリジンアクセスアイデンティティへのアクセ ス許可の付与」を参照してください。 Amazon S3 ACL を更新する AWS Management Console または Amazon S3 API を使用して、Amazon S3 ACL を変更します。 • CloudFront ディストリビューションによって供給される各オブジェクトに対する適切な許可を CloudFront オリジンアクセスアイデンティティに付与します。 オリジンアクセスアイデンティティを指定するには、CloudFront コンソールの [Origin Access Identity] ページにある [Amazon S3 Canonical User ID] の値を使用します。CloudFront API を使用する場合 は、オリジンアクセスアイデンティティの作成時に返された S3CanonicalUserId エレメントの値 を使用します。 • Amazon S3 URL を使用したアクセスが望まれないすべてのユーザーへのアクセスを拒否します。 別の AWS アカウントでオブジェクトをバケットにアップロードする場合、そのアカウントはオブジェ クトの所有者です。デフォルトでは、バケット内のオブジェクトを所有するアカウントが、そのオブ ジェクトに許可を付与できる唯一のアカウントです。ただし、オブジェクトを所有する AWS アカウン トは、任意のユーザーを所有者とすることもできます。これにより、そのユーザーはオブジェクトに対 する許可を変更できます。 詳細については、「Amazon Simple Storage Service 開発者ガイド」の「ACL の使用」を参照してくだ さい。 API Version 2014-01-31 135 Amazon CloudFront 開発者ガイド オリジンアクセスアイデンティティに Amazon S3 バケッ ト内のオブジェクトの読み取り許可を付与する コードと、AWS SDK の 1 つを使用して、ACL を変更することもできます。例えば、「C# と .NET Framework を使用して URL 署名を作成する (p. 167)」にあるダウンロード可能なサンプルコードを参照 してください。 API Version 2014-01-31 136 Amazon CloudFront 開発者ガイド 署名付き URL (信頼された署名者)の作成が可能な AWS アカウントの指定 署名付き URL (信頼された署名者)の作成が可能 な AWS アカウントの指定 Abstract どの AWS アカウントが Amazon S3 バケットのオブジェクトにアクセスできるかを指定する署名付き URL を作成 します。 Topics • 信頼された署名者の CloudFront キーペアを作成する (p. 138) • CloudFront プライベートキーの形式を変更する(.NET および Java のみ) (p. 139) • 信頼された署名者をディストリビューションに追加する (p. 139) • 信頼された署名者が有効になっていることを確認する(オプション) (p. 141) • CloudFront キーペアを更新する (p. 142) Amazon S3 バケット内のオブジェクトの署名付き URL を作成するには、有効な CloudFront キーペア を持つ少なくとも 1 つの AWS アカウントが必要です。このアカウントは信頼された署名者と呼ばれま す。信頼された署名者には 2 つの目的があります。 • 信頼された署名者のAWSアカウント番号がディストリビューションに追加された直後から、CloudFront は、Amazon S3 バケット内のオブジェクトへのアクセスにユーザーが署名付き URL を使用するよう 要求します。 • 署名付き URL を作成する場合、信頼された署名者のキーペアからプライベートキーを使用して、URL の一部を署名します。ユーザーが署名付き URL を使用してオブジェクトにアクセスすると、CloudFront は URL の署名部分を無署名部分と比較して、URL が改ざんされていないことを確認します。CloudFront は、URL が有効であることも確認します。例えば、URL 内の有効期限切れ日時が経過していないこ とを確認します。 信頼された署名者を指定する場合、署名付き URL を必要とするオブジェクトも間接的に指定します。 • ウェブディストリビューション: 信頼された署名者をキャッシュ動作に追加します。ディストリビュー ションに 1 つのキャッシュ動作のみが含まれる場合、ユーザーは、ディストリビューションに関連付 けられたオブジェクトへのアクセスに署名付き URL を使用する必要があります。複数のキャッシュ 動作を作成し、信頼された署名者を一部のキャッシュ動作に追加し、それ以外のキャッシュ動作に追 加しなかった場合、一部のオブジェクトへのアクセスについては、ユーザーが署名付き URL を使用 するよう要求し、その他のオブジェクトへのアクセスについては要求しないということが可能になり ます。 • RTMP ディストリビューション: 信頼された署名者をディストリビューションに追加します。信頼さ れた署名者を RTMP ディストリビューションに追加した後、ユーザーは、ディストリビューション に関連付けられたすべてのオブジェクトへのアクセスに署名付き URL を使用する必要があります。 Note 信頼された署名者をディストリビューションに指定するには、CloudFront コンソールまたは CloudFront API バージョン 2009-09-09 以降を使用する必要があります。 署名付き URL の作成と、CloudFront ディストリビューションへのアカウントの追加が許可されるアカ ウントを指定するには、以下のタスクを実行します。 1. 信頼された署名者として使用する AWS アカウントを決定します。ほとんどの CloudFront カスタ マーは、ディストリビューションの作成に使用したアカウントを使用します。 API Version 2014-01-31 137 Amazon CloudFront 開発者ガイド 信頼された署名者の CloudFront キーペアを作成する 2. 3. 4. 5. ステップ 1 で選択したアカウントごとに、CloudFront キーペアを作成します。詳細については、 「信頼された署名者の CloudFront キーペアを作成する (p. 138)」を参照してください。 署名付き URL の作成に .NET または Java を使用する場合は、CloudFront プライベートキーの形 式を変更します。詳細については、「CloudFront プライベートキーの形式を変更する(.NET およ び Java のみ) (p. 139)」を参照してください。 作成している署名付き URL の対象となるディストリビューションで、信頼された署名者の AWS アカウント番号を指定します。詳細については、「信頼された署名者をディストリビューションに 追加する (p. 139)」を参照してください。 オプション: 信頼された署名者に有効な CloudFront キーペアがあることを CloudFront が認識して いることを確認します。信頼された署名者に有効な CloudFront キーペアがある場合、CloudFront は、その署名者を有効な信頼済み署名者として認識します。詳細については、「信頼された署名者 が有効になっていることを確認する(オプション) (p. 141)」を参照してください。 信頼された署名者の CloudFront キーペアを作成する CloudFront 署名付き URL の作成に使用する各 AWS アカウント(信頼された署名者)によって独自の CloudFront キーペアが作成される必要があり、キーペアが有効になっている必要があります。次の点 に注意してください。 • 現在、IAM ユーザーは CloudFront キーペアの作成を許可されていません。したがって、信頼された 署名者として IAM ユーザーを使用することはできません。 • CloudFront キーペアの代わりに Amazon EC2 キーペアを使用することはできません。CloudFront 署 名付き URL を作成する場合、信頼された署名者のキーペアのキーペア ID を URL に含めます。Amazon EC2 では、キーペア ID を使用可能にすることはできません。 アプリケーションのセキュリティを維持するには、CloudFront キーペアを 90 日おきに、またはそれよ り多くの頻度で変更することをお勧めします。詳細については、「CloudFront キーペアを更新す る (p. 142)」を参照してください。 信頼された署名者の CloudFront キーペアを作成するには 1. 2. 3. 4. 5. AWS Management Console にサインインし、セキュリティ認証情報ページ (https://console.aws.amazon.com/iam/home?#security_credential)を開きます。 [CloudFront Key Pairs] を展開します。 [Create new Key Pair] をクリックします。 [Create Key Pair] ダイアログボックスで、[Download Private Key File] をクリックします。 [Opening <filename>] ダイアログボックスで、[Save File] のデフォルト値を受け入れます。[OK] を クリックし、CloudFront キーペアのプライベートキーをダウンロードして保存します。 Important CloudFront キーペアのプライベートキーを安全な場所に保存します。必要な管理者ユー ザーだけがそのプライベートキーを読み取ることができるように、ファイルに対する許可 を設定します。別のユーザーがこのプライベートキーを取得すると、そのユーザーは有効 な署名付き URL を生成し、コンテンツのダウンロードが可能になります。プライベート キーを再取得することはできません。したがって、プライベートキーを削除したか失った 場合は、新しい CloudFront キーペアを作成する必要があります。 6. キーペアのキーペア ID を記録しておきます。この情報は、署名付き URL を作成するときに使用し ます。 API Version 2014-01-31 138 Amazon CloudFront 開発者ガイド CloudFront プライベートキーの形式を変更する(.NET お よび Java のみ) CloudFront プライベートキーの形式を変更する(.NET および Java のみ) .NET または Java を使用して署名付き URL を作成する場合、キーペアからのプライベートキーをデ フォルトの .pem 形式のまま使用して署名を作成することはできません。 • .NET Framework: .NET Framework で使用する XML 形式にプライベートキーを変換します。いくつ かのツールを利用できます。C# と .NET Framework を使用して URL 署名を作成する (p. 167) の例で は、.NET 2.0 OpenSSL パブリックおよびプライベートキーパーサー (http://www.jensign.com/opensslkey/opensslkey.cs)を使用しました。 • Java: DER 形式にプライベートキーを変換します。これを行うには、OpenSSL を使用できます。 $ openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der -outform DER エンコーダが正常に機能するように、Bouncy Castle の Java 用暗号 API の jar をプロジェクトに追 加してから Bouncy Castle プロバイダーを追加します。 信頼された署名者をディストリビューションに追加 する 信頼された署名者とは、ディストリビューションの署名付き URL の作成を許可された AWS アカウン トです。デフォルトでは、どのアカウントも(ディストリビューションを作成したアカウントも)、 ディストリビューションの署名付き URL の作成を許可されていません。信頼された署名者として使用 する AWS アカウントを指定するには、そのアカウントをディストリビューションに追加します。 • ウェブディストリビューション: 信頼された署名者はキャッシュ動作に関連付けられます。これによ り、同じディストリビューション内で、一部のオブジェクトに署名付き URL を要求し、その他のオ ブジェクトには要求しないということが可能になります。信頼された署名者は、対応するキャッシュ 動作に関連付けられたオブジェクトに対してのみ署名付き URL を作成できます。例えば、1 つの キャッシュ動作に対して 1 つの信頼された署名者があり、別のキャッシュ動作に対して別の信頼され た署名者がある場合、どちらの信頼された署名者も、もう一方のキャッシュ動作に関連付けられたオ ブジェクトに対して署名付き URL を作成できません。 • RTMP ディストリビューション: 信頼された署名者はディストリビューションに関連付けられます。 信頼された署名者を RTMP ディストリビューションに追加した後、ユーザーは、ディストリビュー ションに関連付けられたすべてのオブジェクトへのアクセスに署名付き URL を使用する必要があり ます。 CloudFront が必要に応じて署名付き URL を要求したり、要求しなかったりするように、キャッシュ動 作のパスパターンを慎重に定義する必要があります。 Caution コンテンツへの意図されないアクセスがエンドユーザーに与えられないように、パスパターン とその順序を慎重に定義します。例えば、リクエストが、2 つのキャッシュ動作のパスパター ンに一致したと仮定します。最初のキャッシュ動作は署名付き URL を要求しませんが、2 番目 のキャッシュ動作は署名付き URL を要求します。エンドユーザーは署名付き URL を使用せず にオブジェクトにアクセスできます。これは、CloudFront が、最初の一致に関連付けられた キャッシュ動作を処理するためです。 パスパターンの詳細については、「パスパターン (p. 51)」を参照してください。 API Version 2014-01-31 139 Amazon CloudFront 開発者ガイド 信頼された署名者をディストリビューションに追加する Caution コンテンツの配信ですでに使用されているディストリビューションを更新する場合は、オブ ジェクトの署名付き URL の生成を開始する準備ができたときにのみ、信頼された署名者を追 加します。信頼された署名者を RTMP ディストリビューションに追加した後、ユーザーは、 ディストリビューションに関連付けられたすべてのオブジェクトへのアクセスに署名付き URL を使用する必要があります。信頼された署名者をウェブディストリビューションのキャッシュ 動作に追加した後、ユーザーは、キャッシュ動作に関連付けられたオブジェクトへのアクセス に署名付き URL を使用する必要があります。 信頼された署名者の最大数は、ディストリビューションの種類によって異なります。 • ウェブディストリビューション: キャッシュ動作ごとに最大 5 • RTMP ディストリビューション: ディストリビューションごとに最大 5 CloudFront コンソールまたは CloudFront API を使用して、信頼された署名者をディストリビューショ ンに追加できます。該当のトピックを参照してください。 • CloudFront コンソールを使用して、信頼された署名者をディストリビューションに追加する (p. 140) • CloudFront API を使用して、信頼された署名者をディストリビューションに追加する (p. 141) CloudFront コンソールを使用して、信頼された署名者をディス トリビューションに追加する CloudFront コンソールを使用して、信頼された署名者をディストリビューションに追加するに は 1. ディストリビューションを作成した AWS アカウントのみを、信頼された署名者として使用する場 合は、このステップをスキップしてステップ 2 に進んでください。 他の AWS アカウントを使用する場合、アカウントごとに AWS アカウント番号を取得します。 a. b. 2. 3. 4. 信頼された署名者として使用するアカウントを使用して、AWS Management Console (https://console.aws.amazon.com/console/home)にサインインします。 コンソールの右上で、アカウントに関連付けられた名前をクリックし、[My Account] をクリッ クします。 c. d. ページの右上に表示されたアカウント番号を書き留めます。 [Sign Out] をクリックします。 e. 信頼された署名者として使用する他のアカウントについて、ステップ a ~ d を繰り返します。 Amazon CloudFront コンソール(https://console.aws.amazon.com/cloudfront/)を開きます。信頼 された署名者の追加先のディストリビューションを作成したときに使用したアカウントを使用し て、サインインします。 ディストリビューションの 編集モードに変更します。 アイコンをクリックします。 • ウェブディストリビューション: [Behaviors] タブをクリックし、編集する動作をクリックして、 [Edit] をクリックします。 • RTMP ディストリビューション: [Edit] をクリックします。 5. [Restrict Viewer Access (Use Signed URLs)] で、[Yes] をクリックします。 API Version 2014-01-31 140 Amazon CloudFront 開発者ガイド 信頼された署名者が有効になっていることを確認する(オ プション) 6. [Trusted Signers] で、該当のチェックボックスをオンにします。 • Self: 現在のアカウント(ディストリビューションの作成に使用したアカウント)を使用する場 合、このチェックボックスをオンにします。 • Specify Accounts: 他の AWS アカウントを使用する場合、このチェックボックスをオンにしま す。 7. 8. 9. [Specify Accounts] チェックボックスをオンにした場合、AWS アカウント番号(ハイフン付きまた はハイフンなし)を [AWS Account Number] フィールドに入力します。行ごとに 1 つのアカウン ト番号を入力します。 [Yes, Edit] をクリックします。 信頼された署名者をウェブディストリビューションに追加しており、複数のキャッシュ動作がある 場合は、必要に応じてステップ 4 ~ 8 を繰り返します。 CloudFront API を使用して、信頼された署名者をディストリ ビューションに追加する CloudFront API を使用して、信頼された署名者の AWS アカウント番号を既存のディストリビューショ ンに追加したり、信頼された署名者を含む新しいディストリビューションを作成したりできます。どち らの場合も、適用可能な値を TrustedSigners エレメントに指定します。ウェブディストリビュー ションの場合、TrustedSigners エレメントを 1 つ以上のキャッシュ動作に追加します。RTMP ディ ストリビューションの場合、TrustedSigners エレメントをディストリビューションに追加します。 「Amazon CloudFront API リファレンス」の該当するトピックを参照してください。 • • • • 新しいウェブディストリビューションを作成する:「POST Distribution」 既存のウェブディストリビューションを更新する:「PUT Distribution Config」 新しい RTMP ディストリビューションを作成する:「POST Streaming Distribution」 既存の RTMP ディストリビューションを更新する:「PUT Streaming Distribution Config」 信頼された署名者が有効になっていることを確認す る(オプション) 信頼された署名者をディストリビューションに追加した後、その署名者が有効になっていることを確認 することをお勧めします。信頼された署名者を有効にするには、以下の条件が満たされている必要があ ります。 • AWS アカウントに少なくとも 1 つの有効なキーペアが必要です。キーペアを更新する場合、アカウ ントは、一時的に 2 つの有効なキーペア(古いキーペアと新しいキーペア)を持ちます。 • CloudFront が有効なキーペアを認識する必要があります。キーペアを作成してから CloudFront が キーペアの存在を認識するまで、わずかな期間が生じる可能性があります。 Note 現在、ディストリビューションで有効な信頼済み署名者のリストを表示するには、CloudFront API を使用する必要があります。有効な信頼済み署名者のリストは CloudFront コンソールでは 利用できません。 API Version 2014-01-31 141 Amazon CloudFront 開発者ガイド CloudFront キーペアを更新する CloudFront API を使用して、信頼された署名者が有効であるこ とを確認する 有効なキーペアを持つ信頼された署名者(有効な信頼済み署名者)を確認するには、ディストリビュー ションを取得し、ActiveTrustedSigners エレメントの値を確認します。このエレメントには、信頼 された署名者としてディストリビューションで識別されている各アカウントの AWS アカウント番号が 含まれます。信頼された署名者に 1 つ以上の有効な CloudFront キーペアがある場合、 ActiveTrustedSigners エレメントにはそのキーペア ID も含まれます。詳細については、「Amazon CloudFront API リファレンス」の該当するトピックを参照してください。 • ウェブディストリビューション:「GET Distribution」 • RTMP ディストリビューション:「GET Streaming Distribution」 CloudFront キーペアを更新する AWS は、有効な CloudFront キーペアを 90 日おきに更新(変更)することをお勧めします。有効期限 がまだ切れていない URL を無効にすることなく、署名付き URL の作成に使用している &CF; キーペ アを更新するには、以下のタスクを実行します。 1. 2. 3. 4. 5. 6. 署名付き URL の作成に使用しているアカウントごとに新しいキーペアを作成します。詳細につい ては、「信頼された署名者の CloudFront キーペアを作成する (p. 138)」を参照してください。 CloudFront が新しいキーペアを認識していることを確認します。詳細については、「信頼された 署名者が有効になっていることを確認する(オプション) (p. 141)」を参照してください。 新しいキーペアからのプライベートキーを使用して署名を作成するようにアプリケーションを更新 します。 新しいプライベートキーを使用して署名する署名付き URL が正常に機能することを確認します。 古い CloudFront キーペアを使用して署名された署名付き URL の有効期限切れ日付が経過するまで 待ちます。 古い CloudFront キーペアを [Inactive] に変更します。 a. b. c. セキュリティ認証情報ページに移動します。 [CloudFront Key Pairs] を展開します。 該当のキーペアで、[Make Inactive] をクリックします。 7. 新しいプライベートキーを使用して署名する署名付き URL が正常に機能することを再度確認しま す。 8. 古い CloudFront キーペアを削除します。 9. a. b. セキュリティ認証情報ページに移動します。 [CloudFront Key Pairs] を展開します。 c. 該当のキーペアで、[Delete] をクリックします。 古いプライベートキーの保存場所から古いプライベートキーを削除します。 API Version 2014-01-31 142 Amazon CloudFront 開発者ガイド 署名付き URL の概要 署名付き URL の概要 Abstract オブジェクトへのアクセスを制御する特別な署名付き URL を使用する際の基本情報について説明します。 Topics • 既定ポリシーを使用して作成する署名付き URL (p. 143) • カスタムポリシーを使用して作成する署名付き URL (p. 143) • 署名付き URL の各パート (p. 144) • CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミング (p. 146) これで、オブジェクトへのアクセスにエンドユーザーが特別な署名付き URL を使用するよう要求する CloudFront が構成されました。次に、署名付き URL を(手動またはプログラムで)作成し、オブジェ クトへのアクセスが付与されるユーザーに署名付き URL を配信できます。 署名付き URL には、有効期限切れ日時など、追加の情報も含まれており、コンテンツへのアクセスを より詳細に制御できます。この追加情報は、既定ポリシーまたはカスタムポリシーに基づくポリシース テートメントに含まれます。既定ポリシーとカスタムポリシーの違いを以下の 2 つのセクションで説明 します。 Note 同じディストリビューションで、一部の署名付き URL を既定ポリシーを使用して作成し、一 部の署名付き URL をカスタムポリシーを使用して作成することができます。 既定ポリシーを使用して作成する署名付き URL 以下の場合に、既定ポリシーを使用して CloudFront 署名付き URL を作成します。 • 1 つのオブジェクトにアクセスを制限する。 • ユーザーのアクセスを停止する日時に基づいて、オブジェクトへのアクセスを制御する。 ポリシーを URL に含めないので、既定ポリシーでは URL が短くなります。署名を含めます。この署名 に対してポリシーをハッシュ化して署名します。 ユーザーが、既定ポリシーによって作成された署名付き URL を使用してオブジェクトを要求すると、 CloudFront は、URL 内の情報に基づいて既定ポリシーのステートメントを再構築します。次に、 CloudFront は、再構築されたポリシーステートメントと署名内のポリシーステートメントを比較して、 コンテンツへのエンドユーザーのアクセスを許可するかどうかを決定します。2 つのステートメントが 正確に一致しない場合、CloudFront はコンテンツへのアクセスを拒否します。 既定ポリシーを使用して署名付き URL を作成する方法については、「既定ポリシーを使用して署名付 き URL を作成する (p. 147)」を参照してください。 カスタムポリシーを使用して作成する署名付き URL 以下の場合に、カスタムポリシーを使用して CloudFront 署名付き URL を作成します。 • 年次報告書ディレクトリのすべての .pdf ファイルなど、1 つ以上のオブジェクトへのアクセスを制限 する。これにより、複数のオブジェクトの署名付き URL に 1 つのポリシーステートメントだけを使 用できます。 • 以下の情報に基づいて、オブジェクトへのアクセスを制御する。 API Version 2014-01-31 143 Amazon CloudFront 開発者ガイド 署名付き URL の各パート • ユーザーのアクセスを停止する日時。 • ユーザーのアクセスを開始する日時。(オプション) • オブジェクトへのアクセスが与えられるユーザーの IP アドレスまたは IP アドレス範囲。(オプ ション) カスタムポリシーを使用して作成する署名付き URL では、既定ポリシーを使用して作成する署名付き URL と同様に、ポリシーをハッシュ化および署名し、署名を含めます。また、ポリシーの Base64 エ ンコードバージョンを URL に含めます。これは、URL で使用可能な圧縮を提供します。結果的に、カ スタムポリシーを使用すると、既定ポリシーよりも URL が長くなります。 ユーザーが、既定ポリシーで作成された署名付き URL を使用してオブジェクトを要求すると、CloudFront は、署名付き URL 内のカスタムポリシーステートメントを署名内のポリシーステートメントと比較し て、コンテンツへのエンドユーザーのアクセスを許可するかどうかを決定します。2 つのステートメン トが正確に一致しない場合、CloudFront はコンテンツへのアクセスを拒否します。 カスタムポリシーを使用して署名付き URL を作成する方法については、「カスタムポリシーを使用し て署名付き URL を作成する (p. 153)」を参照してください。 署名付き URL の各パート CloudFront 署名付き URL には以下のコンポーネントが含まれます。 ベース URL ベース URL は、署名付き URL を使用しなかった場合にオブジェクトへのアクセスに使用する CloudFront URL であり、独自のクエリ文字列パラメータを含みます(ある場合)。ウェブディストリビューショ ン用の URL 形式の詳細については、「CloudFront オブジェクトの URL の形式 (p. 81)」を参照してく ださい。 以下の例は、ウェブディストリビューションで指定する値を示しています。 • 以下の CloudFront URL は、ウェブディストリビューション内のオブジェクトの URL です(CloudFront ドメイン名を使用)。image.jpg は images ディレクトリにあります。URL 内のオブジェクトへの パスは、HTTP サーバーまたは Amazon S3 バケットのオブジェクトへのパスに一致する必要があり ます。 http://d111111abcdef8.cloudfront.net/images/image.jpg • 以下の CloudFront URL には、クエリ文字列が含まれます。 http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large • 以下の CloudFront URL は、ウェブディストリビューション内のオブジェクトの URL です。両方の URL で代替ドメイン名が使用されており、2 番目の URL にはクエリ文字列が含まれています。 http://www.example.com/images/image.jpg http://www.example.com/images/image.jpg?color=red • 以下の CloudFront URL は、代替ドメイン名と HTTPS プロトコルを使用するウェブディストリビュー ション内のオブジェクトの URL です。 https://www.example.com/images/image.jpg 以下の例は、RTMP ディストリビューションの場合の、2 つの異なるビデオ形式(MP4 と FLV)のオ ブジェクトの例です。 • MP4: mp4:sydney-vacation.mp4 API Version 2014-01-31 144 Amazon CloudFront 開発者ガイド 署名付き URL の各パート • FLV: sydney-vacation • FLV: sydney-vacation.flv Note .flv ファイルの場合、.flv ファイル名拡張子を含めるかどうかは、使用するプレーヤーによっ て決まります。MP3 オーディオファイルまたは H.264/MPEG-4 ビデオファイルを供給するに は、ファイル名の先頭にプレフィックス mp3: または mp4: を追加することが必要になる場合 があります。メディアプレーヤーによっては、プレフィックスを自動で追加するように構成で きます。メディアプレーヤーがファイル拡張子のないファイル名の指定を要求する場合もあり ます(例: sydney-vacation.mp4 ではなく sydney-vacation)。 有効期限切れ日時(既定ポリシーのみ) 該当の URL によるオブジェクトへのアクセスを禁止する日時。Unix 時間形式(秒単位)および協定世 界時(UTC)で表されます。例えば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。UTC の詳細については、「RFC 3339、インターネットでの日付と時間: タイムスタンプ」(http://tools.ietf.org/html/rfc3339)を参照してください。 カスタムポリシーを使用する場合も、該当の署名付き URL によるオブジェクトへのアクセスを禁止す る日時を指定できますが、日時は署名付き URL 内に独立したクエリ文字列パラメータとして存在する のではなく、ポリシーステートメントに含まれます。 ポリシーステートメント ポリシーステートメントは、署名付き URL の特性を決定する JSON 形式のテキスト文字列です。既定 ポリシーおよびカスタムポリシーのどちらにおいても、ポリシーステートメントには、オブジェクトの URL(ウェブディストリビューションの場合)またはストリーム名(RTMP ディストリビューションの 場合)、および有効期限切れ日時が含まれます。次の点に注意してください。 • 既定ポリシー: ポリシーステートメントを署名付き URL に含めずに(ポリシーステートメントをハッ シュ化して署名できるようにポリシーステートメントを作成するだけであり)、署名を URL に含め ます。「署名 (p. 145)」を参照してください。 • カスタムポリシー: また、オプションで、URL が有効になる日時や、オブジェクトへのアクセスが許 可される IP アドレスまたは IP アドレス範囲を含めることもできます。次に、ポリシーステートメン トを Base64 エンコードして、エンコードされたポリシーステートメントを署名付き URL に含めま す。 署名 署名とは、ハッシュ化および署名されたバージョンのポリシーステートメントです。 署名付き URL を作成する AWS アカウントの CloudFront キー ペア ID CloudFront キーペア ID は、署名付き URL の検証に使用するパブリックキーを CloudFront に指示しま す。CloudFront は、署名内の情報をポリシーステートメント内の情報と比較して、URL が改ざんされ ていないことを確認します。 CloudFront 署名付き URL に含めるキーペア ID は、いずれかの信頼された署名者の有効なキーペア ID である必要があります。詳細については、「署名付き URL (信頼された署名者)の作成が可能な AWS アカウントの指定 (p. 137)」を参照してください。 API Version 2014-01-31 145 Amazon CloudFront 開発者ガイド CloudFront が署名付き URL 内の有効期限切れ日時を確認 するタイミング 署名付き URL をプログラムで生成しており、CloudFront キーペアを更新している間にキーペアを無効 にした場合、いずれかの信頼された署名者の新しい有効なキーペアを使用するようにアプリケーション を更新する必要があります。署名付き URL を手動で生成している場合は、新しい署名付き URL を作成 する必要があります。キーペアの更新の詳細については、「CloudFront キーペアを更新する (p. 142)」 を参照してください。 CloudFront が署名付き URL 内の有効期限切れ日時を 確認するタイミング CloudFront が署名付き URL 内の有効期限切れ日時を確認し、URL が依然として有効であるかどうかを 判別するタイミングは、URL がウェブディストリビューション用または RTMP ディストリビューショ ン用のどちらであるかによって異なります。 • ウェブディストリビューション: CloudFront は、HTTP リクエスト時に署名付き URL 内の有効期限 切れ日時を確認します。有効期限切れ時刻の直前にクライアントが大きなオブジェクトのダウンロー ドを開始した場合、ダウンロード中に有効期限切れ時刻が経過してもダウンロードは完了します。 TCP 接続が中断し、有効期限切れ時刻が経過した後にクライアントがダウンロードを再開した場合、 ダウンロードは失敗します。 クライアントが、オブジェクトを断片的に取得するレンジ GET を使用した場合、有効期限切れ時刻 が経過した後に実行された GET リクエストは失敗します。レンジ GET の詳細については、 「CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 (p. 103)」を参照し てください。 • RTMP ディストリビューション: CloudFront は、再生イベントの開始時に署名付き URL 内の有効期 限切れ時刻を確認します。有効期限切れ時刻が経過する前にクライアントがメディアファイルの再生 を開始した場合、CloudFront はメディアファイル全体の再生を許可します。ただし、メディアプレー ヤーによっては、一時停止および再開によって別の再生イベントがトリガーされる場合があります。 メディアファイル内の別の場所へのスキップによって別の再生イベントがトリガーされます。有効期 限切れ時刻が経過した後、以降の再生イベントが発生した場合、CloudFront はメディアファイルを 供給しません。 API Version 2014-01-31 146 Amazon CloudFront 開発者ガイド 既定ポリシーを使用して署名付き URL を作成する 既定ポリシーを使用して署名付き URL を作成する Abstract オブジェクトへのエンドユーザーアクセスを制御する既定ポリシーを使用して署名付き URL を作成します。 既定ポリシーを使用して署名付き URL を作成するには 1. 2. .NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデ フォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換し ます。詳細については、「CloudFront プライベートキーの形式を変更する(.NET および Java の み) (p. 139)」を参照してください。 以下の値を指定の順序で連結し、パート間の空白文字を削除します。アプリケーションコード内の 文字列にエスケープ文字を含めることが必要になる場合があります。すべての値は文字列型です。 各パートの番号( )は以下の 2 つの例の番号に対応します。 URL これは、署名付き URL を使用しない場合にオブジェクトへのアクセスに使用する URL です。例えば、次のようになります。 • ウェブディストリビューション: http://d111111abcdef8.cloudfront.net/images/image.jpg • RTMP ディストリビューション: videos/mediafile.flv ? ? は、クエリ文字列パラメータがベース URL の後に続いていることを示します。独自 のクエリ文字列パラメータがない場合も ? を含めます。 & この値はオプションです。独自のクエリ文字列パラメータ、例えば次のクエリ文字列 パラメータを追加すると仮定します。 color=red&size=medium この場合、? ( 追加します。 を参照)の後、かつ Expires パラメータの前にこのパラメータを Important パラメータに Expires、Signature、または Key-Pair-Id という名前を付 けることはできません。 独自のパラメータを追加する場合は、最後のパラメータを含め、各パラメータの後に & を付加します。 Expires= Unix UTC 有効期限切れ日時を Unix 時間形式(秒単位)および協定世界時(UTC)で指定しま す。例えば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。UTC の詳細については、「RFC 3339、インターネットでの日付と時 間: タイムスタンプ」(http://tools.ietf.org/html/rfc3339)を参照してください。 API Version 2014-01-31 147 Amazon CloudFront 開発者ガイド 既定ポリシーの署名を作成する &Signature= ハッシュ化およびされたバージョンのポリシーステートメント。詳細については、「既 定ポリシーの署名を作成する (p. 148)」を参照してください。 &Key-Pair-Id= CloudFront ID 有効な CloudFront キーペアの ID (APKA9ONS7QCOWEXAMPLE)。 • ウェブディストリビューション: キーペアは、該当のキャッシュ動作に対するいずれ かの信頼された署名者の AWS アカウントに関連付けられる必要があります。 • RTMP ディストリビューション: キーペアは、ディストリビューションに対するいず れかの信頼された署名者の AWS アカウントに関連付けられる必要があります。 詳細については、「署名付き URL (信頼された署名者)の作成が可能な AWS アカウ ントの指定 (p. 137)」を参照してください。 ウェブディストリビューションの署名付き URL の例。 http://d111111abcdef8.cloudfront.net/image.jpg ? color=red&size=medium& Expires=1357034400 &Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZr vDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE RTMP ディストリビューションの署名付き URL の例。 videos/mediafile.flv ? color=red&size=medium& Expires=1357034400 &Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZr vDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE 既定ポリシーの署名を作成する 既定ポリシーを使用する署名付き URL の署名を作成するには、以下の 2 つの手順を実行します。 • 次の最初の手順では、ポリシーステートメントを作成します。 • 2 番目の手順では、ポリシーステートメントをハッシュ化して署名します。この手順には 2 つのバー ジョンがあります。選択するバージョンは、ディストリビューションの種類(ウェブまたは RTMP) によって決まります。また、RTMP ディストリビューションの場合は、使用するメディアプレーヤー (Adobe Flash Player または別のメディアプレーヤー)によって決まります。最初の手順の後にある リンクを使用して、2 番目の手順で適用されるバージョンを確認します。 カスタムポリシーを使用する署名付き URL とは異なり、既定ポリシーを使用する署名付き URL では、 URL にポリシーステートメントを含めません。 ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例について は、以下の各資料を参照してください。 • Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う (p. 161) API Version 2014-01-31 148 Amazon CloudFront 開発者ガイド 既定ポリシーの署名を作成する • 署名付き URL の署名を作成するためのコードおよび例 (p. 163) • プライベートコンテンツの構成ツール (p. 301) 既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには 1. 以下の JSON 形式および UTF-8 文字エンコードを使用してポリシーステートメントを構築します。 すべての句読点および他のリテラル値を、指定されたとおりに正確に含めます。 {"Statement":[{"Resource":"base URL or stream name","Condition":{"DateLessThan":{"AWS:EpochTime":ending date and time in Unix time format and UTC}}}]} Resource と DateLessThan については、以下の値を指定します。 Resource: 指定する値は、ウェブディストリビューションまたは RTMP ディストリビューション のどちらの署名付き URL を作成しているかによって異なります。 • ウェブディストリビューション: クエリ文字列(ある場合)が含まれるベース URL。ただし、 CloudFront の Expires、Signature、および Key-Pair-Id パラメータが除外されます。次に 例を示します。 http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes 次の点に注意してください。 • 値は http://、https://、または http*:// で始まる必要があります。 • クエリ文字列パラメータがない場合は疑問符を外します。 • ゼロ個以上の文字に一致するワイルドカード文字(*)、または正確に 1 つの文字に一致する ワイルドカード文字(?)を文字列のどこにでも含むことができます。次に例を示します。こ の値は、 http*://d111111abcdef8.cloudfront.net/*game_download.zip* 例えば、次のオブジェクトを含みます。 http://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes http://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp • URL に代替ドメイン名(CNAME)を指定する場合は、ウェブページまたはアプリケーション 内のオブジェクトを参照するときに代替ドメイン名を指定する必要があります。オブジェクト の Amazon S3 URL を指定しないでください。 • RTMP ディストリビューション: ストリーム名のみを含めます。例えば、ストリーミングビデオ の完全 URL が次のような URL であったとします。 rtmp://s5c39gqb8ow64r.cloudfront.net/videos/mp3_name.mp3 この場合、Resource には次の値を使用します。 videos/mp3_name mp3: や mp4: などのプレフィックスを含めないでください。また、使用するプレーヤーによっ ては、Resource の値からファイル拡張子を省略することが必要になる場合があります。例え ば、sydney-vacation.flv の代わりに sydney-vacation を使用することが必要になる場合 があります。 API Version 2014-01-31 149 Amazon CloudFront 開発者ガイド 既定ポリシーの署名を作成する DateLessThan: URL の有効期限切れ日時。Unix 時間形式(秒単位)および協定世界時(UTC)で 指定します。例えば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。UTC の詳細については、「RFC 3339、インターネットでの日付と時間: タイム スタンプ」(http://tools.ietf.org/html/rfc3339)を参照してください。 この値は、署名付き URL 内の Expires クエリ文字列パラメータの値と一致する必要があります。 値を引用符で囲まないでください。 詳細については、「CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミン グ (p. 146)」を参照してください。 例 署名付き URL 内の既定ポリシーの以下の例を使用すると、エンドユーザーは、UTC の 2013 年 1 月 1 日午前 10 時 00 分までオブジェクト http://d111111abcdef8.cloudfront.net/horizon.jpg にアクセスできます。 {"Statement":[{"Resource":"http://d111111abcdef8.cloudfront.net/hori zon.jpg?size=large&license=yes","Condition":{"DateLessThan":{"AWS:Epoch Time":1357034400}}}]} 2. この例をコピーして貼り付ける場合は、URL と有効期限切れ日時を、使用する値に変更してくだ さい。 ポリシーステートメントからすべての空白文字を削除します。アプリケーションコード内の文字列 にエスケープ文字を含めることが必要になる場合があります。 該当の手順を実行し、署名付き URL の署名を作成します。 • オプション 1: 既定ポリシーを使用して、ウェブディストリビューションまたは RTMP ディストリ ビューション(Adobe Flash Player を使用しない)の署名を作成する (p. 150) • オプション 2: 既定ポリシーを使用して RTMP ディストリビューションの署名を作成する(Adobe Flash Player) (p. 151) オプション 1: 既定ポリシーを使用して、ウェブディストリビューションまたは RTMP ディス トリビューション(Adobe Flash Player を使用しない)の署名を作成する 1. 「既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには (p. 149)」の手 順で作成したポリシーステートメントを、SHA-1 ハッシュ関数を使用してハッシュ化し、署名し ます。ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者 に関連付けられたプライベートキーを使用します。 Note ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語 およびプラットフォームによって異なります。サンプルコードについては、「署名付き URL の署名を作成するためのコードおよび例 (p. 163)」を参照してください。 2. ハッシュ化および署名された文字列から空白文字を削除します。 3. 4. 文字列を Base64 エンコードします。 URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文 字を示します。 API Version 2014-01-31 150 Amazon CloudFront 開発者ガイド 既定ポリシーの署名を作成する 5. 無効な文字(置換元) 有効な文字(置換先) + - (ハイフン) = _ (下線) / ~ (チルダ) 結果の値を署名付き URL の &Signature= の後に付加し、既定ポリシーを使用して署名付き URL を作成するには (p. 147) に戻って、署名付き URL の各パートの連結を終了します。 オプション 2: 既定ポリシーを使用して RTMP ディストリビューションの署名を作成する(Adobe Flash Player) 1. 「既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには (p. 149)」の手 順で作成したポリシーステートメントを、SHA-1 ハッシュ関数を使用してハッシュ化し、署名し ます。ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者 に関連付けられたプライベートキーを使用します。 Note ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語 およびプラットフォームによって異なります。サンプルコードについては、「署名付き URL の署名を作成するためのコードおよび例 (p. 163)」を参照してください。 2. ハッシュ化および署名された文字列から空白文字を削除します。 Adobe Flash Player を使用しており、ストリーム名がウェブページから渡される場合は、引き続き ステップ 3 に進みます。 3. 4. 5. Adobe Flash Player を使用しており、ストリーム名がウェブページから渡されない場合は、この手 順の残りをスキップします。例えば、ストリーム名を Adobe Flash .swf ファイル内からフェッチ する独自のプレーヤーを作成した場合は、この手順の残りをスキップします。 文字列を Base64 エンコードします。 URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文 字を示します。 無効な文字(置換元) 有効な文字(置換先) + - (ハイフン) = _ (下線) / ~ (チルダ) Adobe Flash Player の一部のバージョンでは、文字 ?、=、および & を URL エンコードすること が要求されます。使用している Adobe Flash Player のバージョンがこの文字の置換を要求するか どうかについては、Adobe ウェブサイトを参照してください。 使用している Flash のバージョンがこれらの文字の URL エンコードを要求しない場合は、このス テップをスキップしてステップ 6 に進んでください。 使用している Flash のバージョンがこれらの文字の URL エンコードを要求する場合は、次の表に 示されたとおりに文字を置き換えます。(= については、前のステップですでに置き換えられてい ます)。 API Version 2014-01-31 151 Amazon CloudFront 開発者ガイド 既定ポリシーの署名を作成する 6. 無効な文字(置換元) URL エンコード(置換先) ? %3F & %26 結果の値を署名付き URL の &Signature= の後に付加し、既定ポリシーを使用して署名付き URL を作成するには (p. 147) に戻って、署名付き URL の各パートの連結を終了します。 API Version 2014-01-31 152 Amazon CloudFront 開発者ガイド カスタムポリシーを使用して署名付き URL を作成する カスタムポリシーを使用して署名付き URL を作成 する Abstract オブジェクトへのエンドユーザーアクセスを制御するカスタムポリシーを使用して署名付き URL を作成します。 Topics • カスタムポリシーのポリシーステートメントを作成する (p. 155) • カスタムポリシーのポリシーステートメントの例 (p. 157) • カスタムポリシーの署名を作成する (p. 159) カスタムポリシーを使用して署名付き URL を作成するには、以下の手順を実行します。 カスタムポリシーを使用して署名付き URL を作成するには 1. 2. .NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデ フォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換し ます。詳細については、「CloudFront プライベートキーの形式を変更する(.NET および Java の み) (p. 139)」を参照してください。 以下の値を指定の順序で連結し、パート間の空白文字を削除します。アプリケーションコード内の 文字列にエスケープ文字を含めることが必要になる場合があります。すべての値は文字列型です。 各パートの番号( )は以下の 2 つの例の番号に対応します。 URL これは、署名付き URL を使用しない場合にオブジェクトへのアクセスに使用する URL です。例えば、次のようになります。 • ウェブディストリビューション: http://d111111abcdef8.cloudfront.net/images/image.jpg • RTMP ディストリビューション: videos/mediafile.flv ? ? は、クエリ文字列パラメータがベース URL の後に続いていることを示します。独自 のクエリ文字列パラメータがない場合も ? を含めます。 API Version 2014-01-31 153 Amazon CloudFront 開発者ガイド カスタムポリシーを使用して署名付き URL を作成する & この値はオプションです。独自のクエリ文字列パラメータ、例えば次のクエリ文字列 パラメータを追加すると仮定します。 color=red&size=medium この場合、? ( 追加します。 を参照)の後、かつ Policy パラメータの前にこのパラメータを Important パラメータに Policy、Signature、または Key-Pair-Id という名前を付け ることはできません。 独自のパラメータを追加する場合は、最後のパラメータを含め、各パラメータの後に & を付加します。 Policy= 空白文字が削除された、JSON 形式のポリシーステートメント。詳細については、「カ スタムポリシーのポリシーステートメントを作成する (p. 155)」を参照してください。 &Signature= ハッシュ化およびされたバージョンのポリシーステートメント。詳細については、「カ スタムポリシーの署名を作成する (p. 159)」を参照してください。 &Key-Pair-Id= CloudFront ID 有効な CloudFront キーペアの ID (APKA9ONS7QCOWEXAMPLE)。 • ウェブディストリビューション: キーペアは、該当のキャッシュ動作に対するいずれ かの信頼された署名者の AWS アカウントに関連付けられる必要があります。 • RTMP ディストリビューション: キーペアは、ディストリビューションに対するいず れかの信頼された署名者の AWS アカウントに関連付けられる必要があります。 詳細については、「署名付き URL (信頼された署名者)の作成が可能な AWS アカウ ントの指定 (p. 137)」を参照してください。 ウェブディストリビューションの署名付き URL の例。 http://d111111abcdef8.cloudfront.net/image.jpg ? color=red&size=medium& Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA 6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ 29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiI yMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQ VdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp 7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo &Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~ -ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmat EXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE API Version 2014-01-31 154 Amazon CloudFront 開発者ガイド カスタムポリシーのポリシーステートメントを作成する RTMP ディストリビューションの署名付き URL の例。 videos/mediafile.flv ? color=red&size=medium& Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA 6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ 29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiI yMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQ VdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp 7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo &Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~ -ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmat EXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6 &Key-Pair-Id=APKA9ONS7QCOWEXAMPLE カスタムポリシーのポリシーステートメントを作成 する カスタムポリシーのポリシーステートメントを作成するには、以下の手順を実行します。さまざまな方 法でオブジェクトへのアクセスを制御するポリシーステートメントのいくつかの例については、「カス タムポリシーのポリシーステートメントの例 (p. 157)」を参照してください。 カスタムポリシーを使用する署名付き URL のポリシーステートメントを作成するには 1. 以下の JSON 形式を使用してポリシーステートメントを構築します。 { "Statement": [{ "Resource":"URL or stream name of the object", "Condition":{ "DateLessThan":{"AWS:EpochTime":required ending date and time in Unix time format and UTC}, "DateGreaterThan":{"AWS:EpochTime":optional beginning date and time in Unix time format and UTC}, "IpAddress":{"AWS:SourceIp":"optional IP address"} } }] } 次の点に注意してください。 • UTF-8 文字エンコードを使用します。 • すべての句読点およびパラメータ名を、指定されたとおりに正確に含めます。パラメータ名の省 略形は受け付けられません。 • Condition セクションのパラメータの順序は問題ではありません。 • Resource、DateLessThan、DateGreaterThan、および IpAddress の値については、この 手順の後の説明を参照してください。 2. 3. ポリシーステートメントからすべての空白文字を削除します。アプリケーションコード内の文字列 にエスケープ文字を含めることが必要になる場合があります。 結果の値を署名付き URL の Policy= の後に付加します。 API Version 2014-01-31 155 Amazon CloudFront 開発者ガイド カスタムポリシーのポリシーステートメントを作成する 4. ポリシーステートメントのハッシュ化、署名、および Base-64 エンコードを行って、署名付き URL の署名を作成します。詳細については、「カスタムポリシーの署名を作成する (p. 159)」を参照し てください。 Resource • ウェブディストリビューション(オプション。ただし、推奨): クエリ文字列(ある場合)が含まれ るベース URL。ただし、CloudFront の Policy、Signature、および Key-Pair-Id パラメータが 除外されます。次に例を示します。 http://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes Caution ウェブディストリビューションで Resource パラメータを省略した場合、エンドユーザーは、 署名付き URL の作成に使用するキーペアに関連付けられたあらゆるディストリビューショ ンに関連付けられるすべてのオブジェクトにアクセスできます。 次の点に注意してください。 • 値は http://、https://、または * で始まる必要があります。 • クエリ文字列パラメータがない場合は疑問符を外します。 • ゼロ個以上の文字に一致するワイルドカード文字(*)、または正確に 1 つの文字に一致するワイ ルドカード文字(?)を文字列のどこにでも含むことができます。次に例を示します。この値は、 http*://d111111abcdef8.cloudfront.net/*game_download.zip* 例えば、次のオブジェクトを含みます。 http://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes http://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp • URL に代替ドメイン名(CNAME)を指定する場合は、ウェブページまたはアプリケーション内の オブジェクトを参照するときに代替ドメイン名を指定する必要があります。オブジェクトの Amazon S3 URL を指定しないでください。 • RTMP ディストリビューション: ストリーム名のみを含めます。例えば、ストリーミングビデオの完 全 URL が次のような URL であったとします。 rtmp://s5c39gqb8ow64r.cloudfront.net/videos/mp3_name.mp3 この場合、Resource には次の値を使用します。 videos/mp3_name mp3: や mp4: などのプレフィックスを含めないでください。また、使用するプレーヤーによっては、 Resource の値からファイル拡張子を省略することが必要になる場合があります。例えば、 sydney-vacation.flv の代わりに sydney-vacation を使用することが必要になる場合がありま す。 API Version 2014-01-31 156 Amazon CloudFront 開発者ガイド カスタムポリシーのポリシーステートメントの例 DateLessThan URL の有効期限切れ日時。Unix 時間形式(秒単位)および協定世界時(UTC)で指定します。値を引 用符で囲まないでください。UTC の詳細については、「RFC 3339、インターネットでの日付と時間: タイムスタンプ」(http://tools.ietf.org/html/rfc3339)を参照してください。 例えば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。 これは、Condition セクションにおける唯一の必須パラメータです。CloudFront は、プライベートコ ンテンツにユーザーが永久的にアクセスできないようにこの値を要求します。 詳細については、「CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミング (p. 146)」 を参照してください。 DateGreaterThan (オプション) オプションの URL 開始日時。Unix 時間形式(秒単位)および協定世界時(UTC)で指定します。ユー ザーは指定された日時よりも前にオブジェクトにアクセスすることを許可されません。値を引用符で囲 まないでください。 IpAddress (オプション) GET リクエストを実行するクライアントの IP アドレス。オブジェクトへのアクセスをすべての IP ア ドレスに許可するには、このパラメータを省略します。 IP アドレス範囲は、標準の IPv4 CIDR 形式(例: 10.52.176.0/24)で指定する必要があります。詳 細については、「RFC 4632、クラスレスインタードメインルーティング(CIDR): インターネットア ドレスの割り当てと集約計画」(http://tools.ietf.org/html/rfc4632)を参照してください。 条件に対して 1 つの値のみを指定できます。例えば、2 つの別々の範囲のどちらかにクライアントの IP アドレスが入っている場合にアクセスを許可するようなポリシーを設定することはできません。 カスタムポリシーのポリシーステートメントの例 以下のポリシーステートメントの例は、特定のオブジェクト、ディレクトリ内のすべてのオブジェク ト、またはキーペア ID に関連付けられたすべてのオブジェクトへのアクセスを制御する方法を示して います。また、この例は、個々の IP アドレスまたは IP アドレス範囲からのアクセスを制御する方法、 および指定された日時以降にユーザーが署名付き URL を使用することを禁止する方法も示しています。 この例のいずれかをコピーして貼り付ける場合は、すべての空白文字を削除し、適用可能な値を独自の 値で置き換えて、右中かっこ( } )の後に改行文字を含めます。 ポリシーステートメントの例: IP アドレス範囲から 1 つのオブ ジェクトにアクセスする 次の署名付き URL 内のカスタムポリシーの例は、UTC の 2013 年 1 月 1 日午前 10 時 00 分まで、範 囲 192.0.2.0/24 の IP アドレスから、エンドユーザーがオブジェクト http://d111111abcdef8.cloudfront.net/game_download.zip にアクセスできることを指定し ています。 { "Statement": [{ "Resource":"http://d111111abcdef8.cloudfront.net/game_download.zip", "Condition":{ "IpAddress":{"AWS:SourceIp":"192.0.2.0/24"}, API Version 2014-01-31 157 Amazon CloudFront 開発者ガイド カスタムポリシーのポリシーステートメントの例 "DateLessThan":{"AWS:EpochTime":1357034400} } }] } ポリシーステートメントの例: IP アドレス範囲からディレクト リ内のすべてのオブジェクトにアクセスする 以下のカスタムポリシーの例では、Resource パラメータの * ワイルドカード文字が示すとおり、 training ディレクトリ内のあらゆるオブジェクトを対象とする署名付き URL を作成できます。UTC の 2013 年 1 月 1 日午前 10 時 00 分まで、範囲 192.0.2.0/24 の IP アドレスから、エンドユーザー はオブジェクトにアクセスできます。 { "Statement": [{ "Resource":"http://d111111abcdef8.cloudfront.net/training/*", "Condition":{ "IpAddress":{"AWS:SourceIp":"192.0.2.0/24"}, "DateLessThan":{"AWS:EpochTime":1357034400} } }] } このポリシーを使用する各署名付き URL には、例えば次のように、特定のオブジェクトを識別するベー ス URL が含まれます。 http://d111111abcdef8.cloudfront.net/training/orientation.pdf ポリシーステートメントの例: キーペア ID に関連付けられたす べてのオブジェクトに 1 つの IP アドレスからアクセスする 以下のカスタムポリシーの例では、Resource パラメータの * ワイルドカード文字が示すとおり、あら ゆるディストリビューションに関連付けられたあらゆるオブジェクトを対象とする署名付き URL を作 成できます。エンドユーザーは IP アドレス 192.0.2.10/32 を使用する必要があります。(CIDR 表 記の値 192.0.2.10/32 は 1 つの IP アドレス 192.0.2.10 を参照します)。オブジェクトは、UTC の 2013 年 1 月 1 日午前 10 時 00 分から UTC の 2013 年 1 月 2 日午前 10 時 00 分まで使用できます。 { "Statement": [{ "Resource":"http://*", "Condition":{ "IpAddress":{"AWS:SourceIp":"192.0.2.10/32"}, "DateGreaterThan":{"AWS:EpochTime":1357034400}, "DateLessThan":{"AWS:EpochTime":1357120800} } }] } このポリシーを含める各署名付き URL には、例えば次のように、特定の CloudFront ディストリビュー ション内の特定のオブジェクトを識別するベース URL が含まれます。 http://d111111abcdef8.cloudfront.net/training/orientation.pdf API Version 2014-01-31 158 Amazon CloudFront 開発者ガイド カスタムポリシーの署名を作成する 署名付き URL にはキーペア ID も含まれます。キーペア ID は、ベース URL に指定されたディストリ ビューション(d111111abcdef8.cloudfront.net)内の信頼された署名者に関連付けられる必要がありま す。 カスタムポリシーの署名を作成する カスタムポリシーを使用する署名付き URL の署名は、ハッシュ化、署名、および Base64 エンコード が行われたバージョンのポリシーステートメントです。カスタムポリシーの署名を作成するには、該当 する手順を実行します。選択するバージョンは、ディストリビューションの種類(ウェブまたは RTMP) によって決まります。また、RTMP ディストリビューションの場合は、使用するメディアプレーヤー (Adobe Flash Player または別のメディアプレーヤー)によって決まります。 • オプション 1: カスタムポリシーを使用して、ウェブディストリビューションまたは RTMP ディスト リビューション(Adobe Flash Player を使用しない)の署名を作成する (p. 159) • オプション 2: カスタムポリシーを使用して RTMP ディストリビューションの署名を作成する(Adobe Flash Player) (p. 160) ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例について は、以下の各資料を参照してください。 • Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う (p. 161) • 署名付き URL の署名を作成するためのコードおよび例 (p. 163) • プライベートコンテンツの構成ツール (p. 301) オプション 1: カスタムポリシーを使用して、ウェブディストリビューションまたは RTMP ディ ストリビューション(Adobe Flash Player を使用しない)の署名を作成する 1. 「カスタムポリシーを使用する署名付き URL のポリシーステートメントを作成するには (p. 155)」 の手順で作成したポリシーステートメントを、SHA-1 ハッシュ関数を使用してハッシュ化し、署 名します。ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署 名者に関連付けられたプライベートキーを使用します。 Note ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語 およびプラットフォームによって異なります。サンプルコードについては、「署名付き URL の署名を作成するためのコードおよび例 (p. 163)」を参照してください。 2. ハッシュ化および署名された文字列から空白文字を削除します。 3. 4. 文字列を Base64 エンコードします。 URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文 字を示します。 5. 無効な文字(置換元) 有効な文字(置換先) + - (ハイフン) = _ (下線) / ~ (チルダ) 結果の値を署名付き URL の &Signature= の後に付加し、カスタムポリシーを使用して署名付き URL を作成するには (p. 153) に戻って、署名付き URL の各パートの連結を終了します。 API Version 2014-01-31 159 Amazon CloudFront 開発者ガイド カスタムポリシーの署名を作成する オプション 2: カスタムポリシーを使用して RTMP ディストリビューションの署名を作成する (Adobe Flash Player) 1. 「カスタムポリシーを使用する署名付き URL のポリシーステートメントを作成するには (p. 155)」 の手順で作成したポリシーステートメントを、SHA-1 ハッシュ関数を使用してハッシュ化し、署 名します。ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署 名者に関連付けられたプライベートキーを使用します。 Note ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言語 およびプラットフォームによって異なります。サンプルコードについては、「署名付き URL の署名を作成するためのコードおよび例 (p. 163)」を参照してください。 2. ハッシュ化および署名された文字列から空白文字を削除します。 ストリーム名がウェブページから渡される場合は、引き続き ステップ 3 に進みます。 3. 4. 5. ストリーム名がウェブページから渡されない場合は、この手順の残りをスキップします。例えば、 ストリーム名を Adobe Flash .swf ファイル内からフェッチする独自のプレーヤーを作成した場合 は、この手順の残りをスキップします。 文字列を Base64 エンコードします。 URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文 字を示します。 無効な文字(置換元) 有効な文字(置換先) + - (ハイフン) = _ (下線) / ~ (チルダ) Adobe Flash Player の一部のバージョンでは、文字 ?、=、および & を URL エンコードすること が要求されます。使用している Adobe Flash Player のバージョンがこの文字の置換を要求するか どうかについては、Adobe ウェブサイトを参照してください。 使用している Adobe Flash Player のバージョンで、文字 ?、=、および & の URL エンコードが要 求されない場合は、このステップをスキップしてステップ 6 に進みます。 使用している Adobe Flash Player のバージョンがこれらの文字の URL エンコードを要求する場合 は、次の表に示されたとおりに文字を置き換えます。(= については、前のステップですでに置き 換えられています)。 6. 無効な文字(置換元) URL エンコード(置換先) ? %3F & %26 結果の値を署名付き URL の &Signature= の後に付加し、カスタムポリシーを使用して署名付き URL を作成するには (p. 153) に戻って、署名付き URL の各パートの連結を終了します。 API Version 2014-01-31 160 Amazon CloudFront 開発者ガイド Linux コマンドおよび OpenSSL を使用して Base64 エン コードおよび暗号化を行う Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う Abstract Linux のコマンドラインコマンドおよび OpenSSL を使用して、ポリシーステートメントの暗号化および Base64 エンコーディングを行います。 Linux コマンドラインコマンドと OpenSSL を使用して、以下の処理を行うことができます。 • ポリシーステートメントを Base64 エンコードし、無効な文字を有効な文字で置き換えます。 • ポリシーステートメントを署名に変換します。 OpenSSL の詳細については、http://www.openssl.org を参照してください。 ポリシーステートメントを Base64 エンコードする 次の Linux コマンドは、(ファイル policy の)ポリシーステートメントを Base64 エンコードし、URL クエリ文字列パラメータの無効な文字を有効な文字に置き換えます。 cat policy | openssl base64 | tr '+=/' '-_~' 各パラメータの意味は次のとおりです。 cat は、policy ファイルを openssl に送信します。 OpenSSL は、このファイルを Base64 エンコードします。 tr は、URL クエリ文字列パラメータの無効な文字を有効な文字で置き換えます。 ポリシーステートメントを署名に変換する 次の Linux コマンドは、ポリシーステートメントのハッシュ化、署名、および Base64 エンコードを 行って、署名を作成します。 cat policy | | openssl sha1 -sign private-key.pem | openssl base64 tr '+=/' '-_~' 各パラメータの意味は次のとおりです。 cat は、Base64 エンコードされた policy ファイルを OpenSSL に送信します。 OpenSSL は、SHA-1 を使用してファイルをハッシュ化し、プライベートキーファイル private-key.pem を使用してファイルに署名します。 OpenSSL は、ハッシュ化および署名されたポリシーステートメントを Base64 エンコード します。 tr は、URL クエリ文字列パラメータの無効な文字を有効な文字で置き換えます。 API Version 2014-01-31 161 Amazon CloudFront 開発者ガイド ポリシーステートメントを署名に変換する Note 作成された署名から空白文字(ある場合)を削除します。 いくつかのプログラミング言語での署名の作成方法を示すコード例については、「署名付き URL の署 名を作成するためのコードおよび例 (p. 163)」を参照してください。 API Version 2014-01-31 162 Amazon CloudFront 開発者ガイド 署名付き URL の署名を作成するためのコードおよび例 署名付き URL の署名を作成するためのコードおよ び例 Abstract 署名付き URL の署名を作成する方法を示すコード例を利用します。 このセクションには、署名付き URL の署名の作成方法を示す、ダウンロード可能なアプリケーション サンプルが含まれます。例は、Perl、PHP、C#、および Java で使用できます。署名付き URL の作成 にすべてのサンプルを使用できます。Perl スクリプトは Linux/Mac プラットフォームで実行されます。 PHP の例は、PHP が実行されているあらゆるサーバーで動作します。C# の例では、.NET Framework が使用されます。 Topics • • • • Perl を使用して URL 署名を作成する (p. 163) PHP を使用して URL 署名を作成する (p. 165) C# と .NET Framework を使用して URL 署名を作成する (p. 167) Java を使用して URL 署名を作成する (p. 175) Perl を使用して URL 署名を作成する Abstract 署名付き CloudFront URL の署名を作成する Perl スクリプトコード例を利用します。 Perl スクリプトでは、コマンドライン引数に CloudFront URL、署名者のプライベートキーへのパス、 キー ID、および URL の有効期限切れ日付を指定することで、プライベートコンテンツの署名を作成し ます。このツールでは、署名付き URL のデコードを行うこともできます。ツール cfsign.pl を取得 するには、「Amazon CloudFront 署名付き URL のヘルパーツール」にアクセスしてください。 Note URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するためのプロ セスの 1 パートにすぎません。プロセス全体の詳細については、「プライベートコンテンツの 機能 (p. 127)」を参照してください。 次の例は、cfsign.pl を使用して RTMP ディストリビューションの署名を作成する方法を示していま す。 $ cfsign.pl --action encode --stream example/video.mp4 --private-key /path/to/my-private-key.pem --key-pair-id PK12345EXAMPLE --expires 1265838202 このツールでは、コマンドライン引数を使用してポリシーステートメントを生成します。生成される署 名は、ポリシーステートメントの SHA1 ハッシュです。 Base64 エンコードされたストリーム名の例を以下に示します。 mp4:example/video.mp4%3FPolicy%3DewogICJTdGF0ZW1lbnQiOlt7CiAgICAgICJSZXNvdXJjZSI 6ImRyciIsCiAgICAgICJDb25kaXRpb24iOnsKICAgICAgICAiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2V JcCI6IjAuMC4wLjAvMCJ9LAogICAgICAgICJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MjE 0NTkxNjgwMH0KICAgICAgfQogICAgEXAMPLE_%26Signature%3DewtHqEXK~68tsZt-eOFnZKGwTf2a API Version 2014-01-31 163 Amazon CloudFront 開発者ガイド Perl を使用して URL 署名を作成する JlbKhXkK5SSiVqcG9pieCRV3xTEPtc29OzeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP 17Af4nWtOLIZHoH6wkR3tU1cQHs8R1d-g-SlZGjNBXr~J2MbaJzm8i6EXAMPLE_%26Key-Pair-Id%3 DPK12345EXAMPLE この署名は、プライベートコンテンツ example/video.mp4 のストリーミングリクエストを認証しま す。Adobe Flash Player を使用しており、ストリーム名が JavaScript によってウェブページから渡さ れる場合は、署名を Base64 エンコードして、URL リクエストパラメータの無効な文字(+、=、/)を 有効な文字(それぞれ -、_、~)で置き換えます。ストリーム名がウェブページから渡されない場合、 署名を Base64 エンコードする必要はありません。例えば、独自のプレーヤーを作成し、ストリーム名 を Adobe Flash .swf ファイルからフェッチする場合、署名を Base64 エンコードしません。 CloudFront で jwplayer を使用する例を次に示します。 <script type='text/javascript'> var so1 = new SWFObject ('http://d84l721fxaaqy9.cloudfront.net/player/player.swf', 'mpl', '640', '360', '9'); so1.addParam('allowfullscreen','true'); so1.addParam('allowscriptaccess','always'); so1.addParam('wmode','opaque'); so1.addVariable('streamer','rtmp://s33r3xe4ayhhis.cloudfront.net/cfx/st'); so1.addVariable("file","mp4:example/video.mp4%3FPolicy%3DewogICJTdGF0ZW1lbnQi Olt7CiAgICAgICJSZXNvdXJjZSI6ImRyciIsCiAgICAgICJDb25kaXRpb24iOnsKICAgICAgICA iSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI6IjAuMC4wLjAvMCJ9LAogICAgICAgICJEYXRlTG Vzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MjE0NTkxNjgwMH0KICAgICAgfQogICAgEXAMPLE_% 26Signature%3DewtHqEXK~68tsZt-eOFnZKGwTf2aJlbKhXkK5SSiVqcG9pieCRV3xTEPtc29O zeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP17Af4nWtOLIZHoH6wkR3tU1cQHs8 R1d-g-SlZGjNBXr~J2MbaJzm8i6EXAMPLE_%26Key-Pair-Id%3DPK12345EXAMPLE so1.write('flv'); </script> Adobe Flash .swf ファイル内からストリームを取り込んで再生する場合、例えば次のように、ストリー ム名を URL エンコードしないでください。 mp4:example/video.mp4?Policy=ewogICJTdGF0ZW1lbnQiOlt7CiAgICAgICJSZXNvdXJjZSI6ImR yciIsCiAgICAgICJDb25kaXRpb24iOnsKICAgICAgICAiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI 6IjAuMC4wLjAvMCJ9LAogICAgICAgICJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MjE0NTk xNjgwMH0KICAgICAgfQogICAgEXAMPLE_&Signature=ewtHqEXK~68tsZt-eOFnZKGwTf2aJlbKhXkK 5SSiVqcG9pieCRV3xTEPtc29OzeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP17Af4nWt OLIZHoH6wkR3tU1cQHs8R1d-g-SlZGjNBXr~J2MbaJzm8i6EXAMPLE_&Key-Pair-Id=PK12345 EXAMPLE コマンドラインスイッチおよびこのツールの各種機能の詳細については、Perl ソースコード内のコメン トを参照してください。 以下の資料も参照してください。 • PHP を使用して URL 署名を作成する (p. 165) • C# と .NET Framework を使用して URL 署名を作成する (p. 167) • Java を使用して URL 署名を作成する (p. 175) API Version 2014-01-31 164 Amazon CloudFront 開発者ガイド PHP を使用して URL 署名を作成する • プライベートコンテンツの構成ツール (p. 301) PHP を使用して URL 署名を作成する Abstract 署名付き CloudFront URL の署名を作成する PHP コード例を利用します。 PHP を実行するすべてのウェブサーバーは、PHP デモコードを使用して、CloudFront のプライベート RTMP ディストリビューション用のポリシーステートメントと署名を作成できます。サンプルは、 CloudFront ストリーミングを使用してビデオストリームを再生する署名付き URL リンクが含まれた、 機能するウェブページを作成します。サンプルを取得するには、PHP におけるビデオストリーミング 用の署名コードをダウンロードしてください。 Note URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するためのプロ セスの 1 パートにすぎません。プロセス全体の詳細については、「プライベートコンテンツの 機能 (p. 127)」を参照してください。 以下のコードセグメントでは、関数 rsa_sha1_sign でポリシーステートメントのハッシュ化および 署名を行います。必要な引数は、署名を含めるための出力パラメータであるポリシーステートメント と、使用している AWS アカウントまたは指定した信頼済み AWS アカウントのプライベートキーで す。次に、url_safe_base64_encode 関数で、URL で使用可能なバージョンの署名を作成します。 Example PHP における RSA SHA1 ハッシュ化 function rsa_sha1_sign($policy, $private_key_filename) { $signature = ""; // load the private key $fp = fopen($private_key_filename, "r"); $priv_key = fread($fp, 8192); fclose($fp); $pkeyid = openssl_get_privatekey($priv_key); // compute signature openssl_sign($policy, $signature, $pkeyid); // free the key from memory openssl_free_key($pkeyid); return $signature; } function url_safe_base64_encode($value) { $encoded = base64_encode($value); // replace unsafe characters +, = and / with // the safe characters -, _ and ~ return str_replace( array('+', '=', '/'), array('-', '_', '~'), $encoded); } API Version 2014-01-31 165 Amazon CloudFront 開発者ガイド PHP を使用して URL 署名を作成する 以下のコードでは、署名の作成に必要な既定ポリシーステートメントを構築します。既定ポリシーの詳 細については、「既定ポリシーを使用して署名付き URL を作成する (p. 147)」を参照してください。 Example PHP における既定署名関数 function get_canned_policy_stream_name($video_path, $private_key_filename, $key_pair_id, $expires) { // this policy is well known by CloudFront, but you still need to sign it, // since it contains your parameters $canned_policy = '{"Statement":[{"Resource":"' . $video_path . '","Condi tion":{"DateLessThan":{"AWS:EpochTime":'. $expires . '}}}]}'; // the policy contains characters that cannot be part of a URL, // so we Base64 encode it $encoded_policy = url_safe_base64_encode($canned_policy); // sign the original policy, not the encoded version $signature = rsa_sha1_sign($canned_policy, $private_key_filename); // make the signature safe to be included in a url $encoded_signature = url_safe_base64_encode($signature); // combine the above into a stream name $stream_name = create_stream_name($video_path, null, $encoded_signature, $key_pair_id, $expires); // url-encode the query string characters to work around a flash player bug return encode_query_params($stream_name); } 以下のコードでは、署名の作成に必要なカスタムポリシーステートメントを構築します。カスタムポリ シーの詳細については、「カスタムポリシーを使用して署名付き URL を作成する (p. 153)」を参照して ください。 Example PHP におけるカスタム署名関数 function get_custom_policy_stream_name($video_path, $private_key_filename, $key_pair_id, $policy) { // the policy contains characters that cannot be part of a URL, // so we Base64 encode it $encoded_policy = url_safe_base64_encode($policy); // sign the original policy, not the encoded version $signature = rsa_sha1_sign($policy, $private_key_filename); // make the signature safe to be included in a url $encoded_signature = url_safe_base64_encode($signature); // combine the above into a stream name $stream_name = create_stream_name($video_path, $encoded_policy, $encoded_sig nature, $key_pair_id, null); // url-encode the query string characters to work around a flash player bug return encode_query_params($stream_name); } SHA-1 の OpenSSL 実装の詳細については、「SSL/TLS 用のオープンソースツールキット」を参照し てください。 以下の資料も参照してください。 API Version 2014-01-31 166 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する • Perl を使用して URL 署名を作成する (p. 163) • C# と .NET Framework を使用して URL 署名を作成する (p. 167) • Java を使用して URL 署名を作成する (p. 175) • プライベートコンテンツの構成ツール (p. 301) C# と .NET Framework を使用して URL 署名を作成 する Abstract .NET Framework を使用して署名付き CloudFront URL の署名を作成する C# コード例を利用します。 このセクションの C# の例では、既定およびカスタムのポリシーステートメントを使用して CloudFront プライベートディストリビューションの署名を作成する方法を示すサンプルアプリケーションを実装し ます。サンプルには、.NET アプリケーションで役に立つ可能性がある AWS .NET SDK に基づくユー ティリティ関数が含まれています。 Note URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するためのプロ セスの 1 パートにすぎません。プロセス全体の詳細については、「プライベートコンテンツの 機能 (p. 127)」を参照してください。 コードをダウンロードするには、C# による署名コードにアクセスしてください。 AWS アカウント/セキュリティで提供される RSA キーを .NET Framework で使用するには、AWS で提 供される .pem ファイルを、NET Framework が使用する XML 形式に変換する必要があります。「.NET 2.0 OpenSSL のパブリックキーパーサーおよびプライベートキーパーサー」で入手可能な OpenSSL パブリックおよびプライベートキーパーサーを使用して変換を行います。 変換後、RSA プライベートキーファイルの形式は以下のようになります。 API Version 2014-01-31 167 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する Example XML .NET Framework 形式の RSA プライベートキー <RSAKeyValue> <Modulus> wO5IvYCP5UcoCKDo1dcspoMehWBZcyfs9QEzGi6Oe5y+ewGr1oW+vB2GPB ANBiVPcUHTFWhwaIBd3oglmF0lGQljP/jOfmXHUK2kUUnLnJp+oOBL2Ni uFtqcW6h/L5lIpD8Yq+NRHg Ty4zDsyr2880MvXv88yEFURCkqEXAMPLE= </Modulus> <Exponent>AQAB</Exponent> <P> 5bmKDaTz npENGVqz4Cea8XPH+sxt+2VaAwYnsarVUoS BeVt8WLloVuZGG9IZYmH5KteXEu7fZveYd9UEXAMPLE== </P> <Q> 1v9l/WN1a1N3rOK4VGoCokx7kR2SyTMSbZgF9IWJNOugR/WZw7HTnjipO3c9dy1Ms9pUKwUF4 6d7049EXAMPLE== </Q> <DP> RgrSKuLWXMyBH+/l1Dx/I4tXuAJIrlPyo+VmiOc7b5NzHptkSHEPfR9s1 OK0VqjknclqCJ3Ig86OMEtEXAMPLE== </DP> <DQ> pjPjvSFw+RoaTu0pgCA/jwW/FGyfN6iim1RFbkT4 z49DZb2IM885f3vf35eLTaEYRYUHQgZtChNEV0TEXAMPLE== </DQ> <InverseQ> nkvOJTg5QtGNgWb9i cVtzrL/1pFEOHbJXwEJdU99N+7sMK+1066DL/HSBUCD63qD4USpnf0myc24in0EXAMPLE==</In verseQ> <D> Bc7mp7XYHynuPZxChjWNJZIq+A73gm0ASDv6At7F8Vi9r0xUlQe/v0AQS3ycN8QlyR4XMbzMLYk 3yjxFDXo4ZKQtOGzLGteCU2srANiLv26/imXA8FVidZftTAtLviWQZB VPTeYIA69ATUYPEq0a5u5wjGy UOij9OWyuEXAMPLE= </D> </RSAKeyValue> 以下の C# コードは、既定ポリシーを使用する署名付き URL を以下の手順で作成します。 • ポリシーステートメントを作成する。 • SHA1 を使用してポリシーステートメントをハッシュ化し、使用している AWS アカウントまたは指 定した信頼済み AWS アカウントの RSA およびプライベートキーを使用して、ハッシュ化されたポ リシーステートメントに署名する。 • ハッシュ化および署名されたポリシーステートメントを Base64 エンコードし、特殊文字を置き換え て文字列を URL リクエストパラメータとして使用できるようにする。 • 適用可能な値を連結する。 完全な実装については、C# における署名コードのサンプルを参照してください。 API Version 2014-01-31 168 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する Example C# における既定ポリシーの署名方法 public static string ToUrlSafeBase64String(byte[] bytes) { return System.Convert.ToBase64String(bytes) .Replace('+', '-') .Replace('=', '_') .Replace('/', '~'); } public static string CreateCannedPrivateURL(string urlString, string durationUnits, string durationNumber, string pathToPolicyStmnt, string pathToPrivateKey, string privateKeyId) { // args[] 0-thisMethod, 1-resourceUrl, 2-seconds-minutes-hours-days // to expiration, 3-numberOfPreviousUnits, 4-pathToPolicyStmnt, // 5-pathToPrivateKey, 6-PrivateKeyId TimeSpan timeSpanInterval = GetDuration(durationUnits, durationNumber); // Create the policy statement. string strPolicy = CreatePolicyStatement(pathToPolicyStmnt, urlString, DateTime.Now, DateTime.Now.Add(timeSpanInterval), "0.0.0.0/0"); if ("Error!" == strPolicy) return "Invalid time frame." + "Start time cannot be greater than end time."; // Copy the expiration time defined by policy statement. string strExpiration = CopyExpirationTimeFromPolicy(strPolicy); // Read the policy into a byte buffer. byte[] bufferPolicy = Encoding.ASCII.GetBytes(strPolicy); // Initialize the SHA1CryptoServiceProvider object and hash the policy data. using (SHA1CryptoServiceProvider cryptoSHA1 = new SHA1CryptoServiceProvider()) { bufferPolicy = cryptoSHA1.ComputeHash(bufferPolicy); // Initialize the RSACryptoServiceProvider object. RSACryptoServiceProvider providerRSA = new RSACryptoServiceProvider(); XmlDocument xmlPrivateKey = new XmlDocument(); // Load PrivateKey.xml, which you created by converting your // .pem file to the XML format that the .NET framework uses. // Several tools are available. We used // .NET 2.0 OpenSSL Public and Private Key Parser, // http://www.jensign.com/opensslkey/opensslkey.cs. xmlPrivateKey.Load(pathToPrivateKey); // Format the RSACryptoServiceProvider providerRSA and // create the signature. providerRSA.FromXmlString(xmlPrivateKey.InnerXml); API Version 2014-01-31 169 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する RSAPKCS1SignatureFormatter rsaFormatter = new RSAPKCS1SignatureFormatter(providerRSA); rsaFormatter.SetHashAlgorithm("SHA1"); byte[] signedPolicyHash = rsaFormatter.CreateSignature(bufferPolicy); // Convert the signed policy to URL-safe Base64 encoding and // replace unsafe characters + = / with the safe characters - _ ~ string strSignedPolicy = ToUrlSafeBase64String(signedPolicyHash); // Concatenate the URL, the timestamp, the signature, // and the key pair ID to form the signed URL. return urlString + "?Expires=" + strExpiration + "&Signature=" + strSignedPolicy + "&Key-Pair-Id=" + privateKeyId; } } 以下の C# コードは、カスタムポリシーを使用する署名付き URL を以下の手順で作成します。 • ポリシーステートメントを作成する。 • ポリシーステートメントを Base64 エンコードし、特殊文字を置き換えて文字列を URL リクエスト パラメータとして使用できるようにする。 • SHA1 を使用してポリシーステートメントをハッシュ化し、使用している AWS アカウントまたは指 定した信頼済み AWS アカウントの RSA およびプライベートキーを使用して、ハッシュ化されたポ リシーステートメントを暗号化する。 • ハッシュ化されたポリシーステートメントを Base64 エンコードし、特殊文字を置き換えて文字列を URL リクエストパラメータとして使用できるようにする。 • 適用可能な値を連結する。 完全な実装については、C# における署名コードのサンプルを参照してください。 API Version 2014-01-31 170 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する Example C# におけるカスタムポリシーの署名方法 public static string ToUrlSafeBase64String(byte[] bytes) { return System.Convert.ToBase64String(bytes) .Replace('+', '-') .Replace('=', '_') .Replace('/', '~'); } public static string CreateCustomPrivateURL(string urlString, string durationUnits, string durationNumber, string startIntervalFromNow, string ipaddress, string pathToPolicyStmnt, string pathToPrivateKey, string PrivateKeyId) { // args[] 0-thisMethod, 1-resourceUrl, 2-seconds-minutes-hours-days // to expiration, 3-numberOfPreviousUnits, 4-starttimeFromNow, // 5-ip_address, 6-pathToPolicyStmt, 7-pathToPrivateKey, 8-privateKeyId TimeSpan timeSpanInterval = GetDuration(durationUnits, durationNumber); TimeSpan timeSpanToStart = GetDurationByUnits(durationUnits, startIntervalFromNow); if (null == timeSpanToStart) return "Invalid duration units." + "Valid options: seconds, minutes, hours, or days"; string strPolicy = CreatePolicyStatement( pathToPolicyStmnt, urlString, DateTime.Now.Add(timeSpanToStart), DateTime.Now.Add(timeSpanInterval), ipaddress); // Read the policy into a byte buffer. byte[] bufferPolicy = Encoding.ASCII.GetBytes(strPolicy); // Convert the policy statement to URL-safe Base64 encoding and // replace unsafe characters + = / with the safe characters - _ ~ string urlSafePolicy = ToUrlSafeBase64String(bufferPolicy); // Initialize the SHA1CryptoServiceProvider object and hash the policy data. byte[] bufferPolicyHash; using (SHA1CryptoServiceProvider cryptoSHA1 = new SHA1CryptoServiceProvider()) { bufferPolicyHash = cryptoSHA1.ComputeHash(bufferPolicy); // Initialize the RSACryptoServiceProvider object. RSACryptoServiceProvider providerRSA = new RSACryptoServiceProvider(); XmlDocument xmlPrivateKey = new XmlDocument(); // // // // // Load PrivateKey.xml, which you created by converting your .pem file to the XML format that the .NET framework uses. Several tools are available. We used .NET 2.0 OpenSSL Public and Private Key Parser, http://www.jensign.com/opensslkey/opensslkey.cs. API Version 2014-01-31 171 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する xmlPrivateKey.Load("PrivateKey.xml"); // Format the RSACryptoServiceProvider providerRSA // and create the signature. providerRSA.FromXmlString(xmlPrivateKey.InnerXml); RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(providerRSA); RSAFormatter.SetHashAlgorithm("SHA1"); byte[] signedHash = RSAFormatter.CreateSignature(bufferPolicyHash); // Convert the signed policy to URL-safe Base64 encoding and // replace unsafe characters + = / with the safe characters - _ ~ string strSignedPolicy = ToUrlSafeBase64String(signedHash); return urlString + "?Policy=" + urlSafePolicy + "&Signature=" + strSignedPolicy + "&Key-Pair-Id=" + PrivateKeyId; } } API Version 2014-01-31 172 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する Example 署名生成のためのユーティリティメソッド 以下のメソッドは、ファイルからポリシーステートメントを取得し、署名生成の期間を解析します。 public static string CreatePolicyStatement(string policyStmnt, string resourceUrl, DateTime startTime, DateTime endTime, string ipAddress) { // Create the policy statement. FileStream streamPolicy = new FileStream(policyStmnt, FileMode.Open, FileAccess.Read); using (StreamReader reader = new StreamReader(streamPolicy)) { string strPolicy = reader.ReadToEnd(); TimeSpan startTimeSpanFromNow = (startTime - DateTime.Now); TimeSpan endTimeSpanFromNow = (endTime - DateTime.Now); TimeSpan intervalStart = (DateTime.UtcNow.Add(startTimeSpanFromNow)) new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); TimeSpan intervalEnd = (DateTime.UtcNow.Add(endTimeSpanFromNow)) new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); int startTimestamp = (int)intervalStart.TotalSeconds; // START_TIME int endTimestamp = (int)intervalEnd.TotalSeconds; // END_TIME if (startTimestamp > endTimestamp) return "Error!"; // Replace variables in the policy statement. strPolicy = strPolicy.Replace("RESOURCE", resourceUrl); strPolicy = strPolicy.Replace("START_TIME", startTimestamp.ToString()); strPolicy = strPolicy.Replace("END_TIME", endTimestamp.ToString()); strPolicy = strPolicy.Replace("IP_ADDRESS", ipAddress); strPolicy = strPolicy.Replace("EXPIRES", endTimestamp.ToString()); return strPolicy; } } public static TimeSpan GetDuration(string units, string numUnits) { TimeSpan timeSpanInterval = new TimeSpan(); switch (units) { case "seconds": timeSpanInterval = new TimeSpan(0, 0, 0, int.Parse(numUnits)); break; case "minutes": timeSpanInterval = new TimeSpan(0, 0, int.Parse(numUnits), 0); break; case "hours": timeSpanInterval = new TimeSpan(0, int.Parse(numUnits), 0 ,0); break; case "days": API Version 2014-01-31 173 Amazon CloudFront 開発者ガイド C# と .NET Framework を使用して URL 署名を作成する timeSpanInterval = new TimeSpan(int.Parse(numUnits),0 ,0 ,0); break; default: Console.WriteLine("Invalid time units;" + "use seconds, minutes, hours, or days"); break; } return timeSpanInterval; } private static TimeSpan GetDurationByUnits(string durationUnits, string startIntervalFromNow) { switch (durationUnits) { case "seconds": return new TimeSpan(0, 0, int.Parse(startIntervalFromNow)); case "minutes": return new TimeSpan(0, int.Parse(startIntervalFromNow), 0); case "hours": return new TimeSpan(int.Parse(startIntervalFromNow), 0, 0); case "days": return new TimeSpan(int.Parse(startIntervalFromNow), 0, 0, 0); default: return new TimeSpan(0, 0, 0, 0); } } public static string CopyExpirationTimeFromPolicy(string policyStatement) { int startExpiration = policyStatement.IndexOf("EpochTime"); string strExpirationRough = policyStatement.Substring(startExpiration + "EpochTime".Length); char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; List<char> listDigits = new List<char>(digits); StringBuilder buildExpiration = new StringBuilder(20); foreach (char c in strExpirationRough) { if (listDigits.Contains(c)) buildExpiration.Append(c); } return buildExpiration.ToString(); } 以下の資料も参照してください。 • Perl を使用して URL 署名を作成する (p. 163) • PHP を使用して URL 署名を作成する (p. 165) • Java を使用して URL 署名を作成する (p. 175) • プライベートコンテンツの構成ツール (p. 301) API Version 2014-01-31 174 Amazon CloudFront 開発者ガイド Java を使用して URL 署名を作成する Java を使用して URL 署名を作成する Abstract 署名付き CloudFront URL の署名を作成する Java コード例を利用します。 Amazon S3 および CloudFront 向けのオープンソース Java ツールキットでは、Java における CloudFront 開発に関するサンプルコードおよび情報が提供されます。プライベートディストリビューションの詳細 については、「プログラマーガイド: コードサンプル」の「プライベートディストリビューション」を 参照してください。 Note URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するためのプロ セスの 1 パートにすぎません。プロセス全体の詳細については、「プライベートコンテンツの 機能 (p. 127)」を参照してください。 以下のメソッドは、Amazon S3 および CloudFront 向けの Java オープンソースツールキットから取得 したものです。プライベートキーを使用するには、プライベートキーを PEM 形式から、Java 実装用の DER 形式に変換する必要があります。 API Version 2014-01-31 175 Amazon CloudFront 開発者ガイド Java を使用して URL 署名を作成する Example Java のポリシーおよび署名暗号化メソッド // // // // // // // // Signed URLs for a private distribution Note that Java only supports SSL certificates in DER format, so you will need to convert your PEM-formatted file to DER format. To do this, you can use openssl: openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der -outform DER So the encoder works correctly, you should also add the bouncy castle jar to your project and then add the provider. Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); String String String String distributionDomain = "a1b2c3d4e5f6g7.cloudfront.net"; privateKeyFilePath = "/path/to/rsa-private-key.der"; s3ObjectKey = "s3/object/key.txt"; policyResourcePath = "http://" + distributionDomain + "/" + s3ObjectKey; // Convert your DER file into a byte array. byte[] derPrivateKey = ServiceUtils.readInputStreamToBytes(new FileInputStream(privateKeyFilePath)); // Generate a "canned" signed URL to allow access to a // specific distribution and object String signedUrlCanned = CloudFrontService.signUrlCanned( "http://" + distributionDomain + "/" + s3ObjectKey, // Resource URL or Path keyPairId, // Certificate identifier, // an active trusted signer for the distribution derPrivateKey, // DER Private key data ServiceUtils.parseIso8601Date("2011-11-14T22:20:00.000Z") // DateLessThan ); System.out.println(signedUrlCanned); // Build a policy document to define custom restrictions for a signed URL. String policy = CloudFrontService.buildPolicyForSignedUrl( // Resource path (optional, may include '*' and '?' wildcards) policyResourcePath, // DateLessThan ServiceUtils.parseIso8601Date("2011-11-14T22:20:00.000Z"), // CIDR IP address restriction (optional, 0.0.0.0/0 means everyone) "0.0.0.0/0", // DateGreaterThan (optional) ServiceUtils.parseIso8601Date("2011-10-16T06:31:56.000Z") ); // Generate a signed URL using a custom policy document. String signedUrl = CloudFrontService.signUrl( // Resource URL or Path "http://" + distributionDomain + "/" + s3ObjectKey, // Certificate identifier, an active trusted signer for the distribution keyPairId, // DER Private key data derPrivateKey, API Version 2014-01-31 176 Amazon CloudFront 開発者ガイド Java を使用して URL 署名を作成する // Access control policy policy ); System.out.println(signedUrl); 以下の資料も参照してください。 • Perl を使用して URL 署名を作成する (p. 163) • PHP を使用して URL 署名を作成する (p. 165) • C# と .NET Framework を使用して URL 署名を作成する (p. 167) • プライベートコンテンツの構成ツール (p. 301) API Version 2014-01-31 177 Amazon CloudFront 開発者ガイド HTTPS 接続を使用したオブジェクト へのアクセス Abstract CloudFront との HTTPS 接続を使用して、オブジェクトへのアクセスを制御します。 Topics • HTTPS 接続での CloudFront の動作 (p. 179) • ビューア、CloudFront、およびオリジン間の通信に対して HTTPS を要求する方法 (p. 179) • 代替ドメイン名と HTTPS の使用 (p. 181) • HTTPS 接続料金 (p. 188) ウェブディストリビューションの場合、CloudFront がビューアにオブジェクトを供給するときに、ま た、必要に応じて、CloudFront がオリジンからオブジェクトを取得するときにも、HTTPS リクエスト を使用してオブジェクトを暗号化できます。 • CloudFront とビューアの間で HTTPS を必須にするには: CloudFront のキャッシュ動作の一部または 全部を、HTTP リクエストを HTTPS リクエストにリダイレクトするように構成するか、ビューアが HTTPS プロトコルのみを使用して CloudFront キャッシュのオブジェクトにアクセスするように構成 します。また、同じディストリビューションの 1 つ以上のキャッシュ動作で HTTP と HTTPS の両方 を許可するように構成して、一部のオブジェクトで HTTPS を必須にすることもできます。 • CloudFront とオリジンの間で HTTPS を必須にするには(オプション): ビューアがオブジェクトを リクエストするときに使ったプロトコルを使用して、CloudFront がオリジンからオブジェクトを取 得するように、1 つ以上の CloudFront オリジンを構成します。たとえば、この CloudFront 設定を使 用した場合、ビューアが HTTPS を使用して CloudFront にオブジェクトを要求すると、CloudFront も HTTPS を使用してリクエストをオリジンに転送します。オリジンが Amazon S3 バケットの場合 は、これがデフォルト設定であり、これを変更することはできません。 Important Amazon S3 バケットがウェブサイトエンドポイントとして構成されている場合、オリジンと の通信に HTTPS を使用するように CloudFront を構成することはできません。Amazon S3 はその構成で HTTPS 接続をサポートしていないためです。 API Version 2014-01-31 178 Amazon CloudFront 開発者ガイド HTTPS 接続での CloudFront の動作 HTTP サーバーをオリジンとして使用しており、ビューアと CloudFront 間および CloudFront とオリジ ン間の両方で HTTPS を使用する場合、サードパーティ認証局(例:VeriSign、DigiCert )で署名された SSL 証明書を HTTP サーバーにインストールする必要があります。 Caution オリジンサーバーが無効な証明書または自己署名証明書を返したり、間違った順番の証明書 チェーンを返したりした場合、CloudFront は TCP 接続を中断し、HTTP エラーコード 502 を 返して、X-Cache ヘッダーを Error from cloudfront に設定します。 HTTPS 接続での CloudFront の動作 HTTPS 接続での CloudFront の動作を示す以下の例は、次の事項を前提とします。 • CloudFront ディストリビューションには、1 つのキャッシュ動作(デフォルトのキャッシュ動作)と 1 つのオリジンが含まれます。 • ビューアと CloudFront 間および CloudFront とオリジン間で HTTPS を使用するようにディストリ ビューションを構成しています。 • オリジンには、サードパーティ認証局によって署名された SSL 証明書があります。 オリジンサーバーが Amazon S3 バケットまたは HTTP サーバーのどちらであるかに関係なく、プロセ スは基本的に同じように機能します。 HTTPS を使用してオブジェクトを供給するための CloudFront プロセス 1. 2. 3. 4. 5. 6. ビューアが HTTPS リクエストを CloudFront に送信します。ここで、ビューアと CloudFront 間で 何らかの SSL ネゴシエーションが実行されます。最終的に、ビューアはリクエストを暗号化形式 で送信します。 オブジェクトが CloudFront エッジキャッシュに存在する場合、CloudFront はオブジェクトを暗号 化してビューアに返し、ビューアはオブジェクトの暗号化を解除します。 オブジェクトが CloudFront キャッシュに存在しない場合、CloudFront はオリジンとの SSL ネゴ シエーションを実行し、ネゴシエーションが完了すると、オリジンにリクエストを暗号化形式で転 送します。 オリジンはリクエストの暗号化を解除した後、要求されたオブジェクトを暗号化して CloudFront に返します。 CloudFront はオブジェクトの暗号化を解除した後に、オブジェクトを再度暗号化してビューアに 転送します。また、CloudFront はオブジェクトをエッジキャッシュに保存します。これで、同じ オブジェクトが次に要求されたときに、キャッシュ内のオブジェクトを使用できます。 ビューアはオブジェクトの暗号化を解除します。 ビューア、CloudFront、およびオリジン間の通信 に対して HTTPS を要求する方法 ビューアと CloudFront 間の通信、およびオプションで CloudFront とオリジン間の通信で HTTPS を要 求するように CloudFront を構成できます。 Note オリジンから CloudFront エッジキャッシュの間、およびエッジキャッシュからビューアの間 でオブジェクトを暗号化するには、HTTPS のみを使用してください。HTTP を使用してオリジ API Version 2014-01-31 179 Amazon CloudFront 開発者ガイド ビューア、CloudFront、およびオリジン間の通信に対して HTTPS を要求する方法 ンからオブジェクトを取得するように CloudFront を構成している場合、CloudFront はそのオ ブジェクトをエッジキャッシュに追加し、オブジェクトが有効期限切れになるか、削除または 置き換えられるまで、そのオブジェクトをビューアに継続的に供給します。ディストリビュー ション内のオブジェクトの削除または置き換えの詳細については、「ディストリビューション 内のオブジェクトの追加、削除、または置換 (p. 88)」を参照してください。 CloudFront がディストリビューションに割り当てたドメイン名ではなく、代替ドメイン名(例: example.com)を使用する場合は、「代替ドメイン名と HTTPS の使用 (p. 181)」も参照してください。 ビューア、CloudFront、およびオリジン間の通信に HTTPS を要求するには 1. (オプション)CloudFront でカスタムオリジンと通信するときに HTTPS を使用する場合は、 VeriSign や DigiCert などのサードパーティ認証局から SSL 証明書を入手してインストールします (まだ入手していない場合)。 Important ステップ 3 でオリジンと通信するときに HTTPS を使用するように CloudFront を構成した 場合、CloudFront は確立されたサードパーティ認証局によって証明書が発行されたことを 確認します。CloudFront は Mozilla と同じ認証局をサポートします。現在のリストについ ては、Mozilla に付属する CA 証明書一覧を参照してください。自己署名証明書を使用する ことはできません。 Amazon S3 バケットを使用する場合、SSL 証明書は Amazon S3 から提供されます。 2. SSL 証明書の取得とインストール方法については、使用している HTTP サーバーソフトウェアの ドキュメント、およびサードパーティ認証局のドキュメントを参照してください。 HTTP リクエストを HTTPS にリダイレクトするように、または、CloudFront と通信するときに ビューアが HTTPS を使用するようにディストリビューションを構成します。CloudFront コンソー ルでこれを行うには、[Viewer Protocol Policy] が次の設定のいずれかになるように、ディストリ ビューションの 1 つ以上のキャッシュ動作を作成または更新します。 • [Redirect to HTTPS]: ユーザーが HTTPS リクエストではなく HTTP リクエストを送信した場合、 CloudFront は新しい HTTPS URL に加えて HTTP ステータスコード 301(永続的に移動)を返 します。ビューアはこの HTTPS URL を使用して CloudFront にリクエストを再送信します。 Note HTTPS リクエストにリダイレクトされる HTTP リクエストをビューアが作成すると、 CloudFront は両方のリクエストに課金します。HTTP リクエストの場合、リクエストの 料金と、CloudFront がビューアに返すヘッダーの料金のみが課金されます。HTTPS リ クエストの場合、リクエストの料金と、オリジンが返すヘッダーとオブジェクトの料金 が課金されます。 • [HTTPS Only]: ユーザーが HTTPS リクエストではなく HTTP リクエストを送信した場合、 CloudFront は HTTP ステータスコード 403(禁止)を返し、オブジェクトは返しません。 CloudFront コンソールを使用してウェブディストリビューションを更新する方法については、 「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 31)」を参照 してください。 CloudFront API を使用してウェブディストリビューションを更新する方法については、「Amazon CloudFront API リファレンス」の「PUT Distribution Config」を参照してください。API を使用し ている場合は、ViewerProtocolPolicy エレメントを参照してください。 API Version 2014-01-31 180 Amazon CloudFront 開発者ガイド 代替ドメイン名と HTTPS の使用 3. (オプション)オリジンとの通信を行う場合に CloudFront に HTTPS の使用を要求するには、ディ ストリビューションで 1 つ以上のオリジンを作成または更新し、以下の設定を行います。 • CloudFront コンソール: [Origin Protocol Policy] で [Match Viewer] を指定します。 • CloudFront API: OriginProtocolPolicy で match-viewer を指定します。 オリジンが Amazon S3 バケットの場合は、[Match Viewer] がデフォルト設定になっており、これ を変更することはできません。 Important カスタムオリジンを使用する場合、オリジンの SSL 証明書は共通名フィールドにドメイン 名を含み、おそらくサブジェクト代替名フィールドにもドメイン名をいくつか含みます (CloudFront は証明書ドメイン名にワイルドカード文字を使用できます)。証明書のドメ イン名のうち 1 つは、オリジンドメイン名に指定したドメイン名と一致する必要がありま す。ドメイン名が一致しない場合、エンドユーザーがオブジェクトに対して HTTPS リク エストを送信すると、次のように処理されます。 a. b. c. d. 4. CloudFront が、キャッシュ動作の設定に基づいて、該当するオリジンにリクエストを転送し ます。 オリジンが SSL 証明書を返します。 CloudFront は証明書を検査して、証明書のドメイン名がディストリビューションのオリジン ドメイン名の値と一致しないことを確認します。 CloudFront がエンドユーザーに HTTP ステータスコード 502(不正なゲートウェイ)を返し ます。 次の点を確認します。 • ビューアに HTTPS の使用が必要とされるリクエストにのみ、各キャッシュ動作のパスパターン が適用されている。 • キャッシュ動作が適切に配置されている。詳細については、「パスパターン (p. 51)」を参照し てください。 • 適用可能な場合、[Origin Protocol Policy] を [Match Viewer] として構成したオリジンに、キャッ シュ動作がリクエストをルーティングする。 • カスタムオリジンを使用していて、オリジンと通信するときに HTTPS を使用するように CloudFront を構成した場合、オリジンにサードパーティ認証局によって署名された有効な証明 書が存在する必要があります。 5. 本番環境で利用する前に構成をテストします。 代替ドメイン名と HTTPS の使用 Topics • CloudFront で HTTPS リクエストを供給する方法の選択 (p. 182) • CloudFront で SSL 証明書を使用する場合の要件と制限 (p. 183) • HTTPS で代替ドメイン名を使用するには (p. 184) • SSL 証明書内のパブリックキーのサイズの確認 (p. 186) • SSL 証明書の更新 (p. 186) • 独自 SSL 証明書からデフォルトの CloudFront 証明書に戻す (p. 187) API Version 2014-01-31 181 Amazon CloudFront 開発者ガイド CloudFront で HTTPS リクエストを供給する方法の選択 • 独自 SSL 証明書を専用 IP アドレスから SNI に切り替え (p. 188) デフォルトでは、URL に CloudFront ディストリビューションドメイン名を使用して、コンテンツを HTTPS 経由でビューアに配信できます(例: https://d111111abcdef8.cloudfront.net/image.jpg)。詳細については、「ビューア、 CloudFront、およびオリジン間の通信に対して HTTPS を要求する方法 (p. 179)」を参照してください。 ビューアで HTTPS を使用し、オブジェクトの URL で独自ドメイン名を使用する場合(たとえば、 https://www.example.com/image.jpg)、このトピックで説明するいくつかの追加ステップを実 行する必要があります。 Important 証明書をディストリビューションに追加すると、CloudFront はそのすべてのエッジロケーショ ンに証明書を直ちに伝達します。また、新しいエッジロケーションが使用可能になると、 CloudFront は証明書をそのエッジロケーションにも伝達します。証明書の伝達先のエッジロ ケーションを制限することはできません。 CloudFront で HTTPS リクエストを供給する方法の 選択 ユーザーに HTTPS とオブジェクトの代替ドメイン名を使用させる場合、CloudFront サーバーが HTTPS リクエストを供給する方法を選択する必要があります。代替ドメイン名を使用するように CloudFront を構成すると、CloudFront は、各エッジロケーションの専用 IP アドレスを使用するか、Server Name Indication(SNI)を使用して、HTTPS リクエストを供給できます。 専用 IP アドレスを使用した HTTPS リクエストの供給(すべて のクライアントで動作) 専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成した場合、CloudFront は代替ドメイン名を各 CloudFront エッジロケーションの専用 IP アドレスと関連付けます。ビューアが コンテンツに対して HTTPS リクエストを送信すると、DNS は、該当するエッジロケーションでディ ストリビューションの IP アドレスにリクエストをルーティングします。CloudFront は IP アドレスを 使用してディストリビューションを特定し、どの SSL 証明書をビューアに返すかを決定します。ビュー アと CloudFront は、SSL 証明書を使用して SSL ネゴシエーションを実行し、CloudFront はリクエス トされたコンテンツをビューアに返します。この方法は、ユーザーが使用するブラウザやその他のビュー アを問わず、あらゆる HTTPS リクエストで機能します。 Important 専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成した場合、 追加の月額料金が発生します。課金は、ディストリビューションに SSL 証明書を関連付けて、 ディストリビューションを有効にした時点から開始されます。CloudFront の料金の詳細につい ては、「Amazon CloudFront 料金表」を参照してください。 SNI を使用した HTTPS リクエストの供給(ほとんどのクライ アントで動作) Server Name Indication(SNI)を使用して HTTPS リクエストを供給するように CloudFront を構成し た場合、CloudFront は各エッジロケーションの IP アドレスに代替ドメイン名を関連付けますが、その IP アドレスはお客様のディストリビューション専用ではありません。ビューアがコンテンツに対して HTTPS リクエストを送信すると、DNS は、該当するエッジロケーションの IP アドレスにリクエスト API Version 2014-01-31 182 Amazon CloudFront 開発者ガイド CloudFront で SSL 証明書を使用する場合の要件と制限 をルーティングします。ただし、IP アドレスがディストリビューション専用ではないため、CloudFront は、リクエストがどのドメイン用かを IP アドレスに基づいて決定することはできません。 SSL ネゴシエーションは、HTTPS 接続を確立する処理の非常に早い段階で実行されます。リクエスト がどのドメイン向けかすぐに決定できない場合、CloudFront は接続を中断します。専用 IP アドレスを 使用するのは、ドメインとリクエストを関連付ける 1 つの方法です。他には Server Name Indication (SNI)があります。これは、ほとんどの最新ブラウザでサポートされている TLS プロトコルを拡張し たものです。SNI をサポートするブラウザは、リクエスト URL からドメイン名を自動的に取得して、 それをリクエストヘッダーの新しいフィールドに追加します。SNI をサポートするブラウザから CloudFront が HTTPS リクエストを受け取ると、CloudFront はリクエストヘッダーのドメイン名を見 つけて、該当する SSL 証明書を使ってリクエストに応答します。ビューアと CloudFront は SSL ネゴ シエーションを実行し、CloudFront はリクエストされたコンテンツをビューアに返します。 現在 SNI をサポートするブラウザの一覧については、Wikipedia の Server Name Indication の項目を参 照してください。 SNI を使用したくても、ユーザーのブラウザの一部が SNI をサポートしていない場合は、選択肢がい くつかあります。 • SNI ではなく専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成し ます。 • 独自証明書の代わりに CloudFront SSL 証明書を使用します。この場合、オブジェクトの URL でディ ストリビューションの CloudFront ドメイン名を使用する必要があります(たとえば、 https://d111111abcdef8.cloudfront.net/logo.png)。 また、CloudFront で使用する SSL 証明書を独自証明書からデフォルトの CloudFront 証明書に変更 する必要もあります。 • ディストリビューションを使用してコンテンツを配信したことがない場合は、単に構成を変更でき ます。詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、および更 新を行う (p. 31)」を参照してください。 • ディストリビューションを使用してコンテンツを配信したことがある場合は、新しい CloudFront ディストリビューションを作成し、コンテンツが使用できない時間を減らすかゼロにするために、 オブジェクトの URL を変更する必要があります。詳細については、「独自 SSL 証明書からデフォ ルトの CloudFront 証明書に戻す (p. 187)」を参照してください。 • ユーザーが使用するブラウザを管理できる場合は、SNI をサポートするブラウザにアップグレードし てもらいます。 • HTTPS の代わりに HTTP を使用します。 CloudFront で SSL 証明書を使用する場合の要件と制 限 証明書に関する以下の要件に注意してください。 • 証明書は、認められた認証局(CA)によって発行されている必要があります。自己署名証明書は受 け付けられません。 • 証明書は X.509 PEM 形式で作成されている必要があります。 • .pem ファイルには、ドメインの証明書の署名者である CA の証明書から始めて、証明書チェーン内 のすべての中間証明書を含めます。通常は、適切なチェーン順で中間証明書とルート証明書を並べた ファイルが CA のウェブサイトに用意されています。 Important ルート証明書、信頼パス内に存在しない中間証明書、CA の公開キー証明書は含めないでく ださい。 API Version 2014-01-31 183 Amazon CloudFront 開発者ガイド HTTPS で代替ドメイン名を使用するには 例を示します。 -----BEGIN CERTIFICATE----Intermediate certificate 2 -----END CERTIFICATE---------BEGIN CERTIFICATE----Intermediate certificate 1 -----END CERTIFICATE----- • プライベートキーは証明書のパブリックキーと一致している必要があります。また、PEM 形式の RSA プライベートキーでもなければなりません。PEM 形式の PEM ヘッダーは BEGIN RSA PRIVATE KEY で、フッターは END RSA PRIVATE KEY です。プライベートキーはパスワードで暗号化できま せん。 • SSL 証明書の使用とアップロードを行うための許可が必要です。これには、証明書発行元の認証局 から取得した、証明書をコンテンツ配信ネットワークにアップロードするための許可が含まれます。 • SSL 証明書内のパブリックキーの最大サイズは 2048 ビットです。パブリックキーのサイズを確認す る方法については、「SSL 証明書内のパブリックキーのサイズの確認 (p. 186)」を参照してください。 • CloudFront はすべての種類の証明書をサポートします。例えば、ドメイン検証済み証明書、拡張検 証(EV)証明書、高保証証明書、ワイルドカード証明書(*.example.com)、サブジェクト代替名 (SAN)証明書(example.com および example.net)などをサポートします。 • お客様は、証明書の有効期限切れ日付を監視したり、アップロードされ CloudFront で使用される SSL 証明書を更新したりする必要があります。 また、CloudFront での SSL 証明書の使用に関して以下の制限があります。 • 各 CloudFront ディストリビューションに最大 1 個の SSL 証明書を関連付けることができます。 • AWS アカウントごとに最大 10 個の SSL 証明書を IAM 証明書ストアにアップロードできます。制限 の引き上げを要求するには、「IAM 制限の増加を要求する」を参照してください。 • さまざまなアカウントで作成された複数の CloudFront ディストリビューションで同じ証明書を使用 する場合、AWS アカウントごとに 1 回ずつ、証明書を IAM 証明書ストアにアップロードする必要が あります。 • CloudFront と他の AWS サービスに同じ証明書を使用する場合は、証明書を 2 回(CloudFront と他 のサービスのために 1 回ずつ)アップロードする必要があります。CloudFront の証明書をアップロー ドする方法の詳細については、以下の手順を参照してください。 • 専用 IP アドレスを使用して HTTPS リクエストを供給する場合は、以下に注意してください。 • 専用 IP アドレスを使用する許可を得る必要があります。後述の手順を参照してください。 • 特に指定しない限り、AWS では 1 つの AWS アカウントで 2 つの証明書を使用する許可が与えら れます。1 つは日常的に使用する証明書で、もう 1 つは複数のディストリビューションで証明書を 更新する必要がある場合の証明書です。 • この機能の使用をすでに承認されており、AWS アカウントで使用できる独自 SSL 証明書の数を増 やす必要がある場合は、 https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=cloudfront-distributions を利用してください。 HTTPS で代替ドメイン名を使用するには 1. SNI を使用して HTTPS リクエストを供給する場合は、ステップ 2 に進んでください。 専用 IP アドレスを使用して HTTPS リクエストを供給する場合は、AWS アカウントで許可を求め ます。AWS は可能な限り速やかにお客様のアカウントを更新します。許可を求める方法の詳細に ついては、「Amazon CloudFront の独自 SSL 証明書」を参照してください。 API Version 2014-01-31 184 Amazon CloudFront 開発者ガイド HTTPS で代替ドメイン名を使用するには Important デフォルトでは、HTTPS で代替ドメイン名を使用する許可をリクエストすると、AWS は、お客様の CloudFront ディストリビューションに 2 つの独自 SSL 証明書を関連付ける ことができるように、お客様のアカウントを更新します。通常は、複数のディストリビュー ションを持っており、証明書を更新する必要があるときにのみ、一時的に 2 番目の証明書 を使用します。複数の証明書をディストリビューションに常時関連付ける場合は、必要な 証明書の数と状況をリクエストに記載してください。 2. AWS CLI を使用して SSL 証明書を IAM 証明書ストアにアップロードします。証明書をまだ取得 していない場合は、「IAM を使用する」の「Creating, Uploading, and Deleting Server Certificates」 を参照してください。 証明書をすでに取得している場合は、次の AWS CLI コマンドを使用して、署名付き証明書をアッ プロードします。 aws iam upload-server-certificate --server-certificate-name CertificateName --certificate-body file://public_key_certificate_file --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file -path /cloudfront/path/ 次の点に注意してください。 • 証明書を IAM 証明書ストアにアップロードするには、CloudFront ディストリビューションの作 成に使用した AWS アカウントと同じアカウントを使用する必要があります。 • 証明書を IAM にアップロードする場合、-path パラメータ(証明書のパス)の値が /cloudfront/ で始まる必要があります(例: /cloudfront/production/、/cloudfront/test/)。また、パスが / で終わる必要もあり ます。 • CloudFront コンソールを使用してディストリビューションの作成または更新を行う場合、AWS CLI の --server-certificate-name パラメータに指定する値が、CloudFront コンソールの [SSL Certificate] リストに表示される値になります。 • CloudFront API を使用してディストリビューションの作成または更新を行う場合、AWS CLI か ら返される英数文字列を書き留めておきます(例: AS1A2M3P4L5E67SIIXR3J)。これは、 IAMCertificateId エレメントに指定する値です。CLI から返される IAM ARN は必要ありま せん。 AWS CLI の詳細については、「AWS Command Line Interface ユーザーガイド」および「AWS Command Line Interface Reference」を参照してください。 3. ディストリビューションを更新して、代替ドメイン名を含め、使用する SSL 証明書を指定し、 HTTPS リクエストを供給するために CloudFront で専用 IP アドレスを使用するか、SNI を使用す るかを指定します。また、DNS レコードを追加または更新する必要もあります。詳細と手順につ いては、「代替ドメイン名(CNAME)を使用する (p. 33)」を参照してください。 Caution SSL 証明書を CloudFront ディストリビューションに関連付けたら、すべてのディストリ ビューションから証明書を削除して、ディストリビューションのステータスが [Deployed] に変わるまで、証明書を IAM 証明書ストアから削除しないでください。 API Version 2014-01-31 185 Amazon CloudFront 開発者ガイド SSL 証明書内のパブリックキーのサイズの確認 SSL 証明書内のパブリックキーのサイズの確認 CloudFront 代替ドメイン名と HTTPS を使用する場合、SSL 証明書内のパブリックキーのサイズが 2048 ビットを超えることはできません。(これはパブリックキー内の文字数ではありません)。パブリック キーのサイズを確認するには、次の OpenSSL コマンドを実行できます。 openssl x509 -in path and filename of SSL certificate -text -noout 各パラメータの意味は次のとおりです。 • -in: SSL 証明書のパスとファイル名を指定します。 • -text: OpenSSL において、パブリックキーの長さがビット単位で表示されます。 • -noout: OpenSSL において、パブリックキーが非表示になります。 出力例: Public-Key: (2048 bit) SSL 証明書の更新 時折、有効期限切れの日付が近づいているなどの理由で、ある SSL 証明書を別のものと置き換えるこ とが必要になる場合があります。その手順は、SSL 証明書が同一の AWS アカウントに属する 1 つ以上 の CloudFront ディストリビューションに関連付けられているかどうかによって異なります。 • SSL 証明書が 1 つのディストリビューションに関連付けられている: 単に、ディストリビューション を更新し、古い証明書を新しい証明書に置き換えることができます。詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 31)」を参照してください。 • SSL 証明書が同一の AWS アカウントに属する 2 つ以上のディストリビューションに関連付けられて いる: デフォルトでは、HTTPS で代替ドメイン名を使用する許可をリクエストすると、2 つの SSL 証明書のみ同一の AWS アカウントに属する CloudFront ディストリビューションに関連付けること ができます。通常は、複数のディストリビューションを持っており、証明書を更新する必要があると きにのみ、2 番目の証明書を使用します。1 つの証明書はまだ更新されていないディストリビュー ションに関連付けられ、もう 1 つの証明書は更新済みのディストリビューションに関連付けられま す。以下の手順を実行します。 Important 証明書を更新している間、2 番目の証明書の使用に対して時間分の追加料金が発生する場合 があります。ディストリビューションの更新を迅速に行って、追加料金を最低限にすること をお勧めします。 複数の CloudFront ディストリビューションにおいて SSL 証明書を更新するには 1. 2. 専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成し、AWS ア カウントで許可された最大数の SSL 証明書をすでに関連付けている場合は、追加の証明書を関連 付ける許可を求めます。証明書を更新する旨をメールでお知らせください ([email protected])。 ディストリビューションを一度に 1 つずつ、新しい証明書を使用できるように更新します。 ステップ 1 で AWS にリクエストを送信した場合は、AWS アカウントが更新されたという通知を 受け取るまで待ちます。 API Version 2014-01-31 186 Amazon CloudFront 開発者ガイド 独自 SSL 証明書からデフォルトの CloudFront 証明書に戻 す 3. 詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行 う (p. 31)」を参照してください。 (オプション)すべての CloudFront ディストリビューションの更新が完了したら、古い証明書を IAM 証明書ストアから削除することもできます。 Caution すべてのディストリビューションから SSL 証明書を削除し、更新されたディストリビュー ションのステータスが [Deployed] に変わるまで、IAM 証明書ストアから SSL 証明書を削 除しないでください。 独自 SSL 証明書からデフォルトの CloudFront 証明 書に戻す 独自 SSL 証明書を使用するように CloudFront を構成していて、CloudFront の SSL 証明書を使用する ように構成を変更する場合は、ディストリビューションを使用してコンテンツを配信したことがあるか どうかによって処理が異なります。 • ディストリビューションを使用してコンテンツを配信したことがない場合は、単に構成を変更できま す。詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を 行う (p. 31)」を参照してください。 • ディストリビューションを使用してコンテンツを配信したことがある場合は、新しい CloudFront ディ ストリビューションを作成し、コンテンツが使用できない時間を減らすかゼロにするために、オブ ジェクトの URL を変更する必要があります。以下の手順を実行します。 デフォルトの CloudFront 証明書に戻すには 1. 2. 3. 新しい CloudFront ディストリビューションを希望する構成で作成します。[SSL Certificate] には、 [Default CloudFront Certificate (*.cloudfront.net)] を選択します。 詳細については、「ウェブディストリビューションを作成するためのタスクリスト (p. 42)」を参 照してください。 CloudFront を使用して配信しているオブジェクトの場合は、アプリケーションの URL を更新し て、CloudFront が新しいディストリビューションに割り当てたドメイン名を使用します。例えば、 https://www.example.com/images/logo.png を https://d111111abcdef8.cloudfront.net/images/logo.png に変更します。 独自 SSL 証明書に関連付けられているディストリビューションを削除するか、またはディストリ ビューションを更新して [SSL Certificate] の値を [Default CloudFront Certificate (*.cloudfront.net)] に変更します。詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、 および更新を行う (p. 31)」を参照してください。 Important このステップが完了するまで、Amazon Web Services は独自 SSL 証明書を使用する料金 を課金し続けます。 4. (オプション)AWS CLI を使用して、独自 SSL 証明書を IAM 証明書ストアから削除します。こ のアプリケーションは、独自 SSL 証明書を IAM 証明書ストアに追加するために使用したアプリ ケーションと同じです。 API Version 2014-01-31 187 Amazon CloudFront 開発者ガイド 独自 SSL 証明書を専用 IP アドレスから SNI に切り替え a. AWS CLI コマンド list-signing-certificates を実行して、削除する証明書の証明書 ID を取得します。詳細については、「AWS Command Line Interface Reference」の 「list-signing-certificates」を参照してください。 b. AWS CLI コマンド delete-signing-certificate を実行して、証明書を削除します。詳 細については、「AWS Command Line Interface Reference」の「delete-signing-certificate」 を参照してください。 独自 SSL 証明書を専用 IP アドレスから SNI に切り 替え 専用 IP アドレスで独自 SSL 証明書を使用するように CloudFront を構成した場合、代わりに SNI で独 自 SSL 証明書を使用するように切り替えることができます。以下の手順でその方法を説明します。 Important CloudFront の構成をこのように更新しても、SNI をサポートするビューアは影響を受けませ ん。これらのビューアは、変更の前も後も、変更が CloudFront エッジロケーションに伝達さ れている間も、同じようにコンテンツにアクセスできます。SNI をサポートしていないビュー アは、変更後、コンテンツにアクセスできなくなります。詳細については、「CloudFront で HTTPS リクエストを供給する方法の選択 (p. 182)」を参照してください。 独自 SSL 証明書を専用 IP アドレスから SNI に切り替えるには 1. 2. 3. 4. 5. 6. AWS マネジメントコンソールにサインインし、Amazon CloudFront コンソール (https://console.aws.amazon.com/cloudfront/)を開きます。 CloudFront コンソールの上部のペインで、表示または更新するディストリビューションを選択し ます。 [Distribution Settings] をクリックします。 [General] タブで、[Edit] をクリックします。 [Custom SSL Client Support] の設定を [Only Clients that Support Server Name Indication (SNI)] に 変更します。 [Yes, Edit] をクリックします。 HTTPS 接続料金 HTTPS リクエストに対する追加料金が常に発生します。詳細については、「Amazon CloudFront 料金 表」を参照してください。 API Version 2014-01-31 188 Amazon CloudFront 開発者ガイド IAM を使用して CloudFront リソース へのアクセスをコントロールする Abstract AWS Identity and Access Management ポリシーを使用して CloudFront のリソースへのアクセスをコントロールし ます。 Topics • CloudFront リソース (p. 190) • CloudFront アクション (p. 190) • ポリシーキー (p. 191) • CloudFront のポリシー例 (p. 191) Amazon CloudFront は AWS Identity and Access Management (IAM)と統合します。これにより、 AWS アカウントのユーザーを作成でき、AWS アカウントでユーザー(またはユーザーグループ)が実 行できる CloudFront アクションを指定できます。CloudFront に対するユーザーアクセスをコントロー ルするには、ユーザーまたはグループの許可を記述するポリシーを作成します。例えば、組織の特定の ユーザーのみに GetDistributionConfig の使用許可を付与するポリシーを作成できます。これでこ のユーザーは、CloudFront ディストリビューションに関するデータを取り込むアクションを使用でき ます。 ポリシーを使用して AWS アカウントユーザーの許可を設定する方法については、「Using AWS Identity and Access Management」の「Permissions and Policies」を参照してください。IAM に関する一般的 な情報については、AWS ウェブサイトの「AWS Identity and Access Management」を参照してくださ い。 Important Amazon CloudFront を IAM とともに使用する場合も、CloudFront の使用方法は変わりません。 CloudFront アクションに変更はなく、ユーザーおよびアクセスコントロールに関連する新しい CloudFront アクションはありません。 API Version 2014-01-31 189 Amazon CloudFront 開発者ガイド CloudFront リソース CloudFront リソース CloudFront アクションに対するアクセスをコントロールするポリシーを記述する場合は、リソースと してアスタリスク(*)を使用します。これは、IAM を使用して、特定の CloudFront リソースに対する アクセスをコントロールすることができないためです。例えば、ユーザーに特定のディストリビュー ションに対するアクセスを付与することはできません。IAM を使用して付与する許可には、CloudFront で使用するすべてのリソースが含まれます。アクセスコントロールの対象となるリソースを指定できな いので、IAM ポリシー内に、使用する CloudFront リソースの ARN (Amazon リソース名)はありま せん。(IAM で ARN を使用する方法の詳細については、「Using AWS Identity and Access Management」 の「Identifiers for IAM Entities」セクションの「ARNs」を参照してください)。 CloudFront アクション IAM; ポリシーでは、CloudFront が提供するすべてのアクションを指定することができます。アクショ ン名には、小文字の文字列 cloudfront: をプレフィックスとして付ける必要があります。例: cloudfront:GetDistributionConfig、cloudfront:ListInvalidations、cloudfront:*(す べての CloudFront アクションの場合)。 すべての CloudFront アクションの正規名を以下の表に示します。IAM ポリシーで API を指定する場合 にこれらの正規名を使用します。 ウェブディストリビューション ウェブディストリビューションの API アクション 正規名 POST Distribution CreateDistribution GET Distribution GetDistribution GET Distribution Config GetDistributionConfig PUT Distribution Config UpdateDistribution GET Distribution List ListDistributions DELETE Distribution DeleteDistribution RTMP ディストリビューション RTMP ディストリビューションの API アクション 正規名 POST Streaming Distribution CreateStreamingDistribution GET Streaming Distribution GetStreamingDistribution GET Streaming Distribution Config GetStreamingDistributionConfig PUT Streaming Distribution Config UpdateStreamingDistribution GET Streaming Distribution List ListStreamingDistributions DELETE Streaming Distribution DeleteStreamingDistribution API Version 2014-01-31 190 Amazon CloudFront 開発者ガイド 無効化 無効化 無効化の API アクション 正規名 POST Invalidation CreateInvalidation GET Invalidation GetInvalidation GET Invalidation List ListInvalidations オリジンアクセスアイデンティティ オリジンアクセスアイデンティティの API アク ション 正規名 POST Origin Access Identity CreateCloudFrontOriginAccessIdentity GET Origin Access Identity GetCloudFrontOriginAccessIdentity GET Origin Access Identity Config GetCloudFrontOriginAccessIdentityConfig PUT Origin Access Identity Config UpdateCloudFrontOriginAccessIdentity GET Origin Access Identity List ListCloudFrontOriginAccessIdentities DELETE Origin Access Identity DeleteCloudFrontOriginAccessIdentity ポリシーキー ポリシーキーを使用すると、ポリシーにリクエスト日付や IP 範囲などの条件を追加できます。CloudFront は、AWS 全体に及ぶポリシーキーを実装しますが、それ以外は実装しません。ポリシーキーの詳細に ついては、「Using AWS Identity and Access Management」の「Element Descriptions」セクションの 「Condition」を参照してください。 CloudFront のポリシー例 このセクションでは、CloudFront に対するユーザーアクセスをコントロールするいくつかの簡単なポ リシーを説明します。 Note 将来的には、CloudFront に新しいアクションが追加される可能性があります。これらは、以下 のポリシーのいずれかに論理的に含まれ、ポリシーに記載された目的に基づいている必要があ ります。 API Version 2014-01-31 191 Amazon CloudFront 開発者ガイド CloudFront のポリシー例 Example 1: アカウントが所有するすべてのリソースに対して、グループの読み書きアクセスを 許可します この例では、グループ(例: 開発者グループ)に接続されたポリシーを作成し、すべての CloudFront リ ソースに対する読み書きアクセスをグループに付与します。 { "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["cloudfront:*"], "Resource":"*" } ] } Example 2: アカウントが所有するすべてのリソースに対して、グループの読み取りアクセスを 許可します この例では、グループ(例: 財務グループ)に接続されたポリシーを作成し、すべての CloudFront リ ソースに対する読み取りアクセスをグループに付与します。 { "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["cloudfront:Get*", "cloudfront:List*"], "Resource":"*" } ] } Example 3: アカウントが所有するすべてのディストリビューション対して、グループの読み書 きアクセスを許可します この例では、グループ(例: 運用グループ)に接続されたポリシーを作成し、すべてのディストリビュー ションに対する読み書きアクセスをグループに付与しますが、無効化またはオリジンアクセスアイデン ティティに対するアクセスを付与しません。 { "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["cloudfront:*Distribution*"], "Resource":"*" } ] } API Version 2014-01-31 192 Amazon CloudFront 開発者ガイド CloudFront のポリシー例 Example 4: CloudFront ディストリビューションのデータをグループが取り込むことを許可しま すが、リクエストで SSL が使用されている場合に限ります この例では、グループに接続されたポリシーを作成し、SSL の使用を必須とする条件付きで、グルー プにすべての CloudFront アクションに対するアクセスを付与します。 { "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["cloudfront:*"], "Resource":"*", "Condition":{ "Bool":{ "aws:SecureTransport":"true" } } } ] } API Version 2014-01-31 193 Amazon CloudFront 開発者ガイド 概要 アクセスログ Abstract ログファイルを使用してオブジェクトに対するユーザーリクエストに関する情報を取得します。 Topics • 概要 (p. 194) • アクセスログの分析 (p. 196) • バケットおよびファイルの所有権 (p. 196) • ログ作成設定の変更方法 (p. 196) • Amazon S3 バケットからログファイルを削除する方法 (p. 197) • ファイル名の形式およびファイル配信のタイミング (p. 197) • ログファイル形式 (p. 198) • アクセスログの料金 (p. 203) Amazon CloudFront では、ユーザーリクエストに関する情報を含むオプションのログファイルを用意 しています。このセクションでは、ログ作成を有効および無効にする方法、ログファイルのコンテン ツ、およびお客様がログ作成を選択した場合の料金について説明します。 Note カスタムオリジンを使用する場合、ログファイルを保存する Amazon S3 バケットを作成する 必要があります。 概要 CloudFront では、選択された Amazon S3バケットにディストリビューション単位のアクセスログを配 信できます。次の図と表は、アクセスログの基本処理を示しています。 API Version 2014-01-31 194 Amazon CloudFront 開発者ガイド 概要 アクセスログの処理 エンドユーザーがお客様のアプリケーションまたはウェブサイトを使用します。 この図のお客様には A と B の 2 つのウェブサイトがあり、各ウェブサイトで異なる CloudFront ディストリビューションが使用されています(ディストリビューション A と ディストリビュー ション B)。 エンドユーザーがリクエストを送信すると、CloudFront は各リクエストを適切なエッジロケー ションにルーティングします。 CloudFront は、各リクエストに関するデータを、そのディストリビューション専用のログファ イルに書き込みます。この例では、ディストリビューション A に関連するリクエストについて の情報がディストリビューション A 専用のログファイルに、ディストリビューション B に関連 するリクエストについての情報がディストリビューション B 専用のログファイルに書き込まれ ます。 CloudFront は、選択された Amazon S3 バケットにディストリビューションのログファイルを 定期的に配置します。その後、ディストリビューション用の新しいログファイルへの書き込み を開始します。 ログファイルには、1 つのリクエストの詳細が 1 エントリとして記録されます。ログファイル形式の詳 細については、「ログファイル形式 (p. 198)」を参照してください。 ディストリビューションのログファイルは、オリジンサーバーと同じ Amazon S3 バケットか、別のバ ケットに保存できます。(メンテナンスを簡素化するために、別のバケットに保存することをお勧めし ます)。複数のディストリビューションのログファイルを同じバケットに保存することもできます。特 定のディストリビューションのログ作成を有効にした場合、ログファイルの名前にオプションのプレ フィックスを指定できます。 一定の時間、お客様のコンテンツに対してユーザーアクセスがない場合、その時間のログファイルを受 け取ることはありません。 API Version 2014-01-31 195 Amazon CloudFront 開発者ガイド アクセスログの分析 アクセスログの分析 1 つのストリームのログが複数のファイルにわたって記録される可能性があるため、一定期間に受け 取ったすべてのログファイルを 1 つのファイルに結合することをお勧めします。これにより、その期間 のデータをより素早く正確に分析することができます。 Important ログは、すべてのリクエストを完全に課金するためのものではなく、コンテンツに対するリク エストの本質を把握するものとして使用することをお勧めします。CloudFront はベストエフォー トベースでアクセスログを提供します。リクエストのログレコードが、リクエストが実際に処 理されてからかなり後に配信されたり、配信すらされないこともあり得ます。まれに、AWS 使用状況追跡システムと請求システムに表示される利用情報がアクセスログに表示されないこ とがあります。 アクセスログの分析に使用可能なツールについての推奨事項を含め、CloudFront アクセスログの詳細 については、「CloudFront ログ作成の使用 (p. 300)」を参照してください。 バケットおよびファイルの所有権 ログファイルバケットに対する Amazon S3 FULL_CONTROL 許可が必要です。デフォルトでは、バケッ ト所有者にはこの許可があります。お客様がバケット所有者でない場合、バケット所有者がお客様の AWS アカウントに FULL_CONTROL 許可を付与する必要があります。 ログ作成を有効にする場合、CloudFront API への API 呼び出しを実行します。この API 呼び出しを実 行すると、バケットの ACL を更新する Amazon S3 API も自動的に呼び出され、AWS データフィード アカウントに読み取り許可と書き込み許可が与えられます。このアカウントはログファイルをバケット に書き込みます。 各ログファイルには、独自の ACL があります(バケットの ACL とは別です)。バケット所有者にはロ グファイルに対する FULL_CONTROL 許可があります。ディストリビューション所有者(バケット所有 者でない場合)に許可はありません。データフィードアカウントには読み取り許可と書き込み許可があ ります。 Note データフィードアカウントの許可を削除しても、ログ作成が無効になることはありません。こ れらの許可を削除し、(API で行う)ログ作成を無効にしなかった場合は、次にデータフィー ドアカウントでログファイルをログバケットに書き込むことが必要になったときに、これらの 許可を再度与えます。 お客様がログ作成を無効にした場合も、バケットまたはログファイルに対するデータフィードアカウン トの読み取り/書き込み許可を当社が削除することはありません。これはお客様自身で行うことができ ます。 ログ作成設定の変更方法 ログ作成の有効化および無効化、ログが保存されている Amazon S3 バケットの変更、およびログファ イルのプレフィックスの変更は、CloudFront コンソールまたは CloudFront API を使用して行うことが できます。 API Version 2014-01-31 196 Amazon CloudFront 開発者ガイド Amazon S3 バケットからログファイルを削除する方法 • CloudFront コンソールを使用してウェブディストリビューションまたは RTMP ディストリビューショ ンを更新する方法については、「CloudFront ディストリビューションの一覧表示、詳細表示、およ び更新を行う (p. 31)」を参照してください。 • CloudFront API を使用してウェブディストリビューションを更新する方法については、「Amazon CloudFront API リファレンス」の「PUT Distribution Config」を参照してください。 • CloudFront API を使用して RTMP ディストリビューションを更新する方法については、「Amazon CloudFront API リファレンス」の「PUT Streaming Distribution Config」を参照してください。 ログ作成設定の変更は 12 時間以内に有効になります。 CloudFront API を使用してアクセスログ設定を変更する際の注意事項。 • ウェブディストリビューションのアクセスログ設定を変更するには、2009-04-02 以降のバージョン の API を使用する必要があります。 • RTMP ディストリビューションのアクセスログ設定を変更するには、2010-05-01 以降のバージョン の API を使用する必要があります。 • Cookie のアクセスログ設定を変更するには、2012-07-01 以降のバージョンの API を使用する必要が あります。 Note 通常、バケット内のキーの一覧を容易に表示できるように、Amazon S3 ユーザーはプレフィッ クスを使用し、その後に区切り文字のスラッシュ(/)を続けます。 Amazon S3 バケットからログファイルを削除する 方法 ログ作成を有効にする際に指定した Amazon S3 バケットから、ログファイルが自動的に削除されるこ とはありません。Amazon S3 バケットからログファイルを削除する方法については、該当する以下の Amazon S3 ドキュメントを参照してください。 • Amazon S3 コンソールを使用する場合:「Amazon Simple Storage Service Console User Guide」の 「Deleting an Object」を参照してください。 • REST API を使用する場合: 「Amazon Simple Storage Service API リファレンス」の「DELETE Object」を参照してください。 • SOAP API を使用する場合: 「Amazon Simple Storage Service API リファレンス」の「DeleteObject」 を参照してください。 ファイル名の形式およびファイル配信のタイミン グ ファイル名は以下の形式に従います(日付と時刻は UTC です)。 {bucket-name}.s3.amazonaws.com/{optional-prefix/}{distribution-ID}.{YYYY}-{MM}-{DD}-{HH}.{unique-ID}.gz 例えば、バケット名が mylogs で、プレフィックスが myprefix/ の場合、ファイル名は次のようにな ります。 mylogs.s3.amazonaws.com/myprefix/EMLARXS9EXAMPLE.2012-07-01-20.RT4KCN4SGK9.gz API Version 2014-01-31 197 Amazon CloudFront 開発者ガイド ログファイル形式 {optional-prefix/} の値を含めるとき、その値に / が含まれていない場合、CloudFront は自動的 に / を追加します。値に / が含まれている場合、CloudFront は / を追加しません。 CloudFront は、gzip を使用して各ログファイルを圧縮し、指定された Amazon S3 バケットにログファ イルを保存します。通常、CloudFront は、対応するリクエストを受け取ってから 24 時間以内にログ ファイルを保存します。リクエストを送信するユーザー数によっては、CloudFront は 1 時間につき複 数のログファイルを保存することがあります。 Note ある 1 時間の間、ユーザーからリクエストの送信がない場合、その時間のログファイルを受け 取ることはありません。 ログファイル形式 Topics • ウェブディストリビューションのログファイル形式 (p. 199) • RTMP ディストリビューションのログファイル形式 (p. 201) ログファイルには、1 つのエンドユーザーリクエストの詳細が 1 エントリとして記録されます。ウェブ ディストリビューションと RTMP ディストリビューションのログファイルは別物ですが、この 2 つに は次の共通点があります。 • W3C 拡張ログファイル形式を使用します。(詳細については、http://www.w3.org/TR/WD-logfile.html を参照してください)。 • タブ区切りの値が含まれます。 • レコードが必ずしも時系列順に含まれているとは限りません。 • 2 つのヘッダー行が含まれます。1 つのヘッダー行にファイル形式のバージョンが示され、もう 1 つ のヘッダー行に、各レコードに含まれる W3C フィールドが示されます。 • フィールド値に含まれるスペースおよび標準外の文字は、URL エンコードされた同等の値で置き換 えられます。 この非標準文字には、ASCII コード 0 ~ 31、および ASCII コード 128 以上の文字、および以下の表 の文字が含まれます。URL のエンコード標準は RFC 1738 です。詳細については、 http://www.ietf.org/rfc/rfc1738.txt を参照してください。 URL エンコード 文字 された値 %3C < %3E > %22 " %23 # %25 % %7B { %7D } %7C | API Version 2014-01-31 198 Amazon CloudFront 開発者ガイド ウェブディストリビューションのログファイル形式 URL エンコード 文字 された値 %5C \ %5E ^ %7E ~ %5B [ %5D ] %60 ` %27 ' %20 スペース ウェブディストリビューションのログファイル形式 ウェブディストリビューションのログファイルには以下のフィールドがこの順序で含まれます。 フィールド 説明 日付 イベントの発生日付(UTC)(例: 2009-03-10)。 time サーバーがリクエストの処理を完了した時刻(UTC)(例: 01:42:39)。 x-edge-location リクエストを処理したエッジロケーション。各エッジロケーションは、3 文字 コードと、割り当てられた任意の数字で識別されます(例: DFW3)。通常、こ の 3 文字コードは、エッジロケーションの近くにある空港の、国際航空運送協 会の空港コードに対応します。(これらの略語は今後変更される可能性があり ます)。エッジロケーションの一覧については、Amazon CloudFront の詳細情 報ページ(http://aws.amazon.com/cloudfront)を参照してください。 sc-bytes サーバーからクライアントへのバイト数(ヘッダーを含む。例: 1045619)。 c-ip クライアントの IP(例: 192.0.2.183)。 cs-method HTTP アクセス方式。 cs(Host) DNS 名(リクエストに指定された CloudFront ディストリビューション名)。 CNAME に対するリクエストを実行した場合、DNS 名フィールドには、CNAME ではなく、基礎となるディストリビューション DNS 名が含まれます。 cs-uri-stem URI ステム(例: /images/daily-ad.jpg)。 sc-status 次のいずれかの値になります。 • HTTP ステータスコード(例: 200)。詳細については、「CloudFront がキャッ シュする HTTP 4xx および 5xx ステータスコード (p. 125)」を参照してくださ い。 • 000。CloudFront がリクエストに応答する前に、ビューアが接続をクローズ したこと(ブラウザタブを閉じたなど)を示します。 cs(Referer) リファラー。 API Version 2014-01-31 199 Amazon CloudFront 開発者ガイド ウェブディストリビューションのログファイル形式 フィールド 説明 cs(User-Agent) ユーザーエージェント。 cs-uri-query 接続文字列に含まれる URI のクエリ文字列部分。URI にクエリ文字列が含まれ ない場合、ログファイルにあるその要求の cs-uri-query フィールドには 1 つのハイフン(-)が含まれます。エンコード標準は RFC 1738 です。詳細につ いては、「ログファイル形式 (p. 198)」を参照してください。 cs(Cookie) 名前値のペアおよび関連属性を含む、リクエスト内の Cookie ヘッダー。Cookie のログ作成を有効にした場合、CloudFront は、お客様がどの Cookie をオリジ ンに転送するように選択したか(none、all、または Cookie 名のホワイトリス ト)に関係なく、すべての要求内の Cookie をログに記録します。リクエストに Cookie ヘッダーが含まれない場合、ログファイルにあるその要求の cs(Cookie) フィールドには 1 つのハイフン(-)が含まれます。 Cookie の詳細については、「CloudFront が Cookie の転送、キャッシュ、およ びログ作成を行う方法 (p. 86)」を参照してください。 x-edge-result-type リクエストの結果タイプ。結果タイプは以下のとおりです。 • Hit: CloudFront がオブジェクトをエッジキャッシュからビューアに供給しま した。 • RefreshHit: CloudFront はエッジキャッシュの中でオブジェクトを見つけま したが、期限が切れていたために、オリジンに問い合わせて、そのキャッシュ がオブジェクトの最新バージョンであることを確認しました。 • Miss: エッジキャッシュ内のオブジェクトがリクエストに対して適切ではな かったため、CloudFront はリクエストをオリジンサーバーに転送して結果を ビューアに返しました。 • LimitExceeded: CloudFront の制限を超えたために、リクエストが拒否され ました。 • CapacityExceeded: オブジェクトの供給を要求されたときにエッジロケー ションに十分な容量がなかったために、CloudFront が 503 エラーを返しまし た。 • Error: 通常、これは、リクエストが結果的にクライアントエラー(sc-status が 4xx)またはサーバーエラー(sc-status が 5xx)になったことを意味し ます。 sc-status が 403 であって、お客様のコンテンツのディストリビューショ ンを地理的に制限するように CloudFront を設定している場合、制限されてい る地理的な場所からリクエストが送られた可能性があります。地域制限の詳 細については、「コンテンツの地理的ディストリビューションの制限 (p. 63)」 を参照してください。 sc-status が 2xx の場合、ダウンロードが完了する前にクライアントが切 断された可能性があります。 x-edge-request-id 要求を一意に識別する暗号化された文字列。 API Version 2014-01-31 200 Amazon CloudFront 開発者ガイド RTMP ディストリビューションのログファイル形式 フィールド 説明 x-host-header ビューアによってこのリクエストの Host ヘッダーに組み込まれた値。これはリ クエストのドメイン名です。 • CloudFront ドメイン名(http://d111111abcdef8.cloudfront.net/logo.png)を使 用している場合、x-host-header 列には CloudFront がお客様のディストリ ビューションに割り当てたドメイン名(例: d111111abcdef8.cloudfront.net)が入ります。 • 代替ドメイン名(http://example.com/logo.png)を使用している場合、 x-host-header 列には代替ドメイン名(例: example.com)が入ります。 代替ドメイン名を使用するには、その名前をお客様のディストリビューショ ンに追加する必要があります。詳細については、「代替ドメイン名(CNAME) を使用する (p. 33)」を参照してください。 cs-protocol ビューアによってリクエストに指定されたプロトコル。http または https。 cs-bytes ビューアによってリクエストに組み込まれたデータのバイト数(クライアント からサーバーへの送信時のバイト数。ヘッダーを含む)。 time-taken CloudFront エッジサーバーがビューアのリクエストを受け取った時間と、 CloudFront がレスポンスの最終バイトをサーバーの出力キューに書き込んだ時 間との差(秒数)をサーバー側で測定。ビューアから見た場合、オブジェクト 全体を取得するのにかかる合計時間は、ネットワークの遅延と TCP バッファリ ングにより、この値よりも長くなります。 Note URL およびクエリ文字列内の疑問符(?)はログに含まれません。 ウェブディストリビューションのログファイルの例を以下に示します。 #Version: 1.0 #Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-resulttype x-edge-request-id x-host-header cs-protocol cs-bytes time-taken 05/01/2014 01:13:11 FRA2 182 192.0.2.10 GET d111111abcdef8.cloudfront.net /view/my/file.html 200 www.displaymyfiles.com Mozilla/4.0%20(compat ible;%20MSIE%205.0b1;%20Mac_PowerPC) - zip=98101 RefreshHit MRVMF7KydIvxMWf JIglgwHQwZsbG2IhRJ07sn9AkKUFSHS9EXAMPLE== d111111abcdef8.cloudfront.net http 0.001 05/01/2014 01:13:12 LAX1 2390282 192.0.2.202 GET d111111abcdef8.cloudfront.net /soundtrack/happy.mp3 304 www.unknownsingers.com Mozilla/4.0%20(compat ible;%20MSIE%207.0;%20Windows%20NT%205.1) a=b&c=d zip=50158 Hit xGN7KWpVEmB9Dp7ctcVFQC4E-nrcOcEKS3QyAez--06dV7TEXAMPLE== d111111abcdef8.cloud front.net http - 0.002 RTMP ディストリビューションのログファイル形式 RTMP アクセスログの各レコードは再生イベントを表します(接続、再生、一時停止、停止、切断な ど)。結果として、CloudFront は、ビューアがビデオを視聴するたびに複数のログレコードを生成し ます。同じストリーム ID に由来するログレコードを関連付けるには、x-sid フィールドを使用しま す。 API Version 2014-01-31 201 Amazon CloudFront 開発者ガイド RTMP ディストリビューションのログファイル形式 Note すべてのイベントに対して表示されるフィールドがある一方で、再生、停止、一時停止、再 開、シークの各イベントに対してのみ表示されるフィールドがあります。フィールドがイベン トに関係しない場合、ログファイルには 1 つのハイフン(-)が含まれます。 以下の表に、イベントのタイプに関係なく、RTMP ディストリビューションのログファイルの各レコー ドに表示されるフィールドを示します。これらのフィールドは、表に示された順序でログに表示されま す。 フィールド 説明 日付 イベントの発生日付(UTC)。 time サーバーがリクエストを受け付けた時刻(UTC)(例: 01:42:39)。 x-edge-location 再生イベントが発生したエッジロケーション。各エッジロケーションは、3 文字 コードと、割り当てられた任意の数字で識別されます(例: DFW3)。通常、この 3 文字コードは、エッジロケーションの近くにある空港の、国際航空運送協会の 空港コードに対応します。(これらの略語は今後変更される可能性があります)。 エッジロケーションの一覧については、Amazon CloudFront の詳細情報ページ (http://aws.amazon.com/cloudfront)を参照してください。 c-ip クライアントの IP(例: 192.0.2.183)。 x-event イベントタイプ。接続、切断、再生、停止、一時停止、再開、またはシークイベ ントのいずれかです。 sc-bytes イベントの時間までにサーバーからクライアントに送信されたバイト数の合計。 x-cf-status イベントのステータスを示すコード。現在、このフィールドの唯一の値は "OK" です。今後の新しい機能によって新しいステータスコードが必要になる可能性が あります。 x-cf-client-id クライアントを区別するために使用できる Opaque 型の文字列識別子。 この値は接続ごとに一意です。 cs-uri-stem アプリケーションおよびアプリケーションインスタンスを含む、URI のステム部 分。これは、FMS 接続文字列と呼ばれることもあります。例: rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st。 cs-uri-query 接続文字列に含まれる URI のクエリ文字列部分。 c-referrer リファラーの URI。 x-page-url SWF のリンク元ページの URL。 c-user-agent ユーザーエージェント。 以下のフィールドは、再生、停止、一時停止、再開、シークの各イベントに対してのみ表示されます。 他のイベントの場合、これらのフィールドには 1 つのダッシュ(-)が含まれます。これらのフィール ドは、上記のフィールドの後に、表に示された順序でログに表示されます。 フィールド 説明 x-sname ストリーム名。 x-sname-query ストリームのクエリ文字列(ある場合)。 API Version 2014-01-31 202 Amazon CloudFront 開発者ガイド アクセスログの料金 フィールド 説明 x-file-ext ストリームタイプ(例: FLV)。 x-sid ストリーム ID。これは、接続に対する一意の整数識別子です。 Note URL およびクエリ文字列内の疑問符(?)はログに含まれません。 RTMP ディストリビューションのログファイルの例を次に示します。 #Version: 1.0 #Fields: date time x-edge-location c-ip x-event sc-bytes x-cf-status x-cf-clientid cs-uri-stem cs-uri-query c-referrer x-page-url c-user-agent x-sname x-snamequery x-file-ext x-sid 2010-03-12 23:51:20 SEA4 192.0.2.147 connect 2014 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.long tailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 2010-03-12 23:51:21 SEA4 192.0.2.222 play 3914 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.long tailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 myvideo p=2&q=4 flv 1 2010-03-12 23:53:44 SEA4 192.0.2.4 stop 323914 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.long tailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/other/myvideo p=2&q=4 flv 1 2010-03-12 23:53:44 SEA4 192.0.2.103 play 8783724 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.long tailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/favs/myothervideo p=42&q=14 mp4 2 2010-03-12 23:56:21 SEA4 192.0.2.199 stop 429822014 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.long tailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/favs/myothervideo p=42&q=14 mp4 2 2010-03-12 23:59:44 SEA4 192.0.2.14 disconnect 429824092 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st key=value http://player.longtailvideo.com/player.swf http://www.long tailvideo.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 - アクセスログの料金 アクセスログの作成は、CloudFront のオプション機能です。アクセスログの作成を有効にしても追加 料金はかかりません。ただし、Amazon S3 でのファイルの保存とアクセスについて通常の Amazon S3 料金が発生します(ファイルの削除はいつでもできます)。CloudFront の料金の詳細については、 「CloudFront の請求および使用状況レポート (p. 8)」を参照してください。 API Version 2014-01-31 203 Amazon CloudFront 開発者ガイド ウェブディストリビューション内のファイルを表示できま せん。 トラブルシューティング Abstract CloudFront で遭遇する可能性のある一般的な問題に対処して、可能な対策を見つけます。 Topics • ウェブディストリビューション内のファイルを表示できません。 (p. 204) • RTMP ディストリビューション内のファイルを表示できません。 (p. 206) • エラーメッセージ「Certificate: <certificate-id> is being used by CloudFront.」が表示されます。 (p. 206) ウェブディストリビューション内のファイルを表 示できません。 CloudFront ウェブディストリビューション内のファイルを表示できない場合の一般的な解決方法を以 下のトピックで説明します。 CloudFront と Amazon S3 の両方にサインアップし ましたか? Amazon CloudFront を Amazon S3 オリジンで使うには、CloudFront と Amazon S3 の両方にそれぞれ サインアップする必要があります。CloudFront と Amazon S3 のサインアップについて詳しくは、 「CloudFront の使用開始 (p. 19)」をご覧ください。 Amazon S3 バケットとオブジェクトの許可設定は正 しいですか? CloudFront を Amazon S3 オリジンで使う場合、コンテンツのオリジナルバージョンは Amazon S3 バ ケットに保存されます。Amazon S3 で CloudFront を使う最も簡単な方法は、Amazon S3 ですべての オブジェクトをパブリックに読み出し可能にすることです。そのためには、Amazon S3 にアップロー ドするオブジェクトすべてに対し、パブリックの読み出し権限を明示的に有効にする必要があります。 API Version 2014-01-31 204 Amazon CloudFront 開発者ガイド 代替ドメイン名(CNAME)が正しく構成されていますか? コンテンツをパブリックに読み出せない場合は、CloudFront オリジンアクセスアイデンティティを作 成して CloudFront がコンテンツにアクセスできるようにする必要があります。CloudFront オリジンア クセスアイデンティティの詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 131)」を参照してください。 オブジェクトのプロパティとバケットのプロパティはそれぞれ独立しています。権限は Amazon S3 の オブジェクトそれぞれに対して明示的に付与する必要があります。オブジェクトはバケットからプロパ ティを継承しないので、オブジェクトのプロパティはバケットの中で別途設定する必要があります。 代替ドメイン名(CNAME)が正しく構成されていま すか? お使いのドメイン名に対応する CNAME レコードがすでに存在する場合は、そのレコードを変更また は置換して、レコードがディストリビューションのドメイン名を指すようにしてください。 また CNAME レコードが、Amazon S3 バケットではなく、ディストリビューションのドメイン名を指 していることを確認してください。DNS システムの CNAME レコードがディストリビューションのド メイン名を指していることを確認することができます。そのためには、DNS ツールを dig と同じよう に使います(dig に関する詳細は、http://www.kloth.net/services/dig.php を参照してください)。 以下にサンプルとして、images.example.com というドメイン名に対する dig リクエストと、レスポ ンスのうち関連する部分を挙げます。ANSWER SECTION の下で、CNAME が含まれる行を探します。 CNAME の右側にある値が、CloudFrontディストリビューションのドメイン名であれば、ドメイン名の CNAME レコードが正しく設定されています。値が Amazon S3 オリジンサーバーのバケットや他のド メイン名になっている場合は、その CNAME レコードは正しく設定されていません。 [prompt]> dig images.example.com ; <<> DiG 9.3.3rc2 <<> images.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;images.example.com. IN A ;; ANSWER SECTION: images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net. ... ... CNAME の詳細については、「代替ドメイン名(CNAME)を使用する (p. 33)」を参照してください。 参照している CloudFront ディストリビューションの URL は正しいですか? 参照している URL が、Amazon S3 バケットやカスタムオリジンではなく、CloudFront ディストリ ビューションのドメイン名(または CNAME)を使用していることを確認してください。 API Version 2014-01-31 205 Amazon CloudFront 開発者ガイド カスタムオリジンに関するトラブルシューティングでサ ポートをお求めですか? カスタムオリジンに関するトラブルシューティング でサポートをお求めですか? カスタムオリジンのトラブルシューティングで AWS のサポートが必要な場合、お客様のリクエストの X-Amz-Cf-Id ヘッダーエントリの調査が必要になることがあります。現在ヘッダーエントリのログ作 成をしていない場合は、将来に備えて記録することをお勧めします。詳細については、「Amazon EC2 と他のカスタムオリジンの使用に関する要件および推奨事項 (p. 63)」を参照してください。 RTMP ディストリビューション内のファイルを表 示できません。 RTMP ディストリビューション内のファイルを表示できない場合、URL と再生クライアントは正しく 構成されていますか。RTMP ディストリビューションでは、HTTP ではなく RTMP プロトコルを使い、 さらに再生クライアントの設定を少し変更する必要があります。RTMP ディストリビューションの作成 の詳細については、「RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 69)」を 参照してください。 エラーメッセージ「Certificate: <certificate-id> is being used by CloudFront.」が表示されます。 問題: IAM 証明書ストアから SSL 証明書を削除しようとすると、メッセージ「Certificate: <certificate-id> is being used by CloudFront.」を受け取ります。 解決方法: 各 CloudFront ウェブディストリビューションは、デフォルトの CloudFront 証明書または独 自 SSL 証明書のいずれかと関連付けられている必要があります。SSL 証明書を削除する前に、SSL 証 明書を更新するか(現行の独自 SSL 証明書を別の独自 SSL 証明書に置き換える)、または使用する証 明書を独自 SSL 証明書からデフォルトの CloudFront 証明書に戻す必要があります。該当するセクショ ンに示されている手順を実行します。 • SSL 証明書の更新 (p. 186) • 独自 SSL 証明書からデフォルトの CloudFront 証明書に戻す (p. 187) API Version 2014-01-31 206 Amazon CloudFront 開発者ガイド CloudFront の負荷テスト Abstract CloudFront のパフォーマンスを評価する際に使用する、従来の負荷テストの方法とは異なる特定のステップを列挙 します。 従来の負荷テストの方法は CloudFront では適切に機能しません。CloudFront が、DNS を使用して、地 理的に分散したエッジロケーション間および各エッジロケーション内で負荷を分散するためです。クラ イアントが CloudFront にコンテンツを要求すると、クライアントは一連の IP アドレスが含まれた DNS レスポンスを受け取ります。DNS が返す IP アドレスの 1 つだけにリクエストを送信してテストするな ら、1 つの CloudFront エッジロケーション内のリソースのごく一部分にのみテストを実行することな り、実際のトラフィックパターンを正確には表しません。この方法でテストした場合、リクエストする データの量によっては、テスト対象になったごく一部分の CloudFront サーバーに負荷がかかりすぎて、 パフォーマンスが低下することもあります。 CloudFront は、複数の地理的リージョンにわたってクライアント IP アドレスや DNS リゾルバーの異 なるビューアに応じて、拡大縮小するように設計されています。CloudFront のパフォーマンスを正確 に評価する負荷テストを実行するには、以下の手順をすべて実行することをお勧めします。 • 複数の地理的リージョンからクライアントのリクエストを送信します。 • 各クライアントで独立した DNS リクエストを実行するようにテストを構成します。これで、各クラ イアントは DNS から一連の異なる IP アドレスを受け取ります。 • リクエストを実行する各クライアントで、DNS から返された IP アドレスセット全体にクライアント リクエストを分散します。これにより、CloudFront エッジロケーション内の複数のサーバー間で負 荷が分散されます。 API Version 2014-01-31 207 Amazon CloudFront 開発者ガイド ライブストリーミング CloudFront チュートリアル Abstract CloudFront を使用して、ライブストリーミング、地理的ブロッキング、および RTMP ストリーミングを行う方法 について説明するチュートリアルです。 以下のチュートリアルでは、CloudFront を使用して、ライブストリーミング、地理的ブロッキング、 および RTMP ストリーミングを行う方法について説明します。 ライブストリーミング • CloudFront および Adobe Media Server 5.0 を使用したライブ HTTP ストリーミング (p. 209) • Amazon CloudFront と IIS Media Services 4.1 を使用したライブスムーズストリーミング (p. 230) • Wowza Streaming Engine 4.0 を使用したライブ HTTP ストリーミング (p. 247) 地理的ブロッキング • CloudFront ディストリビューション内のファイルへのアクセスを地理的場所に基づいて制限する(地 理的ブロッキング) (p. 258) RTMP ストリーミング • CloudFront および Adobe Flash Player を使用したオンデマンドビデオストリーミング (p. 284) • CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミング (p. 289) • CloudFront および JW Player を使用したオンデマンドビデオストリーミング (p. 294) API Version 2014-01-31 208 Amazon CloudFront 開発者ガイド CloudFront および Adobe Media Server 5.0 を使用したラ イブ HTTP ストリーミング CloudFront および Adobe Media Server 5.0 を使用 したライブ HTTP ストリーミング Abstract Amazon CloudFront と Adobe Media Server 5.0 を使用したライブ HTTP ストリーミングの使用方法について説明 します。 Topics • 概要 (p. 209) • ライブストリーミングの構成ステップ (p. 210) • Amazon Web Services アカウントを作成する (p. 211) • Amazon EC2 キーペアを作成する (p. 211) • • • • • Adobe Media Server をサブスクライブする (p. 212) ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 213) Adobe Media Server が実行されていることを確認する (p. 214) ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする (p. 215) ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Flash Media Playback を埋め込む (p. 219) • ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 221) • よくある質問 (p. 222) • その他のドキュメント (p. 229) Amazon Web Services ライブストリーミングでは、Adobe Media Server バージョン 5.0 を使用して、 ライブ演奏、オンラインセミナー、およびその他のイベントをストリーミングできます。このチュート リアルでは、Adobe Media Server 5.0 を使用したライブストリーミングの構成プロセスについて説明し ます。 概要 Abstract HTTP ライブストリーミングまたは HTTP ダイナミックストリーミングのために Amazon CloudFront と Adobe Media Server 5.0 を使用する際の基本情報について説明します。 Adobe Media Server 5.0 は、次の 2 つの HTTP ストリーミング形式をサポートします。 • HLS (HTTP Live Streaming)。iOS デバイスでサポートされます • HDS (HTTP Dynamic Streaming)。Flash アプリケーションでサポートされます ここでは、Adobe Media Server と CloudFront を連携させて、イベントをリアルタイムでストリーミン グする方法について説明します。 1. 2. このチュートリアルで説明されているとおりに、AWS CloudFormation を使用して、Adobe Media Server 5.0 を実行する Amazon EC2 インスタンスを準備し、CloudFront ディストリビューション を作成します。 デジタルビデオカメラ(ラップトップコンピューターのビデオカメラなど)を使用してイベントを キャプチャします。 API Version 2014-01-31 209 Amazon CloudFront 開発者ガイド ライブストリーミングの構成ステップ 3. 4. 5. 6. 7. 8. イベントの場所でエンコーダ(例: Adobe Flash Media Live Encoder)を使用し、生のビデオフィー ドを圧縮して、Adobe Media Server に送信します。(Flash Media Live Encoder は、無料でダウ ンロードでき、Windows および Mac OS で利用可能です)。 Adobe Media Server は、ビデオストリームを一連の小さなファイルに分割します。このサーバー は CloudFront ディストリビューションのオリジンです。 ユーザーに提供している、イベントを表示するための CloudFront URL にユーザーがアクセスする と、CloudFront は、ユーザーの HTTP リクエストを、(レイテンシーに関して)最寄りのエッジ ロケーションにルーティングします。 エッジロケーションは Adobe Media Server にビデオストリームを要求します。 Adobe Media Server は、CloudFront エッジロケーションにビデオストリームを小さいファイル単 位で返します。 CloudFront エッジロケーションはビデオストリームを、リクエストの実行元のビューアに供給し ます。また、このライブストリームの以降のリクエストに対する応答を高速化するために、これら の小さいファイルをキャッシュします。 このチュートリアルでは、CloudFront を、Amazon EC2インスタンスで実行される Adobe Media Server と統合する方法の概要について説明します。Adobe Media Server の詳細、およびライブストリーミン グで使用する AWS サービスの詳細については、以下のドキュメントを参照してください。 • このチュートリアルで説明されていない Adobe Media Server オプションの詳細については、「その 他のドキュメント (p. 229)」を参照してください。 • 使用可能な Adobe Media Server の機能については、「アマゾン ウェブ サービスの Adobe Media Server 5」を参照してください。 • Adobe Media Server 5.0 の新機能を確認するには、Adobe ウェブサイトの「Adobe Media Server 5.0.1 の新機能」を参照してください。 • Amazon EC2 インスタンスの管理およびセキュリティ保護を行う方法については、「Amazon EC2 ドキュメント」を参照してください。 • AWS CloudFormation の詳細については、「AWS CloudFormation ドキュメント」を参照してくださ い。 • その他の質問事項については、「よくある質問 (p. 222)」を参照してください。 ライブストリーミングの構成ステップ Abstract アマゾン ウェブ サービス(AWS)でライブストリーミングをセットアップして構成するステップについて説明し ます。 Amazon Web Services (AWS)を使用したライブストリーミングをセットアップするには、Adobe Flash Player のシステム要件を参照してください。次に、以下の各セクションの手順を実行します。 1. 2. Amazon Web Services アカウントを作成する (p. 211) Amazon EC2 キーペアを作成する (p. 211) 3. 4. Adobe Media Server をサブスクライブする (p. 212) ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 213) 5. 6. Adobe Media Server が実行されていることを確認する (p. 214) ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする (p. 215) 7. ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Flash Media Playback を埋め込む (p. 219) ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 221) 8. API Version 2014-01-31 210 Amazon CloudFront 開発者ガイド Amazon Web Services アカウントを作成する Amazon Web Services アカウントを作成する Abstract Adobe Media Server で CloudFront を使用する最初のステップとして、アマゾン ウェブ サービス(AWS)アカウ ントを作成する方法について説明します。 すでに AWS アカウントをお持ちの場合は、この手順をスキップして「Amazon EC2 キーペアを作成す る (p. 211)」に進んでください。まだ AWS アカウントをお持ちでない場合は、次に説明する手順に従っ てアカウントを作成してください。 Note アカウントを作成すると、そのアカウントで AWS のすべてのサービスへのサインアップが自 動的に行われます。料金が発生するのは、お客様が使用したサービスの分のみです。 AWS アカウントを作成するには 1. 2. http://aws.amazon.com にアクセスし、[Create an AWS Account] をクリックします。 画面上の指示に従ってください。 サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入 力することが求められます。 次の手順: Amazon EC2 キーペアを作成する (p. 211) Amazon EC2 キーペアを作成する Abstract Adobe Media Server を構成するリージョンで Amazon EC2 キーペアを作成する方法について説明します。 ライブストリーミングを構成する Amazon EC2 リージョンに Amazon EC2 キーペアがすでにある場合 は、この手順をスキップして「Adobe Media Server をサブスクライブする (p. 212)」に進んでください。 そのリージョンにキーペアがない場合は、以下の手順を実行します。 キーペアとは、パスワードに似たセキュリティ認証情報です。このプロセスの後でライブストリーミン グ用の AWS CloudFormation スタックを作成するときにキーペアを指定します。ライブストリーミン グを構成した後、キーペアを使用して Amazon EC2インスタンスへのセキュアな接続を行います。 Amazon EC2 キーペアを作成するには 1. 2. AWS マネジメントコンソールにサインインして Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/)を開きます。 [Region] リストで、キーペアの作成先のリージョンをクリックします。 3. 4. このプロセスの後で作成する、ライブストリーミング用の AWS CloudFormation スタックが含ま れるリージョンと同じリージョンにキーペアを作成する必要があります。キーペアと、ライブスト リーミング用のスタックは、ストリーミングを実行するユーザーの最寄りのリージョンに作成する ことをお勧めします。 [Navigation] ペインで、[Key Pairs] をクリックします。 [Key Pairs] ペインで、[Create Key Pair] をクリックします。 5. [Create Key Pair] ダイアログボックスにキーペアの名前を入力し、その名前を書き留めます。この 値は、後のライブストリーミングのセットアッププロセスで、AWS CloudFormation ライブスト リーミングスタックを作成するときに入力します。 API Version 2014-01-31 211 Amazon CloudFront 開発者ガイド Adobe Media Server をサブスクライブする 6. 7. [Create] をクリックします。 [Opening <key_pair_name>.pem] ダイアログボックスで、.pem ファイルをコンピューターの安全 な場所に保存します。 Important プライベートキーのダウンロードと保存を行う必要があるのは、この機会のみです。 8. [Close] をクリックし、[Create Key Pair] ダイアログボックスを閉じます。 次の手順: Adobe Media Server をサブスクライブする (p. 212) Adobe Media Server をサブスクライブする Abstract アマゾン ウェブ サービス(AWS)で Adobe Media Server をサブスクライブするステップについて説明します。 以下の手順を実行し、Amazon Web Services 向けの Adobe Media Server を AWS Marketplace 経由で サブスクライブします。 Note このチュートリアルの以前のバージョンでは、AWS Marketplace の代わりに Amazon DevPay を使用して Adobe Media Server をサブスクライブしていました。現在 Adobe Media Server を 実行していて、Amazon DevPay を使用してサブスクライブした場合は、アマゾン ウェブ サー ビス(AWS)の Adobe Media Server のページで、Adobe Media Server の Amazon DevPay サ ブスクリプションをキャンセルします。そうしないと、Amazon DevPay による古いサブスク リプションに対して毎月 5 ドルが引き続き請求され、さらに、AWS Marketplace による新しい サブスクリプションについても毎月 5 ドルが追加で請求されます。 Adobe Media Server は毎月のサブスクリプション料金が 5.00 ドルで、Adobe Media Server インスタ ンスの数は無制限です。毎月のサブスクリプション料金に加えて、時間単位の使用料金およびデータ転 送量に対する料金がかかります。以下の手順の一部として詳細な価格表を確認できます。 Amazon Web Services 向けの Adobe Media Server 5 を注文するには 1. 2. 3. AWS Marketplace ウェブサイトの Adobe Media Server 5 Extended のページに移動します。 製品情報を確認し、[Continue] をクリックします。 [Launch on EC2] ページで、[Launch with EC2 Console] タブをクリックします。 4. [Pricing Details] セクションで、ライブストリーミング用の Amazon EC2 インスタンスを作成する リージョンを選択します。該当する価格情報を確認します。 5. [Accept Terms] をクリックして、毎月のサブスクリプションにサインアップします。 Important このページのボタンを使用して Adobe Media Server を起動しないでください。 次の手順: ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 213) API Version 2014-01-31 212 Amazon CloudFront 開発者ガイド ライブストリーミング用の AWS CloudFormation スタック を作成する ライブストリーミング用の AWS CloudFormation ス タックを作成する Abstract Adobe Media Server に必要な AWS リソースを起動するために AWS CloudFormation スタックを作成する方法に ついて説明します。 以下の手順では、AWS CloudFormation テンプレートを使用し、Amazon EC2 インスタンスおよび CloudFront ディストリビューションを含め、ライブストリーミングで必要とされる AWS リソースを起 動するスタックを作成します。 Important Amazon EC2 インスタンスをデプロイする AWS CloudFormation スタックを作成した時点か ら、Amazon EC2 インスタンスに対する時間単位の料金が発生します。ライブビデオのスト リーミングに Amazon EC2 インスタンスを使用しているかどうかに関係なく、AWS CloudFormation スタックを削除するまで、この料金がかかります。詳細については、AWS Marketplace ウェブサイトの Adobe Media Server 5 Extended のページを参照してください。 ライブイベントが終了したら、ライブストリーミング用に作成したスタックを削除します。こ れにより、ライブストリーミングイベント用に作成した AWS リソースが削除され、このリソー スの AWS 料金が停止します。詳細については、「ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 221)」を参照してください。 AWS CloudFormation の詳細については、「AWS CloudFormation ドキュメント」を参照してくださ い。 ライブストリーミング用の AWS CloudFormation スタックを作成するには 1. [Create Stack] ウィザードを開始するには、以下の Amazon EC2 リージョンの 1 つをクリックし ます。 • • • • 米国東部(バージニア)にスタックを作成する 米国西部(オレゴン)にスタックを作成する 米国西部(北カリフォルニア)にスタックを作成する 欧州(アイルランド)にスタックを作成する • アジアパシフィック(シンガポール)にスタックを作成する • アジアパシフィック(東京)にスタックを作成する • アジアパシフィック(オーストラリア)にスタックを作成する • 南米(サンパウロ)にスタックを作成する ウィザードが開始され、該当する URL が [Provide an S3 URL to template] フィールドに自動的に 表示されます。 Note ユーザーが、独自のドメインでホストされる Flash ベースのプレーヤーを使用してライブ ストリーミングを視聴するようにするには、「独自のドメインでホストされている Flash ベースのストリームの crossdomain.xml を更新するにはどのようにすればよいです か? (p. 224)」を参照してください。 2. AWS Management Console にまだサインインしておらず、サインインを求められた場合は、サイ ンインしてください。 API Version 2014-01-31 213 Amazon CloudFront 開発者ガイド Adobe Media Server が実行されていることを確認する 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. (オプション)[Stack Name] を変更します。スタック名にスペースを含めることはできません。 また、スタック名は AWS アカウント内で一意である必要があります。 [Template] オプションまたは [Provide an S3 URL to template] のアドレスは変更しないでくださ い。 [Next Step] をクリックします。 [Specify Parameters] ページで、[AMSAdminPassword] に AMS 管理コンソールのパスワード(最 小 8 文字)を入力します。 [AMSAdminUserName] にユーザー名を入力します。Amazon EC2 の Adobe Media Server インス タンスを作成した後、この値と先のステップで入力したパスワードを使用して AMS 管理コンソー ルにログインします。 [InstanceType] に、Adobe Media Server インスタンスの料金を決定するインスタンスタイプを入 力します。Amazon EC2 インスタンスタイプの詳細については、「Amazon Elastic Compute Cloud ユーザーガイド」で、使用可能なインスタンスタイプを参照してください。 価格の詳細については、AWS Marketplace ウェブサイトの Adobe Media Server 5 Extended のペー ジを参照してください。 [KeyPair] に、ステップ 1 で選択したリージョンと同じリージョンの Amazon EC2 キーペアの名前 を入力します。キーペアは、サインインに現在使用しているアカウントに関連付けられている必要 があります。「Amazon EC2 キーペアを作成する (p. 211)」の手順を実行したときにキーペアを作 成した場合は、そのキーペアの名前を入力します。 [StreamName] にライブストリームのショートネーム(スペースなし)を入力します。 [Next Step] をクリックします。 (オプション)[Add Tags] ページで、タグを 1 つ以上追加します。 (オプション)SNS 通知の構成、スタックの作成を待機する時間の指定、スタックの作成が失敗 した場合に変更をロールバックするかどうかの選択、スタックポリシーの入力を行うには、 [Advanced] をクリックし、必要に応じて設定を調整します。 [Next Step] をクリックします。 スタックの設定を確認します。設定が適切であることを確認したら、[Create] をクリックします。 AWS CloudFormation によってスタックが作成されます。 スタックの作成には数分かかる場合があります。スタックの作成状況を追跡するには、スタックを 選択し、下部のフレームにある [Events] タブをクリックします。AWS CloudFormation がスタック を作成できない場合、[Events] タブにエラーメッセージが表示されます。 スタックの準備が整うと、上部のフレームにあるスタックのステータスが [CREATE_COMPLETE] に変わります。 スタックが作成されたら、[Outputs] タブをクリックします。このタブには、スタックの作成に関 する出力が表示されます。これらの値は、このプロセスの後で Adobe Flash Media Live Encoder をセットアップするときに使用します。 次の手順: Adobe Media Server が実行されていることを確認する (p. 214) Adobe Media Server が実行されていることを確認す る Abstract Adobe Media Server が Amazon EC2 インスタンスで実行されていることを確認する方法について説明します。 スタックが作成された後、以下の手順を実行し、AWS CloudFormation を使用して準備した Amazon Amazon EC2 インスタンスで Adobe Media Server が実行されていることを確認します。 API Version 2014-01-31 214 Amazon CloudFront 開発者ガイド ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする Adobe Media Server が実行されていることを確認するには 1. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 2. 上部のペインで、「ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 213)」 で作成したスタックを選択します。 下部のペインで、[Outputs] タブをクリックします。 [AMSServer] キーの値をクリックします。これは、「ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 213)」の手順を実行したときに準備した Amazon EC2 イン スタンスへの URL です。 3. 4. 5. Adobe Media Server のページが表示され、コンテンツのストリーミングが開始されます。これは、 Adobe Media Server が実行されていることを示します。 ストリーミングが開始しない場合は、「概要 (p. 209)」に戻り、初めの 4 つのタスクで指定した値 が正しいことを確認します。 値がすべて正しいにもかかわらず、ストリーミングが依然として開始されない場合は、「ストリー ミングが開始しない場合に Amazon EC2 インスタンスのトラブルシューティングを行う方法を教 えてください。 (p. 228)」を参照してください。 次の手順: ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップす る (p. 215) ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする Abstract ライブストリームを公開するように Adobe Flash Media Live Encoder をセットアップする方法について説明しま す。 Adobe Media Server on Amazon Web Services には livepkgr と呼ばれるアプリケーションが含まれま す。これは、発行されたストリームを HTTP Dynamic Streaming (HDS)および HTTP Live Streaming (HLS)を使用して配信するために、そのストリームをパッケージ化するアプリケーションです。 以下の手順は、ライブストリームを Adobe Media Server 5.0 の livepkgr アプリケーションに発行する ように Adobe Flash Media Live Encoder (FMLE)をセットアップする方法を示しています。 Note Flash Media Live Encoder の Windows バージョンでは、AAC オーディオ形式がサポートされ ません。AAC のサポートを追加するために、Adobe は、MainConcept AAC エンコーダを購入 することを推奨しています。 Flash Media Live Encoder のライブストリーミング設定を指定するには 1. ライブストリームのブロードキャストに使用するコンピューターにサインインします。 2. 3. ウェブブラウザを開いて、[Adobe Flash Media Live Encoder] ページに移動します。 Flash Media Live Encoder をダウンロードしてインストールします。 Note Flash Media Live Encoder は無料ですが、これをダウンロードするには、Adobe アカウン ト(無料)が必要です。 API Version 2014-01-31 215 Amazon CloudFront 開発者ガイド ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする 4. テキストエディターで Flash Media Live Encoder の config.xml ファイルを開きます。デフォル トのインストール場所はオペレーティングシステムによって異なります。 • 32 ビット Windows: C:\Program Files\Adobe\Flash Media Live Encoder 3.2 • 64 ビット Windows: C:\Program Files (x86)\Adobe\Flash Media Live Encoder 3.2\Conf • Macintosh: Applications:Adobe:Flash Media Live Encoder 3.2 5. config.xml で、以下の <enable> エレメントの値を true に設定します。 <flashmedialiveencoder_config> ... <mbrconfig> ... <streamsynchronization> ... <!-- "true" to enable this feature, "false" to disable. --> <enable>true</enable> 6. 7. 8. 9. ファイルを保存します。 Flash Media Live Encoder を実行します。 [Encoding Options] タブの [Preset] で、[High Bandwidth (800 Kbps) – H.264] を選択します。 [Encoding Options] タブの [Audio] チェックボックスの下にある [Format] で、[AAC] を選択します。 10. [Encoding Options] タブの [Video] セクションで、[Format] リストの右にあるレンチアイコンをク リックし、[Advanced Encoder Settings] ダイアログボックスを開きます。 API Version 2014-01-31 216 Amazon CloudFront 開発者ガイド ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする 11. [Advanced Encoder Settings] ダイアログボックスの [Keyframe Frequency] で、[4 Seconds] を選択 します。 applications/livepkgr/events/_definst_/liveevent/Event.xml ファイルに指定され た <FragmentDuration> エレメントの値の倍数を使用することもできます。<FragmentDuration> のデフォルト値は 4000 ミリ秒(4 秒)です。 12. [OK] をクリックし、設定を保存して、メインページに戻ります。[Preset] リストのオプションが [Custom] に変わります。 13. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 14. ライブストリーミング用に作成したスタックのチェックボックスをチェックします。 15. 下部のペインで、[Outputs] タブをクリックします。 API Version 2014-01-31 217 Amazon CloudFront 開発者ガイド ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする 16. AMSURL キーの値をコピーします(例: rtmp://ec2-00-11-22-33.us-west-1.compute.amazonaws.com/livepkgr)。 17. Flash Media Live Encoder の [Stream to Flash Media Server] セクションの [FMS URL] 設定に、 AWS CloudFormation コンソールでコピーした AMSURL キーの値を貼り付けます。 18. AWS CloudFormation コンソールで、Stream キーの値をコピーします(例: livestream?adbe-live-event=liveevent)。 19. Flash Media Live Encoder の [Stream] 設定に、AWS CloudFormation コンソールでコピーした Stream キーの値を貼り付けます。 Note ライブストリームの停止と再開を行う必要があることが予想される場合、代わりに次の値 を [Stream] フィールドに入力します。 livestream?adbe-live-event=liveevent&adbe-record-mode=record ライブストリームをレコードモード(adbe-record-mode=record)で発行した場合に ライブストリームの停止と再開を行うと、Adobe Media Server は、再開時に、以前のスト リームにストリームを付加するのではなく、以前のストリームを削除して新しいストリー ムを開始します。ただし、レコードモードを使用せずにライブストリームを停止した場 合、ストリームを再開できるようにするには、ライブストリーミングを再構成する必要が あります。 20. [Save to File] のチェックを外します。 21. [Connect] をクリックし、Adobe Media Server インスタンスに接続します。 22. [Start] をクリックし、ライブストリームのエンコードを開始して、ライブストリームを Adobe Media Server インスタンスの livepkgr アプリケーションに発行します。 API Version 2014-01-31 218 Amazon CloudFront 開発者ガイド ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Flash Media Playback を埋め込む 次の手順: ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Flash Media Playback を埋め込む (p. 219) ウェブアプリケーションに Amazon CloudFront ライ ブ HTTP ストリームの Flash Media Playback を埋め 込む Abstract CloudFront でライブ HTTP ストリームの Flash Media Playback のコードを埋め込む方法について説明します。 該当の手順を実行し、ライブストリーム用のウェブページに含める埋め込みコードを取得します。 • CloudFront を使用して HTTP ストリーム用の Flash Media Playback を埋め込むには (p. 219) • CloudFront を使用して Apple デバイスで HLS ストリームを再生するには (p. 221) CloudFront を使用して HTTP ストリーム用の Flash Media Playback を埋め込むには 1. 2. 3. 4. 5. 6. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 ライブストリーミング用のスタックを選択します。 下部のペインで、[Outputs] タブをクリックします。 LiveHDSManifest キーの値をコピーします(例: http://d123.cloudfront.net/hds-live/livepkgr/_definst_/liveevent/livestream.f4m)。 FlashMediaPlayback キーの値をクリックし、[Flash Media Playback Setup] ウェブページを開きま す。 [Flash Media Playback Setup] ページの [Video Source] に、ステップ 4 で AWS Management Console からコピーした値を貼り付けます。 Note Flash Media Playback で HTTP Dynamic Streaming をサポートするには、Flash Player 10.1 が必要です。 API Version 2014-01-31 219 Amazon CloudFront 開発者ガイド ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Flash Media Playback を埋め込む 7. 8. 9. [Are you using HTTP Streaming or Flash Access 2.0] で、[Yes] をクリックします。 [Poster frame file location] の値を削除します(ある場合)。 [Preview] をクリックし、[Preview Embed Code] の値を更新します。 10. ビデオを再生し、現在の設定が適切であることを確認します。 11. 必要に応じて、設定を変更します。オプションを変更したら、[Preview] をクリックして、埋め込 みコードを更新します。 API Version 2014-01-31 220 Amazon CloudFront 開発者ガイド ライブストリーミング用の AWS CloudFormation スタック を削除する 12. ウェブページに Flash Media Playback を埋め込むには、[Preview Embed Code] ボックスの内容を コピーして、ウェブサイトの HTML コードに貼り付けます。 Note ユーザーが、独自のドメインでホストされる Flash ベースのプレーヤーを使用してライブ ストリーミングを視聴するようにするには、「独自のドメインでホストされている Flash ベースのストリームの crossdomain.xml を更新するにはどのようにすればよいです か? (p. 224)」を参照してください。 CloudFront を使用して Apple デバイスで HLS ストリームを再生するには 1. 2. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 ライブストリーミング用のスタックを選択します。 3. 4. 下部のペインで、[Outputs] タブをクリックします。 LiveHLSManifest キーの値をコピーします(例: http://d123.cloudfront.net/hls-live/livepkgr/_definst_/liveevent/livestream.m3u8)。 5. iOS デバイスを使用してこの URL にアクセスし、HLS ストリーミングが適切に動作することを確 認します。 どのような場合に、この URL を使用して各種 iOS デバイス、QuickTime、および Safari にサービスを 提供するかについては、iOS 開発者ライブラリの「HTTP ライブストリーミング概要」を参照してくだ さい。 HTTP 経由でライブストリームを発行し、再生する方法については、「Adobe Media Server 5.0.1 開発 者ガイド」の「HTTP 経由でライブストリームの発行および再生を行うための URL」を参照してくだ さい。 次の手順: ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 221) ライブストリーミング用の AWS CloudFormation ス タックを削除する Abstract 追加料金を回避できるように、Adobe Media Server 用に作成した AWS CloudFormation スタックを削除する方法 について説明します。 ライブイベントが終了したら、ライブストリーミング用に作成したスタックを削除します。これによ り、ライブストリーミングイベント用に作成した AWS リソースが削除され、このリソースの AWS 料 金が停止します。 ライブストリーミング用の AWS CloudFormation スタックを削除するには 1. 2. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 スタックを選択し、[Delete Stack] をクリックします。 3. 4. [Yes, Delete] をクリックして確定します。 スタックの削除状況を追跡するには、スタックを選択し、下部のフレームにある [Events] タブを クリックします。 5. ライブストリーミングをすぐに再使用する予定がない場合は、Adobe Media Server on Amazon EC2 のサブスクリプションをキャンセルすることができます。サブスクリプションをキャンセル API Version 2014-01-31 221 Amazon CloudFront 開発者ガイド よくある質問 するには、「アマゾン ウェブ サービスの Adobe Media Server 5」に移動し、[Subscribe Now] を クリックして、画面の指示に従います。 よくある質問 Abstract CloudFront での Adobe Media Server の使用に関して、よくある質問で取り上げられる一般的な問題について説明 します。 • Adobe Media Server 5.0 が実行されている Amazon EC2 インスタンスに Secure Shell (SSH)を使 用して接続する方法を教えてください。 (p. 222) • 独自のドメインでホストされている Flash ベースのストリームの crossdomain.xml を更新するにはど のようにすればよいですか? (p. 224) • CloudFront と Adobe Media Server 5.0 を使用するライブ HTTP ストリーミングの料金を教えてくだ さい。 (p. 225) • Amazon EC2 インスタンスまたは CloudFront ディストリビューションの CNAME エイリアスをどの ように作成できますか? (p. 225) • Adobe Media Server Administration Console には、どのように接続することができますか? (p. 225) • ライブイベントを Apple デバイスと Flash Player 対応デバイスの両方にストリーミングできます か? (p. 227) • Adobe Media Server 5.0 では、HTML5 がサポートされますか? (p. 227) • Adobe Media Server のログ作成機能はありますか? (p. 227) • Adobe Media Server で認証を有効にする方法を教えてください。 (p. 227) • HDS および HLS 関連のファイルに対するデフォルトのキャッシュ制御設定は何ですか? (p. 227) • HLS と HDS の違いは何ですか? (p. 228) • ストリーミングが開始しない場合に Amazon EC2 インスタンスのトラブルシューティングを行う方 法を教えてください。 (p. 228) • Adobe Flash Media Server 4.5 を使用するライブストリーミングに関するドキュメントはどこにあり ますか? (p. 228) Adobe Media Server 5.0 が実行されている Amazon EC2 インス タンスに Secure Shell (SSH)を使用して接続する方法を教え てください。 Note デフォルトでは、セキュリティの理由で、Amazon EC2 インスタンスの SSH ポート(ポート 22)は無効になっています。次の手順は、SSH ポートを有効にする方法と、SSH を使用して Amazon EC2 インスタンスに接続する方法を示しています。 Adobe Media Server 5.0 が実行されている Amazon EC2 インスタンスのポート 22 へのアクセ スを有効にするには 1. Amazon EC2 インスタンスに関連付けられている Amazon EC2 セキュリティグループの名前を取 得します。 a. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 API Version 2014-01-31 222 Amazon CloudFront 開発者ガイド よくある質問 b. c. d. [Region] リストで、作成した Amazon EC2 インスタンスが含まれているリージョンを選択し ます。 対象の AWS CloudFormation スタックの行をクリックします。 下部のペインで、[Resources] タブをクリックします。 e. [Stack Resources] テーブルの左の列で、値が AMSOriginServerSecurityGroup になって いる行を見つけます。 f. その行の [Physical ID] 列の値を書き留めます。 2. Amazon EC コンソール(https://console.aws.amazon.com/ec2/)を開きます。 3. 4. [Navigation] ペインの [Security Groups] をクリックします。 [Security Groups] ページで、ステップ 1f で取得した物理 ID と [Name] 列が一致している行を選択 します。 5. 6. 7. 下部のペインで、[Inbound] タブをクリックします。 [Create a new rule] で、[SSH] を選択します。 [Add Rule] をクリックします。 8. [Apply Rule Changes] をクリックします。 SSH を使用して、Adobe Media Server 5.0 が実行されている Amazon EC2 インスタンスに接 続するには 1. 2. 3. Amazon EC コンソール(https://console.aws.amazon.com/ec2/)を開きます。 [Navigation] ペインの [Instances] をクリックします。 適切なインスタンスを右クリックし、[Connect] をクリックします。SSH を使用して Amazon EC2 インスタンスに接続するための手順が表示されます。 API Version 2014-01-31 223 Amazon CloudFront 開発者ガイド よくある質問 独自のドメインでホストされている Flash ベースのストリーム の crossdomain.xml を更新するにはどのようにすればよいです か? AWS CloudFormation スタックを作成する前または後で、crossdomain.xml 内の許可を変更すること ができます。 • AWS CloudFormation スタックを作成していない場合は、 https://s3.amazonaws.com/cloudfront-live/live-http-streaming-ams-5-0-1-using-cloudfront.txt で、Amazon CloudFront と Adobe Media Server 5.0 を使用するライブストリーミング用の AWS CloudFormation テンプレートをダウンロードします。テンプレートで、UserData セクションを編集します。このセ クションには crossdomain.xml 設定が含まれます。更新したテンプレートはローカルコンピュー ターに保存します。次に、更新したテンプレートを使用して、AWS CloudFormation スタックを作成 します。 • AWS CloudFormation スタックをすでに作成している場合は、Amazon EC2 インスタンスで実行され ている Adobe Media Server にログインし、クロスドメインポリシーファイル (/mnt/webroot/crossdomain.xml)内の許可を変更します。 API Version 2014-01-31 224 Amazon CloudFront 開発者ガイド よくある質問 crossdomain.xml ファイルの編集方法については、「Adobe クロスドメインポリシーファイルの仕 様」を参照してください。 CloudFront と Adobe Media Server 5.0 を使用するライブ HTTP ストリーミングの料金を教えてください。 Adobe Media Server on Amazon EC2 の毎月のサブスクリプション料金 5.00 USD のほかに、使用した AWS リソースに対する料金のみをお支払いいただきます。 • Amazon EC2 で実行される Adobe Media Server の料金に関する情報については、「Amazon Web Services の Adobe Media Server 5 / 料金表」を参照してください。 • CloudFront の料金に関する情報については、「Amazon CloudFront 料金表」を参照してください。 AWS CloudFormation の使用料はありません。 Amazon EC2 インスタンスまたは CloudFront ディストリビュー ションの CNAME エイリアスをどのように作成できますか? Adobe Media Server 5.0 を実行する Amazon EC2 インスタンスには内部および外部の DNS 名が付属 します。Amazon EC2 では、この DNS 設定を変更できません。Adobe Media Server が実行されてい る Amazon EC2 インスタンスに既存のドメイン名をマップする場合は、Amazon Route 53 などの DNS サービスプロバイダーを使用します。独自のドメイン名を使用する場合、インスタンスの IP アドレス を指す A レコードを使用するのではなく、CNAME を使用してインスタンスの外部 DNS 名にマップす ることをお勧めします。 独自のドメイン名を CloudFront ディストリビューションにマップするには、「代替ドメイン名 (CNAME)を使用する (p. 33)」を参照してください。 Adobe Media Server Administration Console には、どのように 接続することができますか? Adobe Media Server Administration Console に接続するには 1. 2. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 ライブストリーミング用のスタックを選択します。 3. 4. 5. 下部のペインで、[Outputs] タブをクリックします。 AMSAdminConsoleServerAddress キーの値をコピーします。 AMSServerAdminConsole キーの値をクリックします(例: http://ec2-00-11-22-33.us-west-1.compute.amazonaws.com/ams_adminConsole.htm)。 6. Adobe Media Server Administration Console のログインページの [Server Address] に、ステップ 4 でコピーした AMSAdminConsoleServerAddress キーを貼り付けます。 [Username] と [Password] フィールドに、「ライブストリーミング用の AWS CloudFormation ス タックを作成する (p. 213)」で指定した値を入力します。 [Login] をクリックします。 7. 8. Adobe Media Server 5.0 Administration Console の使用方法については、Adobe Media Server に関する ドキュメントを参照してください。 API Version 2014-01-31 225 Amazon CloudFront 開発者ガイド よくある質問 Note Adobe は、ポート 1111 へのすべての外部アクセスをブロックし、管理コンソールへのアクセ スをファイアウォール内のクライアントのみに制限することを推奨しています。代替方法とし て、ドメインベースの制限を使用して、サーバーへのアクセスを制限することもできます。詳 細については、Adobe ドキュメントの「Adobe Media Administration Server へのアクセス制 限」を参照してください。 Adobe Media Server のポート 1111 へのアクセスを無効にするか、制限するには 1. Amazon EC2 インスタンスに関連付けられている Amazon EC2 セキュリティグループの名前を取 得します。 a. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 b. [Region] で、作成した Amazon EC2 インスタンスが含まれているリージョンの名前をクリッ クします。 対象の AWS CloudFormation スタックの行を選択します。 下部のペインで、[Resources] タブをクリックします。 [Stack Resources] テーブルの AMSOriginServerSecurityGroup 行の [Physical ID] 列の値 を書き留めます。 c. d. e. 2. 3. 4. 5. 6. Amazon EC2 コンソールを表示します。 [Navigation] ペインで、[Security Groups] をクリックします。 [Security Groups] ペインで、Amazon EC2 インスタンス用に作成されているセキュリティグルー プを選択します。この名前は、ステップ 1e で書き留めた値です。 下部のペインで、[Inbound] タブをクリックします。 Adobe Media Server Administration Console へのアクセスを完全に無効にするには、以下の手順を 実行します。 a. b. c. 7. [TCP Port (Service)] 列で [1111] を見つけます。 その行の [Action] 列で、[Delete] をクリックします。 [Apply Rule Changes] をクリックします。 選択した IP アドレスへのアクセスを制限するには、以下の手順を実行します。 a. b. c. [TCP Port (Service)] 列で [1111] を見つけて、[Delete] をクリックします。 [Create a new rule] のデフォルト値である [Custom TCP rule] を受け入れます。 [Port range] に「1111」と入力します。 d. e. [Source] に、IP アドレスまたは範囲を入力するか、別のセキュリティグループの名前を入力 します。詳細については、[Help] をクリックしてください。 [Add Rule] をクリックします。 f. g. 追加のルールを作成するには、ステップ b ~ e を繰り返します。 [Apply Rule Changes] をクリックします。 API Version 2014-01-31 226 Amazon CloudFront 開発者ガイド よくある質問 ライブイベントを Apple デバイスと Flash Player 対応デバイス の両方にストリーミングできますか? はい。Adobe Media Server 5.0 では、Flash ベースのデバイスと iOS デバイスの両方にライブストリー ムを同時に配信できます。HTML5 プレーヤーまたは Objective C("ネイティブ")アプリケーションを 使用すれば、Safari ブラウザへのストリーミングが可能です。Adobe AIR for iOS を使用して、iOS で のリッチなビデオ操作を開発することもできます。 Adobe Media Server 5.0 では、HTML5 がサポートされますか? はい。Adobe Media Server では、HLS ストリーミング形式を使用して、Apple iOS デバイスの HTML5 にコンテンツを配信できます。HTML5 をサポートする他のブラウザでは、Adobe Media Server を使用 してプログレッシブ配信ができます。 Adobe Media Server のログ作成機能はありますか? はい。サーバーとストリームイベントに対する W3C 対応の ASCII ログ、リアルタイムの使用状況モニ ター、および API 一式が備えられており、追跡する必要があるすべてのツールが確保され、コンテン ツの使用状況に関するレポートを生成できます。Adobe Media Server 5.0 のログファイルを監視および 管理する方法については、Adobe ドキュメントの「Monitoring and Managing Log Files」を参照してく ださい。 Adobe Media Server で認証を有効にする方法を教えてくださ い。 Adobe Media Server Amazon EC2 インスタンス用に AWS CloudFormation が作成したセキュリティグ ループ内で、(TCP および UDP 用の) RTMP ポート 1935 へのアクセスを制限できます。ポート 1935 用の新しい TCP および UDP ルールを作成した後に、ポート 1935 用の既存の TCP および UDP ルー ルを削除するだけで、すべての IP アドレスへのアクセスが可能になります。 セキュリティグループにルールを追加する方法の簡単な概要については、「Adobe Media Server Administration Console には、どのように接続することができますか? (p. 225)」を参照してください。 Amazon EC2 セキュリティグループの詳細については、「Amazon Elastic Compute Cloud ユーザーガ イド」の「Amazon EC2 セキュリティグループ」を参照してください。 HDS および HLS 関連のファイルに対するデフォルトのキャッ シュ制御設定は何ですか? HDS および HLS 関連のファイルに対するデフォルトのキャッシュ制御ヘッダーは、以下の値に設定さ れます。 ファイルタイプ Cache-Control 設定(秒) .bootstrap 2 HDS フラグメント 60 .f4m 2 .m3u8 2 .ts 60 API Version 2014-01-31 227 Amazon CloudFront 開発者ガイド よくある質問 CloudFront エッジキャッシュサーバーは、これらのキャッシュ制御ヘッダーを優先します。サーバー で HttpStreamingF4MMaxAge、HttpStreamingBootstrapMaxAge、および HttpStreamingFragMaxAge パラメータの値を変更することで、デフォルト設定を変更することがで きます。詳細については、Adobe ドキュメントの「HTTP ストリーミング構成ファイルリファレンス」 を参照してください。 HLS と HDS の違いは何ですか? HLS は、Apple デバイス用に最適化されたファイルコンテナ形式です。このコンテナは、H.264/AAC エンコードされたビデオおよびオーディオをサポートし、MPEG-2 トランスポートストリーム(TS) に基づきます。iOS (AIR for IOS を含む)に配信するすべてのビデオでこの形式を使用する必要があ ります。 HDS は、Flash Player で実行されるアプリケーション用に最適化されたファイルコンテナ形式です。 このコンテナも、H.264/AAC エンコードされたビデオおよびオーディオをサポートし、MPEG-4 TS に 基づきます。HDS は AIR for iOS ではサポートされません。 ストリーミングが開始しない場合に Amazon EC2 インスタンス のトラブルシューティングを行う方法を教えてください。 「Adobe Media Server が実行されていることを確認するには (p. 215)」の手順を実行してもストリーミ ングが開始されない場合は、以下の手順を実行して、Amazon EC2 インスタンスが適切に機能してい ることを確認します。 Adobe Media Server 5.0 が実行される Amazon EC2 インスタンスのトラブルシューティングを 行うには 1. 2. 3. 4. 5. 6. 7. 8. 9. AWS CloudFormation コンソールの上部のペインで、スタックを選択します。 下部のペインで、[Resources] タブをクリックします。 [AMSOriginServer] 行の [Physical ID] 列の値を書き留めます。 Amazon EC2 コンソールに移動します。 [Region] リストで、作成した AWS CloudFormation スタックが含まれているリージョンを選択し ます。 [Navigation] ペインの [Instances] をクリックします。 [Instance] 列で、ステップ c で書き留めた値を見つけます。 該当する行を選択します。 下部のペインで、[Status Checks] タブの情報を確認し、推奨アクションを実行します。 10. 「Adobe Media Server が実行されていることを確認するには (p. 215)」の手順に戻り、ステップ 2 ~ 5 を繰り返します。 Adobe Flash Media Server 4.5 を使用するライブストリーミン グに関するドキュメントはどこにありますか? Adobe Flash Media Server 4.5 を使用するライブストリーミングに関するドキュメントについては、 CloudFront API バージョン 2012-07-01 の「Amazon CloudFront 開発者ガイド」で、「CloudFront Tutorials」の「Live Streaming Using CloudFront and Adobe Flash Media Server 4.5」を参照してくだ さい。 API Version 2014-01-31 228 Amazon CloudFront 開発者ガイド その他のドキュメント その他のドキュメント Abstract Adobe Media Server と CloudFront を使用して作業するときに役に立つ追加のリソースを列挙します。 Adobe ドキュメント • Adobe Media Server on Amazon Web Services を使用する • Adobe クロスドメインポリシーファイルの仕様 • Flash Media Live Encoder • Flash Media Live Encoder に関するよくある質問 • Adobe Media Server プラットフォームにおける HTTP Dynamic Streaming のビデオエンコードおよ びトランスコードに関する推奨事項 • Adobe Media Server 5.0 の技術概要 Amazon Web Services ドキュメント • Amazon Elastic Compute Cloud ドキュメント • AWS CloudFormation ドキュメント API Version 2014-01-31 229 Amazon CloudFront 開発者ガイド Amazon CloudFront と IIS Media Services 4.1 を使用した ライブスムーズストリーミング Amazon CloudFront と IIS Media Services 4.1 を使 用したライブスムーズストリーミング Abstract Amazon CloudFront と IIS Media Services 4.1 でライブスムーズストリーミングを使用する方法について説明しま す。 Topics • アマゾン ウェブ サービスを使用したライブスムーズストリーミングの概要 (p. 230) • アマゾン ウェブ サービスアカウントの作成 (p. 231) • Amazon EC2 キーペアを作成する (p. 232) • ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する (p. 233) • • • • • • • Amazon EC2 Windows Server インスタンスの実行確認 (p. 236) Windows パスワードの取得 (p. 237) ライブストリームの暗号化 (p. 238) ライブスムーズストリームの表示 (p. 242) AWS CloudFormation のライブスムーズストリーミングスタックの削除 (p. 243) よくある質問 (p. 243) その他のドキュメント (p. 245) アマゾン ウェブ サービスを使用したライブスムーズ ストリーミングの概要 Abstract アマゾン ウェブ サービスで Microsoft ライブスムーズストリーミングを使用する際の基本情報について説明しま す。 スムーズストリーミングは、アダプティブストリーミングテクノロジの Microsoft 実装であり、標準の HTTP を使用し、ウェブに基づいてメディアコンテンツ配信をする形式のストリーミングです。IIS Media Services の拡張であるスムーズストリーミングを使用すると、Microsoft Silverlight など、スムー ズストリーミングクライアントにライブイベントのアダプティブストリーミングができます。CloudFront を使用するようにスムーズストリーミングを構成すると、CloudFront のグローバル HTTP ネットワー クのスケールメリットを得ることができるほか、ビューアがネットワークのエッジノードにレイテン シーベースでルーティングされることでメリットを得ることができます。CloudFront の詳細について は、CloudFront 製品ページを参照してください。 スムーズストリーミングコンテンツは、CloudFront エッジサーバーでのキャッシュが可能な一連の MPEG-4 (MP4)フラグメントとしてクライアントに配信されます。スムーズストリーミング対応の クライアントは、特別なヒューリスティクスを使用して現在のネットワークおよびローカル PC の条件 を動的に監視し、クライアントが受信するスムーズストリーミングプレゼンテーションのビデオ品質を シームレスに切り替えます。クライアントがフラグメントを再生している間に、ネットワークの条件が 変化(帯域幅が減少するなど)したり、ビデオ処理が、クライアントで実行されている他のアプリケー ションの影響を受けたりする場合があります。クライアントは、変化する条件に応じて異なるビット レートでエンコードされたストリームから次のフラグメントが送信されるように直ちに要求できます。 これにより、クライアントはメディアを途切れさせたり、バッファ処理したり、フリーズしたりするこ となく再生できます。その結果、ユーザーはストリームの中断がない最高の再生品質を体験できます。 ライブブロードキャストをスムーズストリーミング形式にエンコードするには、Microsoft Expression Encoder 4 Pro を使用します。エンコードされたスムーズストリームを供給するには、Windows IIS API Version 2014-01-31 230 Amazon CloudFront 開発者ガイド アマゾン ウェブ サービスアカウントの作成 Media Services を実行する Amazon EC2 Amazon マシンイメージ(AMI)を使用できます。CloudFront はライブビデオコンテンツとライブオーディオコンテンツをキャッシュし、ビューアは CloudFront エッ ジサーバーに接続し、Microsoft Silverlight など、スムーズストリーミング対応のクライアントを使用し てストリームを再生します。このチュートリアルでは、セットアッププロセス全体を手順を追って説明 します。 Note Windows IIS Media Services を実行する Amazon EC2 Amazon マシンイメージ(AMI)に Microsoft Expression Encoder 4 Pro Service Pack 2 は含まれません。また、これは無料のダウ ンロード製品ではありません。機能および料金表については、Microsoft Store ウェブサイトで Expression Encoder 4 Pro のページを参照してください。サードパーティのエンコードツール を使用して、ライブスムーズストリーミング用のビデオをエンコードすることもできます。エ ンコードソフトウェアを提供する Microsoft パートナーのリストについては、Microsoft ウェブ サイトで、IIS Media Services のページの [Partners] タブを参照してください。 Note このチュートリアルでは、Amazon EC2インスタンスで実行される Microsoft ライブスムーズ ストリーミングと CloudFront を統合する方法の概要について説明します。Amazon EC2 イン スタンスの管理およびセキュリティ保護を行う方法については、「Amazon EC2 ドキュメン ト」を参照してください。このチュートリアルで説明されていない Microsoft ライブスムーズ ストリーミングオプションの詳細については、「Microsoft のドキュメント (p. 245)」を参照し てください。 アマゾン ウェブ サービス(AWS)を使用したライブスムーズストリーミングをセットアップするに は、「スムーズストリーミングのデプロイガイド」で IIS スムーズストリーミングのシステム要件を参 照してください。次に、以下の各セクションの手順を実行します。 1. 2. 3. 4. 5. 6. 7. 8. アマゾン ウェブ サービスアカウントの作成 (p. 231) Amazon EC2 キーペアを作成する (p. 232) ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する (p. 233) Amazon EC2 Windows Server インスタンスの実行確認 (p. 236) Windows パスワードの取得 (p. 237) ライブストリームの暗号化 (p. 238) ライブスムーズストリームの表示 (p. 242) AWS CloudFormation のライブスムーズストリーミングスタックの削除 (p. 243) よくある質問については、「よくある質問 (p. 243)」を参照してください。 他の Microsoft ドキュメントおよび AWS ドキュメントへのリンクについては、「その他のドキュメン ト (p. 245)」を参照してください。 アマゾン ウェブ サービスアカウントの作成 Abstract ライブスムーズストリーミングで CloudFront を使用する最初のステップとして、アマゾン ウェブ サービス(AWS) アカウントを作成します。 すでに AWS アカウントをお持ちの場合は、この手順をスキップして「Amazon EC2 キーペアを作成す る (p. 232)」に進んでください。まだ AWS アカウントをお持ちでない場合は、次に説明する手順に従っ てアカウントを作成してください。 API Version 2014-01-31 231 Amazon CloudFront 開発者ガイド Amazon EC2 キーペアを作成する Note アカウントを作成すると、そのアカウントで AWS のすべてのサービスへのサインアップが自 動的に行われます。料金が発生するのは、お客様が使用したサービスの分のみです。 AWS アカウントを作成するには 1. http://aws.amazon.com にアクセスし、[Create an AWS Account] をクリックします。 2. 画面上の指示に従ってください。 サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入 力することが求められます。 次の手順: Amazon EC2 キーペアを作成する (p. 232) Amazon EC2 キーペアを作成する Abstract ライブスムーズストリーミングを構成するリージョンに Amazon EC2 キーペアを作成します。 ライブスムーズストリーミングを構成する Amazon EC2 リージョンに Amazon EC2 キーペアがすでに ある場合は、この手順をスキップして「ライブスムーズストリーミング用の AWS CloudFormation ス タックを作成する (p. 233)」に進んでください。そのリージョンにキーペアがない場合は、以下の手順 を実行します。 キーペアとは、パスワードに似たセキュリティ認証情報です。このプロセスの後でライブストリーミン グ用の AWS CloudFormation スタックを作成するときにキーペアを指定します。ライブストリーミン グを構成した後、キーペアを使用して Amazon EC2 Windows Server インスタンスのパスワードを取り 込みます。 Amazon EC2 キーペアを作成するには 1. 2. AWS マネジメントコンソールにサインインして Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/)を開きます。 [Region] リストで、キーペアの作成先のリージョンをクリックします。 3. 4. このプロセスの後でライブストリーミング用の AWS CloudFormation スタックを作成するリージョ ンと同じリージョンにキーペアを作成する必要があります。キーペアと、ライブストリーミング用 のスタックは、ライブイベントの場所の最寄りのリージョンに作成することをお勧めします。 [Navigation] ペインで、[Key Pairs] をクリックします。 [Key Pairs] ペインで、[Create Key Pair] をクリックします。 5. [Create Key Pair] ダイアログボックスにキーペアの名前を入力し、その名前を書き留めます。この 値は、後のライブストリーミングのセットアッププロセスで、AWS CloudFormation ライブスト リーミングスタックを作成するときに入力します。 6. 7. [Create] をクリックすると、[Opening <key_pair_name>.pem] ダイアログボックスが表示されま す。 .pem ファイルをコンピューターの安全な場所に保存します。 8. [Close] をクリックし、[Create Key Pair] ダイアログボックスを閉じます。 次の手順: ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する (p. 233) API Version 2014-01-31 232 Amazon CloudFront 開発者ガイド ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する Abstract ライブスムーズストリーミングに必要な AWS リソースを起動するために AWS CloudFormation スタックを作成し ます。 以下の手順では、AWS CloudFormation テンプレートを使用し、Amazon EC2 インスタンスを含め、ラ イブスムーズストリーミングで必要とされる AWS リソースを起動するスタックを作成します。 Important Amazon EC2 インスタンスをデプロイする AWS CloudFormation スタックを作成した時点か ら、Amazon EC2 インスタンスに対する時間単位の料金が発生します。ライブビデオのスト リーミングに Amazon EC2 インスタンスを使用しているかどうかに関係なく、AWS CloudFormation スタックを削除するまで、この料金がかかります。詳細については、「Amazon Elastic Compute Cloud (Amazon EC2)」の詳細ページの「料金表」を参照してください。ラ イブイベントが終了したら、ライブスムーズストリーミング用に作成したスタックを削除しま す。これにより、ライブストリーミングイベント用に作成した AWS リソースが削除され、こ のリソースの AWS 料金が停止します。詳細については、「AWS CloudFormation のライブス ムーズストリーミングスタックの削除 (p. 243)」を参照してください。 ライブストリーミング用の AWS CloudFormation スタックを作成するには 1. 以下のリストから、スタックの作成先の Amazon EC2 リージョンをクリックします。[Create Stack] ウィザードが開始され、リージョン固有の値が [Provide a Template URL] フィールドに自動的に入 力されます。 米国東部(バージニア) 米国西部(オレゴン) 米国西部(北カリフォルニア) 欧州(アイルランド) アジアパシフィック(シンガポール) アジアパシフィック(東京) 2. 3. 南米(サンパウロ) AWS Management Console にまだサインインしておらず、サインインを求められた場合は、サイ ンインしてください。 オプション: [Create Stack] ウィザードで、[Stack Name] フィールドの値を変更します。スタック 名にスペースを含めることはできません。また、スタック名は AWS アカウント内で一意である必 要があります。 API Version 2014-01-31 233 Amazon CloudFront 開発者ガイド ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する 4. 5. 6. [Stack Template Source] オプションまたは [Provide a Template URL] の値を変更しないでくださ い。 オプション: SNS 通知の構成、スタックの作成を待機する時間の指定、およびスタックの作成が失 敗した場合に変更をロールバックするかどうかの選択を行うには、[Show Advanced Options] チェッ クボックスをオンにして、該当の値を指定します。 [Continue] をクリックします。 API Version 2014-01-31 234 Amazon CloudFront 開発者ガイド ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する 7. [Specify Parameters] ページの [KeyPair] フィールドに、ライブストリーミング用のスタックを作 成するリージョン内の Amazon EC2 キーペアの名前を入力します。キーペアは、ログオンに現在 使用しているアカウントに関連付けられている必要があります。「Amazon EC2 キーペアを作成 する (p. 232)」の手順を実行したときにキーペアを作成した場合は、そのキーペアの名前を入力し ます。 8. [InstanceType] フィールドにインスタンスタイプを入力し、[Continue] をクリックします。デフォ ルト値は m1.xlarge です。 9. インスタンスタイプによって、Windows Server を実行する Amazon EC2 インスタンスの料金表が 決まります。料金表に関する情報を含め、Windows 用の Amazon EC2 インスタンスタイプの詳細 については、「Microsoft Windows Server および SQL Server を実行する Amazon EC2」を参照し てください。& スタックの設定を確認します。設定が適切であることを確認したら、[Create Stack] をクリックし ます。 スタックが作成されるまで数分かかる場合があります。スタックの作成状況を追跡するには、ス タックを選択し、下部のフレームにある [Events] タブをクリックします。AWS CloudFormation が スタックを作成できない場合、[Events] タブにエラーメッセージが表示されます。 スタックの準備が整うと、上部のフレームにあるスタックのステータスが [CREATE_COMPLETE] に変わります。 スタックが作成されたら、[Outputs] タブをクリックします。このタブには、スタックの作成に関 する出力が表示されます。これらの値は、このプロセスの後で Microsoft Expression Encoder を セットアップするときに使用します。 API Version 2014-01-31 235 Amazon CloudFront 開発者ガイド Amazon EC2 Windows Server インスタンスの実行確認 次の手順: Amazon EC2 Windows Server インスタンスの実行確認 (p. 236) Amazon EC2 Windows Server インスタンスの実行確 認 Abstract Amazon EC2 の Windows Server インスタンスが実行されていて、ライブスムーズストリーミングで使用できるこ とを確認します。 スタックが作成された後、以下の手順を実行し、AWS CloudFormation を使用して準備した Amazon EC2 インスタンスで Windows IIS Media Services ウェブサービスが実行されていることを確認します。 Windows Server が実行されていることを確認するには 1. 2. 3. 4. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 上部のペインで、「ライブスムーズストリーミング用の AWS CloudFormation スタックを作成す る (p. 233)」で作成したスタックを選択します。 下部のペインで、[Outputs] タブをクリックします。 SmoothStreamingServer キーの値をクリックします(例: http://ec2-00-11-22-33.us-west-1.compute.amazonaws.com)。 Windows IIS Server バナースクリーンが表示され、Windows Server が実行されていることが示さ れます。 次の手順: Windows パスワードの取得 (p. 237) API Version 2014-01-31 236 Amazon CloudFront 開発者ガイド Windows パスワードの取得 Windows パスワードの取得 Abstract Amazon EC2 インスタンスで実行されている Windows Server の Administrator アカウントの初期パスワードを取 得します。 Windows Server 2008 R2 および IIS Media Services が実行されている Amazon EC2 インスタンスに接 続するには、以下の手順を使用して Windows Server の Administrator アカウントの初期パスワードを 取得する必要があります。パスワードの取得は Amazon EC2 インスタンスごとに 1 回だけです。この 手順が終了すると、Windows Server コンピューターと同じように、Amazon EC2 インスタンスを使用 できます。 Windows が実行されている Amazon EC2 インスタンスに接続する方法については、「Getting Started Guide AWS Computing Basics for Windows」を参照してください。 Important Amazon EC2 では、Windows Server からパスワードを取得するまで 30 分ほどかかる場合があ ります。 Amazon EC2 インスタンス用の Windows パスワードを取得するには 1. 「Amazon EC2 キーペアを作成する (p. 232)」で作成した Amazon EC2 プライベートキーファイル (.pem file)にアクセスできることを確認します。 2. AWS マネジメントコンソールにサインインして Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/)を開きます。 3. [Region] リストで、作成したライブスムーズストリーミング用の Amazon EC2 インスタンスが含 まれているリージョンを選択します。 4. [Navigation] ペインの [Instances] をクリックします。 5. [My Instances] ペインで、[Name] 列の値が [LiveSmoothStreaming] になっているインスタンスを 右クリックし、[Get Windows Password] をクリックします。 6. [Retrieve Default Windows Administrator Password] ページで、[Browse] をクリックし、.pem ファ イルを保存したコンピューターの場所を参照します。 7. .pem ファイルを選択すると、ファイルの内容がウィンドウに表示されます。 8. [Decrypt Password] をクリックします。 9. パスワードを書き留めます。このパスワードは、Amazon EC2 インスタンスに接続するために必 要です。 10. オプション。ただし、推奨: 起動した Windows Server インスタンスにログインし、デフォルトの Windows Server アカウントのパスワードを変更します。ユーザー名は Administrator です。 別のユーザーアカウントを作成し、管理者グループにそのアカウントを追加することもできます。 これは、管理者パスワードを忘れた場合や、管理者アカウントで問題が発生した場合の安全策で す。 Note ポート 3389 を使用するサーバーにアクセスできるように Windows Server の Amazon EC2 セ キュリティグループ設定を更新する方法については、「Windows Server へのアクセスを有効 にするにはどのようにすればよいですか? (p. 244)」を参照してください。管理者アカウントを 使用してインスタンスにログオンする方法については、「Windows IIS Media Services を実行 している Amazon EC2 インスタンスに安全に接続するにはどのようにすればよいです か? (p. 245)」を参照してください。 API Version 2014-01-31 237 Amazon CloudFront 開発者ガイド ライブストリームの暗号化 次の手順: ライブストリームの暗号化 (p. 238) ライブストリームの暗号化 Abstract ライブスムーズストリーミングのパブリッシュポイントにライブストリームを公開する処理について説明します。 このセクションの手順に従って、Microsoft Expression Encoder 4 Pro SP2 を使用してライブブロード キャストプロジェクトを作成し、Windows Server および Windows IIS Media Services を実行する Amazon EC2 インスタンスにあるライブスムーズストリーミングのパブリッシュポイントにライブス トリームを発行します。 Microsoft Expression Encoder を使用したライブブロードキャストの詳細については、Microsoft Expression ウェブページで、ライブブロードキャストプロジェクトの作成に関するページを参照してください。 Note Microsoft Expression Encoder 4 Pro Service Pack 2 は無料のダウンロード製品ではありませ ん。機能および料金表の詳細については、Microsoft Store ウェブサイトで Expression Encoder 4 Pro のページを参照してください。 サードパーティのエンコードツールを使用して、ライブスムーズストリーミング用のビデオをエンコー ドすることもできます。エンコードソフトウェアを提供する Microsoft パートナーのリストについては、 Microsoft ウェブサイトで、IIS Media Services のページの [Partners] タブを参照してください。 ライブブロードキャストをエンコードするには 1. 2. 3. ライブストリームのブロードキャストに使用するコンピューターにログオンします。 Windows のスタートメニューから [すべてのプログラム] > [Microsoft Expression] > [Microsoft Expression Encoder 4] の順にクリックします。 [新しいプロジェクトの読み込み] ダイアログボックスで、[ライブ ブロードキャスト プロジェクト] をクリックします。 API Version 2014-01-31 238 Amazon CloudFront 開発者ガイド ライブストリームの暗号化 4. [Add a Live Source] をクリックし、ライブブロードキャストで使用するライブソースを追加しま す。 Note USB ウェブカメラ、FireWire (IEEE 1394)デジタルビデオカメラなど、複数のカメラデ バイスを接続できます。ライブソースは複数接続できますが、1 度にストリーミングでき るのは 1 つのみです。ライブブロードキャストのソースをセットアップする方法について は、Microsoft Expression ウェブサイトで、ライブソースの設定に関するページを参照し てください。 API Version 2014-01-31 239 Amazon CloudFront 開発者ガイド ライブストリームの暗号化 5. [Presets] タブで、お客様のライブスムーズストリーミングシナリオのビットレートおよびエンコー ド要件をサポートするエンコードプリセットを選択します。名前に [IIS Smooth Streaming] が含ま れるオプションを選択します。 [Apply] をクリックすると、[Encode] タブの [Output Format]、[Video]、および [Audio] 設定は、選 択されたエンコードプリセットの値で自動的に更新されます。 出力内のストリーム数、使用するコーデックなど、プリセットの詳細については、各プリセット名 の上にマウスを置いてください。 Note [エンコード] タブでカスタム設定を指定することもできます。詳細については、Microsoft Expression のウェブサイトで以下のトピックを参照してください。 • 出力形式を設定する • ビデオ設定 • オーディオ設定 6. 7. Microsoft Expression Encoder で、[出力] タブをクリックします。 [出力] タブで、[パブリッシュ ポイント] チェックボックスをオンにします。 API Version 2014-01-31 240 Amazon CloudFront 開発者ガイド ライブストリームの暗号化 8. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 9. AWS CloudFormation コンソールの下部のペインで、[Outputs] タブをクリックします。 10. LivePublishPointLocation キーの値をコピーします(例: http://ec2-00-11-22-33.us-west-1.compute.amazonaws.com/LiveSmoothStream.isml)。 11. 前のステップでコピーした URL を Microsoft Expression Encoder の [場所] フィールドに貼り付け ます。 12. [接続] をクリックし、Windows Server のパブリッシュポイントへの接続を開始します。 13. パブリッシュポイントの管理者パスワードの入力を求められたら、以下の値を入力します。 • ユーザー名: Administrator • パスワード: 「Windows パスワードの取得 (p. 237)」で取得した Windows Server パスワード 次に、[OK] をクリックします。 Note Windows Server ではデフォルトのウェブサイト用に Windows 認証が構成されているの で、Microsoft Expression Encoder 4 Pro SP2 からサーバーのライブパブリッシュポイント に接続することができます。Windows 認証の詳細については、IIS ウェブサイトを参照し てください。IIS 7 で使用可能な認証メカニズムについては、Microsoft ウェブサイトを参 照してください。 14. 接続が正常に確立されると、パブリッシュポイントの状態が [開始中] に変わります。また、[パブ リッシュポイント] セクションの [場所] フィールドの下で、[接続] ボタンの横に [再起動] ボタンが 表示されます。 Note [開始中] の状態は、パブリッシュポイントがライブストリームを受信する準備ができてい ることを意味します。ライブソースがパブリッシュポイントに接続し、パブリッシュポイ ントへのコンテンツの発行を開始すると、[開始中] 状態が [開始] に変わります。これは、 パブリッシュポイントがライブストリームを受信していることを意味します。 API Version 2014-01-31 241 Amazon CloudFront 開発者ガイド ライブスムーズストリームの表示 Note Microsoft Expression Encoder 4 Pro SP2 と、Windows IIS Media Services 4.1 に含まれる REST API を使用して、Windows Server のライブパブリッシュポイントを管理できます。 詳細については、IIS ブログを参照してください。 15. [開始] ボタンをクリックし、ライブブロードキャストのエンコードを開始して、Windows Server と IIS Media Services を実行する Amazon EC2 インスタンスのパブリッシュポイントにライブブ ロードキャストを発行します。 ブロードキャストが実行されている間、統計および接続データを、対応するパネルで監視できま す。このデータの監視方法については、Microsoft Expression のウェブサイトで以下のトピックを 参照してください。 • 統計パネルを使用する • 接続パネルを使用する 次の手順: ライブスムーズストリームの表示 (p. 242) ライブスムーズストリームの表示 Abstract CloudFront を使用してライブスムーズストリームを表示する方法について説明します。 CloudFront を使用してライブスムーズストリームを表示するには、以下の手順を使用します。独自の ウェブページに Microsoft Silverlight プレーヤーのコードを埋め込むこともできます。 1. 2. 3. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 ライブストリーミング用のスタックを選択します。 AWS CloudFormation コンソールの下部のペインで、[Outputs] タブをクリックします。 4. LiveSmoothStreamingPlayer キーの値をクリックします(例: http://d123.cloudfront.net/LiveSmoothStreamingPlayer.html)。 5. Silverlight プレーヤーのコードをウェブページに埋め込むには、[出力] タブで、SilverlightEmbedCode キーの値をコピーします。 Note Microsoft は、最適な再生操作を実現するために、ビューアに Microsoft Silverlight の最新 バージョンをインストールすることを推奨しています。 6. ライブストリームを iPad や iPhone などの Apple デバイスに表示するには、互換性のある Apple デバイスから AWS CloudFormation コンソールを表示して、LiveHLSManifest キーの値をクリック します。マニフェスト URL は、 API Version 2014-01-31 242 Amazon CloudFront 開発者ガイド AWS CloudFormation のライブスムーズストリーミングス タックの削除 http://d123.cloudfront.net/LiveSmoothStream.isml/manifest(format=m3u8-aapl).m3u8 のようになり ます。 どのような場合に、この URL を使用して各種 iOS デバイス、QuickTime、および Safari にサービ スを提供するかについては、iOS 開発者ライブラリの「HTTP ライブストリーミング概要」を参照 してください。 次の手順: AWS CloudFormation のライブスムーズストリーミングスタックの削除 (p. 243) AWS CloudFormation のライブスムーズストリーミ ングスタックの削除 Abstract 追加料金を回避するために、ライブスムーズストリーミング用に作成した AWS CloudFormation スタックを削除し ます。 ライブイベントが終了したら、ライブスムーズストリーミング用に作成したスタックを削除します。こ れにより、ライブイベント用に作成した AWS リソースが削除され、そのリソースの AWS 料金が停止 します。 ライブストリーミング用の AWS CloudFormation スタックを削除するには 1. 2. 3. 4. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 スタックのチェックボックスをオンにして、[Delete Stack] をクリックします。 [Yes, Delete] をクリックして確定します。 スタックの削除状況を追跡するには、スタックのチェックボックスをオンにして、下部のフレーム にある [Events] タブをクリックします。 よくある質問 Abstract CloudFront でライブスムーズストリーミングを使用する際に生じる一般的な問題について説明します。 • CloudFront を使用したライブスムーズストリーミングの料金はいくらですか? (p. 244) • ライブストリーミングビデオをスムーズストリーミングクライアントと Apple デバイスの両方に配信 できますか? (p. 244) • Amazon EC2 インスタンスまたは CloudFront ディストリビューションの CNAME エイリアスをどの ようにセットアップできますか? (p. 244) • Windows Server へのアクセスを有効にするにはどのようにすればよいですか? (p. 244) • Windows IIS Media Services を実行している Amazon EC2 インスタンスに安全に接続するにはどの ようにすればよいですか? (p. 245) • ライブスムーズストリーミングのコンテンツに対する他のドメインからのアクセスを制限するにはど のようにすればよいですか? (p. 245) API Version 2014-01-31 243 Amazon CloudFront 開発者ガイド よくある質問 CloudFront を使用したライブスムーズストリーミングの料金は いくらですか? ライブイベントのスムーズストリームを行うには、使用する AWS リソースに対してのみ料金を支払い ます。 • Windows Server を実行する Amazon EC2 インスタンスの料金表に関する情報については、「Microsoft Windows Server および SQL Server を実行する Amazon EC2」ページの「料金表」を参照してくだ さい。& • CloudFront の料金に関する情報については、「Amazon CloudFront 料金表」を参照してください。 AWS CloudFormation の使用料はありません。 ライブストリーミングビデオをスムーズストリーミングクライ アントと Apple デバイスの両方に配信できますか? はい。Microsoft Expression Encoder 4 Pro を使用すれば、ライブビデオをスムーズストリーミングク ライアント用(Microsoft Silverlight など)および Apple デバイス用(iPad、iPhone など)にエンコー ドできます。AWS CloudFormation スタックを起動すると、AWS CloudFormation テンプレートの [Outputs] タブで、ライブスムーズストリーミング用のマニフェストファイル URL (.isml)と Apple HLS 用のマニフェストファイル URL (.m3u8)が表示されます。 Amazon EC2 インスタンスまたは CloudFront ディストリビュー ションの CNAME エイリアスをどのようにセットアップできま すか? Amazon EC2 Windows Server インスタンスには内部および外部の DNS 名が付属します。Amazon EC2 では、この DNS 設定を変更できません。Windows Server が実行されている Amazon EC2 インスタン スに既存のドメイン名をマップする場合は、Amazon Route 53 などの DNS サービスプロバイダーを使 用します。独自のドメイン名を使用する場合、インスタンスの IP アドレスを指す A レコードを使用す るのではなく、CNAME を使用してインスタンスの外部 DNS 名にマップすることをお勧めします。 独自のドメイン名を CloudFront ディストリビューションにマップするには、「代替ドメイン名 (CNAME)を使用する (p. 33)」を参照してください。 Windows Server へのアクセスを有効にするにはどのようにす ればよいですか? 選択された IP 経由で Windows Server のポート 3389 にアクセスできるようにする デフォルトでは、Windows Server インスタンスの Amazon EC2 セキュリティグループではポート 3389 が有効になっていません。このポートは、Windows Server を管理するために使用するポートです。 Windows Server インスタンスにログオンする場合は、以下の手順を使用して、ポート 3389 経由のア クセスを有効にします。 1. AWS マネジメントコンソールにサインインして Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/)を開きます。 2. [Region] リストで、AWS CloudFormation を使用して Amazon EC2 インスタンスを作成した Amazon EC2 リージョンを クリックします。 3. [Navigation] ペインで、[Security Groups] をクリックします。 API Version 2014-01-31 244 Amazon CloudFront 開発者ガイド その他のドキュメント 4. 5. 6. [Security Groups] ペインで、「ライブスムーズストリーミング用の AWS CloudFormation スタッ クを作成する (p. 233)」で作成した AWS CloudFormation スタックの名前で [Name] 列の値が始まっ ている行をクリックします。 下部のペインで、[Inbound] タブをクリックします。 Windows Server へのアクセスを有効にして、サーバーにアクセスできるクライアント IP アドレス を指定するには、以下の手順を実行します。 a. b. [Create a new rule] リストで、デフォルト値の [Custom TCP rule] を変更しないでください。 [Port range ] フィールドに「3389」と入力します。 c. [Source] フィールドに、IP アドレスまたは範囲を入力するか、別のセキュリティグループの 名前を入力します。詳細については、[Help] をクリックしてください。 d. e. [Add Rule] をクリックします。 追加のルールを作成するには、ステップ a ~ d を繰り返します。 f. [Apply Rule Changes] をクリックします。 Windows IIS Media Services を実行している Amazon EC2 イン スタンスに安全に接続するにはどのようにすればよいですか? Windows Server インスタンスに接続するには、Administrator アカウントの初期パスワードを取得し、 そのパスワードを Windows リモートデスクトップで使用する必要があります。また、作成したプライ ベートキーファイルの中身も必要です(例: <keypairname.pem>.pem)。詳細については、「Getting Started Guide AWS Computing Basics for Windows」を参照してください。 ライブスムーズストリーミングのコンテンツに対する他のドメ インからのアクセスを制限するにはどのようにすればよいです か? Microsoft Silverlight では、クロスドメイン接続がサポートされます。これにより、Silverlight プレーヤー は、スムーズストリーミングのコンテンツの配信元のドメイン以外の場所からコンテンツにアクセスで きます。Silverlight のセキュリティポリシーシステムでは、ClientAccessPolicy.xml という Silverlight ポリシーファイルをターゲットドメインからダウンロードする必要があります。これにより、ネット ワーク接続が許可され、ターゲットドメインのネットワークリソースにアクセスすることができます。 デフォルトのポリシーファイルは、Amazon EC2 で実行されている Windows Server のデフォルトウェ ブサイトのルートにすでに含まれています。クロスドメインアクセスを制限するには、Windows Server にログオンし、ClientAccessPolicy.xml ファイルを更新します。 その他のドキュメント Abstract ライブスムーズストリーミングと CloudFront を使用して作業するときに役に立つ追加のリソースを列挙します。 Microsoft のドキュメント • IIS スムーズストリーミングのデプロイガイド • IIS Media Services 4.1 のリリースノート • IIS スムーズストリーミング管理 REST サービス • IIS 7 で認証を構成する • Microsoft Expression Encoder ブログ API Version 2014-01-31 245 Amazon CloudFront 開発者ガイド その他のドキュメント • Microsoft Expression Encoder 4 Pro SP2 からライブパブリッシュポイントを管理する • Expression Encoder 4 Pro におけるライブ IIS スムーズストリーミング • IIS Media Services を使用した Apple HTTP ライブストリーミング アマゾン ウェブ サービスのドキュメント • Microsoft Windows Server および SQL Server を実行する Amazon EC2& • Amazon Elastic Compute Cloud: Microsoft Windows ガイド • Amazon CloudFront • AWS CloudFormation API Version 2014-01-31 246 Amazon CloudFront 開発者ガイド Wowza Streaming Engine 4.0 によるライブストリーミング Wowza Streaming Engine 4.0 を使用したライブ HTTP ストリーミング Abstract Amazon CloudFront と Wowza Streaming Engine を使用したライブ HTTP ストリーミングの実行方法について説 明します。 Wowza Streaming Engine 4.0 を使用して、CloudFront を使用したグローバル配信のためのライブスト リーミングセッションを作成できます。Wowza Streaming Engine 4.0 は、以下の HTTP ベースのスト リーミングプロトコルをサポートします。 • HLS(HTTP ライブストリーミング) • HDS(HTTP ダイナミックストリーミング) • スムーズストリーミング ユーザーが上記のいずれかのプロトコルを使用してビデオのストリーミングを実行すると、ビデオは小 さなチャンクに区切られ、パフォーマンスとスケーラビリティを向上させるために CloudFront ネット ワークにキャッシュされます。 このチュートリアルでは、CloudFront を、Amazon EC2 インスタンスで実行される Wowza Streaming Engine 4.0 と統合する方法について説明します。Amazon EC2 インスタンスの管理およびセキュリティ 保護を行う方法については、「Amazon EC2 ドキュメント」を参照してください。このチュートリア ルで説明されていない Wowza Streaming Engine オプションの詳細については、Wowza のマニュアル を参照してください。 Topics • アマゾン ウェブ サービスアカウントの作成 (p. 247) • Amazon EC2 キーペアを作成する (p. 248) • Wowza Streaming Engine 4.0 のライセンスを取得する (p. 248) • AWS Marketplace で Wowza Streaming Engine 4.0 をサブスクライブする (p. 249) • ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 249) • Wowza Streaming Engine 4.0 が実行されていることを確認する (p. 251) • ライブストリームを公開するエンコーダーをセットアップする (p. 252) • ウェブアプリケーションを使用してライブストリームを再生する (p. 253) • ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 254) • よくある質問 (p. 255) • その他のドキュメント (p. 256) アマゾン ウェブ サービスアカウントの作成 Abstract Wowza Streaming Engine 4.0 をアマゾン ウェブ サービスで使用してライブストリーミングをセットアップし構成 するステップについて説明します。 すでに AWS アカウントをお持ちの場合は、この手順をスキップして「Amazon EC2 キーペアを作成す る (p. 248)」に進んでください。まだ AWS アカウントをお持ちでない場合は、次に説明する手順に従っ てアカウントを作成してください。 API Version 2014-01-31 247 Amazon CloudFront 開発者ガイド Amazon EC2 キーペアを作成する AWS アカウントを作成するには 1. http://aws.amazon.com にアクセスし、[サインアップ] をクリックします。 2. 画面上の指示に従ってください。 サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入 力することが求められます。 次の手順: Amazon EC2 キーペアを作成する (p. 248) Amazon EC2 キーペアを作成する Abstract Wowza Streaming Engine を構成するリージョンで Amazon EC2 キーペアを作成する方法について説明します。 ライブストリーミングを構成する Amazon EC2 リージョンに Amazon EC2 キーペアがすでにある場合 は、この手順をスキップして「Wowza Streaming Engine 4.0 のライセンスを取得する (p. 248)」に進ん でください。そのリージョンにキーペアがない場合は、以下の手順を実行します。 キーペアとは、パスワードに似たセキュリティ認証情報で、AWS リージョンに固有なものです。一連 の手順の後半で、ライブストリーミング用の AWS CloudFormation スタックを作成するときにキーペ アを指定する必要があります。ライブストリーミングを構成した後、キーペアを使用して Amazon EC2 インスタンスへのセキュアな接続を行います。 Amazon EC2 キーペアを作成するには 1. 2. 3. 4. 5. 6. 7. AWS マネジメントコンソールにサインインして Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/)を開きます。 リージョンセレクタで、キーペアの作成先のリージョンをクリックします。 このプロセスの後でライブストリーミング用の AWS CloudFormation スタックを作成するリージョ ンと同じリージョンにキーペアを作成する必要があります。キーペアと、ライブストリーミング用 のスタックとは、ライブストリームを公開する場所に最も近いリージョンに作成することをお勧め します。 左側のナビゲーションペインで、[Key Pairs] をクリックします。 [Key Pairs] ペインで、[Create Key Pair] をクリックします。 [Create Key Pair] ダイアログボックスにキーペアの名前を入力し、その名前を書き留めます。後 で、AWS CloudFormation ライブストリーミングスタックを作成するときに、この名前が必要にな ります。 [Create] をクリックし、指示が表示された場合は、.pem ファイルをコンピューターの安全な場所 に保存します。このファイルは再ダウンロードできませんので、ご注意ください。 [Close] をクリックし、[Create Key Pair] ダイアログボックスを閉じます。 次の手順: Wowza Streaming Engine 4.0 のライセンスを取得する (p. 248) Wowza Streaming Engine 4.0 のライセンスを取得す る Abstract アマゾン ウェブ サービス用に Wowza Streaming Engine 4.0 のライセンスを取得するステップについて説明しま す。 API Version 2014-01-31 248 Amazon CloudFront 開発者ガイド AWS Marketplace で Wowza Streaming Engine 4.0 をサブ スクライブする ライブストリーミングを構成するには、Wowza Streaming Engine 4.0 のライセンスが必要です。ライ センスを購入するには、Wowza ウェブサイトの Licenses Built for You ページにアクセスし、最適なラ イセンスオプションを選択して、画面の指示に従います。 次の手順: AWS Marketplace で Wowza Streaming Engine 4.0 をサブスクライブする (p. 249) AWS Marketplace で Wowza Streaming Engine 4.0 をサブスクライブする Abstract AWS Marketplace で Wowza Streaming Engine 4.0 をサブスクライブするステップについて説明します。 次に、AWS Marketplace で Wowza Streaming Engine 4.0 をサブスクライブします。 アマゾン ウェブ サービスで Wowza Streaming Engine を注文するには 1. 2. 3. 4. Amazon Web Services ページにアクセスし、お客様の Amazon.com アカウントでサインインする か、または新しいアカウントを作成します。 https://aws.amazon.com/marketplace/pp/B00IPTPABM にアクセスします。詳細を確認して、 [Continue] をクリックします。 [Launch with EC2 Console] タブをクリックします。 料金表の情報を確認して、[Accept Terms] をクリックします。 Important このページのボタンを使用して Wowza を起動しないでください。 次の手順: ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 249) ライブストリーミング用の AWS CloudFormation ス タックを作成する Abstract Wowza Streaming Engine に必要な AWS リソースを起動するために AWS CloudFormation スタックを作成する方 法について説明します。 以下の手順では、AWS CloudFormation テンプレートを使用し、Amazon EC2 インスタンスを含め、ラ イブストリーミングで必要とされる AWS リソースを起動するスタックを作成します。 Important Amazon EC2 インスタンスをデプロイする AWS CloudFormation スタックを作成した時点か ら、Amazon EC2 インスタンスに対する時間単位の料金が発生します。ライブビデオのスト リーミングに Amazon EC2 インスタンスを使用しているかどうかに関係なく、AWS CloudFormation スタックを削除するまで、この料金がかかります。ライブイベントが終了した ら、ライブストリーミング用に作成したスタックを削除します。これにより、ライブストリー ミングイベント用に作成した AWS リソースが削除され、このリソースの AWS 料金が停止し ます。詳細については、「ライブストリーミング用の AWS CloudFormation スタックを削除す る (p. 254)」を参照してください。 API Version 2014-01-31 249 Amazon CloudFront 開発者ガイド ライブストリーミング用の AWS CloudFormation スタック を作成する ライブストリーミング用の AWS CloudFormation スタックを作成するには 1. ウィザードを開始するには、以下の Amazon EC2 リージョンの 1 つをクリックします。 • 米国東部(バージニア北部)にスタックを作成する • 米国西部(オレゴン)にスタックを作成する • 米国西部(北カリフォルニア)にスタックを作成する • 欧州(アイルランド)にスタックを作成する • アジアパシフィック(シンガポール)にスタックを作成する • アジアパシフィック(シドニー)にスタックを作成する • アジアパシフィック(東京)にスタックを作成する • 南米(サンパウロ)にスタックを作成する 2. 3. 4. 5. 6. AWS Management Console にまだサインインしておらず、サインインを求められた場合は、サイ ンインしてください。ウィザードが開始され、指定された URL が [Provide an S3 URL to template] に自動的に表示されます。 (オプション)[Create a New Stack] ウィザードで、スタック名をライブストリーミングイベント に適した名前に変更できます。スタック名にスペースを含めることはできません。また、スタック 名は AWS アカウント内で一意である必要があります。 [Template] オプションまたは [Provide an S3 URL to template] のアドレスは変更しないでくださ い。 [Next Step] をクリックします。 [Specify Parameters] ページで、[ApplicationName] に Wowza アプリケーションのショートネーム (スペースなし)を入力するか、またはデフォルトのままにしておきます。 [InstanceType] にインスタンスタイプを入力します。Wowza インスタンスの料金はインスタンス タイプによって決まります。Amazon EC2 インスタンスタイプの詳細については、「Available Instance Types」を参照してください。 料金については、Amazon EC2 料金表を参照してください。 [KeyPair] には、ライブストリーミングスタックを作成するリージョンの Amazon EC2 キーペアの 名前を入力します。キーペアは、ログオンに現在使用しているアカウントに関連付けられている必 要があります。「Amazon EC2 キーペアを作成する (p. 248)」の手順を実行したときにキーペアを 作成してあれば、その名前をここに入力します。 8. [StartupPackageURL] に、Wowza Streaming Engine を必要に合わせて構成するためのスタート アップパッケージの URL を入力するか、デフォルトのままにしておきます。 9. [StreamName] に、ライブストリームのショートネーム(スペースなし)を入力するか、またはデ フォルトのままにしておきます。 10. [WowzaLicenseKey] に、「Wowza Streaming Engine 4.0 のライセンスを取得する (p. 248)」トピッ クの手順を実行したときに取得したライセンスキーを入力します。購入済みの AddOn がある場合 は、パイプ(|)文字でキー値を区切って、追加のライセンスキーを含めることができます。 7. 11. [Next Step] をクリックします。 12. (オプション)[Options] ページで、使用する予定のタグについてキーと値のペアを追加します。 タグの使用の詳細については、「Adding Tags to Your AWS CloudFormation Stack」を参照してく ださい。 13. (オプション)SNS 通知の構成、スタックの作成を待機する時間の指定、スタックの作成が失敗 した場合に変更をロールバックするかどうかの選択、スタックポリシーの入力を行うには、 [Advanced] をクリックし、必要に応じて設定を調整します。 14. [Next Step] をクリックします。 15. スタックの設定を確認します。設定が適切であることを確認したら、[Create] をクリックします。 AWS CloudFormation によってスタックが作成されます。 API Version 2014-01-31 250 Amazon CloudFront 開発者ガイド Wowza Streaming Engine 4.0 が実行されていることを確認 する スタックの作成には数分かかる場合があります。スタックの作成状況を追跡するには、スタックを 選択し、[Events] タブをクリックします。AWS CloudFormation がスタックを作成できない場合、 [Events] タブにエラーメッセージが表示されます。 スタックの準備が整うと、スタックリストにあるスタックのステータスが [CREATE_COMPLETE] に変わります。 スタックが作成されたら、[Outputs] タブをクリックします。このタブには、スタックの作成に関 する出力が表示されます。これら出力される値は、この一連の手順の後半で、エンコーダーをセッ トアップするときに使用します。 次の手順: Wowza Streaming Engine 4.0 が実行されていることを確認する (p. 251) Wowza Streaming Engine 4.0 が実行されていること を確認する Abstract Wowza Streaming Engine 4.0 が Amazon EC2 インスタンスで実行されていることを確認する方法について説明し ます。 AWS CloudFormation がスタックを作成した後、以下のステップに従って、AWS CloudFormation でプ ロビジョニングした Amazon EC2 インスタンスで Wowza Streaming Engine 4.0 が実行されているこ とを確認します。 Wowza Streaming Engine 4.0 が実行されていることを確認するには 1. 2. 3. 4. 5. 6. AWS マネジメントコンソールにサインインして AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/)を開きます。 リージョンセレクターで、作成した AWS CloudFormation スタックが含まれているリージョンを クリックします。 スタックリストで、「ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 249)」 で作成したスタックを選択します。 [Outputs] タブをクリックします。 [Outputs] タブで、WowzaServerLoginInfo キーの値を取得します。次のステップで、その値をログ イン認証情報に使用します。 WowzaEngineManagerURL キーの URL、たとえば http://ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:8088/enginemanager をクリックします。ロ グイン認証情報の入力を求められたら、ステップ 5 で取得した WowzaServerLoginInfo キーの値を 使用します。 Important この URL は、Wowza Streaming Engine を実行している Amazon EC2 インスタンスへの 接続にポート 8088 を使用します。ファイアウォール設定によっては、Amazon EC2 イン スタンスに接続できない可能性があります。問題が発生した場合は、ネットワーク管理者 に連絡してください。 次の手順: ライブストリームを公開するエンコーダーをセットアップする (p. 252) API Version 2014-01-31 251 Amazon CloudFront 開発者ガイド ライブストリームを公開するエンコーダーをセットアップ する ライブストリームを公開するエンコーダーをセット アップする Abstract ライブストリームを公開する Wowza Streaming Engine 4.0 に送信する前にエンコーダーをセットアップする方法 について説明します。 デバイスでキャプチャしたライブストリームは、Wowza Streaming Engine 4.0 に送信する前にエンコー ドする必要があります。iOS ベースのデバイス向けの Wowza GoCoder アプリ、または RTMP エンコー ディングをサポートする Telestream Wirecast などのエンコーダーを使って、ライブストリームをエン コードできます。 エンコーダーから Wowza Streaming Engine にストリームを公開するステップは、使用するエンコー ダーによって異なります。エンコーダーを構成する方法の詳細については、Wowza ウェブサイトの 「Specific Encoding Technologies」を参照するか、または使用するエンコーダーのマニュアルを参照 してください。 以下の形式で Apple HLS ストリームをエンコードします。 • 動画: • Apple iPhone、iPod、iPod touch: H.264 Baseline Profile Level 3.0。iPhone と iPod デバイスには B フレームを使用しません。 • Apple iPad: H.264 Main Profile Level 3.1。 • 音声: AAC-LC 最大 48 kHz、ステレオ音声。 スムーズストリームには、音声と動画の両方が含まれている必要があります。キーフレーム周波数は 1 ~ 4 秒の間にする必要があります。キーフレーム周波数を 2 秒にすることを推奨します。 Wowza Gocoder ライブストリームを公開するように Wowza GoCoder を構成するには、以下のステップを行います。 Note Wowza GoCoder は Apple AppStore から購入できます。 1. 2. Wowza チュートリアルの「How to use Wowza GoCoder video broadcasting iOS app with Wowza Streaming Engine」ページを表示します。 チュートリアルの「Configure Wowza GoCoder App」セクションに書かれている手順を行います。 [Host] 設定に以下の値を指定します。 a. d. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開き ます。 AWS CloudFormation コンソールで、[Outputs] タブをクリックします。 WowzaEngineDomainName キーの値(例: ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com) をコピーします。 [Server] に、今コピーした値を貼り付けます。 e. [Port ] に「1935」と入力します。 b. c. 3. [Application] 設定に以下の値を指定します。 API Version 2014-01-31 252 Amazon CloudFront 開発者ガイド ウェブアプリケーションを使用してライブストリームを再 生する a. [Application] に、スタックを作成したときに指定したアプリケーション名(例: livecf)を入 力します。 b. AWS CloudFormation コンソールの [Outputs] タブで、PublishStreamName キーの値(例: myStream)をコピーします。 [StreamName] に前のステップでコピーした値を貼り付けます。 c. 4. 他の値を適切に変更します。 RTMP エンコーダー 通常、RTMP エンコーダーは以下の設定値を使用します。 Publish URL これは AWS CloudFormation PublishRTMPURL キーの値です(例: rtmp://ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com/livecf)。 Stream Name これは AWS CloudFormation PublishStreamName キーの値です(例: myStream)。 ログイン認証情報 ログイン認証情報を求められたら、AWS CloudFormation の WowzaServerLoginInfo キーの値(例: username=wowza、password=i-1234a567)を使用します。 次の手順: ウェブアプリケーションを使用してライブストリームを再生する (p. 253) ウェブアプリケーションを使用してライブストリー ムを再生する Abstract Wowza Streaming Engine ウェブアプリケーションを使用してライブストリームを再生する方法について説明しま す。 Wowza Media Services には、サンプルプレイヤーのウェブページがオンラインで用意されていて、そ のページを使ってお客様の Wowza Streaming Engine ディストリビューションからライブストリームを 再生できます。このプレイヤーを使うことで、お客様のストリーミングスタックが正しくセットアップ されているかどうかを確認することができます。同じストリーミングマニフェスト URL を、使用する ストリーミングプロトコルをサポートする他のプレイヤーに使用できます。 該当の手順を実行し、ライブストリーム用のウェブページに含める埋め込みコードを取得します。 Note 「ライブストリームを公開するエンコーダーをセットアップする (p. 252)」の該当する手順を実 行した後、30 分待ってから、以下の手順を行ってストリームを再生します。 • CloudFront の HDS ストリームを Adobe Flash Player で再生するには (p. 253) • CloudFront の HLS ストリームを Apple デバイスまたは他のデバイスで再生するには (p. 254) • CloudFront のライブスムーズストリームを再生するには (p. 254) CloudFront の HDS ストリームを Adobe Flash Player で再生するには 1. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 API Version 2014-01-31 253 Amazon CloudFront 開発者ガイド ライブストリーミング用の AWS CloudFormation スタック を削除する 2. 3. 4. ライブ HTTP ストリーミング用のスタックを選択します。 AWS CloudFormation コンソールで、[Outputs] タブをクリックします。 PlaybackHDSURL キーの値(例: http://d111111abcdef8.cloudfront.net/livecf/myStream/manifest.f4m) をコピーします。 5. Wowza ウェブサイトの Flash HTTP Player サンプルウェブページにアクセスし、前のステップで コピーした URL を [Stream] フィールドに貼り付けて、[Connect] をクリックします。 CloudFront の HLS ストリームを Apple デバイスまたは他のデバイスで再生するには 1. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 2. 3. ライブストリーミング用のスタックを選択します。 AWS CloudFormation コンソールで、[Outputs] タブをクリックします。 4. PlaybackHLSURL キーの値(例: http://d111111abcdef8.cloudfront.net/livecf/myStream/playlist.m3u8) をコピーします。 以下のいずれかのアプリケーションを使って、Wowza ウェブサイトの http://www.wowza.com/docredirect.php?doc=exampleLiveIOSMacOSX_LatestiOS/Mac OS X 用サ ンプルウェブページにアクセスし、前のステップでコピーした URL を [Stream] フィールドに貼り 付けて、[Connect] をクリックします。 5. • Mac OS X Snow Leopard(バージョン 10.6)以降が稼働するコンピューターの Safari ウェブブ ラウザー • Mac OS X Snow Leopard(バージョン 10.6)以降が稼働するコンピューターの QuickTime Player 10.x 以降 • Apple iOS デバイスの Safari ウェブブラウザー CloudFront のライブスムーズストリームを再生するには 1. 2. 3. 4. 5. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 ライブストリーミング用のスタックを選択します。 AWS CloudFormation コンソールで、[Outputs] タブをクリックします。 PlaybackSmoothURL キーの値(例: http://d111111abcdef8.cloudfront.net/livecf/myStream/Manifest) をコピーします。 Wowza ウェブサイトの http://www.wowza.com/docredirect.php?doc=exampleLiveSilverlightPlayer_LatestSilverlight Player サンプルウェブページにアクセスし、前のステップでコピーした URL を [Stream] フィールドに貼 り付けて、[Connect] をクリックします。 次の手順: ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 254) ライブストリーミング用の AWS CloudFormation ス タックを削除する Abstract 追加料金を回避できるように、Wowza Streaming Engine 用に作成した AWS CloudFormation スタックを削除する 方法について説明します。 ライブイベントが終了したら、ライブストリーミング用に作成したスタックを削除します。これによ り、ライブストリーミングイベント用に作成した AWS リソースが削除され、このリソースのオンデマ ンド課金が停止します。 API Version 2014-01-31 254 Amazon CloudFront 開発者ガイド よくある質問 ライブストリーミング用の AWS CloudFormation スタックを削除するには 1. AWS CloudFormation コンソール(https://console.aws.amazon.com/cloudformation/)を開きます。 2. 3. 4. スタックを作成したリージョンを、画面右上でクリックします。 スタックを選択し、[Delete Stack] をクリックします。 [Yes, Delete] をクリックして確定します。 5. スタックの削除状況を追跡するには、スタックを選択し、[Events] タブをクリックします。 よくある質問 Abstract CloudFront での Wowza Streaming Engine の使用に関して、よくある質問で取り上げられる一般的な問題について 説明します。 • CloudFront と Wowza Streaming Engine 4.0 を使用するライブ HTTP ストリーミングの料金を教えて ください。 (p. 255) • Wowza Streaming Engine 4.0 が実行されている Amazon EC2 インスタンスに Secure Shell(SSH) を使用して接続する方法を教えてください。 (p. 255) • Amazon EC2 インスタンスまたは CloudFront ディストリビューションの CNAME エイリアスをどの ように作成できますか? (p. 256) • 私のライブイベントを、Flash Player 互換デバイス、Apple デバイス、およびスムーズストリーミン グプレイヤーに同時にストリーム配信できますか? (p. 256) • Wowza Streaming Engine 4.0 では、HTML5 をサポートしていますか? (p. 256) • Wowza と CloudFront を使用してライブストリームをプライベートに配信できますか? (p. 256) CloudFront と Wowza Streaming Engine 4.0 を使用するライブ HTTP ストリーミングの料金を教えてください。 CloudFront と Wowza Streaming Engine 4.0 を使用するライブ HTTP ストリーミングの料金には、以下 が含まれます。 • Wowza Streaming Engine ソフトウェアとアドオン: 詳細については、Wowza ウェブサイトの Licenses Built For You ページを参照してください。 • Amazon EC2: 詳細については、「オンデマンドインスタンス価格」表の「Linux」タブを参照してく ださい。 • CloudFront: 詳細については、「Amazon CloudFront 料金表」を参照してください。 AWS CloudFormation の使用料はありません。 Wowza Streaming Engine 4.0 が実行されている Amazon EC2 インスタンスに Secure Shell(SSH)を使用して接続する方法 を教えてください。 少しの手順だけで、SSH を使用して Amazon EC2 インスタンスに接続できます。 SSH を使用して、Wowza Streaming Engine 4.0 が実行されている Amazon EC2 インスタンス に接続するには 1. Amazon EC コンソール(https://console.aws.amazon.com/ec2/)を開きます。 API Version 2014-01-31 255 Amazon CloudFront 開発者ガイド その他のドキュメント 2. 3. 左側のナビゲーションの [Instances] をクリックします。 適切なインスタンスを右クリックし、[Connect] をクリックします。SSH を使用して Amazon EC2 インスタンスに接続するための手順が表示されます。ユーザー名は ec2-user です。 Amazon EC2 インスタンスまたは CloudFront ディストリビュー ションの CNAME エイリアスをどのように作成できますか? Wowza Streaming Engine 4.0 を実行する Amazon EC2 インスタンスには内部および外部の DNS 名が あります。Amazon EC2 では、この DNS 設定を変更できません。Wowza Streaming Engine が実行さ れている Amazon EC2 インスタンスに既存のドメイン名をマップする場合は、Amazon Route 53 など の DNS サービスプロバイダーを使用します。独自のドメイン名を使用する場合、インスタンスの IP アドレスを指す A レコードを使用するのではなく、CNAME を使用してインスタンスの外部 DNS 名に マップすることをお勧めします。 独自のドメイン名を CloudFront ディストリビューションにマップするには、「代替ドメイン名 (CNAME)を使用する (p. 33)」を参照してください。 私のライブイベントを、Flash Player 互換デバイス、Apple デ バイス、およびスムーズストリーミングプレイヤーに同時にス トリーム配信できますか? はい、できます。Wowza Streaming Engine 4.0 では、Adobe HTTP Dynamic Streaming(Adobe HDS)、 Apple HTTP Live Streaming(Apple HLS)、および Microsoft スムーズストリーミングのフォーマット で同時にライブストリーム配信できます。配信されたストリームはそれぞれ Adobe Flash Player アプ リケーション、Apple iOS デバイス、スムーズストリーミングプレイヤーで再生できます。 Wowza Streaming Engine 4.0 では、HTML5 をサポートしてい ますか? はい、Wowza Streaming Engine は、以下の構成の HTML5 にコンテンツを配信することができます。 • Apple iOS デバイスで Apple HLS streaming フォーマットを使用できます。 • Windows 8 デバイスでスムーズストリーミングフォーマットを使用できます。詳細については、MSDN ウェブサイトの「Walkthrough: Building Your First HTML5 Smooth Streaming Player」を参照してく ださい。 • HTML5 をサポートする他のブラウザーには、Wowza Streaming Engine を使用して、プログレッシ ブダウンロードでビデオを配信できます。 Wowza と CloudFront を使用してライブストリームをプライ ベートに配信できますか? 現時点では、CloudFront 署名付き URL を使用して、ライブストリームをセキュリティー保護された状 態で配信することはできません。しかし、プログレッシブダウンロードで提供されるメディアを署名付 き URL を使用してプライベートに配信することは可能です。詳細については、「CloudFront を使用し てプライベートコンテンツを供給する (p. 126)」を参照してください。 その他のドキュメント Abstract Wowza Streaming Engine 4.0 と CloudFront を使用して作業するときに役に立つ追加のリソースを列挙します。 API Version 2014-01-31 256 Amazon CloudFront 開発者ガイド その他のドキュメント 以下の資料は、Wowza を使用して配信する場合に役立ちます。 Wowza ドキュメント Wowza ウェブサイトには、Amazon Web Services とともに Wowza ライブストリームを使用する場合 に役立つ記事、ドキュメント、料金表などの情報があります。 • 「Wowza for Amazon EC2」記事 • Wowza Streaming Engine User's Guide • Wowza on Amazon Web Services Amazon Web Services ドキュメント 以下の資料には、Amazon Web Services のユーザーガイドとリファレンスが含まれています。 • Amazon Elastic Compute Cloud ドキュメント • AWS CloudFormation ドキュメント API Version 2014-01-31 257 Amazon CloudFront 開発者ガイド CloudFront ディストリビューション内のファイルへのアク セスを地理的場所に基づいて制限する(地理的ブロッキン グ) CloudFront ディストリビューション内のファイル へのアクセスを地理的場所に基づいて制限する(地 理的ブロッキング) Abstract リクエストの地理的場所に基づいて CloudFront コンテンツへのアクセスを制限します。これは地理的制限または 地理的ブロッキングと呼ばれます。 Topics • アマゾン ウェブ サービスアカウントの作成 (p. 260) • Digital Element 用のサンプルコード (p. 260) • MaxMind 用のサンプルコード (p. 271) • よくある質問 (p. 281) • その他のサービスおよびドキュメント (p. 282) Amazon CloudFront は、イメージ、ビデオ、オーディオなどのウェブコンテンツをエッジロケーショ ンの世界的ネットワークに配信することで、ウェブサイトとアプリケーションのパフォーマンス、信頼 性、および可用性を向上します。エンドユーザーがコンテンツを要求すると、CloudFront は、そのユー ザーにとってその時点でレイテンシーが最も短いエッジロケーションからコンテンツを供給します。コ ンテンツの配信場所に関して地理的な制限がある場合、CloudFront とサードパーティの位置情報サー ビスを使用して、コンテンツのディストリビューションをリクエストの場所に基づいてコントロールで きます。これは地域制限または地理的ブロッキングと呼びます。例えば、著作権上の理由でコンテンツ の配信が許可されない国からリクエストを受け取った場合、そのリクエストをブロックし、状況を説明 するメッセージをリクエスタに表示できます。 処理の流れ 1. ウェブサイトを閲覧しているエンドユーザーが、地理的制限のあるウェブページまたはファイルを リクエストします。 2. ウェブアプリケーションは、リクエストからエンドユーザーの IP アドレスを取得し、位置情報サー ビスに IP アドレスを送信します。このとき、位置情報サービスのアカウントが必要です。 3. 位置情報サービスは、エンドユーザーの IP アドレスの地理的場所を特定し、結果をウェブアプリ ケーションに返します。 4. ウェブアプリケーションは、エンドユーザーの場所を、ファイルの配信が可能(または不可能)な 場所のリストと照合します。 • エンドユーザーにウェブページまたはファイルへのアクセスが許可される場合、アプリケーショ ンは CloudFront 署名付き URL を作成してエンドユーザーに返します。 • エンドユーザーにウェブページまたはファイルへのアクセスが許可されない場合、ウェブアプリ ケーションは、"you are not authorized" というメッセージの URL をエンドユーザーに返します。 5. エンドユーザーにウェブページまたはファイルへのアクセスが許可される場合、エンドユーザーの ブラウザは署名付き URL を使用して CloudFront にファイルを自動的に要求します。 API Version 2014-01-31 258 Amazon CloudFront 開発者ガイド CloudFront ディストリビューション内のファイルへのアク セスを地理的場所に基づいて制限する(地理的ブロッキン グ) CloudFront とサードパーティの位置情報サービスを使用してアプリケーションレイヤからコンテンツ へのアクセスを制限することで、エンドユーザーの操作を完全にコントロールできます。アクセスをブ ロックされたエンドユーザーには、アプリケーションでエラーコードを返すのではなく意味のあるメッ セージを表示できます。また、エンドユーザーに表示するエラーメッセージをエンドユーザーの場所に 応じてカスタマイズすることもできます。 Note 国境に従った地理的リージョンでコンテンツの配信を制限しており、(個別のファイルではな く)ディストリビューションに関連するすべてのファイルの配信を制限する場合は、CloudFront 地域制限を使用することをお勧めします。詳細については、「コンテンツの地理的ディストリ ビューションの制限 (p. 63)」を参照してください。 地理的ブロッキング機能をアプリケーションに実装し、エンドユーザーの場所に応じて CloudFront ディ ストリビューション内のコンテンツへのアクセスを制限するためのプロセスを以下のタスクリストを使 用して説明します。 地理的場所に基づいて CloudFront ディストリビューション内のファイルへのアクセスを制限す るためのタスクリスト 1. 位置情報サービスのアカウントを取得します。 このセクションでは、Digital Element および MaxMind 用のサンプルコードを提供していますが、 すべての位置情報サービスがサポートされます。 2. AWS アカウントをまだ持っていない場合は作成します。詳細については、「アマゾン ウェブ サー ビスアカウントの作成 (p. 260)」を参照してください。 3. コンテンツを Amazon Simple Storage Service (S3)バケットにアップロードします。詳細につ いては、Amazon S3 に関するドキュメントを参照してください。 4. プライベートコンテンツを供給するように Amazon CloudFront と Amazon S3 を構成します。詳 細については、「CloudFront を使用してプライベートコンテンツを供給する (p. 126)」を参照して ください。 5. 以下の処理を行うようにウェブアプリケーションを記述します。 a. 各エンドユーザーリクエストの IP アドレスを位置情報サービスに送信します。 b. 位置情報サービスからの戻り値(通常は国コード)を評価し、エンドユーザーの場所がコンテ ンツの配信の対象となっている場所かどうかを判別します。 c. CloudFront コンテンツの署名付き URL を生成するか、コンテンツへのアクセスをブロックし ます。 API Version 2014-01-31 259 Amazon CloudFront 開発者ガイド アマゾン ウェブ サービスアカウントの作成 以下のコードは、Digital Element および MaxMind 用の Java、.NET、および PHP のサンプルコー ドです。該当するトピックを参照してください。 • Digital Element 用のサンプルコード (p. 260) • MaxMind 用のサンプルコード (p. 271) 別の位置情報サービスを使用している場合は、各サービスのドキュメントを参照してください。 アマゾン ウェブ サービスでは、Java、.NET、および PHP 用の SDK が用意されています。詳細につ いては、アマゾン ウェブ サービスのウェブサイトで該当するページを参照してください。 • Java 開発者センター • Windows & .NET 開発者センター • PHP 開発者センター アマゾン ウェブ サービスアカウントの作成 Abstract CloudFront を使用して地理的ブロッキングを実施する最初のステップとして、アマゾン ウェブ サービス(AWS) アカウントを作成します。 Note アカウントを作成すると、そのアカウントで AWS のすべてのサービスへのサインアップが自 動的に行われます。料金が発生するのは、お客様が使用したサービスの分のみです。 AWS アカウントを作成するには 1. http://aws.amazon.com にアクセスし、[”Create an AWS Account”]をクリックします。 2. 画面の指示に従います。 サインアップ手順の一環には、電話を受信して電話のキーパッドを用いた PIN の入力が含まれま す。 Digital Element 用のサンプルコード Abstract このサンプルコードは、エンドユーザーの IP アドレスに基づいて Digital Element から場所を取得する方法を示し ています。 このセクションのサンプルは、Digital Element を使用してエンドユーザーの IP アドレスから場所を取 得する方法を示しています。また、エンドユーザーの場所にコンテンツの配信が許可される場合に、要 求されたオブジェクトの署名付き URL を作成する方法も示しています。 すべてのサンプルコードはこのドキュメントの発行前にテストされていますが、Digital Element API の その後の変更によってサンプルコードの正確性が維持されなくなる可能性があります。最新の情報につ いては、Digital Element のドキュメントを参照してください。 該当のサンプルコードを参照してください。 API Version 2014-01-31 260 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード • Digital Element 用の Java サンプルコード (p. 261) • Digital Element 用の .NET サンプルコード (p. 265) • Digital Element 用の PHP サンプルコード (p. 268) Note コード例の中で赤の斜体で示されているテキストはプレースホルダーです。お客様の状況に合 わせてこのテキストを適切な値で置き換えてください。 Digital Element 用の Java サンプルコード Abstract この Java サンプルコードは、エンドユーザーの IP アドレスに基づいて Digital Element から場所を取得し、 CloudFront コンテンツへのアクセスを許可するかどうかを判断します。 ここに示されているコード例では、エンドユーザーの IP アドレスに関連付けられた国コードを取得し、 ユーザーの場所がディストリビューションの可能な場所の場合に、CloudFront コンテンツにユーザー がアクセスすることを許可します。この例の目的上、このプログラムは、要求されたコンテンツをオー ストラリア(国コード: AU)以外のあらゆる国に配信することが許可されています。 GetCountryCodeServlet.java GetCountryCodeServlet.java は、この記事の後半で示されている GetDigitalElementCountryCode.java を呼び出して、エンドユーザーの IP アドレスに関連付けられている国コードを Digital Element に要求 します。国コードが AU (オーストラリア)でない場合、GetCountryCodeServlet.java は SignedUrl.java を呼び出して署名付き URL を作成します。エンドユーザーはこの署名付き URL を使用して CloudFront ディストリビューション内のファイルにアクセスできます。 /* * Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ // Signed URLs for a private distribution // Note that Java supports SSL certificates only in DER format, // so you will need to convert your PEM-formatted file to DER format. // To do this, you can use openssl: // openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der -outform DER // For the encoder to work correctly, you should also add the // bouncy castle jar to your project and then add the provider.ds. import java.io.IOException; API Version 2014-01-31 261 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード import java.io.PrintWriter; import java.util.StringTokenizer; import import import import javax.servlet.ServletException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; public class GetCountryCodeServlet extends HttpServlet { private static final long serialVersionUID = 1L; final String GEOAPIURL = "Digital Element URL"; final String GEOAPITOKEN = "Digital Element user token"; final String PATHTODER = "path to .der file"; final String KEYPAIRID ="CloudFront key pair ID"; final String HTTPORHTTPS = "https"; final String CFDISTRIBUTION = "dxxxx.cloudfront.net"; final String CFPATH = "CloudFront URL for file"; // date and time that CloudFront's signed URL expires, // in Coordinated Universal Time final String EXPIRETS = "2012-11-14T22:20:00.000Z"; final String BLOCKEDCOUNTRY="AU"; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ip = null; StringTokenizer st = null; PrintWriter out = response.getWriter(); String headers = request.getHeader("X-FORWARDED-FOR"); if (headers!= null){ st = new StringTokenizer(headers,","); while (st.hasMoreTokens()) { ip = st.nextToken(); } } //Get the client's IP addr in case X-Forwarded-IP header doesn't exist if (ip == null) ip = request.getRemoteAddr(); try { GetDigitalElementCountryCode country = new GetDigitalElementCountryCode( GEOAPIURL,GEOAPITOKEN ); if ( !country.getCountry(ip).equalsIgnoreCase(BLOCKEDCOUNTRY)){ SignedUrl myApp = new SignedUrl(KEYPAIRID,PATHTODER); out.println(myApp.getSignedHash(HTTPORHTTPS,CFDISTRIBUTION,CFPATH,EX PIRETS)); }else { out.println("You cannot access this link."); } } catch (Exception e1) { API Version 2014-01-31 262 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード e1.printStackTrace(); } } } GetDigitalElementCountryCode.java GetDigitalElementCountryCode.java は、エンドユーザーの IP アドレスが含まれたリクエストを Digital Element に送信します。戻り値は国コードです。 /* * Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class GetDigitalElementCountryCode { private static String geoApiEndPoint; private static String apiToken; GetDigitalElementCountryCode(String mygeoApiEndPoint, String myapiToken){ geoApiEndPoint = mygeoApiEndPoint; apiToken = myapiToken; } public String getCountry(String enduserIP) throws Exception { String geoApiURL = "http://"+geoApiEndPoint+"?u="+apiToken+"&ip="+end userIP; DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newIn stance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse(geoApiURL); // normalize text representation doc.getDocumentElement ().normalize (); NodeList listOfPersons = doc.getElementsByTagName("response"); Element el = (Element)listOfPersons.item(0); String country = el.getAttribute("edge-two-letter-country"); API Version 2014-01-31 263 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード return country; } } SignedUrl.java SignedUrl.java は、エンドユーザーが CloudFront ディストリビューション内のファイルへのアクセス に使用できる署名付き URL を作成します。 /* * Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import import import import import java.io.FileInputStream; java.io.FileNotFoundException; java.io.IOException; java.security.Security; java.text.ParseException; import org.jets3t.service.CloudFrontService; import org.jets3t.service.CloudFrontServiceException; import org.jets3t.service.utils.ServiceUtils; public class SignedUrl { // Signed URLs for a private distribution // Note that Java supports SSL certificates only in DER format, // so you need to convert your PEM-formatted file to DER format. // To do this, you can use openssl: // openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der outform DER // For the encoder to work correctly, you should also add the // bouncy castle jar to your project and then add the provider.ds. private static String keyPairId; private static String privateKeyFilePath; SignedUrl(String mykeyPairId, String myprivateKeyFilePath){ keyPairId = mykeyPairId; privateKeyFilePath = myprivateKeyFilePath; } public String getSignedHash(String protocol, String cfDistribution, String objectUri, String expTime) throws FileNotFoundException, IOException, CloudFrontServiceException, ParseException{ API Version 2014-01-31 264 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastlePro vider()); // Convert your DER file into a byte array. byte[] derPrivateKey = ServiceUtils.readInputStreamToBytes(new FileInput Stream(privateKeyFilePath)); // Generate a "canned" signed URL to allow access to a // specific distribution and object String signedUrlCanned = CloudFrontService.signUrlCanned( protocol+ "://" + cfDistribution + "/" + objectUri, // Resource URL or Path keyPairId, // Certificate identifier, // an active trusted signer for the distribution derPrivateKey, // DER Private key data ServiceUtils.parseIso8601Date(expTime) // DateLessThan ); return signedUrlCanned; } } Digital Element 用の .NET サンプルコード Abstract この .NET サンプルコードは、エンドユーザーの IP アドレスに基づいて Digital Element から場所を取得し、 CloudFront コンテンツへのアクセスを許可するかどうかを判断します。 以下のサンプルアプリケーションでは、エンドユーザーの IP アドレスを取得し、Digital Element に IP アドレスを送信します。Digital Element は、エンドユーザーの IP アドレスに対応する国コード(XML 形式)を返します。アプリケーションは XML を解析し、Digital Element から返された値が、ブロック された国コードに一致するかどうかを評価します。エンドユーザーの国がブロックされている場合、ア プリケーションはその旨を説明するメッセージを表示します。エンドユーザーの国がブロックされてい ない場合、アプリケーションは、1 分で有効期限切れになる署名付き URL を作成し、URL に無効な文 字が含まれないよう必要な代入を実行して、ユーザーのブラウザを署名付き URL にリダイレクトしま す。 <%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht tp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <%=GetContent()%> </div> </form> </body> API Version 2014-01-31 265 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード </html> <%@ <%@ <%@ <%@ <%@ Import Import Import Import Import Namespace="System.Linq" %> Namespace="System.Xml.Linq" %> Namespace="System.Security.Cryptography" %> Namespace="System.Net" %> Namespace="System.IO" %> <script runat="server"> // Key pair ID for the CloudFront key pair private const string KEYPAIR_ID = "CloudFront key pair ID"; // Private key for the CloudFront key pair. // The value is derived from opensslkey. private const string PRIVATE_KEY = "private key"; // JSON policy statement used in the expiring URL private const string POLICY = "{{\"Statement\":[{{\"Resource\":\"{0}\",\"Con dition\":{{\"DateLessThan\":{{\"AWS:EpochTime\":{1}}}}}}}]}}"; // Digital Element user token to be passed to geolocation service call private const string USERTOKEN = "Digital Element user token"; private const string GEOAPIURL = "Digital Element URL"; // GEO IP service URL with parameters: // {0} = User Token and {1} = IP Address private const string SERVICEURL = GEOAPIURL + "?u={0}&ip={1}"; // Array of countries to block private static readonly string[] COUNTRIES_TO_BLOCK = new String[] {"US"}; private const string BLOCKED_MSG = "Your access to this content is blocked because you're visiting from '{0}'."; /// <summary> /// Returns the IP address coming from the request object. /// </summary> /// <returns>The IP address for the request.</returns> private string GetOriginIpAddress() { // .NET provides Request.UserHostAddress to get the // remote IP address, but this could be the IP address of the // last proxy in a chain, for example, an Elastic Load Balancer. // Instead, use the HTTP_X_FORWARDED_FOR header if one exists. string forwardedIpAddresses = this.Request.ServerVariables["HTTP_X_FORWAR DED_FOR"]; if (string.IsNullOrEmpty(forwardedIpAddresses)) { // Simply return the UserHostAddress. return Request.UserHostAddress; } else { // Get the last item in the list. return forwardedIpAddresses.Split(',').Last().Trim(); API Version 2014-01-31 266 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード } } /// <summary> /// This function returns the country code /// associated with the IP address in the request object. /// </summary> /// <returns>The country code for the request.</returns> private string GetCountryCodeFromIP() { var ipAddress = GetOriginIpAddress(); var serviceURL = String.Format(SERVICEURL, Server.UrlEncode(USERTOKEN), Server.UrlEncode(ipAddress)); try { var xDoc = XDocument.Load(serviceURL); var res = (from w in xDoc.Descendants("response") select w).First(); return res.Attribute("edge-two-letter-country").Value.ToUpper(); } catch(Exception ex) { // There was an error in making the web request. this.Response.Write(serviceURL + "<br><br>"); this.Response.Write(ex.Message); this.Response.End(); } return null; } /// <summary> /// This function returns a signed URL that will expire in 1 minute. /// For more information, see "Create a URL Signature Using C# and the /// .NET Framework" in the Amazon CloudFront Developer Guide: /// http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cre ateSignatureInCSharp.html /// </summary> /// <param name="resourceUrl"></param> /// <returns></returns> private string GetSignedURL(string resourceUrl) { // Compute expiration date. var endTimeSpanFromNow = new TimeSpan(0, 1, 0); var intervalEnd = (DateTime.UtcNow.Add(endTimeSpanFromNow)) - new Date Time(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var endTimestamp = (int)intervalEnd.TotalSeconds; // Timestamp must be a whole number var expires = endTimestamp.ToString(); var strPolicy = string.Format(POLICY, resourceUrl, expires); // Encrypt the policy. var bufferPolicy = Encoding.ASCII.GetBytes(strPolicy); var cryptoSHA1 = new SHA1CryptoServiceProvider(); bufferPolicy = cryptoSHA1.ComputeHash(bufferPolicy); var providerRSA = new RSACryptoServiceProvider(); providerRSA.FromXmlString(PRIVATE_KEY); var rsaFormatter = new RSAPKCS1SignatureFormatter(providerRSA); API Version 2014-01-31 267 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード rsaFormatter.SetHashAlgorithm("SHA1"); var signedPolicyHash = rsaFormatter.CreateSignature(bufferPolicy); var strSignedPolicy = System.Convert.ToBase64String(signedPolicyHash); // Build the query string with the expiration, policy signature, // and CloudFront key pair ID. var queryString = "Expires={0}&Signature={1}&Key-Pair-Id={2}"; queryString = String.Format(queryString, Server.UrlEncode(expires), Server.UrlEncode(strSignedPolicy), Server.UrlEncode(KEYPAIR_ID)); var urlString = resourceUrl + "?" + queryString; return urlString; } /// <summary> /// Return a message saying this is blocked because of your country, or /// return an image tag. /// </summary> /// <returns></returns> public string GetContent() { var country = GetCountryCodeFromIP(); if (COUNTRIES_TO_BLOCK.Contains(country)) { // The country returned from the call to the geolocation service // is listed in the array of blocked countries. return string.Format(BLOCKED_MSG, country); } else { // The country returned from the call to the geolocation service // is NOT listed in the array of blocked countries // Get a CloudFront signed URL for the content and display it. var url = GetSignedURL("CloudFront URL"); var img = "<img src='{0}' />"; return String.Format(img, url); } } </script> Digital Element 用の PHP サンプルコード Abstract この PHP コードサンプルは、エンドユーザーの IP アドレスに基づいて Digital Element から場所を取得し、CloudFront コンテンツへのアクセスを許可するかどうかを判断します。 以下のサンプルアプリケーションでは、エンドユーザーの IP アドレスを取得し、Digital Element に IP アドレスを送信します。Digital Element は、エンドユーザーの IP アドレスに対応する国コード(XML 形式)を返します。アプリケーションは XML を解析し、ブロックされた国コードを表示して、Digital Element から返された値が、ブロックされた国コードに一致するかどうかを評価します。エンドユー ザーの国がブロックされていない場合、アプリケーションは、"You are not blocked" というメッセージ を表示し、既定ポリシーを使用して 5 分で有効期限切れになる署名付き URL を作成します。次に、 URL に無効な文字が含まれないよう必要な代入を実行して、ユーザーのブラウザを署名付き URL にリ ダイレクトします。エンドユーザーの国がブロックされている場合、アプリケーションは "You are blocked" というメッセージとグラフィックを表示します。 API Version 2014-01-31 268 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード <!DOCTYPE html> <html> <head> <title>Geoblocking Test</title> </head> <body> <h1>Geoblocking Test</h1> <?php // Configure the private key (make sure this information is secure). $private_key_filename = 'path to private key'; $key_pair_id = 'CloudFront key pair ID'; /* * Configure the geoblocking parameters. The following variables * describe the two-letter country to be blocked, the * CloudFront URL for the file that you want to secure, * and the expiry time of the URL. Change these values as needed. */ $blocked_geo = 'uk'; $asset_path = 'CloudFront URL for the object'; $expires = time() + 300; // (5 minutes from now) // Configure $token $address $remote_ip $service_url the URL to the geoblocking service. = 'Digital Element user token'; = 'Digital Element URL'; = get_remote_ip_address(); = $address . '?u=' . $token . '&ip=' . $remote_ip; // Call the web service using the configured URL. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $service_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ws_response = curl_exec($ch); // Parse the response with SimpleXML and get the geoblocking value. $xml = new SimpleXMLElement($ws_response); $edge_geo = $xml->response->attributes()->{'edge-two-letter-country'}; echo '<p>The country being blocked is: ' . strtoupper($blocked_geo) . '</p>'; if ($edge_geo != $blocked_geo) { echo '<p>Your country is: ' . strtoupper($edge_geo) . '</p>'; echo '<p>You are not blocked.</p>'; $signed_url = create_signed_url($asset_path, $private_key_filename, $key_pair_id, $expires); echo '<img src="' . $signed_url . '" width="600" height="401" ' ; } else { echo '<p>Your country is: ' . strtoupper($edge_geo) . '</p>'; echo '<p>You are blocked.</p>'; $blocked_url = 'http://s3.amazonaws.com/<Amazon S3 bucket>/blocked-image.jpg'; echo '<img src="' . $blocked_url . '" alt="Access blocked" width="600" height="401" '; } API Version 2014-01-31 269 Amazon CloudFront 開発者ガイド Digital Element 用のサンプルコード // Function definitions function get_remote_ip_address() { // Check to see if an HTTP_X_FORWARDED_FOR header is present. if($_SERVER["HTTP_X_FORWARDED_FOR"]) { // If the header is present, use the last IP address. $temp_array = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $temp_ip_address = $temp_array[count($temp_array) - 1]; } else { // If the header is not present, use the // default server variable for remote address. $temp_ip_address = $_SERVER['REMOTE_ADDR']; } return $temp_ip_address; } function create_signed_url($asset_path, $private_key_filename, $key_pair_id, $expires) { // Build the policy. $canned_policy = '{"Statement":[{"Resource":"' . $asset_path . '","Condition":{"DateLessThan":{"AWS:EpochTime":'. $expires . '}}}]}'; // Sign the policy. $signature = rsa_sha1_sign($canned_policy, $private_key_filename); // Make the signature is safe to be included in a URL. $encoded_signature = url_safe_base64_encode($signature); // Combine the above into a properly formed URL name. $temp_signed_url = $asset_path . '?Expires=' . $expires . '&Signature=' . $encoded_signature . '&Key-Pair-Id=' . $key_pair_id; return $temp_signed_url; } function rsa_sha1_sign($policy, $private_key_filename) { $signature = ''; // Load the private key. $fp = fopen($private_key_filename, 'r'); $private_key = fread($fp, 8192); fclose($fp); $private_key_id = openssl_get_privatekey($private_key); API Version 2014-01-31 270 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード // Compute the signature. openssl_sign($policy, $signature, $private_key_id); // Free the key from memory. openssl_free_key($private_key_id); return $signature; } function url_safe_base64_encode($value) { $encoded = base64_encode($value); // Replace the characters that cannot be used in a URL. return str_replace(array('+', '=', '/'), array('-', '_', '~'), $encoded); } ?> </body> </html> MaxMind 用のサンプルコード Abstract このサンプルコードは、エンドユーザーの IP アドレスに基づいて MaxMind から場所を取得する方法を示していま す。 このセクションのサンプルでは、MaxMind を使用してエンドユーザーの IP アドレスから場所を取得す る方法に加えて、要求されたオブジェクトをユーザーの場所に配信できる場合に、オブジェクトの署名 付き URL を作成する方法を示します。 すべてのサンプルコードはこのドキュメントの発行前にテストされていますが、MaxMind API のその 後の変更によってサンプルコードの正確性が維持されなくなる可能性があります。最新の情報について は、MaxMind のドキュメントを参照してください。 該当のサンプルコードを参照してください。 • MaxMind 用の Java サンプルコード (p. 271) • MaxMind 用の .NET サンプルコード (p. 278) • MaxMind 用の PHP サンプルコード (p. 275) MaxMind 用の Java サンプルコード Abstract この Java サンプルコードは、エンドユーザーの IP アドレスに基づいて MaxMind から場所を取得し、CloudFront コンテンツへのアクセスを許可するかどうかを判断します。 GetCountryCodeServlet.java GetCountryCodeServlet.java は、この記事の後半で示されている GetMaxMindCountryCode.java を呼 び出して、エンドユーザーの IP アドレスに関連付けられてい国コードを MaxMind に要求します。国 コードが AU (オーストラリア)でない場合、GetCountryCodeServlet.java は SignedUrl.java を呼び出 API Version 2014-01-31 271 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード して署名付き URL を作成します。エンドユーザーはこの署名付き URL を使用して CloudFront ディス トリビューション内のファイルにアクセスできます。 /* * Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ // Signed URLs for a private distribution // Note that Java supports SSL certificates only in DER format, // so you will need to convert your PEM-formatted file to DER format. // To do this, you can use openssl: // openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der -outform DER // For the encoder to work correctly, you should also add the // bouncy castle jar to your project and then add the provider.ds. import java.io.IOException; import java.io.PrintWriter; import java.util.StringTokenizer; import import import import javax.servlet.ServletException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; public class GetCountryCodeServlet extends HttpServlet { private static final long serialVersionUID = 1L; final String GEOAPIURL = "MaxMind URL"; final String GEOAPITOKEN = "MaxMind user token"; final String PATHTODER = "path to .der file"; final String KEYPAIRID ="CloudFront key pair ID"; final String HTTPORHTTPS = "https"; final String CFDISTRIBUTION = "dxxxx.cloudfront.net"; final String CFPATH = "CloudFront URL for file"; // date and time that CloudFront's signed URL expires, // in Coordinated Universal Time final String EXPIRETS = "2012-11-14T22:20:00.000Z"; final String BLOCKEDCOUNTRY="AU"; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ip = null; StringTokenizer st = null; PrintWriter out = response.getWriter(); API Version 2014-01-31 272 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード String headers = request.getHeader("X-FORWARDED-FOR"); if (headers!= null){ st = new StringTokenizer(headers,","); while (st.hasMoreTokens()) { ip = st.nextToken(); } } //Get the client's IP addr in case X-Forwarded-IP header doesn't exist. if (ip == null) ip = request.getRemoteAddr(); try { GetMaxMindCountryCode country URL","GEOAPITOKEN"); = new GetMaxMindCountryCode("GEOAPI if ( !country.getCountry(ip).equals(BLOCKEDCOUNTRY)){ SignedUrl myApp = new SignedUrl(KEYPAIRID,PATHTODER); out.println(myApp.getSignedHash(HTTPORHTTPS,CFDISTRIBUTION,CFPATH,EX PIRETS)); }else { out.println("You cannot access this link."); } } catch (Exception e1) { e1.printStackTrace(); } } } GetMaxMindCountryCode.java GetMaxMindCountryCode.java は、エンドユーザーの IP アドレスが含まれたリクエストを MaxMind に 送信します。戻り値は国コードです。 /* * Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; API Version 2014-01-31 273 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード import java.net.URL; import java.net.URLConnection; public class GetMaxMindCountryCode { private static String geoApiEndPoint; private static String apiToken; GetMaxMindCountryCode(String mygeoApiEndPoint, String myapiToken){ geoApiEndPoint = mygeoApiEndPoint; apiToken = myapiToken; } public String getCountry(String enduserIP) throws Exception { String geoApiURL = "http://"+geoApiEndPoint+"?l="+apiToken+"&i="+enduserIP; // Call to MaxMind API. URL url = new URL(geoApiURL); URLConnection urlConn = url.openConnection(); urlConn.setUseCaches(false); InputStreamReader in = new InputStreamReader((InputStream) urlConn.getCon tent()); BufferedReader buff = new BufferedReader(in); return buff.readLine(); } } SignedUrl.java SignedUrl.java は、エンドユーザーが CloudFront ディストリビューション内のファイルへのアクセス に使用できる署名付き URL を作成します。 /* * Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import import import import import java.io.FileInputStream; java.io.FileNotFoundException; java.io.IOException; java.security.Security; java.text.ParseException; import org.jets3t.service.CloudFrontService; API Version 2014-01-31 274 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード import org.jets3t.service.CloudFrontServiceException; import org.jets3t.service.utils.ServiceUtils; public class SignedUrl { // Signed URLs for a private distribution // Note that Java supports SSL certificates only in DER format, // so you need to convert your PEM-formatted file to DER format. // To do this, you can use openssl: // openssl pkcs8 -topk8 -nocrypt -in origin.pem -inform PEM -out new.der outform DER // For the encoder to work correctly, you should also add the // bouncy castle jar to your project and then add the provider.ds. private static String keyPairId; private static String privateKeyFilePath; SignedUrl(String mykeyPairId, String myprivateKeyFilePath){ keyPairId = mykeyPairId; privateKeyFilePath = myprivateKeyFilePath; } public String getSignedHash(String protocol, String cfDistribution, String objectUri, String expTime) throws FileNotFoundException, IOException, CloudFrontServiceException, ParseException{ Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastlePro vider()); // Convert your DER file into a byte array. byte[] derPrivateKey = ServiceUtils.readInputStreamToBytes(new FileInput Stream(privateKeyFilePath)); // Generate a "canned" signed URL to allow access to a // specific distribution and object. String signedUrlCanned = CloudFrontService.signUrlCanned( protocol+ "://" + cfDistribution + "/" + objectUri, // resource URL or path keyPairId, // Certificate identifier, // an active trusted signer for the distribution derPrivateKey, // DER private key data ServiceUtils.parseIso8601Date(expTime) // DateLessThan ); return signedUrlCanned; } } MaxMind 用の PHP サンプルコード Abstract この PHP コードサンプルは、エンドユーザーの IP アドレスに基づいて MaxMind から場所を取得し、CloudFront コンテンツへのアクセスを許可するかどうかを判断します。 API Version 2014-01-31 275 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード 以下のサンプルアプリケーションでは、エンドユーザーの IP アドレスを取得し、MaxMind に IP アド レスを送信します。MaxMind は、エンドユーザーの IP アドレスに対応する国コードを返します。アプ リケーションは、ブロックされた国コードを表示して、MaxMind から返された値が、ブロックされた 国コードかどうかを評価します。エンドユーザーの国がブロックされていない場合、アプリケーション は、"You are not blocked" というメッセージを表示し、既定ポリシーを使用して 5 分で有効期限切れに なる署名付き URL を作成します。次に、URL に無効な文字が含まれないよう必要な代入を実行して、 ユーザーのブラウザを署名付き URL にリダイレクトします。エンドユーザーの国がブロックされてい る場合、アプリケーションは "You are blocked" というメッセージとグラフィックを表示します。 <!DOCTYPE html> <html> <head> <title>Geoblocking Test</title> </head> <body> <h1>Geoblocking Test</h1> <?php // Configure the private key (make sure this information is secure). $private_key_filename = 'path to private key'; $key_pair_id = 'CloudFront key pair ID'; /* * Configure the geoblocking parameters. The following variables * describe the two-letter country to be blocked, the * CloudFront URL for the file that you want to secure, * and the expiry time of the URL. Change these values as needed. */ $blocked_geo = 'gb'; $asset_path = 'CloudFront URL for the object'; $expires = time() + 300; // (5 minutes from now) // Configure $token $address $remote_ip $service_url the URL to the geolocation service. = 'MaxMind user token'; = 'MaxMind URL'; = get_remote_ip_address(); = $address . '?l=' . $token . '&i=' . $remote_ip; // Call the web service using the configured URL. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $service_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ws_response = curl_exec($ch); $edge_geo = $ws_response; echo '<p>The country being blocked is: ' . strtoupper($blocked_geo) . '</p>'; if ($edge_geo != strtoupper($blocked_geo)) { echo '<p>Your country is: ' . strtoupper($edge_geo) . '</p>'; echo '<p>You are not blocked.</p>'; $signed_url = create_signed_url($asset_path, $private_key_filename, $key_pair_id, $expires); echo '<img src="' . $signed_url . '" width="600" height="401" />' ; } else { API Version 2014-01-31 276 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード echo '<p>Your country is: ' . strtoupper($edge_geo) . '</p>'; echo '<p>You are blocked.</p>'; $blocked_url = 'http://s3.amazonaws.com/<Amazon S3 bucket>/blocked-image.jpg'; echo '<img src="' . $blocked_url . '" alt="Access blocked" width="600" height="401" />'; } // Function definitions function get_remote_ip_address() { // Check to see if an HTTP_X_FORWARDED_FOR header is present. if($_SERVER['HTTP_X_FORWARDED_FOR']) { // If the header is present, use the last IP address. $temp_array = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $temp_ip_address = $temp_array[count($temp_array) - 1]; } else { // If the header is not present, use the // default server variable for remote address. $temp_ip_address = $_SERVER['REMOTE_ADDR']; } return $temp_ip_address; } function create_signed_url($asset_path, $private_key_filename, $key_pair_id, $expires) { // Build the policy. $canned_policy = '{"Statement":[{"Resource":"' . $asset_path . '","Condition":{"DateLessThan":{"AWS:EpochTime":'. $expires . '}}}]}'; // Sign the policy. $signature = rsa_sha1_sign($canned_policy, $private_key_filename); // Make the signature contains only characters that // can be included in a URL. $encoded_signature = url_safe_base64_encode($signature); // Combine the above into a properly formed URL name $temp_signed_url = $asset_path . '?Expires=' . $expires . '&Signature=' . $encoded_signature . '&Key-Pair-Id=' . $key_pair_id; return $temp_signed_url; } function rsa_sha1_sign($policy, $private_key_filename) { $signature = ''; API Version 2014-01-31 277 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード // Load the private key. $fp = fopen($private_key_filename, 'r'); $private_key = fread($fp, 8192); fclose($fp); $private_key_id = openssl_get_privatekey($private_key); // Compute the signature. openssl_sign($policy, $signature, $private_key_id); // Free the key from memory. openssl_free_key($private_key_id); return $signature; } function url_safe_base64_encode($value) { $encoded = base64_encode($value); // Replace characters that cannot be included in a URL. return str_replace(array('+', '=', '/'), array('-', '_', '~'), $encoded); } ?> </body> </html> MaxMind 用の .NET サンプルコード Abstract この .NET 用の C# コードサンプルは、エンドユーザーの IP アドレスに基づいて MaxMind から場所を取得し、 CloudFront コンテンツへのアクセスを許可するかどうかを判断します。 以下のサンプルアプリケーションでは、エンドユーザーの IP アドレスを取得し、MaxMind に IP アド レスを送信します。MaxMind は、エンドユーザーの IP アドレスに対応する国コードを返します。次 に、アプリケーションは、Digital Element から返された値が、ブロックされた国コードに一致するかど うかを評価します。エンドユーザーの国がブロックされている場合、アプリケーションはその旨を説明 するメッセージを表示します。エンドユーザーの国がブロックされていない場合、アプリケーション は、1 分で有効期限切れになる署名付き URL を作成し、URL に無効な文字が含まれないよう必要な代 入を実行して、ユーザーのブラウザを署名付き URL にリダイレクトします。 <%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht tp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> API Version 2014-01-31 278 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード <%=GetContent()%> </div> </form> </body> </html> <%@ <%@ <%@ <%@ <%@ Import Import Import Import Import Namespace="System.Linq" %> Namespace="System.Xml.Linq" %> Namespace="System.Security.Cryptography" %> Namespace="System.Net" %> Namespace="System.IO" %> <script runat="server"> // Key pair ID for the CloudFront key pair private const string KEYPAIR_ID = "CloudFront key pair ID"; // Private key for the CloudFront key pair. // The value is derived from opensslkey. private const string PRIVATE_KEY = "private key"; // JSON policy statement used in the expiring URL private const string POLICY = "{{\"Statement\":[{{\"Resource\":\"{0}\",\"Con dition\":{{\"DateLessThan\":{{\"AWS:EpochTime\":{1}}}}}}}]}}"; // User token to be passed in to GEO IP service call private const string USERTOKEN = "user token"; // Geolocation service URL with parameters: // {0} = User Token and {1} = IP address private const string SERVICEURL = "http://geoip3.maxmind.com/a?l={0}&i={1}"; // Array of countries to block private static readonly string[] COUNTRIES_TO_BLOCK = new String[] {"US"}; private const string BLOCKED_MSG = "Your access to this content is blocked because you're visiting from '{0}'."; /// <summary> /// Returns the IP address coming from the request object. /// </summary> /// <returns>The IP address for the request.</returns> private string GetOriginIpAddress() { // .NET provides Request.UserHostAddress to get the // remote IP address, but this could be the IP address of the // last proxy in a chain, for example, an Elastic Load Balancer. // Instead use the HTTP_X_FORWARDED_FOR header if one exists. string forwardedIpAddresses = this.Request.ServerVariables["HTTP_X_FORWAR DED_FOR"]; if (string.IsNullOrEmpty(forwardedIpAddresses)) { // Return the UserHostAddress. return Request.UserHostAddress; } else API Version 2014-01-31 279 Amazon CloudFront 開発者ガイド MaxMind 用のサンプルコード { // Get the last item in the list. return forwardedIpAddresses.Split(',').Last().Trim(); } } /// <summary> /// This function returns the country code /// associated with the IP address in the request object. /// </summary> /// <returns>The country code for the request.</returns> private string GetCountryCodeFromIP() { var ipAddress = GetOriginIpAddress(); var serviceURL = String.Format(SERVICEURL, Server.UrlEncode(USERTOKEN), Server.UrlEncode(ipAddress)); try { var webReq = HttpWebRequest.Create(serviceURL); var webRes = webReq.GetResponse().GetResponseStream(); var sr = new StreamReader(webRes); var strRes = sr.ReadToEnd(); sr.Close(); return strRes.Trim().ToUpper(); } catch(Exception ex) { // There was an error in making the web request. this.Response.Write(serviceURL + "<br><br>"); this.Response.Write(ex.Message); this.Response.End(); } return null; } /// <summary> /// This function returns a signed URL that will expire /// in 1 minute. For more information, see "Create a URL Signature /// Using C# and the .NET Framework" in the Amazon CloudFront Developer Guide: /// http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cre ateSignatureInCSharp.html /// </summary> /// <param name="resourceUrl"></param> /// <returns></returns> private string GetSignedURL(string resourceUrl) { // Compute expiration date. var endTimeSpanFromNow = new TimeSpan(0, 1, 0); var intervalEnd = (DateTime.UtcNow.Add(endTimeSpanFromNow)) - new Date Time(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var endTimestamp = (int)intervalEnd.TotalSeconds; // Timestamp must be a whole number var expires = endTimestamp.ToString(); var strPolicy = string.Format(POLICY, resourceUrl, expires); // Encrypt the policy. API Version 2014-01-31 280 Amazon CloudFront 開発者ガイド よくある質問 var bufferPolicy = Encoding.ASCII.GetBytes(strPolicy); var cryptoSHA1 = new SHA1CryptoServiceProvider(); bufferPolicy = cryptoSHA1.ComputeHash(bufferPolicy); var providerRSA = new RSACryptoServiceProvider(); providerRSA.FromXmlString(PRIVATE_KEY); var rsaFormatter = new RSAPKCS1SignatureFormatter(providerRSA); rsaFormatter.SetHashAlgorithm("SHA1"); var signedPolicyHash = rsaFormatter.CreateSignature(bufferPolicy); var strSignedPolicy = System.Convert.ToBase64String(signedPolicyHash); // Build the query string with the expiration, policy signature, // and CloudFront key pair ID. var queryString = "Expires={0}&Signature={1}&Key-Pair-Id={2}"; queryString = String.Format(queryString, Server.UrlEncode(expires), Server.UrlEncode(strSignedPolicy), Server.UrlEncode(KEYPAIR_ID)); var urlString = resourceUrl + "?" + queryString; return urlString; } /// <summary> /// Return a message saying this is blocked because of your location, /// or return an image tag. /// </summary> /// <returns></returns> public string GetContent() { var country = GetCountryCodeFromIP(); if (COUNTRIES_TO_BLOCK.Contains(country)) { // The country returned from the call to the geolocation service // is listed in the array of blocked countries. return string.Format(BLOCKED_MSG, country); } else { // The country returned from the call to the geolocation service // is NOT listed in the array of blocked countries // Get a signed URL for the content and display it. var url = GetSignedURL("CloudFront URL"); var img = "<img src='{0}' />"; return String.Format(img, url); } } </script> よくある質問 Abstract 地理的ブロッキングに関して、よくある質問で取り上げられる一般的な問題について説明します。 ウェブサイトを訪れたエンドユーザーの正しい IP アドレスを確実に取り込むことができる方法を教え てください。 ウェブサイトを訪れたエンドユーザーの IP アドレスを取得するには、さまざまな方法を使用できます。 考えられる 2 つの方法を以下に示します。 API Version 2014-01-31 281 Amazon CloudFront 開発者ガイド その他のサービスおよびドキュメント • ウェブサーバーがインターネットにロードバランサー経由で接続されていない場合、ウェブサーバー 変数を使用してリモート IP アドレスを取得できます。ただし、この IP アドレスは常にエンドユー ザーの IP アドレスであるとは限りません。エンドユーザーのインターネットへの接続方法によって は、プロキシサーバーの IP アドレスである可能性もあります。 • ウェブサーバーがインターネットにロードバランサー経由で接続されている場合、ウェブサーバー変 数には、エンドユーザーの IP アドレスではなく、ロードバランサーの IP アドレスが含まれる可能性 があります。この構成では、X-Forwarded-For http ヘッダーに含まれる最後の IP アドレスを使用 することをお勧めします。通常、このヘッダーには複数の IP アドレスが含まれており、そのほとん どはプロキシまたはロードバランサーの IP アドレスです。ユーザーの地理的場所に関連付けられた 可能性が最も高い IP アドレスが、リストの最後の IP アドレスです。 ウェブサーバーがロードバランサーに接続されていない場合は、IP アドレスのスプーフィングを回避 するために、X-Forwarded-For ヘッダーではなくウェブサーバー変数を使用することをお勧めしま す。このドキュメントのサンプルコードでは、X-Forwarded-For ヘッダーがある場合、そのヘッダー を使用します。エンドユーザーの IP アドレスを取得するのにこの方法を使用ない場合は、サンプルコー ドを編集することができます。 サードパーティの位置情報サービスを使用して CloudFront 内のコンテンツへのアクセスを制限できま すか? はい。サードパーティサービスの API を呼び出すにはサードパーティサービスのアカウントが必要で す。また、それに応じてサンプルコードを変更する必要があります。 このソリューションのコストはいくらですか? サードパーティの位置情報サービスの使用コストは、使用するサービスプロバイダーによって異なりま す。CloudFront の現在の使用料金については、「Amazon CloudFront 料金表」のページを参照してく ださい。CloudFront のプライベートコンテンツ機能を使用することに対して、追加の CloudFront 料金 は発生しません。 国以外の場所情報を使用して、コンテンツへのアクセスをブロックすることはできますか? 使用する位置情報サービスで国コード以外の情報が提供される場合、アプリケーションでその情報を使 用して、エンドユーザーにコンテンツを配信できるかどうかを判別できます。次に、このチュートリア ル、または「Amazon CloudFront 開発者ガイド」の「署名付き URL を使用したプライベートコンテン ツの供給」で説明されているとおりに、アプリケーションで CloudFront 署名付き URL を生成できま す。 エンドユーザーに関する正しい情報がサードパーティのサービスから返されない場合はどのようにすれ ばよいでしょうか? サードパーティの位置情報サービスで提供されている API を正しく呼び出していることと、エンドユー ザーの正しい IP アドレスを使用していることを確認します。サードパーティのサービスに関する問題、 またはサービスから受け取ったデータの正確性に関する問題が解消されない場合は、サービス提供業者 に直接お問い合わせください。 その他のサービスおよびドキュメント Abstract 位置情報サービスと CloudFront を使用して作業するときに役に立つ追加のリソースを列挙します。 Digital Element のサービスおよびドキュメント Digital Element のサービスについては、Digital Element のウェブサイトを参照してください。 API Version 2014-01-31 282 Amazon CloudFront 開発者ガイド その他のサービスおよびドキュメント Digital Element のサービスに関するドキュメントは、Digital Element アカウントを持っているユーザー にのみ公開されます。 MaxMind のサービスおよびドキュメント MaxMind は、さまざまな位置情報サービス、および以下のサービスを含む各種ウェブサービスを提供 します。 • MaxMind GeoIP Omni ウェブサービス(http://www.maxmind.com/app/web_services_omni) • MaxMind JavaScript ウェブサービス(http://www.maxmind.com/app/javascript) • 他の MaxMind ウェブサービス(http://www.maxmind.com/app/web_services) 各 MaxMind API のウェブディストリビューションには、ドキュメントとサンプルプログラムが含まれ ます。 詳細については、MaxMind ウェブサイトの「Web Services」を参照してください。 アマゾン ウェブ サービスのドキュメント • CloudFront (http://aws.amazon.com/documentation/cloudfront) • Amazon S3 (http://aws.amazon.com/documentation/s3/) API Version 2014-01-31 283 Amazon CloudFront 開発者ガイド CloudFront および Adobe Flash Player を使用したオンデマ ンドビデオストリーミング CloudFront および Adobe Flash Player を使用した オンデマンドビデオストリーミング Abstract Adobe Flash Player メディアプレーヤーとメディアファイルの両方を提供して、CloudFront でオンデマンド動画 ファイルをストリーミングする方法について説明します。 CloudFront を使用してメディアファイルのストリーミングを行う場合、メディアファイルを提供する とともに、そのメディアファイルをエンドユーザーが再生するためのメディアプレーヤーを提供しま す。Adobe Flash Player を使用して、CloudFront でメディアファイルのストリーミングを行うには、 以下の各トピックの手順を実行します。 1. Amazon S3 バケットを作成する (p. 284) 2. 3. 4. 5. CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 (p. 285) Adobe Flash Builder を使用して Flash プロジェクトを作成する (p. 286) メディアファイルと Flash Builder ファイルを Amazon S3 バケットにアップロードする (p. 287) メディアファイルを再生する (p. 288) このチュートリアルでは、Adobe Flash Player を使用してビデオのストリーミングを行うのに必要な ファイルを、Adobe Flash Builder バージョン 4.6 を使用して生成します。Flash Builder の詳細につい ては、Adobe ウェブサイトの「Flash Builder」ページを参照してください。Adobe Flash Builder の無 料トライアル版のダウンロードについては、ダウンロードセンター/Adobe Flash Builder 4.6 のページ を参照してください。 Flash Player でサポートされるコーデックのリストについては、Adobe ウェブサイトの「サポートされ るコーデック | Flash Player」ページを参照してください。 CloudFront を使用してメディアをストリーミングする方法については、「RTMP ディストリビューショ ンの使用 (p. 67)」を参照してください。 Amazon S3 バケットを作成する メディアファイルとメディアプレーヤーファイルは、同じ Amazon S3 バケットまたは別々のバケット にアップロードできます。このチュートリアルでは、メディアファイルと Flash Player メディアプレー ヤーファイルの両方に対して 1 つのバケットを作成します。これらのファイルは、このプロセスの後半 で Adobe Flash Player ファイルを作成した後にアップロードされます。 Amazon S3 バケットを作成するには 1. 2. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/)を開きます。 Amazon S3 コンソールで、[Create Bucket] をクリックします。 3. [Create Bucket] ダイアログに、バケット名を入力します。 Important バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもので なければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」 の「バケットの制約と制限」を参照してください。 API Version 2014-01-31 284 Amazon CloudFront 開発者ガイド CloudFront のウェブディストリビューションと RTMP ディ ストリビューションの作成 4. 5. バケットのリージョンを選択します。デフォルトでは、Amazon S3 は米国スタンダードリージョ ンにバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規制 要件に対応するために、最寄りのリージョンを選択してください。 [Create] をクリックします。 CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 メディアファイルのストリーミングを行うように CloudFront を構成するには、CloudFront RTMP ディ ストリビューションが必要です。このチュートリアルでは、Adobe Flash Builder で作成される .hlml ファイルにアクセスするための CloudFront ウェブディストリビューションも作成します。以下の 2 つ の手順を実行します。 CloudFront ウェブディストリビューションを作成するには 1. 2. 3. Amazon CloudFront コンソール(https://console.aws.amazon.com/cloudfront/)を開きます。 [Create Distribution] をクリックします。 [Create Distribution Wizard] の最初のページで、デフォルトの選択である [Web] をそのまま選択 し、[Continue] をクリックします。 4. ウィザードの 2 番目のページで、[Origin Domain Name] フィールドをクリックし、「Amazon S3 バケットを作成するには (p. 284)」の手順で作成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名の最初の数文字を入力することでリストをフィルタ処 理できます。 5. 残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] をクリックしま す。 6. CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。 CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。(ドメイン名は、選択されたディストリビューションの [General] タブ にも表示されます)。 CloudFront RTMP ディストリビューションを作成するには 1. 2. CloudFront コンソールで [ Create Distribution] をクリックします。 [Create Distribution Wizard] で、[RTMP] をクリックし、[Continue] をクリックします。 API Version 2014-01-31 285 Amazon CloudFront 開発者ガイド Adobe Flash Builder を使用して Flash プロジェクトを作成 する 3. ウィザードの 2 番目のページで、[Origin Domain Name] フィールドをクリックし、「Amazon S3 バケットを作成するには (p. 284)」の手順で作成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名の最初の数文字を入力することでリストをフィルタ処 理できます。 4. [Create Distribution] ページの残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] をクリックします。 CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。 5. CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [General] タブに も表示されます。 Adobe Flash Builder を使用して Flash プロジェクト を作成する Adobe Flash Builder を使用して Flash プロジェクトを自動的に作成できます。このプロジェクトには、 Adobe Flash を使用してメディアファイルを再生するのに必要なすべてのファイルが含まれます。 Adobe Flash Builder を使用して Flash プロジェクトを作成するには 1. 2. 3. Adobe Flash Builder を開始します。 Flash Builder の [File] メニューで、[New] > [Flex Project] をクリックします。 以下の値を入力します。 • Project name: プロジェクトの名前を入力します(例: [CloudFrontStreaming])。 • Folder: このプロジェクトのファイルの保存場所を指定します。デフォルトの場所を使用しない 場合は、[Use default location] チェックボックスのチェックを外して、別の場所を選択します。 場所を書き留めておきます。この場所をプロセスの後半で使用します。 • Application type: デフォルト値の [Web] を受け入れます。 • Flex SDK version: デフォルト値の [Use default SDK] を受け入れます。 4. プロジェクトを作成するには、[Finish] をクリックします。 5. 6. Flash Builder がプロジェクトを作成すると、そのプロジェクトの名前の新しいタブが Flash Builder のユーザーインターフェイスに表示されます。[<project-name>] タブの [Source] ボタンを選択する と、[Source] ページに数行の XML コードが表示されます。 [Source] ページでデフォルトの XML コードを削除します。 以下の XML コードをコピーして、Adobe Flash Builder の空白の [Source] ページに貼り付けます。 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" min Height="600"> <fx:Declarations> <!-- Place non-visual elements here, for example, services and value objects --> </fx:Declarations> <fx:Script> <![CDATA[ API Version 2014-01-31 286 Amazon CloudFront 開発者ガイド メディアファイルと Flash Builder ファイルを Amazon S3 バケットにアップロードする import mx.events.FlexEvent; import org.osmf.net.StreamingURLResource; import org.osmf.net.FMSURL; protected function vp_preinitializeHandler(event:FlexEvent): void { var myURL:StreamingURLResource = new StreamingURLResource("rtmp://RT MP-DISTRIBUTION-DOMAIN-NAME/cfx/st/mp4:VIDEO-FILE-NAME-WITHOUT-EXTENSION"); myURL.urlIncludesFMSApplicationInstance = true; myVideoPlayer.source = myURL; } ]]> </fx:Script> <s:VideoPlayer id="myVideoPlayer" autoPlay="true" preinitialize="vp_prein itializeHandler(event)" x="32" y="52"/> </s:Application> 7. [Source] ページに貼り付けた XML コードで、以下の値を置き換えます。 • RTMP-DISTRIBUTION-DOMAIN-NAME を RTMP ディストリビューションの CloudFront ドメイ ン名で置き換えます(例: s5c39gqb8ow64r.cloudfront.net)。 • VIDEO-FILE-NAME-WITHOUT-EXTENSION をビデオファイルの名前で置き換えます。ただし、 ファイル名拡張子は除外します。例えば、ビデオの名前が my-vacation.mp4 の場合、 「my-vacation」とだけ入力します。 8. 変更を保存します。 9. Flash Builder の [Project] メニューで、[Export Release Buildt] をクリックします。 10. [Export Release Build] ダイアログボックスで、すべてのデフォルト値を受け入れて、[Finish] をク リックします。 Flash Builder は、プロジェクトのファイルを作成し、ステップ 3 で指定された場所にファイルを 保存します。 メディアファイルと Flash Builder ファイルを Amazon S3 バケットにアップロードする Adobe Flash Builder を使用して、メディアファイルのストリーミングを行うためのファイルを生成す る場合、メディアファイルと Flash Builder ファイルを同じ Amazon S3 バケットにアップロードしま す。 メディアファイルと Flash Builder ファイルを Amazon S3 バケットにアップロードするには 1. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/)を開きます。 2. 3. [Buckets] ペインで、バケットを選択し、[Upload] をクリックします。 [Upload – Select Files] ページで、[Add Files] をクリックし、以下のファイルを追加します。 • メディアファイル • 「Adobe Flash Builder を使用して Flash プロジェクトを作成するには (p. 286)」の手順を実行し たときに Flash Builder が生成したファイル。bin-release ディレクトリ内のファイルのみを アップロードします。bin-release/history サブディレクトリのファイルは除外できます。 API Version 2014-01-31 287 Amazon CloudFront 開発者ガイド メディアファイルを再生する 4. 前のステップで追加したファイルにパブリックの読み取り許可を付与します。 a. b. c. 5. [Set Details] をクリックします。 [Set Details] ページで、[Set Permissions] をクリックします。 [Set Permissions] ページで、[Make everything public] をクリックします。 [Start Upload] をクリックします。 メディアファイルを再生する メディアファイルを再生するには、Flash Builder でプロジェクト用に作成され、Amazon S3 バケット にアップロードされた HTML ファイルを表示します。 メディアファイルを再生するには 1. 以下の各値を連結することで、Flash Builder でプロジェクト用に作成された HTML ファイルの CloudFront URL を入力します。 http://domain-name-for-your-CloudFront-distribution/HTML-file-name 以下に例を示します。 http://d111111abcdef8.cloudfront.net/CloudFrontStreaming.html 2. ビデオプレーヤーで、矢印ボタンをクリックします。 ビデオの再生が開始されます。 API Version 2014-01-31 288 Amazon CloudFront 開発者ガイド CloudFront、および Adobe Flash 向け Flowplayer を使用し たオンデマンドビデオストリーミング CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミング Abstract Adobe Flash 用の Flowplayer メディアプレーヤーとメディアファイルの両方を提供して、CloudFront でオンデマ ンド動画ファイルをストリーミングする方法について説明します。 CloudFront を使用してメディアファイルのストリーミングを行う場合、メディアファイルを提供する とともに、そのメディアファイルをエンドユーザーが再生するためのメディアプレーヤーを提供しま す。Adobe Flash 向け Flowplayer メディアプレーヤーを使用して CloudFront でメディアファイルのス トリーミングを行うには、以下の各トピックの手順を実行します。 1. メディアファイルと Flowplayer ファイルを Amazon S3 バケットにアップロードする (p. 289) 2. 3. CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 (p. 291) HTML ページにビデオを埋め込む (p. 292) Note CloudFront および Adobe Flash 向け Flowplayer を使用してビデオのストリーミングを行うに は、ユーザーがブラウザで Javascript を有効にする必要があります。 このチュートリアルは、Adobe Flash 向け Flowplayer バージョン 3.2.12 に基づきます。Flowplayer Flash の詳細については、Flowplayer Flash のウェブサイトを参照してください。Flowplayer Flash で サポートされるビデオ形式のリストについては、Flowplayer 開発環境に関する Flowplayer 開発者ドキュ メントでビデオ形式に関するトピックを参照してください。 Note Flowplayer メディアプレーヤーの HTML 5 バージョンがリリースされました。以下の手順は、 Flowplayer Flash でのみ機能します。Flowplayer HTML5 では機能しません。 CloudFront を使用してメディアをストリーミングする方法については、「RTMP ディストリビューショ ンの使用 (p. 67)」を参照してください。 メディアファイルと Flowplayer ファイルを Amazon S3 バケットにアップロードする メディアファイルとメディアプレーヤーファイルは、同じ Amazon S3 バケットまたは別々のバケット にアップロードできます。このチュートリアルでは、.mp4 メディアファイルと Flowplayer メディアプ レーヤーファイルを同じバケットにアップロードします。 メディアファイルと Flowplayer ファイルを Amazon S3 バケットにアップロードするには 1. 以下のファイルを Flowplayer のウェブサイトからダウンロードします。 • Flowplayer メディアプレーヤー。Flowplayer をダウンロードした後、.zip ファイルの内容を展開 します。 • flowplayer.rtmp-3.2.10.swf。このプラグインによって、Flowplayer は RTMP プロトコルを使用 してビデオのストリーミングを行うことができます。このファイルは、Flowplayer ウェブサイト の「RTMP」ページで入手できます。 API Version 2014-01-31 289 Amazon CloudFront 開発者ガイド メディアファイルと Flowplayer ファイルを Amazon S3 バ ケットにアップロードする 2. 3. 4. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/)を開きます。 Amazon S3 コンソールで、[Create Bucket] をクリックします。 [Create Bucket] ダイアログに、バケット名を入力します。 Important バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもので なければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」 の「バケットの制約と制限」を参照してください。 5. バケットのリージョンを選択します。デフォルトでは、Amazon S3 は米国スタンダードリージョ ンにバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規制 要件に対応するために、最寄りのリージョンを選択してください。 6. 7. 8. [Create] をクリックします。 [Buckets] ペインでバケットを選択し、[Upload] をクリックします。 [Upload – Select Files] ページで、[Add Files] をクリックし、以下のファイルを追加します(ファ イルの Flowplayer バージョン番号が異なる場合があります)。 • • • • • 9. flowplayer.controls-3.2.12.swf flowplayer-3.2.11.min.js flowplayer-3.2.12.swf flowplayer.rtmp-3.2.10.swf .mp4 形式のメディアファイル 前のステップで追加したファイルにパブリックの読み取り許可を付与します。 a. [Set Details] をクリックします。 b. c. [Set Details] ページで、[Set Permissions] をクリックします。 [Set Permissions] ページで、[Make everything public] をクリックします。 10. [Start Upload] をクリックします。 API Version 2014-01-31 290 Amazon CloudFront 開発者ガイド CloudFront のウェブディストリビューションと RTMP ディ ストリビューションの作成 CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 メディアファイルのストリーミングを行うように CloudFront を構成するには、Flowplayer ファイル用 の CloudFront ウェブディストリビューションと、メディアファイル用の RTMP ディストリビューショ ンが必要です。以下の 2 つの手順を実行し、ウェブディストリビューションと RTMP ディストリビュー ションを作成します。 Flowplayer ファイル用の CloudFront ウェブディストリビューションを作成するには 1. Amazon CloudFront コンソール(https://console.aws.amazon.com/cloudfront/)を開きます。 2. 3. [Create Distribution] をクリックします。 [Create Distribution Wizard] の最初のページで、デフォルトの選択である [Web] をそのまま選択 し、[Continue] をクリックします。 4. ウィザードの 2 番目のページで、[Origin Domain Name] フィールドをクリックし、「メディアファ イルと Flowplayer ファイルを Amazon S3 バケットにアップロードするには (p. 289)」の手順で作 成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名 の最初の数文字を入力することでリストをフィルタ処理できます。 残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] をクリックしま す。 CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。 5. 6. CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。(ドメイン名は、選択されたディストリビューションの [General] タブ にも表示されます)。 メディアファイル用の CloudFront RTMP ディストリビューションを作成するには 1. CloudFront コンソールで [ Create Distribution] をクリックします。 2. 3. [Create Distribution Wizard] で、[RTMP] をクリックし、[Continue] をクリックします。 ウィザードの 2 番目のページで、[Origin Domain Name] フィールドをクリックし、「メディアファ イルと Flowplayer ファイルを Amazon S3 バケットにアップロードするには (p. 289)」の手順で作 成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名 の最初の数文字を入力することでリストをフィルタ処理できます。 [Create Distribution] ページの残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] をクリックします。 4. API Version 2014-01-31 291 Amazon CloudFront 開発者ガイド HTML ページにビデオを埋め込む 5. CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。 CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [General] タブに も表示されます。 HTML ページにビデオを埋め込む 次のサンプル HTML ファイルは、「CloudFront のウェブディストリビューションと RTMP ディストリ ビューションの作成 (p. 291)」で作成したウェブディストリビューションと RTMP ディストリビューショ ンを使用して、ビデオのストリーミングを行う方法を示しています。このサンプルを使用してビデオの ストリーミングを行うには、以下のステップを実行します。 1. 2. 以下の HTML コードをコピーして、テキストエディターに貼り付けます。 HTML ファイル内のコメントを確認し、以下のプレースホルダーを適用可能な値で置き換えます。 • WEB-DISTRIBUTION-DOMAIN-NAME • VIDEO-FILE-NAME • RTMP-DISTRIBUTION-DOMAIN-NAME 3. .html ファイル名拡張子を付けてファイルを保存します(例: flowplayer-example.html)。 4. ウェブブラウザで .html ファイルを開き、ビデオを再生します。 <HTML> <HEAD> <TITLE>Amazon CloudFront Streaming with Flowplayer</TITLE> </HEAD> <BODY> <H1>This video is streamed by CloudFront and played in Flowplayer.</H1> <!-- This HTML file plays an MP4 media file using Flowplayer. Replace all instances of WEB-DISTRIBUTION-DOMAIN-NAME with the domain name of your CloudFront web distribution, for example, d111111abcdef8.cloudfront.net (begins with "d"). Update the version number that appears in the flowplayer-version filenames with the version number of the files that you downloaded from the Flowplayer website. The files may not have the same version number. Ensure that URLs don't contain any spaces. --> <!-- Call the Flowplayer JavaScript file. --> <script src="http://WEB-DISTRIBUTION-DOMAIN-NAME/flowplayer3.2.11.min.js"></script> <!-- Style section. Specify the attributes of the player such as height, width, color, and so on. API Version 2014-01-31 292 Amazon CloudFront 開発者ガイド HTML ページにビデオを埋め込む --> <style> a.rtmp { display:block; width:720px; height:480px; margin:25px 0; text-align:center; background-color:black; } </style> <!-- Replace VIDEO-FILE-NAME with the name of your .mp4 video file, excluding the .mp4 filename extension. For example, if you uploaded a file called my-vacation-video.mp4, enter my-vacation-video. If you're streaming an .flv file, use the following format: <a class="rtmp" href="VIDEO-FILE-NAME"/> --> <a class="rtmp" href="mp4:VIDEO-FILE-NAME"/> <script type="text/javascript"> $f("a.rtmp", "http://WEB-DISTRIBUTION-DOMAIN-NAME/flowplayer-3.2.12.swf", { // Configure Flowplayer to use the RTMP plugin for streaming. clip: { provider: 'rtmp' }, // Specify the location of the RTMP plugin. plugins: { rtmp: { url: 'http://WEB-DISTRIBUTION-DOMAIN-NAME/flowplayer.rtmp-3.2.10.swf', // Replace RTMP-DISTRIBUTION-DOMAIN-NAME with the domain name of your // CloudFront RTMP distribution, for example, s5c39gqb8ow64r.cloud front.net. netConnectionUrl: 'rtmp://RTMP-DISTRIBUTION-DOMAIN-NAME/cfx/st' } } }); </script> </BODY> </HTML> API Version 2014-01-31 293 Amazon CloudFront 開発者ガイド CloudFront および JW Player を使用したオンデマンドビデ オストリーミング CloudFront および JW Player を使用したオンデマ ンドビデオストリーミング Abstract JW メディアプレーヤーとメディアファイルの両方を提供して、CloudFront でオンデマンド動画ファイルをスト リーミングする方法について説明します。 CloudFront を使用してメディアファイルのストリーミングを行う場合、メディアファイルを提供する とともに、そのメディアファイルをエンドユーザーが再生するためのメディアプレーヤーを提供しま す。JW Player メディアプレーヤーを使用して CloudFront でメディアファイルのストリーミングを行 うには、以下の各トピックの手順を実行します。 1. メディアファイルと JW Player ファイルを Amazon S3 バケットにアップロードする (p. 294) 2. 3. 4. CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 (p. 295) ウェブページにビデオを埋め込む (p. 296) HTML ファイルをアップロードしてビデオを再生する (p. 298) このチュートリアルは JW Player バージョン 6.1 の無料エディションに基づきます。JW Player の詳細 については、JW Player のウェブサイトを参照してください。JW Player でサポートされるビデオ形式 については、JW Player の「Features」ページを参照してください。 CloudFront を使用してメディアをストリーミングする方法については、「RTMP ディストリビューショ ンの使用 (p. 67)」を参照してください。 メディアファイルと JW Player ファイルを Amazon S3 バケットにアップロードする メディアファイルとメディアプレーヤーファイルは、同じ Amazon S3 バケットまたは別々のバケット にアップロードできます。このチュートリアルでは、.mp4 または .flv メディアファイルと、JW Player メディアプレーヤーファイルを同じバケットにアップロードします。 メディアファイルと JW Player ファイルを Amazon S3 バケットにアップロードするには 1. JW Player メディアプレーヤーのファイルがまだない場合は、JW Player ウェブサイトの「Features」 ページからプレーヤーをダウンロードします。次に、.zip ファイルの内容を展開します。 2. AWS マネジメントコンソールにサインインして Amazon S3 コンソール (https://console.aws.amazon.com/s3/)を開きます。 Amazon S3 コンソールで、[Create Bucket] をクリックします。 [Create Bucket] ダイアログに、バケット名を入力します。 3. 4. Important バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもので なければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」 の「バケットの制約と制限」を参照してください。 5. バケットのリージョンを選択します。デフォルトでは、Amazon S3 は米国スタンダードリージョ ンにバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規制 要件に対応するために、最寄りのリージョンを選択してください。 6. [Create] をクリックします。 API Version 2014-01-31 294 Amazon CloudFront 開発者ガイド CloudFront のウェブディストリビューションと RTMP ディ ストリビューションの作成 7. 8. [Buckets] ペインでバケットを選択し、[Upload] をクリックします。 [Upload – Select Files] ページで、[Add Files] をクリックし、以下のファイルを追加します。 • jwplayer.flash.swf • jwplayer.html5.js • jwplayer.js • .mp4 または.flv メディアファイル 9. 前のステップで追加したファイルにパブリックの読み取り許可を付与します。 a. b. c. [Set Details] をクリックします。 [Set Details] ページで、[Set Permissions] をクリックします。 [Set Permissions] ページで、[Make everything public] をクリックします。 10. [Start Upload] をクリックします。 CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 メディアファイルのストリーミングを行うように CloudFront を構成するには、JW Player ファイルお よび HTML ファイル用の CloudFront ウェブディストリビューションと、メディアファイル用の RTMP ディストリビューションが必要です。以下の 2 つの手順を実行し、ウェブディストリビューションと RTMP ディストリビューションを作成します。 JW Player ファイル用の CloudFront ウェブディストリビューションを作成するには 1. Amazon CloudFront コンソール(https://console.aws.amazon.com/cloudfront/)を開きます。 2. 3. [Create Distribution] をクリックします。 [Create Distribution Wizard] の最初のページで、デフォルトの選択である [Web] をそのまま選択 し、[Continue] をクリックします。 API Version 2014-01-31 295 Amazon CloudFront 開発者ガイド ウェブページにビデオを埋め込む 4. 5. 6. ウィザードの 2 番目のページで、[Origin Domain Name] フィールドをクリックし、「メディアファ イルと JW Player ファイルを Amazon S3 バケットにアップロードするには (p. 294)」の手順で作成 した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名の 最初の数文字を入力することでリストをフィルタ処理できます。 残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] をクリックしま す。 CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。 CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [Distribution Settings] ページにも表示されます。 メディアファイル用の CloudFront RTMP ディストリビューションを作成するには 1. 2. 3. 4. 5. CloudFront コンソールで [ Create Distribution] をクリックします。 [Create Distribution Wizard] で、[RTMP] をクリックし、[Continue] をクリックします。 ウィザードの 2 番目のページで、[Origin Domain Name] フィールドをクリックし、「メディアファ イルと JW Player ファイルを Amazon S3 バケットにアップロードするには (p. 294)」の手順で作成 した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名の 最初の数文字を入力することでリストをフィルタ処理できます。 [Create Distribution] ページの残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] をクリックします。 CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値 が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。 CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビューショ ンの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [Distribution Settings] ページにも表示されます。 ウェブページにビデオを埋め込む 次の例は、「CloudFront のウェブディストリビューションと RTMP ディストリビューションの作 成 (p. 295)」で作成したウェブディストリビューションと RTMP ディストリビューションを使用して、 ウェブページにビデオを埋め込む方法を示しています。 API Version 2014-01-31 296 Amazon CloudFront 開発者ガイド ウェブページにビデオを埋め込む Note JW Player セットアップウィザードを使用して、HTML ファイルに追加するコードを取得する こともできます。詳細については、JW Player ウェブサイトの「Setup Wizard」ページを参照 してください。 以下のステップを実行します。 1. 以下の HTML コードをコピーして、テキストエディターに貼り付けます。 2. HTML ファイル内のコメントを確認し、以下のプレースホルダーを適用可能な値で置き換えます。 • WEB-DISTRIBUTION-DOMAIN-NAME • RTMP-DISTRIBUTION-DOMAIN-NAME • VIDEO-FILE-NAME 3. .html ファイル名拡張子を付けてファイルを保存します(例: jwplayer-example.html)。 <HTML> <HEAD> <TITLE>Amazon CloudFront Streaming with JW Player 6</TITLE> <!-- Call the JW Player JavaScript file, jwplayer.js. Replace WEB-DISTRIBUTION-DOMAIN-NAME with the domain name of your CloudFront web distribution, for example, d1234.cloudfront.net (begins with "d"). This causes a browser to download the JW Player file before streaming begins. --> <script type='text/javascript' src='https://WEB-DISTRIBUTION-DOMAIN-NAME/jwplay er.js'></script> </HEAD> <BODY> <H1>This video is streamed by CloudFront and played by JW Player 6.</H1> <!-- Replace RTMP-DISTRIBUTION-DOMAIN-NAME with the domain name of your RTMP distribution, for example, s5678.cloudfront.net (begins with "s"). Replace VIDEO-FILE-NAME with the name of your .mp4 or .flv video file, including the .mp4 or .flv filename extension. For example, if you uploaded my-vacation.mp4, enter my-vacation.mp4. --> <div id='mediaplayer'></div> <script type="text/javascript"> jwplayer('mediaplayer').setup({ file: "rtmp://RTMP-DISTRIBUTION-DOMAIN-NAME/cfx/st/VIDEO-FILE-NAME", width: "720", height: "480" }); </script> </BODY> </HTML> API Version 2014-01-31 297 Amazon CloudFront 開発者ガイド HTML ファイルをアップロードしてビデオを再生する HTML ファイルをアップロードしてビデオを再生す る 「ウェブページにビデオを埋め込む (p. 296)」で作成した HTML ファイルを使用してビデオを再生する には、ファイルを Amazon S3 バケットにアップロードし、CloudFront ディストリビューションの URL を使用します。 HTML ファイルをアップロードしてビデオを再生するには 1. Amazon S3 コンソール(https://console.aws.amazon.com/s3/)を開きます。 2. 3. 4. バケットを選択し、[Upload] をクリックします。 [Upload – Select Files] ページで、[Add Files] をクリックし、HTML ファイルを追加します。 前のステップで追加した HTML ファイルにパブリックの読み取り許可を付与します。 5. 6. a. b. [Set Details] をクリックします。 [Set Details] ページで、[Set Permissions] をクリックします。 c. [Set Permissions] ページで、[Make everything public] をクリックします。 [Start Upload] をクリックします。 ビデオを再生するには、ウェブブラウザで次の URL を入力します。 http://domain name of your CloudFront web distribution/your HTML file name API Version 2014-01-31 298 Amazon CloudFront 開発者ガイド Amazon CloudFront の追加ドキュメント Amazon CloudFront リソース Abstract Amazon CloudFront を使って作業する際に役立つ追加のリソースを列挙します。 CloudFront は、使い方は簡単ですが、機能は豊富です。ここに列挙されているリソースは CloudFront について理解を深めるのに役立ちます。 Topics • Amazon CloudFront の追加ドキュメント (p. 299) • サポート情報 (p. 300) • CloudFront 開発者用ツールと SDK (p. 300) • CloudFront ログ作成の使用 (p. 300) • Amazon Web Services Blog によるその他のヒント (p. 300) • オブジェクトの無効化 (p. 301) • ストリーミングメディアの配信 (p. 301) • プライベートコンテンツの構成ツール (p. 301) • コンテンツマネジメントシステムと CloudFront の使用 (p. 302) Amazon CloudFront の追加ドキュメント このサービスを利用する際に役立つ関連リソースは以下の通りです。 • 『Amazon CloudFront API リファレンス』 – API のアクション、パラメータ、データ型について詳し く説明します。サービスから返されるエラーのリストもあります。 • 「ドキュメント履歴 (p. 303)」 – 現在および以前のリリースに関する高水準の概要です。新機能、修 正点、既知の問題、ドキュメントの改善に特に注意を払っています。 • Amazon Simple Storage Service(S3)の技術文書 – Amazon S3 サービスについて詳しく解説しま す。初歩的な入門編、サービスの概要、プログラミングリファレンス、API リファレンスといった内 容が含まれています。 • Amazon CloudFront の製品情報 – CloudFront に関する情報の基本となるウェブページで、サービス の特徴や料金表も掲載されています。 • 利用規約 – 当社の著作権、商標、お客様のアカウント、ライセンス、サイトへのアクセス、およびそ の他のトピックに関する詳細情報です。 API Version 2014-01-31 299 Amazon CloudFront 開発者ガイド サポート情報 サポート情報 CloudFront はいくつかの形態でサポートを受けることができます。 • ディスカッションフォーラム – CloudFront に関係する技術的な質問を討議するための開発者向けコ ミュニティフォーラムです。 • AWS サポートセンター – このサイトは、お客様の最近のサポート事例、AWS Trusted Advisor の助 言とヘルスチェックの結果に関する情報をひとつにまとめ、ディスカッションフォーラム、技術上の よくある質問、サービス状態ダッシュボード、AWS サポートプランに関する情報へのリンクも示し ています。 • AWS プレミアムサポート情報 – 1 対 1 での迅速な対応を行うサポートチャネルである AWS プレミ アムサポートに関する情報のメインウェブページです。プレミアムサポートは、AWS インフラスト ラクチャサービスでのアプリケーションの構築および実行を支援します。 • お問い合わせ – 請求やアカウントに関するお問い合わせ用のリンクです。技術的な質問の場合は、上 記のディスカッションフォーラムまたはサポートリンクをご利用ください。 CloudFront 開発者用ツールと SDK ドキュメント、コード例、リリースノートなど、AWS を利用して革新的なアプリケーションを構築す るのに役立つ情報を含む開発者用リソースへのリンクについては、開発者用ツールのページを参照して ください。 また、Amazon Web Services には CloudFront にプログラムからアクセスするためのソフトウェア開発 キット(SDK)が用意されています。SDK ライブラリは、サービスリクエストに対する署名の暗号化、 リクエストの再試行、エラーレスポンスの処理など、多数の一般的なタスクを自動化します。 • • • • AWS SDK for Java – セットアップとその他のドキュメント AWS SDK for .NET – セットアップとその他のドキュメント AWS SDK for PHP – セットアップとその他のドキュメント AWS SDK for Ruby – セットアップとその他のドキュメント CloudFront ログ作成の使用 以下の AWS ブログ投稿では、CloudFront ログ作成の拡張機能の他に、アクセスログを分析するための いくつかの方法が述べられています。 • AWS Blog – Amazon CloudFront リクエストのログ作成(HTTP 経由で配信するコンテンツの場合) • AWS Blog – Amazon CloudFront でストリーミングのアクセスログをサポート(RTMP 経由で配信す るコンテンツの場合) • AWS Blog – CloudFront のログ機能の拡張 – クエリ文字列 Amazon Web Services Blog によるその他のヒント AWS Blog には、CloudFront を使用するときに役立つ投稿がいくつかあります。 • ウェブサイトのパフォーマンスの向上 – グローバルアプリケーションのパフォーマンスの向上 • HTTPS を使ったセキュアな接続の作成 – Amazon CloudFront: HTTPS アクセス、別のエッジロケー ション、料金の低減 • カスタムオリジンの使用 – Amazon CloudFront の新機能: カスタムオリジン API Version 2014-01-31 300 Amazon CloudFront 開発者ガイド オブジェクトの無効化 • Amazon CloudFront 用のサードパーティ製ツールについての詳細情報 – CloudFront 管理ツールのま とめ オブジェクトの無効化 CloudFront から提供される無効化方法に加えて、以下のサードパーティツールを使用してオブジェク トを無効にすることができます。 Note これらのツールは、Amazon Web Services とは関係のないサードパーティベンダーが開発した ものです。これらのツールの使用方法については、各ベンダーのドキュメントを参照するか、 各ベンダーにお問い合わせください。 • • • • • • • CloudBuddy Personal – http://m1.mycloudbuddy.com/index.html CloudBerry Explorer – http://cloudberrylab.com Ylastic – http://ylastic.com Cyberduck – http://cyberduck.ch Bucket Explorer – http://www.bucketexplorer.com CloudFront Invalidator – http://www.swook.net/p/cloudfront-invalidator.html CDN Planet CloudFront Purge Tool – http://www.cdnplanet.com/tools/cloudfront-purge-tool/ Github (https://github.com)でコードサンプルを検索することもできます。「CloudFront invalidation」 という語句で検索してみてください。 ストリーミングメディアの配信 以下のサードパーティソースはストリーミングメディアの配信に関する追加情報を提供します。 • StreamingMedia.com – Amazon CloudFront ストリーミングの使用開始方法 • Ioncannon.net – • Amazon S3 と CloudFront Proof of Concept を使用した iPhone Windowed HTTP Live Streaming • HTTP Live Video Stream セグメンターとディストリビューター • iPhone Windowed HTTP Live Streaming サーバー • Flowplayer.org – 帯域幅検知: 視聴者全員に高品質で届ける • JW Player – RTMP ストリーミングについて プライベートコンテンツの構成ツール CloudFront から提供される方法に加えて、以下のサードパーティツールでも、プライベートコンテン ツ用のディストリビューションを構成するためのウェブフォームが提供されます。一部のツールでは、 署名付き URL を作成するためのウェブフォームも用意されています。 • CloudBuddy – プライベートコンテンツ用のディストリビューションの構成、および署名付き URL の 作成をサポートします。 CloudFront プライベートコンテンツで CloudBuddy を使用する方法の詳細については、「CloudFront ディストリビューションおよびプライベートコンテンツの構成」を参照してください。 API Version 2014-01-31 301 Amazon CloudFront 開発者ガイド コンテンツマネジメントシステムと CloudFront の使用 このツールは、CSS CorpLabs で実施された、CloudFront プライベート URL の .NET 実装に関する 研究に基づきます。 • Bucket Explorer – プライベートコンテンツ用のディストリビューションの構成をサポートします。 CloudFront プライベートコンテンツで Bucket Explorer を使用する方法については、「バケットでプ ライベートディストリビューションを作成する方法」を参照してください。 • CloudBerry – プライベートコンテンツ用のディストリビューションの構成、および署名付き URL の 作成をサポートします。 CloudFront プライベートコンテンツで CloudBerry を使用する方法については、「CloudBerry を使用 して CloudFront ストリーミング用のプライベートコンテンツを構成する方法」を参照してください。 デフォルトのルートオブジェクトの設定については、「CloudBerry S3 Explorer を使用した CloudFront デフォルトオブジェクトの設定方法」を参照してください。 プライベートコンテンツの詳細については、AWS Blog の「Amazon CloudFront の新機能: プライベー トコンテンツ」を参照してください。 コンテンツマネジメントシステムと CloudFront の 使用 いくつかの人気の高いコンテンツ管理システムと共に CloudFront を使用することができます。以下の リンクでその方法がわかります。 Drupal • Drupal.org – CloudFront のインストール • DrupalModules.com – CloudFront Drupal モジュール Sitecore • NTT Data Advisory Service – AWS CloudFront の Sitecore 統合 WordPress • om4.com – Amazon CloudFront と WordPress および WordPress MU の使用 • WordPress.org – W3 Total Cache • WordPress.org – Amazon S3 のシンプルなアップロード形式 • WordPress.org – OSSDL CDN Off リンカー • WordPress.org – 個人用 CDN • Inquisiter.com – WordPress ブログにおける Amazon CloudFront CDN API Version 2014-01-31 302 Amazon CloudFront 開発者ガイド ドキュメント履歴 Abstract CloudFront のドキュメントの改訂日、関連リリース、重要な変更点が記載されています。 次の表に、CloudFront の前回のリリース以後に行われた、ドキュメントの重要な変更を示します。 • API バージョン: 2014-01-31 • ドキュメントの最終更新日: 2014 年 5 月 16 日 変更点 説明 日付変更 新機能 このリリースでは、CloudFront がカスタムオリジンに転送する 2014 年 5 月 16 HTTPS ビューアリクエストについて、オリジンサーバーの SSL 日 証明書のドメイン名の 1 つが [Origin Domain Name] で指定したド メイン名と一致するかどうかが確認されます。ドメイン名が一致 しない場合、CloudFront は、ビューアリクエストに対して、リク エストされたオブジェクトではなく、HTTP ステータスコード 502 (不正なゲートウェイ)を返します。この機能を有効にするには、 [Match Viewer] で [Origin Protocol Policy] を指定する必要がありま す。詳細については、「ビューア、CloudFront、およびオリジン 間の通信に対して HTTPS を要求する方法 (p. 179)」を参照してく ださい。 新機能 CloudFront のこのリリースで、ウェブディストリビューションの 2014 年 4 月 28 CloudFront アクセスログに新しいフィールドが導入されます。 日 time-taken フィールドは、CloudFront エッジサーバーがビュー アのリクエストを受け取った時間と、CloudFront がレスポンスの 最終バイトをサーバーの出力キューに書き込んだ時間との差(秒 数)をサーバー側で測定して示します。ウェブディストリビュー ションの CloudFront アクセスログのファイル形式の詳細について は、「ウェブディストリビューションのログファイル形式(p.199)」 を参照してください。 更新版 「CloudFront および Adobe Media Server 5.0 を使用したライブ 2014 年 3 月 18 HTTP ストリーミング (p. 209)」で、Adobe Media Server をサブス 日 クライブする手順と AWS CloudFormation スタックを作成する手 順が更新されました。 API Version 2014-01-31 303 Amazon CloudFront 開発者ガイド 変更点 説明 日付変更 新機能 CloudFront のこのリリースで、CloudFront 使用状況レポートの 2014 年 3 月 13 データのサブセットを含む使用状況グラフが導入されます。詳細 日 については、「CloudFront 使用状況グラフ (p. 12)」を参照してく ださい。 新機能 CloudFront のこのリリースで、以下の新機能が導入されます。 2014 年 3 月 5 日 • ビューアの HTTP リクエストを HTTPS にリダイレクト: ビュー アの HTTP リクエストを HTTPS にリダイレクトするように CloudFront を構成できるようになりました。詳細については、 「ビューア、CloudFront、およびオリジン間の通信に対して HTTPS を要求する方法 (p. 179)」を参照してください。 • 代替ドメイン名による HTTPS リクエストの Server Name Indication(SNI): オブジェクトの URL にドメイン名を使用し ている場合、Server Name Indication(SNI)をサポートするブ ラウザで HTTPS リクエストを処理するよう CloudFront を構成 できるようになりました。詳細については、「代替ドメイン名 と HTTPS の使用 (p. 181)」を参照してください。 新機能 CloudFront のこのリリースで、Microsoft スムーズストリーミング 2014 年 2 月 20 形式でエンコードされたメディアファイルの HTTP オンデマンド 日 ストリーミングのサポートが導入されます。詳細については、「オ ンデマンドスムーズストリーミングの構成 (p. 65)」を参照してく ださい。 新機能 CloudFront のこのリリースで、HTTP 1.1 のサポートが導入され 2014 年 2 月 7 ます。詳細については、「転送エンコード (p. 123)」を参照してく 日 ださい。 さらに、オンデマンドプログレッシブダウンロード、オンデマン ド Apple HTTP Live Streaming に関するドキュメントが追加され ました。詳細については、『Amazon CloudFront 開発者ガイド』 の「オンデマンドプログレッシブダウンロードの構成」および「オ ンデマンド Apple HTTP Live Streaming(HLS)の構成」を参照し てください。 新機能 CloudFront のこのリリースで、地域制限が導入されます。特定の 2013 年 12 月 18 国のユーザーをお客様のコンテンツにアクセスできなくする必要 日 がある場合、CloudFront ウェブディストリビューションを構成し て次のいずれかの設定を行うことができます。 • ホワイトリストに指定された国のユーザーだけにコンテンツへ のアクセスを許可します。 • ブラックリストに指定された国のユーザーがコンテンツにアク セスできないようにします。 詳細については、「コンテンツの地理的ディストリビューション の制限 (p. 63)」を参照してください。 API Version 2014-01-31 304 Amazon CloudFront 開発者ガイド 変更点 説明 日付変更 新機能 CloudFront のこのリリースで、以下の機能が導入されます。 2013 年 10 月 15 日 • DELETE、OPTIONS、PATCH、POST、PUT のサポート: CloudFront に送信するリクエストに DELETE、OPTIONS、 PATCH、POST、PUT などの HTTP メソッドを使用できるように なりました。詳細については、「許可される HTTP メソッ ド (p. 53)」を参照してください。 • ディストリビューションタイプの名称変更: CloudFront ダウン ロードディストリビューションはウェブディストリビューショ ンに、ストリーミングディストリビューションは RTMP ディス トリビューションにそれぞれ名称が変更になりました。 • ウェブディストリビューションのアクセスログの新しい列: CloudFront ウェブディストリビューションのアクセスログの各 リクエストに 3 つの列 x-host-header、cs-protocol、 cs-bytes が追加されました。詳細については、「ウェブディ ストリビューションのログファイル形式 (p. 199)」を参照してく ださい。 新機能 CloudFront のこのリリースで、以下の機能が導入されます。 2013 年 9 月 23 日 • カスタムエラーページ: 「404, page not found」などデフォルト の HTTP エラーメッセージの代わりに、お客様のブランドと独 自のコンテンツをエラーページに表示できるようになりました。 ウェブサーバーを利用できないときに表示される静的なページ にカスタムエラーページを使うこともできます。詳細について は、「エラーレスポンスのカスタマイズ (p. 99)」を参照してく ださい。 • エラーレスポンスの構成可能キャッシュ期間: 「エラーキャッ シュ最短 TTL」と呼ばれることもあります。この機能により、 CloudFront が CloudFront エッジロケーションに各エラーを キャッシュしておく時間を指定できます。これまで CloudFront はすべてのエラー応答を 5 分間キャッシュしていましたが、今 後は存続期間を自由に指定して、エラーが起きた後に CloudFront がオリジンに問い合わせる頻度を制御できるようになりました。 詳細については、「エラーレスポンスのカスタマイズ (p. 99)」 を参照してください。 新機能 CloudFront 代替ドメイン名(CNAME)に * ワイルドカードを含 2013 年 9 月 18 めることが可能になりました(例: *.example.com)。この機能は、 日 ドメインおよびサブドメイン内のオブジェクトに対するすべての リクエストを、CloudFront ディストリビューションにルーティン グする場合に役立ちます。詳細については、「代替ドメイン名 (CNAME)を使用する (p. 33)」を参照してください。 更新版 Wowza Media Server 3.6 を使用したライブストリーミングに関す 2013 年 9 月 10 る説明が追加されました。詳細については、「Wowza Streaming 日 Engine 4.0 を使用したライブ HTTP ストリーミング (p. 247)」を参 照してください。 API Version 2014-01-31 305 Amazon CloudFront 開発者ガイド 変更点 説明 日付変更 更新版 Adobe Flash Media Server を使用したライブストリーミングに関 2013 年 7 月 31 するドキュメントが、Adobe Media Server バージョン 5.0 を使用 日 したライブストリーミングに関するドキュメントで置き換えられ ました。詳細については、「CloudFront および Adobe Media Server 5.0 を使用したライブ HTTP ストリーミング (p. 209)」を参照して ください。 新機能 CloudFront のこのリリースで、以下の機能が導入されます。 2013 年 6 月 11 日 • AWS 署名バージョン 4 を使用した認証: CloudFront API バー ジョン 2013-05-12 以降を使用する場合、AWS 署名バージョン 4 を使用してリクエストを認証する必要があります。詳細につ いては、『Amazon CloudFront API リファレンス』の「REST リクエストの認証」を参照してください。 • CloudFront 代替ドメイン名の SSL: CloudFront で HTTPS の使 用がサポートされるようになり、オブジェクトの URL 内で独自 のドメイン名を使用できるようになりました(例: http://www.example.com/image.jpg)。詳細については、 「代替ドメイン名と HTTPS の使用 (p. 181)」を参照してくださ い。 また、Amazon Route 53 の同時リリースによって、以下の CloudFront 関連機能が導入されます。 • CloudFront ディストリビューションへの Route 53 エイリアス: DNS クエリを CloudFront ディストリビューションの代替ドメ イン名にルーティングするエイリアスリソースレコードセット を Amazon Route 53 で作成できるようになりました。この機能 は、Zone Apex での代替ドメイン名(example.com)およびサ ブドメインの代替ドメイン名(www.example.com)の両方に対 して使用できます。詳細については、「Amazon Route 53 開発 者ガイド」の「Routing Queries to an Amazon CloudFront Distribution」を参照してください。 新機能 CloudFront のこのリリースで、以下の機能が導入されます。 • AWS Management Console のプライベートコンテンツのフィー ルド: 以前は CloudFront API のみを使用して構成または変更で きていたプライベートコンテンツの設定が、AWS Management Console で構成または変更できるようになりました。これには、 オリジンアクセスアイデンティティおよび信頼された署名者の 設定が含まれます。また、プライベートコンテンツに関するド キュメントが再編成されて明確になりました。 詳細については、「CloudFront を使用してプライベートコンテ ンツを供給する (p. 126)」を参照してください。 • AWS Management Console の改良: AWS Management Console のウィザードとダイアログボックスのサイズが変更され、タブ レットコンピューターでの表示が簡素化されました。他のビュー アについても、これらの外観が損なわれることはありません。 また、[Create Distribution] ウィザードのページ数が少なくなり、 新しいディストリビューションの作成処理が簡素化されました。 API Version 2014-01-31 306 2012 年 9 月 27 日 Amazon CloudFront 開発者ガイド 変更点 説明 日付変更 新機能 CloudFront のこのリリースで、以下の機能が導入されます。 2012 年 9 月 5 日 • ウェブディストリビューションのアクセスログの改良: ウェブ ディストリビューションの CloudFront アクセスログに以下の フィールドが含まれるようになりました。 • 名前値のペアおよび属性を含む、ビューアの各リクエストの Cookie ヘッダー。このフィールドはオプションです。 • リクエストの結果タイプ(Hit、RefreshHit、Miss など)。 • 各リクエストを一意に識別する識別子(CloudFront リクエス ト ID)。 詳細については、「ウェブディストリビューションのログファ イル形式 (p. 199)」を参照してください。 • ウェブディストリビューションの Cookie サポート: CloudFront で Cookie および関連する Cookie 属性をオリジンに転送するか どうかを選択できるようになりました。転送する場合は、すべ ての Cookie を送信するか、または選択した一連の Cookie のみ を送信するかも選択できます。詳細については、「CloudFront が Cookie の転送、キャッシュ、およびログ作成を行う方 法 (p. 86)」を参照してください。 • ウェブディストリビューションと RTMP ディストリビューショ ンの価格クラス: CloudFront サービスに支払う上限価格に対応 する価格クラスを選択できるようになりました。コスト削減を 優先し、一部の地理的リージョンにおけるレイテンシーの延長 を容認できるのであれば、使用する CloudFront リージョンが限 定された価格クラスを選択することもできます。詳細について は、「CloudFront ディストリビューションの価格クラスを選択 する (p. 37)」を参照してください。 新機能 CloudFront のこのリリースで、以下の機能が導入されます。 • CloudFront コンソールを使用して、オブジェクトを無効にでき るようになりました。詳細については、「オブジェクトの無効 化(ウェブディストリビューションのみ) (p. 94)」を参照して ください。 • タブレットデバイスでの表示が適切にサポートされるように CloudFront コンソールが更新されました。 API Version 2014-01-31 307 2012 年 6 月 22 日 Amazon CloudFront 開発者ガイド 変更点 説明 日付変更 新機能 CloudFront のこのリリースで、ウェブディストリビューションの 2012 年 5 月 13 以下の機能が導入されます。 日 • クエリ文字列をオリジンに転送できます。詳細については、 「CloudFront がクエリ文字列パラメータの転送、キャッシュ、 およびログ作成を行う方法 (p. 84)」を参照してください。 • 最大 10 個のオリジンを指定できます。詳細については、「ウェ ブディストリビューションを作成または更新する場合に指定す る値 (p. 46)」を参照してください。 • パスのパターンを指定できます。詳細については、「ウェブディ ストリビューションを作成または更新する場合に指定する 値 (p. 46)」を参照してください。 また、CloudFront コンソールが更新されました。詳細については、 「ウェブディストリビューションを作成するためのタスクリス ト (p. 42)」および「RTMP を使用するストリーミングメディア ファイルのタスクリスト (p. 69)」を参照してください。 「Amazon CloudFront 入門ガイド」が「Amazon CloudFront 開発 者ガイド」に統合され、「Amazon CloudFront 開発者ガイド」が 再編成されて使いやすくなりました。 更新版 オブジェクトの操作に関するドキュメントが再編成されて明確に なりました。改訂版のドキュメントについては「オブジェクトの 使用 (p. 81)」を参照してください。 2012 年 4 月 4 日 新規ドキュメ ント Microsoft IIS Media Services バージョン 4.1 を使用したライブス 2012 年 4 月 1 トリーミングに関するドキュメントが追加されました。詳細につ 日 いては、「Amazon CloudFront と IIS Media Services 4.1 を使用し たライブスムーズストリーミング (p. 230)」を参照してください。 更新版 Adobe Flash Media Server を使用したライブストリーミングに関 するドキュメントが、Adobe Flash Media Server バージョン 4.5 に関する情報で更新されました。 2012 年 3 月 29 日 2013 年 7 月 31 日の時点で、CloudFront は、Adobe Media Server 5.0 を使用したライブストリーミングをサポートします。詳細につ いては、「CloudFront および Adobe Media Server 5.0 を使用した ライブ HTTP ストリーミング (p. 209)」を参照してください。 新機能 CloudFront のこのリリースでは、ウェブディストリビューション 2012 年 3 月 15 の最小 TTL 値が引き下げられています。ディストリビューション 日 の作成時に最小 TTL を指定しなかった場合、最小 TTL はデフォル トで 0 秒に設定されます。詳細については、以下のドキュメント を参照してください。 • CloudFront 製品ページ • 「Amazon S3 オリジンにおけるリクエストとレスポンスの動 作 (p. 110)」の「キャッシュ期間および最小 TTL」 • 「カスタムオリジンの場合のリクエストとレスポンスの動 作 (p. 116)」の「キャッシュ期間および最小 TTL」 • 「DistributionConfig Complex Type」の CachingBehavior エ レメント。 API Version 2014-01-31 308 Amazon CloudFront 開発者ガイド 変更点 説明 日付変更 更新版 Adobe Flash Media Server を使用したライブストリーミングに関 するトピックと、地理的ブロッキングに関するトピックが、別の ドキュメントからこのガイドの「CloudFront チュートリア ル (p. 208)」に移動されました。 2012 年 2 月 2 日 新機能 CloudFront のこのリリースでは、AWS Management Console で 2011 年 4 月 27 カスタムオリジンを使用してディストリビューションを作成する 日 ことで、ディストリビューションを HTTPS に排他的に制限でき るほか、デフォルトのルートオブジェクトを指定できます。詳細 については、Amazon CloudFront の製品ページを参照するか、 「Amazon CloudFront 開発者ガイド」の以下のいずれかのトピッ クを参照してください。 • ウェブディストリビューションを作成するためのタスクリス ト (p. 42) • HTTPS 接続を使用したオブジェクトへのアクセス (p. 178) • デフォルトルートオブジェクトの指定(ウェブディストリビュー ションのみ) (p. 104) 新機能 CloudFront のこのリリースには、AWS Identity and Access 2011 年 3 月 10 Management (IAM)との統合が含まれます。詳細については、 日 Amazon CloudFront の製品ページを参照するか、「Amazon CloudFront 開発者ガイド」の「IAM を使用して CloudFront リソー スへのアクセスをコントロールする (p. 189)」を参照してくださ い。 新機能 CloudFront のこのリリースには、カスタムオリジンをサポートす 2010 年 11 月 9 る新しい API が含まれます。詳細については、Amazon CloudFront 日 の製品ページを参照するか、「Amazon CloudFront 開発者ガイド」 の「ウェブディストリビューションを作成するためのタスクリス ト (p. 42)」を参照してください。 新機能 CloudFront のこのリリースには、オブジェクトを無効にするため 2010 年 8 月 31 の新しい API が含まれます。詳細については、Amazon CloudFront 日 の製品ページを参照するか、「Amazon CloudFront 開発者ガイド」 の「オブジェクトの無効化(ウェブディストリビューションの み) (p. 94)」を参照してください。 新機能 CloudFront で、デフォルトのルートオブジェクトをディストリ 2010 年 8 月 5 ビューションに割り当てる機能がサポートされるようになりまし 日 た。詳細については、「デフォルトルートオブジェクトの指定 (ウェブディストリビューションのみ) (p. 104)」を参照してくだ さい。 新機能 HTTP ディストリビューションのアクセスログの作成で、クエリ 文字列パラメータ用のフィールドが含まれるようになりました。 詳細については、「ウェブディストリビューションのログファイ ル形式 (p. 199)」を参照してください。 新機能 HTTPS を使用するセキュアな接続のサポートが追加されました。 2010 年 6 月 7 詳細については、「HTTPS 接続を使用したオブジェクトへのアク 日 セス (p. 178)」を参照してください。 API Version 2014-01-31 309 2010 年 7 月 14 日 Amazon CloudFront 開発者ガイド 変更点 説明 日付変更 新機能 RTMP コンテンツのログ作成が追加されました。詳細については、 2010 年 5 月 13 「RTMP ディストリビューションのログファイル形式 (p. 201)」を 日 参照してください。 新機能 オブジェクトがエッジサーバーに存在できる最小時間が 24 時間か 2010 年 4 月 13 ら 1 時間に短縮されました。ただし、デフォルトは 24 時間のま 日 まです。詳細については、有効期限切れに関する説明 (p. 90)を参 照してください。 新機能 Real-Time Messaging Protocol (RTMP)経由でプライベートの 2010 年 3 月 28 ストリーミングコンテンツを供給し、コンテンツのダウンロード 日 を禁止する機能が追加されました。詳細については、「CloudFront を使用してプライベートコンテンツを供給する (p. 126)」を参照し てください。 新機能 Real-Time Messaging Protocol (RTMP)接続経由でストリーミ ングコンテンツを配信する機能が追加されました。詳細について は、「RTMP を使用するストリーミングメディアファイルのタス クリスト (p. 69)」を参照してください。 新機能 HTTP 経由で配信されたコンテンツへのアクセスを制限する機能 2009 年 11 月 11 が追加されました。詳細については、「CloudFront を使用してプ 日 ライベートコンテンツを供給する (p. 126)」を参照してください。 新規ガイド API リファレンスに関する資料を独自のガイドに分割しました。 2009 年 11 月 11 「Amazon CloudFront 開発者ガイド」には、CloudFront の使用方 日 法に関する一般的な情報が含まれます。「Auto Scaling API リファ レンス」には、コントロール API のリクエスト、レスポンス、お よびエラーに関する詳細情報が含まれます。 API Version 2014-01-31 310 2009 年 12 月 15 日 Amazon CloudFront 開発者ガイド AWS Glossary Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) Numbers and Symbols 100-continue A method that enables a client to see if a server can accept a request before actually sending it. For large PUTs, this method can save both time and bandwidth charges. A Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) access control list A document that defines who can access a particular bucket or object. Each bucket and object in Amazon S3 has an ACL. The document defines what each type of user can do, such as write and read permissions. access identifiers See credentials. access key rotation A method to increase security by changing the AWS access key ID. This method enables you to retire an old key at your discretion. access policy language A language for writing documents (that is, policies) that specify who can access a particular AWS resource and under what conditions. account The AWS account associated with a particular AWS login ID and password. IAM: The AWS account that centrally controls all the resources created under its umbrella and pays for all AWS activity for those resources. The AWS account has permission to do anything and everything with all the AWS account resources. This is in contrast to the user (p. 331). account activity A web page showing your month-to-date AWS usage and costs. The account activity page is located at http://aws.amazon.com/account-activity. action An API function. Also called operation or call. The activity the principal (p. 325) has permission to perform. The action is B in the statement "A has permission to API Version 2014-01-31 311 Amazon CloudFront 開発者ガイド do B to C where D applies." For example, Jane sends a request to Amazon SQS with Action=ReceiveMessage. Amazon CloudWatch: The response initiated by the change in an alarm's state: for example, from OK to ALARM. The state change may be triggered by a metric reaching the alarm threshold, or by a SetAlarmState request. Each alarm can have one or more actions assigned to each state. Actions are performed once each time the alarm changes to a state that has an action assigned, such as an Amazon Simple Notification Service notification, an Auto Scaling policy execution or an Amazon EC2 instance stop/terminate action. administrative suspension Auto Scaling might suspend processes for Auto Scaling group (p. 313) that repeatedly fail to launch instances. Auto Scaling groups that most commonly experience administrative suspension have zero running instances, have been trying to launch instances for more than 24 hours, and have not succeeded in that time. alarm An item that watches a single metric over a specified time period, and triggers an Amazon SNS topic (p. 330) or an Auto Scaling policy (p. 325) if the value of the metric crosses a threshold value over a predetermined number of time periods. allow An allow results from a statement that has effect=allow, assuming any stated conditions are met. Example: Allow requests received before 1:00 p.m. on April 30, 2010. An allow overrides any default deny (p. 317), but never an explicit deny (p. 318). Amazon CloudWatch A web service that enables you to monitor and manage various metrics, and configure alarm actions based on data from those metrics. See Also http://aws.amazon.com/cloudwatch. Amazon Elastic Block Store A service that provides block level storage volumes for use with EC2 instances. See Also http://aws.amazon.com/ebs. Amazon EBS-backed AMI Instances launched from this type of AMI use an Amazon EBS volume as their root device. Compare this with instances launched from Amazon S3-backed AMIs, which use the instance store as the root device. Amazon Elastic Compute Cloud A web service that enables you to launch and manage Linux/UNIX and Windows server instances in Amazon's data centers. See Also http://aws.amazon.com/ec2. Amazon EC2 VM Import Connector See http://aws.amazon.com/ec2/vmimport. Amazon Elastic MapReduce A web service that makes it easy to process large amounts of data efficiently. Amazon EMR uses Hadoop processing combined with several AWS products to do such tasks as web indexing, data mining, log file analysis, machine learning, scientific simulation, and data warehousing. See Also http://aws.amazon.com/elasticmapreduce. Amazon Machine Image An encrypted machine image stored in Amazon Elastic Block Store (p. 312) or Amazon Simple Storage Service. AMIs are like a template of a computer's root drive. They contain the operating system and can also include software and layers of your application, such as database servers, middleware, web servers, and so on. Amazon Relational Database Service A web service that makes it easier to set up, operate, and scale a relational database in the cloud. It provides cost-efficient, resizable capacity for an industry-standard relational database and manages common database administration tasks. API Version 2014-01-31 312 Amazon CloudFront 開発者ガイド See Also http://aws.amazon.com/rds. Amazon Resource Name A standardized way to refer to an AWS resource. For example: arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob. Amazon Route 53 A web service you can use to create a new DNS service or to migrate your existing DNS service to the cloud. See Also http://aws.amazon.com/route53. Amazon S3 See Amazon Simple Storage Service. Amazon S3-Backed AMI Instances launched from this type of AMI use the instance store as their root device. Compare this with instances launched from Amazon EBS-backed AMIs, which use an Amazon EBS volume as the root device. Amazon Simple Notification Service A web service that enables applications, end-users, and devices to instantly send and receive notifications from the cloud. See Also http://aws.amazon.com/sns. Amazon Simple Queue Service Reliable and scalable hosted queues for storing messages as they travel between computers. See Also http://aws.amazon.com/sqs. Amazon Simple Storage Service Storage for the internet. You can use it to store and retrieve any amount of data at any time, from anywhere on the web. See Also http://aws.amazon.com/s3. Amazon Virtual Private Cloud A web service that enables you to create a virtual network for your AWS resources. See Also http://aws.amazon.com/vpc. Amazon Web Services An infrastructure web services platform in the cloud for companies of all sizes. See Also http://aws.amazon.com. AMI See Amazon Machine Image. ARN See Amazon Resource Name. authentication The process of proving your identity to a system. Auto Scaling A web service designed to launch or terminate instance (p. 320)s automatically based on user-defined policies, schedules, and health checks. See Also http://aws.amazon.com/autoscaling. Auto Scaling group A representation of multiple Amazon Elastic Compute Cloud (p. 312) instance (p. 320)s that share similar characteristics, and that are treated as a logical grouping for the purposes of instance scaling and management. Availability Zone A distinct location within a region (p. 327) that is insulated from failures in other Availability Zones, and provides inexpensive, low-latency network connectivity to other Availability Zones in the same region. AWS See Amazon Web Services. AWS CloudFormation A service for writing or changing templates that create and delete related AWS resources together as a unit. See Also http://aws.amazon.com/cloudformation. AWS Consolidated Billing A billing option that lets you get a single bill for multiple AWS accounts. See Also http://aws.amazon.com/consolidated-billing. API Version 2014-01-31 313 Amazon CloudFront 開発者ガイド AWS Identity and Access Management A web service that enables Amazon Web Services (p. 313) customers to manage users and user permissions within AWS. See Also http://aws.amazon.com/iam. AWS Management Console A graphical interface to manage compute, storage, and other cloud resources. See Also http://aws.amazon.com/console. AWS Resources See resource. B Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) basic monitoring Monitoring of AWS-provided metrics derived at a 5-minute frequency. BGP ASN Border Gateway Protocol Autonomous System Number. A unique identifier for a network, for use in BGP routing. Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65334, with the exception of 7224, which is reserved. block A data set. Amazon EMR breaks large amounts of data into subsets. Each subset is called a data block. Amazon EMR assigns an ID to each block and uses a hash table to keep track of block processing. block device A storage device that supports reading and (optionally) writing data in fixed-size blocks, sectors, or clusters. block device mapping A mapping structure for every AMI and instance that specifies the block devices attached to the instance. bootstrap action A user-specified default or custom action that runs a script or an application on all nodes of a job flow before Hadoop starts. Border Gateway Protocol Autonomous System Number See BGP ASN. breach The condition in which a user-set threshold (upper or lower boundary) is passed. If the duration of the breach is significant, as set by a breach duration parameter, it can possibly start a scaling activity (p. 328). bucket A container for objects stored in Amazon S3. Every object is contained in a bucket. For example, if the object named photos/puppy.jpg is stored in the johnsmith bucket, then authorized users can access the object with the URL http://johnsmith.s3.amazonaws.com/photos/puppy.jpg. bucket owner Just as Amazon is the only owner of the domain name Amazon.com, only one person or organization can own a bucket in Amazon S3. bundling A commonly used term for creating an Amazon Machine Image (p. 312). It specifically refers to creating Amazon S3-backed AMIs. C Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) API Version 2014-01-31 314 Amazon CloudFront 開発者ガイド canned access policy A standard access control policy that you can apply to a bucket or object. Options include: private, public-read, public-read-write, and authenticated-read. canonicalization The process of converting data into a standard format that a service such as Amazon S3 can recognize. capacity Each Auto Scaling group (p. 313) is defined with a minimum and maximum compute size. The amount of available compute size at any time is the current capacity. A scaling activity (p. 328) increases or decreases the capacity—within the defined minimum and maximum values. Cascading Cascading is an open-source Java library that provides a query API, a query planner, and a job scheduler for creating and running Hadoop MapReduce applications. Applications developed with Cascading are compiled and packaged into standard Hadoop-compatible JAR files similar to other native Hadoop applications. certificate A credential that some AWS products use to authenticate AWS accounts and users. Also known as an X.509 certificate. The certificate is paired with a private key. chargeable resources Features or services whose use incurs fees. Although some AWS products are free, others include charges. For example, in an AWS CloudFormation stack (p. 329), AWS resources that have been created incur charges. The amount charged depends on the usage load. Use the Amazon Web Services Simple Monthly Calculator at http://calculator.s3.amazonaws.com/calc5.html to estimate your cost prior to creating instances, stacks, or other resources. CIDR block Classless Inter-Domain Routing. An Internet protocol address allocation and route aggregation methodology. See Also http://en.wikipedia.org/wiki/CIDR_notation. cluster compute instance A type of instance (p. 320) that provides a great amount of CPU power coupled with increased networking performance, making it well suited for High Performance Compute (HPC) applications and other demanding network-bound applications. cluster placement group A logical cluster compute instance (p. 315) grouping to provide lower latency and high-bandwidth connectivity between the instances. CNAME Canonical Name Record. A type of resource record in the Domain Name System (DNS) that specifies that the domain name is an alias of another, canonical domain name. More simply, it is an entry in a DNS table that lets you alias one fully qualified domain name to another. condition Any restriction or detail about a permission. The condition is D in the statement "A has permission to do B to C where D applies." Conditions are always optional. conditional parameter See mapping. consistency model The method a service uses to achieve high availability. For example, it could involve replicating data across multiple servers in a data center. See Also eventual consistency. consistent read When data is written or updated successfully, all copies of the data are updated in all AWS regions. However, it takes time for the data to propagate to all storage locations. A consistent read returns a result that reflects any writes that received a successful response before the read request—regardless of the region. By contrast, an eventually consistent read returns data from only one region and might not show the most recent write information. See Also eventual consistency. API Version 2014-01-31 315 Amazon CloudFront 開発者ガイド console See AWS Management Console. Consolidated Billing See AWS Consolidated Billing. cooldown period Amount of time during which Auto Scaling does not allow the desired size of the Auto Scaling group (p. 313) to be changed by any other notification from a CloudWatch alarm (p. 312). core node An EC2 instance (p. 317) that runs Hadoop map and reduce tasks and stores data using the Hadoop Distributed File System (HDFS). Core nodes are managed by the master node (p. 323), which assigns Hadoop tasks to nodes and monitors their status. The EC2 instances you assign as core nodes are capacity that must be allotted for the entire job flow run. Because core nodes store data, you can't remove them from a job flow. However, you can add more core nodes to a running job flow. Core nodes run both the DataNodes and TaskTracker Hadoop daemons. credentials Also called access credentials or security credentials. In authentication and authorization, a system uses credentials to identify who is making a call and whether to allow the requested access. customer gateway A router or software application on your side of a VPN tunnel that is managed by Amazon VPC. The internal interfaces of the customer gateway are attached to one or more devices in your home network. The external interface is attached to the VPG (p. 331) across the VPN tunnel. D Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) dashboard See service health dashboard. database engine The database software and version running on the DB instance (p. 316). database name The name of a database hosted in a DB instance (p. 316). A DB instance can host multiple databases, but databases hosted by the same DB instance must each have a unique name within that instance. DB compute class Size of the database compute platform used to run the instance. DB instance An isolated database environment running in the cloud. A DB instance can contain multiple user-created databases. DB instance identifier User-supplied identifier for the DB instance. The identifier must be unique for that user in an AWS region (p. 327). DB parameter group A container for database engine parameter values that apply to one or more DB instance (p. 316)s. DB security group A method that controls access to the DB instance (p. 316). By default, network access is turned off to DB instances. After ingress is configured for a security group, the same rules apply to all DB instances associated with that group. DB snapshot A user-initiated point backup of a DB instance. API Version 2014-01-31 316 Amazon CloudFront 開発者ガイド Dedicated Instance An instance that is physically isolated at the host hardware level and launched within a VPC. default deny The default result from a policy (p. 325) in the absence of an allow (p. 312) or explicit deny (p. 318). delete marker An object with a key and version ID, but without content. Amazon S3 inserts delete markers automatically into versioned buckets when an object is deleted. detailed monitoring Monitoring of AWS-provided metrics derived at a 1-minute frequency. Description property A property added to parameters, resources, resource properties, mappings, and outputs, to help you to document AWS CloudFormation template elements. dimension A name/value pair (for example, InstanceType=m1.small, or EngineName=mysql), that contains additional information to identify a metric. discussion forums A place where AWS users can post technical questions and feedback to help accelerate their development efforts and to engage with the AWS community. The discussion forums are located at http://aws.amazon.com/forums. distributed cache A Hadoop feature that allow you to transfer files from a distributed file system to the local file system. It can distribute data and text files as well as more complex types such as archives and JARs. DKIM DomainKeys Identified Mail. A standard that email senders use to sign their messages. ISPs use those signatures to verify that messages are legitimate. For more information, see http://www.dkim.org. DNS See Domain Name System (DNS). Domain Name System (DNS) A distributed naming system that associates network information with human-readable domain names on the Internet. Donation button An HTML-coded button to provide an easy and secure way for US-based, IRS-certified 501(c)3 nonprofit organizations to solicit donations. E Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) EBS See Amazon Elastic Block Store. EC2 See Amazon Elastic Compute Cloud. EC2 compute unit An AWS standard for compute CPU and memory. This measure enables you to evaluate the CPU capacity of different EC2 instance types. EC2 instance In Amazon EC2, this is simply an instance. Other AWS services use the term EC2 instance to distinguish these instances from other types of instances they support. Elastic Block Store See Amazon Elastic Block Store. elastic IP address A fixed (static) IP address that you have allocated in Amazon EC2 or Amazon VPC and then attached to an instance. Elastic IP addresses are associated with your account, not a specific instance. They are elastic because you can easily API Version 2014-01-31 317 Amazon CloudFront 開発者ガイド allocate, attach, detach, and free them as your needs change. Unlike traditional static IP addresses, elastic IP addresses allow you to mask instance or Availability Zone failures by rapidly remapping your public IP addresses to another instance. Elastic Load Balancing A web service that improves an application's availability by distributing incoming traffic between two or more EC2 instance (p. 317)s. See Also http://aws.amazon.com/elasticloadbalancing. elastic network interface An additional network interface that can be attached to an instance (p. 320). ENIs include a primary private IP address, one or more secondary private IP addresses, an elastic IP address (optional), a MAC address, membership in specified security groups, a description, and a source/destination check flag. You can create an ENI, attach it to an instance, detach it from an instance, and attach it to another instance. endpoint A URL that identifies a host and port as the entry point for a web service. Every web service request contains an endpoint. Most AWS products provide regional endpoints to enable faster connectivity. For more information, see Regions and Endpoints in the Amazon Web Services General Reference Amazon RDS: The DNS name of a DB instance (p. 316). AWS CloudFormation: The DNS name or IP address of the server that receives an HTTP request. endpoint port Amazon RDS: The port number used by a DB instance (p. 316). ephemeral store See instance store. epoch The date from which time is measured. For most Unix environments, the epoch is January 1, 1970. eventual consistency The method through which AWS products achieve high availability, which involves replicating data across multiple servers in Amazon's data centers. When data is written or updated and "Success" is returned, all copies of the data are updated. However, it takes time for the data to propagate to all storage locations. The data will eventually be consistent, but an immediate read might not show the change. Consistency is usually reached within seconds, but a high system load might increase this time. eventually consistent read See consistent read. explicit deny An explicit deny results from a statement that has effect=deny, assuming that any stated conditions are met. Example: Deny all requests from Antarctica. Any request that comes from Antarctica will always be denied no matter what any other policy (p. 325) might allow. explicit launch permission An Amazon Machine Image (p. 312) launch permission granted to a specific AWS account. exponential backoff A strategy that incrementally increases the wait between retry attempts in order to reduce the load on the system and increase the likelihood that repeated requests will succeed. For example, client applications might wait up to 400 milliseconds before attempting the first retry, up to 1600 milliseconds before the second, up to 6400 milliseconds (6.4 seconds) before the third, and so on. API Version 2014-01-31 318 Amazon CloudFront 開発者ガイド F Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) federated identity management Allows individuals to sign in to different networks or services, using the same group or personal credentials to access data across all networks. With identity federation in AWS, external identities (federated users) are granted secure access to resources in an AWS account without having to create IAM users. These external identities can come from a corporate identity store (such as LDAP or Windows Active Directory) or from a third party (such as Login with Amazon, Facebook, or Google). AWS federation also supports SAML 2.0. federated user See federated identity management. field weight The relative importance of a text field in a search index. Field weights control how much matches in particular text fields affect a document's relevance _score. filter A criterion you specify to limit the results when you list or describe your Amazon EC2 resources. FIM See federated identity management. format version See template format version. forums See discussion forums. function See intrinsic function. G Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) gibibyte A contraction of giga binary byte, a gibibyte is 2^30 bytes or 1,073,741,824 bytes. A gigabyte is 10^9 or 1,000,000,000 bytes. H Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) Hadoop See http://hadoop.apache.org. hardware VPN A hardware-based IPsec VPN connection over the Internet. HDFS Hadoop Distributed File System. The HDFS file system stores large files across multiple machines. It achieves reliability by replicating the data across multiple hosts, and hence does not require RAID storage on hosts. health check A system call to check on the health status of each instance in an Auto Scaling group. API Version 2014-01-31 319 Amazon CloudFront 開発者ガイド Hive An open source, data warehouse and analytic package that runs on top of Hadoop. Hive scripts use an SQL-like language called Hive QL (query language) that abstracts the MapReduce programming model and supports typical data warehouse interactions. HMAC Hash-based Message Authentication Code. A specific construction for calculating a message authentication code (MAC) involving a cryptographic hash function in combination with a secret key. You can use it to verify both the data integrity and the authenticity of a message at the same time. AWS calculates the HMAC using a standard, cryptographic hash algorithm, such as SHA-256. hosted zone A collection of resource record sets that Amazon Route 53 hosts. Like a traditional DNS zone file, a hosted zone represents a collection of records that are managed together under a single domain name. HVM virtualization Hardware Virtual Machine virtualization. Allows the guest VM to run as though it is on a native hardware platform, except that it still uses paravirtual (PV) network and storage drivers for improved performance. See Also PV virtualization. I Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) image See Amazon Machine Image. instance A copy of an Amazon Machine Image running as a virtual server in the AWS cloud. instance family A general instance type (p. 320) grouping using either storage or CPU capacity. instance group A Hadoop cluster contains one master instance group that contains one master node (p. 323), a core instance group containing one or more core node (p. 316) and an optional task node (p. 330) instance group, which can contain any number of task nodes. instance store Disk storage that is physically attached to the host computer for an EC2 instance, and therefore has the same lifespan as the instance. When the instance terminates, you lose any data in the instance store. instance store-backed AMI Instances launched from this type of AMI use an instance store volume as the root device. Compare this with instances launched from Amazon EBS-backed AMIs, which use an Amazon EBS volume as the root device. instance type A specification that defines the memory, CPU, storage capacity, and hourly cost for an instance. Some instance types are designed for standard applications, whereas others are designed for CPU-intensive, memory-intensive applications, and so on. Internet gateway Connects a network to the Internet. You can route traffic for IP addresses outside your VPC (p. 331) to the Internet gateway. Internet Service Provider A company that provides subscribers with access to the Internet. Many ISPs are also mailbox provider (p. 322)s. Mailbox providers are sometimes referred to as ISPs, even if they only provide mailbox services. API Version 2014-01-31 320 Amazon CloudFront 開発者ガイド intrinsic function A special action in a template that assigns values to properties not available until runtime. These functions follow the format Fn::Attribute, such as Fn::GetAtt. Arguments for intrinsic functions can be parameters, pseudo parameters, or the output of other intrinsic functions. IP address All EC2 instances are assigned two IP addresses at launch, which are directly mapped to each other through network address translation (NAT): a private IP address (following RFC 1918) and a public IP address. Instances launched in a VPC are assigned only a private IP address. Instances launched in your default VPC are assigned both a private IP address and a public IP address. ISP See Internet Service Provider. issuer The issuer is the person who writes a policy to grant permissions to a resource. The issuer (by definition) is always the resource owner. AWS does not permit Amazon SQS users to create policies for resources they don't own. If John is the resource owner, AWS authenticates John's identity when he submits the policy he's written to grant permissions for that resource. item Similar to rows on a spreadsheet, items represent individual objects that contain one or more value-attribute pairs. J Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) job flow A job flow specifies the complete processing of the data. It's comprised of one or more steps, which specify all of the functions to be performed on the data. JSON JavaScript Object Notation. A lightweight data-interchange format. For information about JSON, see http://www.json.org/. K Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) key pair A set of security credentials you use to prove your identity electronically. A key pair consists of a private key and a public key. key prefix A logical grouping of the objects in a bucket (p. 314). The prefix value is similar to a directory name that enables you to store similar data under the same directory in a bucket. L Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) launch configuration A set of descriptive parameters used to create new EC2 instances in an Auto Scaling activity. API Version 2014-01-31 321 Amazon CloudFront 開発者ガイド A template that an Auto Scaling group (p. 313) uses to launch new EC2 instances. The launch configuration contains information such as the Amazon Machine Image (p. 312) ID, the instance type, key pairs, security groups, and block device mappings, among other configuration settings. launch permission An Amazon Machine Image (p. 312) (AMI) attribute that allows users to launch an AMI. lifecycle The lifecycle state of the EC2 instance (p. 317) contained in an AutoScalingGroup. EC2 instances progress through several states over their lifespan; these include Pending, InService, Terminating and Terminated. load balancer A load balancer is a combination of a DNS name and a set of ports, which together provide a destination for all requests intended for your application. A load balancer can distribute traffic to multiple application instances across every Availability Zone (p. 313) within a region (p. 327). Load balancers can span multiple Availability Zones within an Amazon EC2 region, but they cannot span multiple regions. logical name A case-sensitive unique string within an AWS CloudFormation template that identifies a resource (p. 327), mapping (p. 322), parameter, or output. In an AWS CloudFormation template, each parameter, resource, property, mapping, and output must be declared with a unique logical name. You use the logical name when dereferencing these items using the Ref function. M Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) machine utilization The amount of machine capacity used to complete a particular request (for example SELECT, GET, PUT, and so on), normalized to the hourly capacity of a standard processor. Machine utilization is measured in machine hour increments. mailbox provider An organization that provides email mailbox hosting services. Mailbox providers are sometimes referred to as Internet Service Provider (p. 320)s, even if they only provide mailbox services. main route table The default route table that any new VPC subnet uses for routing. You can associate a subnet with a different route table of your choice. You can also change which route table is the main route table. manifest When sending a create job request for an import or export operation you describe your job in a text file called a manifest. The manifest file is a YAML-formatted file that specifies how to transfer data between your storage device and the AWS cloud. MapReduce See http://hadoop.apache.org/docs/r1.2.0/mapred_tutorial.html. mapper An executable that splits the raw data into key/value pairs. The reducer uses the output of the mapper, called the intermediate results, as its input. mapping A way to add conditional parameter values to an AWS CloudFormation template. You specify mappings in the template's optional Mappings section and retrieve the desired value using the FN::FindInMap function. marker See pagination. API Version 2014-01-31 322 Amazon CloudFront 開発者ガイド master node A process running on an Amazon Machine Image (p. 312) that keeps track of the work its core and task nodes complete. member resources See resource. message ID Amazon SQS: The identifier returned when you send a message to a queue. metadata Amazon S3, Amazon EMR: A set of name/value pairs that describe the object. These include default metadata such as the date last modified and standard HTTP metadata such as Content-Type. Users can also specify custom metadata at the time they store an object. Amazon EC2: Data about an EC2 instance (p. 317) that the instance can retrieve to determine things about itself, such as, the instance type, the IP address, and so on. metric An element of time-series data defined by a unique combination of exactly one namespace, exactly one metric name, and between zero and ten dimensions. Metrics and the statistics derived from them are the basis of Amazon CloudWatch. metric name The primary identifier of a metric, used in combination with a namespace and optional dimensions. micro instance A type of EC2 instance (p. 317) that is more economical to use if you have occasional bursts of high CPU activity. MIME See ???TITLE???. Multi-AZ deployment A primary DB instance (p. 316) that has a synchronous standby replica in a different Availability Zone (p. 313). The primary DB instance is synchronously replicated across Availability Zones to the standby replica. multipart upload A feature that allows you to upload a single object as a set of parts. Multitool A Cascading (p. 315) application that provides a simple command-line interface for managing large datasets. N Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) namespace An abstract container that provides context for the items (names, or technical terms, or words) it holds, and allows disambiguation of homonym items residing in different namespaces. NAT Network address translation. NAT instance An instance that is configured to perform NAT (p. 323) in a VPC. A NAT instance enables private instances in the VPC to initiate Internet-bound traffic without being directly reachable from the Internet. network ACL An optional layer of security that acts as a firewall for controlling traffic in and out of a subnet. You can associate multiple subnets with a single network ACL, but a subnet can be associated with only one network ACL at a time. node After an Amazon Machine Image (p. 312) is launched, the resulting running system is referred to as a node. All instances based on the same AMI are identical at start-up. Any information about the node is lost when the node terminates or fails. API Version 2014-01-31 323 Amazon CloudFront 開発者ガイド NoEcho A property of AWS CloudFormation parameters that will prevent the otherwise default reporting of names and values of a template parameter. Declaring the NoEcho property causes the parameter value to be masked with asterisks in the report by the cfn-describe-stacks command. null object A null object is one whose version ID is null. Amazon S3 adds a null object to a bucket when versioning (p. 331) for that bucket is suspended. It is possible to have only one null object for each key in a bucket. O Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) object Amazon S3: The fundamental entity type stored in Amazon S3. Objects consist of object data and metadata. The data portion is opaque to Amazon S3. on-demand instance An Amazon EC2 pricing option that charges you for compute capacity by the hour with no long-term commitment. operation An API function. Also called an action. P Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) pagination Some APIs that return a potentially large list of records can return a subset by using a value to set the maximum number of returned records. They then provide a marker, which identifies the last record returned so that in a subsequent call, the user can get the next sequence of records. paid AMI An Amazon Machine Image (AMI) that you sell to other Amazon EC2 users. paravirtual virtualization See PV virtualization. part In a multipart upload request, each part is a contiguous portion of the object's data. PAT Port address translation. period See sampling period. permission A statement within a policy (p. 325) that allows or disallows access to a particular resource. You can state any permission like this: "A has permission to do B to C where D applies." For example, Jane (A) has permission to read messages (B) from John's Amazon SQS queue (C), as long as she asks to receive only a maximum of 10 messages from the queue at a time (D). Whenever Jane sends a request to Amazon SQS to use John's queue, the service checks to see if she has permission and if the request satisfies the conditions John set forth in the permission. persistent storage A long-term data storage solution. Options within AWS are: Amazon S3, Amazon EBS. API Version 2014-01-31 324 Amazon CloudFront 開発者ガイド physical name A unique label AWS CloudFormation assigns to each resource when creating a stack (p. 329). Some AWS CloudFormation commands accept the physical name as a value with the --physical-name parameter. Pig An open-source Apache library that runs on top of Hadoop. The library takes SQL-like commands written in a language called Pig Latin and converts those commands into MapReduce job flows. policy A policy is the formal description of the permissions for a resource. The access policy language distinguishes between a policy and a statement. A policy is the complete document that can contain many different permissions for a given resource. A statement is the description of an individual permission. Therefore a policy can contain multiple statements. For example, a policy could specify that Jane can use John's queue (one statement), and Bob cannot use John's queue (another statement). Auto Scaling: An object that stores the information needed to launch or terminate instances for an Auto Scaling group. Executing the policy causes instances to be launched or terminated. You can configure an alarm (p. 312) to invoke an Auto Scaling policy. Premium Support A one-on-one, fast-response support channel that AWS customers can subscribe to for support for AWS infrastructure services. See Also https://aws.amazon.com/premiumsupport/. principal The principal is the person or persons who receive the permission in the policy (p. 325). The principal is A in the statement "A has permission to do B to C where D applies." In a policy, you can set the principal to "anyone" (that is, you can specify a wildcard to represent all people). You might do this, for example, if you don't want to restrict access based on the actual identity of the requester, but instead on some other identifying characteristic such as the requester's IP address. The concept of principals doesn't apply to a IAM policy, because these policies are attached to users or groups. private IP address All EC2 instances are assigned two IP addresses at launch, which are directly mapped to each other through Network Address Translation (NAT): a private address (following RFC 1918) and a public address. Exception: Instances launched in Amazon VPC are assigned only a private IP address. private subnet A VPC subnet whose instances cannot be reached from the Internet. properties See resource property. property rule A JSON (p. 321)-compliant markup standard for declaring properties, mappings, and output values in an AWS CloudFormation template. provisioned IOPS A storage option designed to deliver fast, predictable, and consistent I/O performance. When you specify an IOPS rate while creating a DB Instance, Amazon RDS provisions that IOPS rate for the lifetime of the DB Instance. pseudo parameter A predefined setting, such as AWS:StackName that can be used in AWS CloudFormation templates without having to declare them. You can use pseudo parameters anywhere you can use a regular parameter. public AMI An Amazon Machine Image (p. 312) that all AWS accounts have permission to launch. public data set A large set of public data that can be seamlessly integrated into AWS cloud-based applications. Amazon stores public data sets at no charge to the community and, API Version 2014-01-31 325 Amazon CloudFront 開発者ガイド like all AWS services, users pay only for the compute and storage they use for their own applications. These data sets currently include data from the Human Genome Project, the U.S. Census, Wikipedia, and other sources. See Also http://aws.amazon.com/publicdatasets. public IP address All EC2 instances are assigned two IP addresses at launch, which are directly mapped to each other through Network Address Translation (NAT): a private address (following RFC 1918) and a public address. Exception: Instances launched in Amazon VPC are assigned only a private IP address. public subnet A subnet whose instances can be reached from the Internet. PV virtualization Paravirtual virtualization. Allows guest VMs to run on host systems that do not have special support extensions for full hardware and CPU virtualization. Because PV guests run a modified operating system that does not use hardware emulation, they cannot provide hardware-related features such as enhanced networking or GPU support. See Also HVM virtualization. Q Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) Query A type of HTTP-based request interface that generally uses only the GET or POST HTTP method and a query string with parameters. See Also REST, REST-Query. queue A sequence of messages or jobs held in temporary storage awaiting transmission or processing. queue URL A URL that uniquely identifies a queue. quota Amazon RDS: The maximum number of DB instance (p. 316)s and available storage you can use. • The number of cache clusters for each AWS account • The number of cache nodes per cache cluster • The total number of cache nodes per AWS account across all cache clusters created by that AWS account R Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) range GET A range GET specifies a byte range of data to get for a download. If an object is large, you can break up a download into smaller units by sending multiple range GET requests that each specify a different byte range to GET. RDS See Amazon Relational Database Service. API Version 2014-01-31 326 Amazon CloudFront 開発者ガイド read replica An active copy of another DB instance. Any updates to the data on the source DB instance are replicated to the read replica DB instance using the built-in replication feature of MySQL 5.1. receipt handle An identifier you get when you receive a message from the queue. This identifier is required to delete a message from the queue or when changing a message's visibility timeout. reducer An executable in the MapReduce process that uses the intermediate results from the mapper and processes them into the final output. reference A means of inserting a property from one AWS resource into another. For example, you could insert an Amazon EC2 security group property into an Amazon RDS resource. region A named set of AWS resources in the same geographical area. A region comprises at least two Availability Zones. requester A requester is a person who sends a request to an AWS service and asks for access to a particular resource. The requester sends a request to AWS that essentially says: "Can A do B to C where D applies?" In this question, the requester is A. Requester Pays An Amazon S3 feature that allows a bucket owner (p. 314) to specify that anyone who requests access to objects in a particular bucket must pay the data transfer and request costs. reservation A collection of EC2 instances started as part of the same launch request. resource 1. The objects you work with on AWS. This includes buckets, domains, instances, queues, and so on. 2. Tools, code, and documents that AWS provides to support users. 3. An object that the principal (p. 325) requests access to. The resource is C in the statement "A has permission to do B to C where D applies." 4. A required element of an AWS CloudFormation stack (p. 329). Each stack contains at least one resource, such as an Auto Scaling LaunchConfiguration. All resources in a stack must be created successfully for the stack to be created. resource property A value required when including an AWS resource in an AWS CloudFormation stack (p. 329). Each resource may have one or more properties associated with it. For example, an AWS::EC2::Instance resource may have a UserData property. In an AWS CloudFormation template, resources must declare a properties section, even if the resource has no properties. resource record Also called resource record set. Standard DNS terminology. See Also http://en.wikipedia.org/wiki/Domain_Name_System. REST A type of HTTP-based request interface that generally uses only the GET or POST HTTP method and a query string with parameters. Sometimes known as Query. In some implementations of a REST interface, other HTTP verbs besides GET and POST are used. REST-Query Also known as Query or HTTP Query. This is a type of HTTP request that generally uses only the GET or POST HTTP method and a query string with parameters. Compare this with REST, which is a type of HTTP request that uses any HTTP method (GET, DELETE, POST, etc.), a resource, HTTP headers, and possibly a query string with parameters. API Version 2014-01-31 327 Amazon CloudFront 開発者ガイド rollback A return to a previous state that follows the failure to create an object, such as AWS CloudFormation stack (p. 329). All resources associated with the failure are deleted during the rollback. For AWS CloudFormation, you can override this behavior using the --disable-rollback option on the command line. root device volume Contains the image used to boot the instance. If you launched the instance from an AMI backed by instance store, this is an instance store volume created from a template stored in Amazon S3. If you launched the instance from an AMI backed by Amazon EBS, this is an Amazon EBS volume created from an Amazon EBS snapshot. route table A set of routing rules that controls the traffic leaving any subnet that is associated with the route table. You can associate multiple subnets with a single route table, but a subnet can be associated with only one route table at a time. S Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) sampling period A defined duration of time, such as one minute, over which CloudWatch computes a statistic (p. 329). sandbox A testing location where you can test the functionality of your application without affecting production, incurring charges, or purchasing products. scaling activity A process that changes the size, configuration, or makeup of an Auto Scaling group (p. 313) by launching or terminating instances. For more information, see Auto Scaling Concepts in the Auto Scaling Developer Guide. security group A named set of allowed inbound network connections for an instance. (Security groups in Amazon VPC also include support for outbound connections.) Each security group consists of a list of protocols, ports, and IP address ranges. A security group can apply to multiple instances, and multiple groups can regulate a single instance. sender The person or entity sending an email message. Sender ID A Microsoft-controlled version of SPF. An email authentication and anti-spoofing system. For more information about Sender ID, go to http://wikipedia.org/wiki/Sender_ID. service endpoint See endpoint. service health dashboard A web page showing up-to-the-minute information about AWS service availability. The dashboard is located at http://status.aws.amazon.com. SHA Secure Hash Algorithm. SHA1 is an earlier version of the algorithm, which AWS has deprecated in favor of SHA256. shared AMI An Amazon Machine Image (p. 312) that a developer builds and makes available for others to use. shutdown action A predefined bootstrap action that launches a script that executes a series of commands in parallel before terminating the job flow. signature Refers to a digital signature, which is a mathematical way to confirm the authenticity of a digital message. AWS uses signatures to authenticate the requests API Version 2014-01-31 328 Amazon CloudFront 開発者ガイド you send to our web services. For more information, to http://aws.amazon.com/security. SIGNATURE file A file you copy to the root directory of your storage device. The file contains a job ID, manifest file, and a signature. Single-AZ DB Instance A standard (non-Multi-AZ) DB instance (p. 316) that is deployed in one Availability Zone (p. 313), without a standby replica in another Availability Zone. See Also Multi-AZ deployment. snapshot Amazon Elastic Block Store (p. 312) creates snapshots or backups of your volumes and stores them in Amazon S3. You can use these snapshots as the starting point for new Amazon EBS volumes or to protect your data for long-term durability. software VPN A software appliance-based VPN connection over the Internet. source/destination checking A security measure to verify that an EC2 instance is the origin of all traffic that it sends and the ultimate destination of all traffic that it receives, that is, that the instance is not relaying traffic. Source/destination checking is enabled by default. For instances that function as gateways, such as VPC NAT instances, source/destination checking must be disabled. SPF Sender Policy Framework. A standard for authenticating email. See Also http://www.openspf.org. stack AWS CloudFormation: A collection of AWS resources you create and delete as a single unit. statistic One of five functions of the values submitted for a given sampling period (p. 328). These functions are "Maximum", "Minimum," "Sum," "Average," and "SampleCount." step A single function applied to the data in a job flow (p. 321). The sum of all steps comprises a job flow. step type The type of work done in a step. There are a limited number of step types, such as moving data from Amazon S3 to Amazon EC2 or from Amazon EC2 to Amazon S3. sticky session A feature of the load balancer that binds a user's session to a specific application instance so that all requests coming from the user during the session are sent to the same application instance. By contrast, a load balancer defaults to route each request independently to the application instance with the smallest load. streaming Amazon EMR: A utility that comes with Hadoop that enables you to develop MapReduce executables in languages other than Java. string-to-sign Before you calculate an HMAC signature, you first assemble the required components in a canonical order. The pre-encrypted string is the string-to-sign. subnet A segment of the IP address range of a VPC (p. 331) that EC2 instances can be attached to. You can create subnets to group instances according to security and operational needs. Subscription button An HTML-coded button that enables an easy way to charge customers a recurring fee. supported AMI An Amazon Machine Image (p. 312) similar to a paid AMI (p. 324), except that the owner charges for additional software or a service that customers use with their own AMIs. API Version 2014-01-31 329 Amazon CloudFront 開発者ガイド T Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) tag Metadata (consisting of up to 10 key/value pairs) that you can define and assign to Amazon EC2 resources. task node An EC2 instance (p. 317) that runs Hadoop map and reduce tasks, but does not store data. Task nodes are managed by the master node (p. 323), which assigns Hadoop tasks to nodes and monitors their status. While a job flow is running you can increase and decrease the number of task nodes. Because they don't store data and can be added and removed from a job flow, you can use task nodes to manage the EC2 instance capacity your job flow uses, increasing capacity to handle peak loads and decreasing it later. Task nodes only run a TaskTracker Hadoop daemon. tebibyte A contraction of tera binary byte, a tebibyte is 2^40 bytes or 1,099,511,627,776 bytes. A terabyte is 10^12 or 1,000,000,000,000 bytes. template format version The version of an AWS CloudFormation template design that determines the available features. If you omit the AWSTemplateFormatVersion section from your template, AWS CloudFormation assumes the most recent format version. template validation The process of confirming the use of JSON (p. 321) code in an AWS CloudFormation template. You can validate any AWS CloudFormation template using the cfn-validate-template command. time series data Data provided as part of a metric. The time value is assumed to be when the value occurred. A metric is the fundamental concept for CloudWatch and represents a time-ordered set of data points. You publish metric data points into CloudWatch and later retrieve statistics about those data points as a time-series ordered data set. time stamp A date/time string in ISO 8601 format. topic A communication channel to send messages and subscribe to notifications. It provides an access point for publishers and subscribers to communicate with each other. Transport Layer Security A cryptographic protocol that provides security for communication over the Internet. Its predecessor is Secure Sockets Layer (SSL). tuning Selecting the number and type of AMIs (p. 312) to run a Hadoop job flow most efficiently. tunnel A route for transmission of private network traffic that uses the Internet to connect nodes in the private network. The tunnel uses encryption and secure protocols such as PPTP to prevent the traffic from being intercepted as it passes through public routing nodes. API Version 2014-01-31 330 Amazon CloudFront 開発者ガイド U Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) unbounded The number of potential occurrences is not limited by a set number. This value is often used when defining a data type that is a list (for example, maxOccurs="unbounded"), in Web Services Description Language (p. 332). unit Standard measurement for the values submitted to CloudWatch as metric data. Units include Seconds, Percent, Bytes, Bits, Count, Bytes/Second, Bits/Second, Count/Second, and None. usage report An AWS report giving details of your usage of a particular AWS service. You can generate and download usage reports from http://aws.amazon.com/usage-reports. user A person or application under an account (p. 311) that needs to make API calls to AWS products. Each user has a unique name within the AWS account, and a set of security credentials not shared with other users. These credentials are separate from the AWS account's security credentials. Each user is associated with one and only one AWS account. V Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) validation See template validation. Variable Envelope Return Path See ???TITLE???. versioning Every object in Amazon S3 has a key and a version ID. Objects with the same key, but different version IDs can be stored in the same bucket. Versioning is enabled at the bucket layer using PUT Bucket versioning. virtualization Allows multiple guest virtual machines (VM) to run on a host operating system. Guest VMs can run on one or more levels above the host hardware, depending on the type of virtualization. See Also PV virtualization, HVM virtualization. virtual private cloud See VPC. virtual private gateway See VPG. visibility timeout The period of time that a message is invisible to the rest of your application after an application component gets it from the queue. During the visibility timeout, the component that received the message usually processes it, and then deletes it from the queue. This prevents multiple components from processing the same message. VPC Virtual private cloud. An elastic network populated by infrastructure, platform, and application services that share common security and interconnection. VPG Virtual private gateway. The Amazon side of a VPN connection that maintains connectivity. The internal interfaces of the virtual private gateway connect to your API Version 2014-01-31 331 Amazon CloudFront 開発者ガイド VPC via the VPN attachment and the external interfaces connect to the VPN connection, which leads to the customer gateway. VPN connection Although VPN connection is a general term, we specifically mean the IPsec connection between a VPC (p. 331) and some other network, such as a corporate data center, home network, or co-location facility. W Numbers and Symbols (p. 311) | A (p. 311) | B (p. 314) | C (p. 314) | D (p. 316) | E (p. 317) | F (p. 319) | G (p. 319) | H (p. 319) | I (p. 320) | J (p. 321) | K (p. 321) | L (p. 321) | M (p. 322) | N (p. 323) | O (p. 324) | P (p. 324) | Q (p. 326) | R (p. 326) | S (p. 328) | T (p. 330) | U (p. 331) | V (p. 331) | W (p. 332) | X, Y, Z (p. 332) Web Services Description Language A language used to describe the actions that a web service can perform, along with the syntax of action requests and responses. Your SOAP or other toolkit interprets a WSDL file to provide your application access to the actions provided by the web service. For most toolkits, your application calls a service action using routines and classes provided or generated by the toolkit. X, Y, Z No entries API Version 2014-01-31 332
© Copyright 2025 Paperzz