Amazon CloudFront - Amazon Web Services

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
• _-.*$/~"'@:+
• &。&amp; として受け渡しされます
オリジン(既存のディストリビューションのみ)
既存のオリジンの [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
_-.*$/~"'
&。&amp; として受け渡しされます
デフォルトのルートオブジェクトを指定する場合、オブジェクト名のみを指定します(例:
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&parameter2=b
• http://d111111abcdef8.cloudfront.net/images/image.jpg?parameter2=b&parameter1=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