Amazon CloudFront - 開発者ガイド

Amazon CloudFront
開発者ガイド
API Version 2016-09-29
Amazon CloudFront 開発者ガイド
Amazon CloudFront: 開発者ガイド
Copyright © 2017 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
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 開発者ガイド
Table of Contents
Amazon CloudFront の概要 ............................................................................................................ 1
CloudFront がコンテンツを配信する方法 .................................................................................. 4
CloudFront とリージョン別エッジキャッシュとの連携 ................................................................ 6
CloudFront エッジサーバーの場所と IP アドレス範囲 ................................................................. 8
PCI DSS への準拠 ................................................................................................................ 8
CloudFront の AWS の請求書と使用状況レポート .............................................................................. 9
CloudFront 用の AWS 請求レポート ...................................................................................... 11
CloudFront 用の AWS 使用状況レポート ................................................................................ 12
CloudFront の AWS 請求書と AWS 使用状況レポートの解釈 ..................................................... 13
CloudFront レポート .................................................................................................................... 16
CloudFront キャッシュ統計レポート ...................................................................................... 17
CSV 形式でのデータのダウンロード .............................................................................. 18
キャッシュ統計のグラフと CloudFront アクセスログのデータとの関連 ................................ 20
CloudFront 人気オブジェクトレポート ................................................................................... 21
CSV 形式でのデータのダウンロード .............................................................................. 22
人気オブジェクトレポートのデータと CloudFront アクセスログのデータとの関連 ................ 23
CloudFront トップリファラレポート ...................................................................................... 24
CSV 形式でのデータのダウンロード .............................................................................. 25
トップリファラレポートのデータと CloudFront アクセスログのデータとの関連 ................... 26
CloudFront 使用状況レポート ................................................................................................ 26
CSV 形式でのデータのダウンロード .............................................................................. 27
使用状況グラフと CloudFront 使用状況レポートのデータとの関連 ...................................... 29
CloudFront ビューア レポート .............................................................................................. 31
ビューアのグラフおよびレポートの表示 ......................................................................... 31
CSV 形式でのデータのダウンロード .............................................................................. 32
ロケーションレポートのデータと CloudFront アクセスログのデータとの関連 ...................... 37
はじめに .................................................................................................................................... 39
ステップ 1: アマゾン ウェブ サービスにサインアップする ........................................................ 39
ステップ 2: コンテンツを Amazon S3 にアップロードし、オブジェクトに許可を付与する ............. 40
ステップ 3: CloudFront ウェブディストリビューションを作成する ............................................. 41
ステップ 4: リンクをテストする ............................................................................................ 47
ディストリビューションの使用 ..................................................................................................... 49
ウェブディストリビューションと RTMP ディストリビューションの概要 ..................................... 50
ウェブディストリビューション ..................................................................................... 51
RTMP ディストリビューション ..................................................................................... 51
ウェブディストリビューションと RTMP ディストリビューションの作成 ..................................... 51
CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う ............................ 52
ディストリビューションを削除する ....................................................................................... 53
代替ドメイン名(CNAME)を使用する .................................................................................. 53
代替ドメイン名に * ワイルドカードを使用する ................................................................ 54
代替ドメイン名を使用する上での制限 ............................................................................ 54
代替ドメイン名の追加 .................................................................................................. 55
CloudFront ディストリビューションの価格クラスを選択する ..................................................... 58
Amazon S3 での CloudFront の使用 ...................................................................................... 59
CloudFront を追加して Amazon S3 からコンテンツを配信する .......................................... 59
Amazon S3 バケットを別のリージョンに移動する ........................................................... 60
CloudFront API の変更点 ...................................................................................................... 61
ウェブディストリビューションの使用 ............................................................................................ 62
ウェブディストリビューションを作成するためのタスクリスト ................................................... 62
CloudFront コンソールを使用したウェブディストリビューションの作成または更新 ...................... 64
ウェブディストリビューションのテスト ................................................................................. 65
Amazon S3 オリジンおよびカスタムオリジンを使用したウェブディストリビューション ............... 65
オリジンとしての Amazon S3 バケットの使用 ................................................................ 66
Amazon EC2 または他のカスタムオリジンの使用 ............................................................ 67
ウェブディストリビューションを作成または更新する場合に指定する値 ...................................... 67
API Version 2016-09-29
iii
Amazon CloudFront 開発者ガイド
配信形式 .................................................................................................................... 69
オリジンの設定 ........................................................................................................... 69
キャッシュ動作の設定 .................................................................................................. 73
ディストリビューションの詳細 ..................................................................................... 81
Custom Error Pages(カスタムエラーページ)と Error Caching(エラーキャッシュ) .......... 86
制限 .......................................................................................................................... 86
ウェブディストリビューションを作成または更新する場合に CloudFront がコンソールに表示する
値 ..................................................................................................................................... 87
ディストリビューション ID([General] タブ) ................................................................. 88
ディストリビューションのステータス([General] タブ) .................................................. 88
最終更新日時([General] タブ) .................................................................................... 88
ドメイン名([General] タブ) ....................................................................................... 88
Amazon EC2 と他のカスタムオリジンの使用に関する要件および推奨事項 .................................. 89
AWS WAF を使用してコンテンツへのアクセスを管理する ........................................................ 89
コンテンツの地理的ディストリビューションの制限 .................................................................. 90
CloudFront の地域制限を使用する ................................................................................. 90
サードパーティの位置情報サービスを使用する ................................................................ 92
オンデマンドスムーズストリーミングの構成 ........................................................................... 93
オンデマンドプログレッシブダウンロードの構成 ..................................................................... 94
オンデマンド Apple HTTP Live Streaming(HLS)の構成 ......................................................... 94
CloudFront と Lambda@Edge の使用 ............................................................................................ 95
Lambda@Edge とは ............................................................................................................ 95
Lambda@Edge のユースケース ............................................................................................ 96
A/B テスト ................................................................................................................. 96
顧客のユーザーエージェントの検出とグループ化 ............................................................. 96
その他の例 ................................................................................................................. 96
対象となる CloudFront イベント ........................................................................................... 96
イベントの構造 ................................................................................................................... 97
リクエストイベント ..................................................................................................... 98
レスポンスイベント ..................................................................................................... 98
ヘッダー制限 ...................................................................................................................... 98
ブラックリストに記載されているヘッダー ...................................................................... 98
読み取り専用ヘッダー .................................................................................................. 99
関数の例 .......................................................................................................................... 101
RTMP ディストリビューションの使用 .......................................................................................... 103
RTMP ディストリビューションの機能 .................................................................................. 103
RTMP を使用するストリーミングメディアファイルのタスクリスト .......................................... 105
CloudFront コンソールを使用した RTMP ディストリビューションの作成 .................................. 106
RTMP ディストリビューションを作成または更新する場合に指定する値 .................................... 107
オリジンドメイン名(Amazon S3 バケット) ................................................................ 107
バケットアクセスの制限(Amazon S3 のみ) ................................................................ 108
オリジンアクセスアイデンティティ(Amazon S3 のみ) ................................................ 108
新しいアイデンティティに関するコメント(Amazon S3 のみ) ....................................... 109
アイデンティティ(Amazon S3 のみ) ......................................................................... 109
バケットに読み取り許可を付与する(Amazon S3 のみ) ................................................ 109
価格クラス ............................................................................................................... 109
代替ドメイン名(CNAME) ........................................................................................ 109
ログ記録 .................................................................................................................. 110
ログ用のバケット ...................................................................................................... 110
ログのプレフィックス ................................................................................................ 110
コメント .................................................................................................................. 110
ディストリビューションの状態 .................................................................................... 110
ビューアのアクセス制限(署名付き URL の使用) ......................................................... 111
信頼された署名者 ...................................................................................................... 111
AWS アカウント番号 ................................................................................................. 111
RTMP ディストリビューションを作成または更新する場合に CloudFront がコンソールに表示する
値 .................................................................................................................................... 112
ディストリビューション ID ......................................................................................... 112
API Version 2016-09-29
iv
Amazon CloudFront 開発者ガイド
ステータス ...............................................................................................................
最終更新日時 ............................................................................................................
ドメイン名 ...............................................................................................................
メディアプレーヤーを構成する ............................................................................................
MPEG ファイル ........................................................................................................
RTMP ディストリビューションのオリジンとして Amazon S3 バケットを使用する ......................
1 つのオリジンサーバーに対して複数の RTMP ディストリビューションを作成する ....................
Crossdomain.xml を使用してアクセスを制限する ...................................................................
RTMP ディストリビューションのエラーコード ......................................................................
RTMP ディストリビューションをトラブルシューティングする ................................................
オブジェクトの使用 ...................................................................................................................
CloudFront オブジェクトの URL の形式 ...............................................................................
Amazon S3 内のオブジェクトのパブリック URL の形式 .................................................
カスタムオリジン内のオブジェクトのパブリック URL の形式 ..........................................
パブリック URL がディレクトリの無効化に与える影響 ...................................................
署名付き URL の形式 .................................................................................................
CloudFront が HTTP および HTTPS リクエストを処理する方法 ...............................................
CloudFront エッジキャッシュから提供されるリクエストの比率の向上 .......................................
CloudFront がオブジェクトをキャッシュする期間の指定 .................................................
クエリ文字列パラメーターに基づくキャッシュ ..............................................................
Cookie 値に基づくキャッシュ .....................................................................................
リクエストヘッダーに基づくキャッシュ .......................................................................
HTTP を使用したメディアコンテンツの提供 .................................................................
クエリ文字列パラメーターに基づいてキャッシュするように CloudFront を設定する ....................
クエリ文字列の転送とキャッシュのためのコンソールおよび API の設定 ............................
キャッシュの最適化 ...................................................................................................
クエリ文字列パラメーターと CloudFront アクセスログ ...................................................
Cookie に基づいてオブジェクトをキャッシュするように CloudFront を設定する ........................
リクエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront を設定する .......
ヘッダーとウェブディストリビューション ....................................................................
ヘッダーと RTMP ディストリビューション ...................................................................
カスタムヘッダーをオリジン(ウェブディストリビューションのみ)へ転送する ........................
カスタムヘッダーをオリジン転送するよう CloudFront を設定する ....................................
CloudFront がオリジンに転送できないカスタムヘッダー .................................................
Cross-Origin Resource Sharing(CORS)でカスタム ヘッダーを使用する .........................
カスタムヘッダーを使用してカスタムオリジンのコンテンツへのアクセスを制限する ..........
ディストリビューション内のオブジェクトの追加、削除、または置換 ........................................
CloudFront で配布するオブジェクトを追加する .............................................................
バージョン付きのオブジェクト名を使用した既存オブジェクトの更新 ................................
同じオブジェクト名を使用した既存オブジェクトの更新 ..................................................
CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切れ) .........
オブジェクトの無効化(ウェブディストリビューションのみ) .........................................
エラーレスポンスのカスタマイズ .........................................................................................
カスタムエラーページのキャッシュ動作を作成または更新する .........................................
レスポンスコードを変更する .......................................................................................
CloudFront がエラーをキャッシュする時間を制御する ....................................................
カスタムエラーページが利用不可である場合の CloudFront の応答 ....................................
カスタムエラーページの料金 .......................................................................................
エラーレスポンス動作を構成する .................................................................................
CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 ..........................
デフォルトルートオブジェクトの指定(ウェブディストリビューションのみ) ...........................
圧縮ファイルの供給 ...........................................................................................................
CloudFront を使用してコンテンツを圧縮する ................................................................
カスタムオリジンを使用してコンテンツを圧縮する ........................................................
リクエストとレスポンスの動作 ....................................................................................................
Amazon S3 オリジンにおけるリクエストとレスポンスの動作 ..................................................
CloudFront がリクエストを処理して Amazon S3 オリジンサーバーに転送する方法 .............
CloudFront が Amazon S3 オリジンサーバーからのレスポンスを処理する方法 ...................
API Version 2016-09-29
v
112
112
112
113
113
114
114
115
115
115
117
117
118
119
119
120
120
120
121
121
121
122
123
123
124
125
126
126
128
128
132
132
133
133
134
134
135
135
135
136
136
142
149
150
151
151
152
152
152
154
155
157
157
160
162
162
162
167
Amazon CloudFront 開発者ガイド
カスタムオリジンの場合のリクエストとレスポンスの動作 ....................................................... 169
CloudFront がリクエストを処理してカスタムオリジンサーバーに転送する方法 ................... 169
CloudFront がカスタムオリジンサーバーからのレスポンスを処理する方法 ......................... 178
CloudFront がオリジンからの HTTP 3xx ステータスコードを処理する方法 ................................ 181
CloudFront がオリジンからの HTTP 4xx および 5xx ステータスコードを処理してキャッシュに保
持する方法 ....................................................................................................................... 182
カスタムエラーページが構成されている場合に CloudFront がエラーを処理する方法 ............ 182
カスタムエラーページが構成されていない場合に CloudFront がエラーを処理する方法 ......... 183
CloudFront がキャッシュする HTTP 4xx および 5xx ステータスコード .............................. 185
CloudFront を使用してプライベートコンテンツを供給する .............................................................. 186
プライベートコンテンツの概要 ............................................................................................ 186
CloudFront エッジキャッシュ内のオブジェクトへのアクセス制限 ..................................... 187
Amazon S3 バケット内のオブジェクトへのアクセス制限 ................................................ 188
プライベートコンテンツ用の HTTP サーバーの使用 ............................................................... 188
タスクリスト: プライベートコンテンツを供給する ................................................................. 189
オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する .... 190
CloudFront オリジンアクセスアイデンティティを作成してディストリビューションに追加
する ......................................................................................................................... 191
オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り許
可を付与する ............................................................................................................ 193
署名バージョン 4 のみをサポートする Amazon S3 リージョンでのオリジンアクセスアイデ
ンティティの使用 ...................................................................................................... 195
署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な AWS アカウントの指定 .... 196
信頼された署名者の CloudFront キーペアを作成する ...................................................... 197
CloudFront プライベートキーの形式を変更する(.NET および Java のみ) ........................ 199
信頼された署名者をディストリビューションに追加する .................................................. 199
信頼された署名者が有効になっていることを確認する(オプション) ................................ 201
CloudFront キーペアを更新する ................................................................................... 202
署名付き URL と署名付き Cookie の選択 .............................................................................. 203
署名付き URL と署名付き Cookie の両方の使用 ............................................................. 203
署名付き URL の使用 ......................................................................................................... 204
既定ポリシーとカスタムポリシーの選択(署名付き URL) .............................................. 204
署名付き URL の仕組み .............................................................................................. 205
署名付き URL の有効期間の選択 .................................................................................. 205
CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミング .......................... 206
サンプルコードおよびサードパーティツール ................................................................. 206
既定ポリシーを使用して署名付き URL を作成する ......................................................... 207
カスタムポリシーを使用して署名付き URL を作成する ................................................... 214
署名付き Cookie の使用 ..................................................................................................... 224
署名付き Cookie の既定ポリシーとカスタムポリシーの選択 ............................................. 224
署名付き Cookie の仕組み .......................................................................................... 224
署名付き Cookie の悪用の防止 .................................................................................... 225
CloudFront が署名付き Cookie 内の有効期限切れ日時を確認するタイミング ....................... 226
サンプルコードおよびサードパーティツール ................................................................. 226
既定ポリシーを使用した署名付き Cookie の設定 ............................................................ 226
カスタムポリシーを使用した署名付き Cookie の設定 ...................................................... 231
Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う ................... 240
署名付き URL の署名を作成するためのコード例 .................................................................... 241
Perl を使用して URL 署名を作成する ........................................................................... 241
PHP を使用して URL 署名を作成する .......................................................................... 243
C# と .NET Framework を使用して URL 署名を作成する ................................................. 245
Java を使用して URL 署名を作成する .......................................................................... 251
CloudFront で HTTPS を使用する ................................................................................................ 254
ビューアと CloudFront との通信で HTTPS を必須にする ........................................................ 255
CloudFront とカスタムオリジンとの間の通信に HTTPS を必須にする ....................................... 256
CloudFront 設定を変更する ......................................................................................... 256
カスタムオリジンサーバーに SSL/TLS 証明書をインストールする .................................... 257
CloudFront と Amazon S3 オリジンとの間の通信に HTTPS を必須にする .................................. 258
API Version 2016-09-29
vi
Amazon CloudFront 開発者ガイド
代替ドメイン名と HTTPS の使用 ......................................................................................... 259
CloudFront で HTTPS リクエストを供給する方法の選択 ................................................. 260
CloudFront で SSL/TLS の証明書を使用するための要件 .................................................. 261
CloudFront で SSL/TLS 証明書を使用することの制限 (ビューアと CloudFront との間でのみ
HTTPS) .................................................................................................................... 264
代替ドメイン名と HTTPS の設定 ................................................................................. 265
SSL/TLS 証明書内のパブリックキーのサイズの確認 ....................................................... 268
SSL/TLS 証明書の制限の引き上げ ................................................................................ 268
SSL/TLS 証明書の更新 ............................................................................................... 269
独自 SSL/TLS 証明書からデフォルトの CloudFront 証明書に戻す ..................................... 270
独自 SSL/TLS 証明書を専用 IP アドレスから SNI に切り替える ....................................... 271
サポートされているプロトコルと暗号 ................................................................................... 271
サポートされるプロトコル .......................................................................................... 271
サポートされる暗号化 ................................................................................................ 272
HTTPS 接続料金 ............................................................................................................... 273
認証とアクセスコントロール ....................................................................................................... 274
認証 ................................................................................................................................. 274
アクセスコントロール ........................................................................................................ 276
アクセス管理の概要 ........................................................................................................... 276
CloudFront リソース用の ARN .................................................................................... 276
リソース所有権について ............................................................................................. 277
リソースへのアクセスの管理 ....................................................................................... 277
ポリシー要素の指定 : リソース、アクション、効果、プリンシパル ................................... 278
ポリシーでの条件の指定 ............................................................................................. 279
CloudFront で IAM ポリシーを使用する ................................................................................ 279
CloudFront コンソールを使用するために必要なアクセス権限 ........................................... 280
CloudFront での AWS 管理 (事前定義) ポリシー ............................................................ 281
お客様が管理するポリシーの例 .................................................................................... 282
CloudFront API のアクセス権限リファレンス ......................................................................... 284
ウェブディストリビューションでアクションに必要なアクセス権限 ................................... 285
RTMP ディストリビューションでアクションに必要なアクセス権限 .................................. 286
無効化でアクションに必要なアクセス権限 .................................................................... 287
オリジンアクセスアイデンティティに必要なアクセス権限 ............................................... 287
タグに対するアクションで必要なアクセス権限 .............................................................. 288
アクセスログ ............................................................................................................................ 289
ログ記録のしくみ .............................................................................................................. 289
アクセスログ用の Amazon S3 バケットの選択 ...................................................................... 290
ロギングの設定およびログファイルへのアクセスに必要なアクセス許可 ..................................... 291
ファイル名の形式 .............................................................................................................. 291
ログファイル配信のタイミング ............................................................................................ 292
アクセスログの分析 ........................................................................................................... 292
ログ記録設定の編集 ........................................................................................................... 292
Amazon S3 バケットからのログファイルの削除 ..................................................................... 293
ログファイル形式 .............................................................................................................. 293
ウェブディストリビューションのログファイル形式 ........................................................ 294
RTMP ディストリビューションのログファイル形式 ........................................................ 300
アクセスログの料金 ........................................................................................................... 302
CloudWatch を使用した CloudFront アクティビティの監視 .............................................................. 303
ディストリビューションのメトリックスの表示 ...................................................................... 303
通知の受信 ....................................................................................................................... 303
CSV 形式でのデータのダウンロード .................................................................................... 304
レポートに関する情報 ................................................................................................ 304
CloudWatch メトリクスレポートのデータ ..................................................................... 305
Amazon CloudFront Metrics ................................................................................................ 305
Dimensions for CloudFront Metrics ....................................................................................... 306
CloudTrail による API リクエストのキャプチャ .............................................................................. 307
CloudTrail ログファイル内の CloudFront 情報 ........................................................................ 307
CloudFront ログファイルエントリの概要 ............................................................................... 308
API Version 2016-09-29
vii
Amazon CloudFront 開発者ガイド
Amazon CloudFront ディストリビューションのタグ付け ................................................................. 313
タグの制限 ....................................................................................................................... 314
ディストリビューションに対するタグの追加、編集、削除 ....................................................... 314
トラブルシューティング ............................................................................................................. 315
ウェブディストリビューション内のファイルを表示できません。 .............................................. 315
CloudFront と Amazon S3 の両方にサインアップしましたか? .......................................... 315
Amazon S3 バケットとオブジェクトの許可設定は正しいですか? ...................................... 315
代替ドメイン名(CNAME)が正しく構成されていますか? .............................................. 316
参照している CloudFront ディストリビューションの URL は正しいですか? ....................... 316
カスタムオリジンに関するトラブルシューティングでサポートをお求めですか? .................. 316
RTMP ディストリビューション内のファイルを表示できません。 ............................................. 317
エラーメッセージ「Certificate: <certificate-id> is being used by CloudFront.」が表示されます。 .... 317
CloudFront の負荷テスト ............................................................................................................ 318
ストリーミングチュートリアル .................................................................................................... 319
ライブストリーミング ........................................................................................................ 319
オンデマンドストリーミング ............................................................................................... 319
RTMP ストリーミング ....................................................................................................... 319
CloudFront および Adobe Media Server 5.0 を使用したライブ HTTP ストリーミング ................... 319
概要 ......................................................................................................................... 320
ライブストリーミングの構成ステップ ........................................................................... 321
Amazon Web Services アカウントを作成する ................................................................ 321
Amazon EC2 キーペアを作成する ................................................................................ 322
Adobe Media Server をサブスクライブする ................................................................... 322
ライブストリーミング用の AWS CloudFormation スタックを作成する ............................... 323
Adobe Media Server が実行されていることを確認する ................................................... 325
ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップする ... 325
ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Strobe Media
Playback を埋め込む .................................................................................................. 329
ライブストリーミング用の AWS CloudFormation スタックと Amazon EBS ボリュームを削
除する ..................................................................................................................... 331
よくある質問 ............................................................................................................ 331
その他のドキュメント ................................................................................................ 337
Amazon CloudFront と IIS Media Services 4.1 を使用したライブスムーズストリーミング ............. 339
アマゾン ウェブ サービスを使用したライブスムーズストリーミングの概要 ........................ 339
アマゾン ウェブ サービスアカウントの作成 .................................................................. 340
Amazon EC2 キーペアを作成する ................................................................................ 341
ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する ................... 341
Amazon EC2 Windows Server インスタンスの実行確認 .................................................. 344
Windows パスワードの取得 ......................................................................................... 345
ライブストリームの暗号化 .......................................................................................... 346
ライブスムーズストリームの表示 ................................................................................. 346
AWS CloudFormation のライブスムーズストリーミングスタックの削除 ............................. 347
よくある質問 ............................................................................................................ 347
その他のドキュメント ................................................................................................ 349
Wowza Streaming Engine 4.2 によるライブストリーミング ..................................................... 350
アマゾン ウェブ サービスアカウントの作成 .................................................................. 350
Amazon EC2 キーペアを作成する ................................................................................ 351
Wowza Streaming Engine 4.2 のライセンスを取得する ................................................... 351
AWS Marketplace で Wowza Streaming Engine 4.2 をサブスクライブする ......................... 351
ライブストリーミング用の AWS CloudFormation スタックを作成する ............................... 352
Wowza Streaming Engine 4.2 が実行されていることを確認する ....................................... 354
ライブストリームを公開するエンコーダーをセットアップする ......................................... 354
ウェブアプリケーションを使用してライブストリームを再生する ...................................... 356
ライブストリーミング用の AWS CloudFormation スタックを削除する ............................... 357
よくある質問 ............................................................................................................ 357
その他のドキュメント ................................................................................................ 359
CloudFront および任意の HTTP オリジンを使用したライブ HTTP ストリーミング ...................... 360
ライブストリーミング用の新しい CloudFront ディストリビューションの作成 ..................... 360
API Version 2016-09-29
viii
Amazon CloudFront 開発者ガイド
ライブストリームを再生するためのウェブプレーヤーの設定 ............................................ 361
(オプション) ライブストリーミング用の AWS CloudFormation スタックの削除 ................... 361
Unified Streaming を使用したオンデマンドメディアストリーミング .......................................... 362
Amazon Web Services アカウントを作成する ................................................................ 363
Amazon EC2 キーペアを作成する ................................................................................ 363
Unified Streaming のサブスクライブ ............................................................................ 364
オンデマンドストリーミング用の AWS CloudFormation スタックの作成 ............................ 364
Unified Streaming サーバーが実行されていることの確認 ................................................. 367
Amazon S3 へのメディアファイルのアップロード ......................................................... 367
テストウェブアプリケーションでのオンデマンドストリームの再生 ................................... 368
オンデマンドストリーミング用の AWS CloudFormation スタックと Amazon S3 バケットの
削除 ......................................................................................................................... 371
よくある質問 ............................................................................................................ 371
その他のドキュメント ................................................................................................ 374
CloudFront および Adobe Flash Player を使用したオンデマンドビデオストリーミング ................ 376
Amazon S3 バケットを作成する .................................................................................. 376
CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 ........ 377
Adobe Flash Builder を使用して Flash プロジェクトを作成する ....................................... 378
メディアファイルと Flash Builder ファイルを Amazon S3 バケットにアップロードする ....... 379
メディアファイルを再生する ....................................................................................... 380
CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミン
グ .................................................................................................................................... 381
メディアファイルと Flowplayer ファイルを Amazon S3 バケットにアップロードする .......... 381
CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 ........ 382
HTML ページにビデオを埋め込む ................................................................................ 384
CloudFront および JW Player を使用したオンデマンドビデオストリーミング ............................. 386
メディアファイルと JW Player ファイルを Amazon S3 バケットにアップロードする ........... 386
CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 ........ 387
ウェブページにビデオを埋め込む ................................................................................. 389
HTML ファイルをアップロードしてビデオを再生する ..................................................... 390
制限 ......................................................................................................................................... 391
リソース .................................................................................................................................. 393
Amazon CloudFront の追加ドキュメント .............................................................................. 393
サポート情報 .................................................................................................................... 393
CloudFront 開発者用ツールと SDK ...................................................................................... 394
CloudFront ログ作成の使用 ................................................................................................. 394
Amazon Web Services Blog によるその他のヒント ................................................................ 394
オブジェクトの無効化 ........................................................................................................ 395
ストリーミングメディアの配信 ............................................................................................ 395
プライベートコンテンツの設定ツールとコード例 ................................................................... 395
コンテンツマネジメントシステムと CloudFront の使用 ........................................................... 396
ドキュメント履歴 ...................................................................................................................... 397
AWS の用語集 .......................................................................................................................... 412
API Version 2016-09-29
ix
Amazon CloudFront 開発者ガイド
Amazon CloudFront の概要
Amazon CloudFront は、静的および動的なウェブコンテンツ (.html、.css、.php、イメージファイル
など) をユーザーに高速に配信するウェブサービスです。CloudFront は、エッジロケーションという
データセンターの世界的ネットワークを経由してコンテンツを配信します。CloudFront を使用して提
供されているコンテンツをユーザーがリクエストすると、そのユーザーはエッジロケーションにルー
ティングされます。エッジロケーションでは最も低いレイテンシー (遅延時間) が提供されるので、コ
ンテンツは可能な最高のパフォーマンスで配信されます。コンテンツがエッジロケーション内に最も
低いレイテンシーですでに存在している場合、CloudFront はそのコンテンツを即時に配信します。コ
ンテンツがこのエッジロケーションに存在しない場合、CloudFront は、コンテンツの最終バージョン
のソースとして識別されている Amazon S3 バケットまたは HTTP サーバー (ウェブサーバーなど) か
らコンテンツを取り込みます。
分かりやすく例を挙げて説明しましょう。次のイメージが CloudFront からではなく従来のウェブサー
バーから提供されていると仮定します。
API Version 2016-09-29
1
Amazon CloudFront 開発者ガイド
(このイメージは、NASA の所有物であり、Visible Earth ウェブサイト http://visibleearth.nasa.gov/ か
ら取得されたものです)。
このイメージは、URL http://example.com/globe_west_540.png を使用して提供されていま
す。ユーザーは簡単にこの URL にアクセスしてイメージを表示できます。ただし、イメージが見つか
るまでリクエストがネットワークから別のネットワークに(インターネットを構成する相互接続ネッ
トワークの複雑な集合経由で)ルーティングされたということを、おそらくユーザーは認識しませ
ん。
さらに、イメージを提供しているウェブサーバーが米国ワシントン州のシアトルに存在し、米国テキ
サス州のオースチンにいるユーザーがそのイメージをリクエストしたと仮定します。次のトレースリ
スト (www.WatchMouse.com の許可により転載) は、このリクエストがルーティングされる可能性が
ある 1 つの経路を示しています。
API Version 2016-09-29
2
Amazon CloudFront 開発者ガイド
この例では、イメージが取り込まれるまで、リクエストが米国内を 10 回ルーティングされていま
す。これは異常に多いホップ数 (ソースと最終的なターゲットとの間のネットワークパス) ではあり
ません。ユーザーがヨーロッパにいる場合、リクエストはさらに多くのネットワークを経由してシア
トルのサーバーに到達します。リクエストとイメージが移動する必要があるネットワークの数と距離
は、イメージのパフォーマンス、信頼性、および可用性に多大な影響を与えます。
CloudFront は、コンテンツを最良の方法で供給できるエッジロケーションに各ユーザーリクエストを
ルーティングすることによって、お客様のコンテンツの配信速度を向上させます。通常は、最も低い
レイテンシーを提供する CloudFront エッジロケーションが使われます。これにより、ユーザーのリク
エストが通過しなければならないネットワークの数が大幅に減少するので、パフォーマンスが向上し
ます。ユーザーが経験するレイテンシー (ファイルの最初のバイトがロードされるまでの時間) が低く
なり、データ転送速度が高くなります。お客様のファイル (オブジェクトとしても知られる) のコピー
が世界中の複数のエッジロケーションに保持されるので、信頼性と可用性の向上も得られます。
API Version 2016-09-29
3
Amazon CloudFront 開発者ガイド
CloudFront がコンテンツを配信する方法
CloudFront エッジサーバーの場所の一覧については、Amazon CloudFront 製品の詳細情報ページをご
覧ください。
トピック
• CloudFront がコンテンツを配信する方法 (p. 4)
• CloudFront とリージョン別エッジキャッシュとの連携 (p. 6)
• CloudFront エッジサーバーの場所と IP アドレス範囲 (p. 8)
• PCI DSS への準拠 (p. 8)
CloudFront がコンテンツを配信する方法
初期セットアップを行った後、CloudFront はバックグラウンドで動作して、お客様のコンテンツの配
信を高速化します。この概要には、最初のユーザーがお客様のアプリケーションまたはウェブサイト
にアクセスする前にお客様が実行する手順と、構成完了後に CloudFront がお客様のコンテンツを提供
する方法についての説明の両方が含まれています。
CloudFront のセットアップでは、いくつかの簡単な手順を行います。
コンテンツを配信するように CloudFront を構成する方法
1.
お客様はオリジンサーバーを構成します。CloudFront は、このサーバーからファイルを取得し、
世界中の CloudFront エッジロケーションでファイルのディストリビューションを行います。
オリジンサーバーには、お客様のオブジェクトのオリジナルの最終バージョンが保存されま
す。コンテンツを HTTP 経由で提供する場合、オリジンサーバーは Amazon S3 バケットまた
は HTTP サーバー(ウェブサーバーなど)になります。HTTP サーバーは、Amazon Elastic
Compute Cloud (Amazon EC2) インスタンス、またはお客様が管理するサーバーで実行できま
す。これらのサーバーはカスタムオリジンとも呼ばれます。
Adobe Media Server RTMP プロトコルを使用してオンデマンドでメディアファイルを配信してい
る場合、オリジンサーバーは必ず Amazon S3 バケットになります。
2.
ファイルをオリジンサーバーにアップロードします。通常、お客様のファイル(オブジェクトと
も呼ぶ)にはウェブページ、イメージ、メディアファイルなどがありますが、HTTP またはサ
ポートされているバージョンの Adobe RTMP(Adobe Flash Media Server で使用されるプロトコ
ル)経由で供給できるすべてのものをオブジェクトとして使用できます。
Amazon S3 バケットをオリジンサーバーとして使用している場合、バケット内のオブジェクトを
読み取り可能にして公開することで、オブジェクトの CloudFront URL を知っているユーザーな
らだれでもオブジェクトにアクセスできるようにすることができます。オブジェクトを非公開に
して、オブジェクトにアクセスするユーザーを制限することもできます。「CloudFront を使用し
てプライベートコンテンツを供給する (p. 186)」を参照してください。
3.
CloudFront ディストリビューションを作成します。このディストリビューションは、ユーザーが
ウェブサイトまたはアプリケーションを通じてファイルをリクエストしたときに、どのオリジン
サーバーからファイルを取得するかを CloudFront に指示します。同時に、詳細も指定します。た
とえば、CloudFront ですべてのリクエストをログに記録するかどうかや、ディストリビューショ
ンを作成した直後にディストリビューションを有効にするかどうかなどです。
4.
CloudFront はドメイン名を新しいディストリビューションに割り当て、CloudFront コンソールに
表示するか、プログラムでのリクエスト (API リクエストなど) への応答として返します。
5.
CloudFront はディストリビューションの構成を関係するすべてのエッジロケーショ
ン(CloudFront がオブジェクトのコピーをキャッシュするために使用する、地理的に分散して配
置されたデータセンター内のサーバー群)に送信します。ただし、ディストリビューションのコ
ンテンツは送信されません。
API Version 2016-09-29
4
Amazon 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 のようになります。
オプションで、ファイルにヘッダーを追加するようにオリジンサーバーを構成することもできます。
このヘッダーは、ファイルが CloudFront エッジロケーションのキャッシュに保持される期間を示し
ます。デフォルトでは、各オブジェクトはエッジロケーションに 24 時間保持された後に有効期限
切れになります。最小の有効期限切れ時間は 0 秒です。有効期限切れ時間の上限はありません。詳
細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
CloudFront がコンテンツをユーザーに配信する方法
CloudFront でコンテンツ配信の構成が完了すると、ユーザーがオブジェクトをリクエストしたときに
次の処理が行われます。
1.
ユーザーがウェブサイトまたはアプリケーションにアクセスして、イメージファイルや HTML
ファイルなどの 1 つまたは複数のオブジェクトをリクエストします。
2.
DNS は、ユーザーのリクエストを最良の方法でそのリクエストに対応できる CloudFront エッジ
ロケーション(通常はレイテンシーの点から最寄りの CloudFront エッジロケーション)にルー
ティングします。
API Version 2016-09-29
5
Amazon CloudFront 開発者ガイド
CloudFront とリージョン別エッジキャッシュとの連携
3.
そのエッジロケーションで、CloudFront は要求されたファイルがキャッシュにあるかどうかを
チェックします。ファイルがキャッシュにある場合、CloudFront はファイルをユーザーに返しま
す。ファイルがキャッシュにない場合は、次のように処理します。
a.
CloudFront は、ディストリビューションに指定された内容とリクエストを照合し、ファイル
のリクエストを、対応するファイルタイプに応じて該当のオリジンサーバーに転送します。
たとえば、イメージファイルの場合は Amazon S3 バケット、HTML ファイルの場合は HTTP
サーバーです。
b.
c.
オリジンサーバーは、CloudFront エッジロケーションにファイルを返します。
オリジンから最初のバイトが到着した直後に、CloudFront はユーザーへのファイルの転送を
開始します。また、CloudFront はキャッシュにファイルを追加し、次にこのファイルがリク
エストされた場合に備えます。
CloudFront とリージョン別エッジキャッシュとの
連携
CloudFront リージョン別エッジキャッシュは、コンテンツが CloudFront エッジロケーションに残る
だけの人気が十分にない場合でも、より多くのコンテンツを閲覧者の近くに配置します。これによ
り、閲覧者に対するパフォーマンスを向上させながら、オリジンリソースのスケーリングに関する運
用面の負担とコストを低減できます。
この機能は、すべてのタイプのコンテンツ (特に、時間の経過とともに人気が落ちる傾向にあるコン
テンツ) に役立ちます。この例には、ビデオ、写真、アートワークようなユーザーが生成したコンテン
ツ、製品の写真やビデオのような e コマースアセット、突然新たに人気が出る可能性があるニュース
やイベント関連のコンテンツがあります。
リージョン別キャッシュの動作
リージョン別エッジキャッシュは、閲覧者に近接して世界各地にデプロイされる CloudFront ロケー
ションです。これらのロケーションは、オリジンウェブサーバーと、閲覧者に直接トラフィックを
API Version 2016-09-29
6
Amazon CloudFront 開発者ガイド
CloudFront とリージョン別エッジキャッシュとの連携
提供する世界各地のエッジロケーションの間にあります。オブジェクトの人気が下がると、個別の
エッジロケーションでは、これらのオブジェクトを削除し、より人気の高いコンテンツ用に容量を確
保する場合があります。リージョン別エッジキャッシュのキャッシュ幅は、どの個別のエッジロケー
ションよりも大きいため、オブジェクトは最も近いリージョン別エッジキャッシュロケーションで
より長くキャッシュに残ります。これにより、より多くのコンテンツが閲覧者の近くに保持されるた
め、CloudFront がオリジンウェブサーバーに戻る必要がなくなり、閲覧者に対する全般的なパフォー
マンスが向上します。
閲覧者がウェブサイトまたはアプリケーションからリクエストを実行すると、DNS はユーザーのリ
クエストに対応できる最適な CloudFront エッジロケーションにリクエストをルーティングします。
通常、この場所は、レイテンシーに関して最も近い CloudFront エッジロケーションです。そのエッ
ジロケーションで、CloudFront は要求されたファイルがキャッシュにあるかどうかをチェックし
ます。ファイルがキャッシュにある場合、CloudFront はファイルをユーザーに返します。ファイル
がキャッシュにない場合、エッジサーバーは最も近くのリージョン別エッジキャッシュに接続して
オブジェクトをフェッチします。そのリージョン別エッジロケーションで、CloudFront は要求され
たファイルがキャッシュにあるかどうかをもう一度チェックします。ファイルがキャッシュにある
場合、CloudFront は要求されたエッジロケーションにファイルを転送します。リージョン別エッジ
キャッシュロケーションから最初のバイトが到着した直後に、CloudFront はユーザーへのファイルの
転送を開始します。また、CloudFront はリクエストされたエッジロケーションのキャッシュにファイ
ルを追加し、次にこのファイルがリクエストされた場合に備えます。
エッジロケーションとリージョン別エッジキャッシュロケーションの両方でキャッシュされていない
ファイルについて、CloudFront はディストリビューションの仕様とリクエストを比較し、ファイルの
リクエストを該当するオリジンウェブサーバーに転送します。オリジンウェブサーバーがファイルを
リージョン別エッジキャッシュロケーションに送信すると、要求されたエッジロケーションに転送さ
れ、CloudFront はファイルをユーザーに転送します。この場合、CloudFront は次回に閲覧者がファ
イルを要求したときに、エッジロケーションに加えてリージョン別エッジキャッシュロケーションの
キャッシュにファイルを追加します。これで、リージョン内のすべてのエッジロケーションがロー
カルキャッシュを共有し、オリジンウェブサーバーに対する複数のリクエストが排除されます。さら
に、CloudFront はオリジンウェブサーバーと永続的接続を維持し、それらのファイルをできる限り早
くオリジンサーバーからフェッチできるようにします。
Note
• CloudFront ディストリビューションを変更する必要はありません。リージョン別エッジ
キャッシュは、すべての CloudFront ディストリビューションに対してデフォルトで有効に
なっています。
• この機能を使用しても追加コストは発生しません。
• リージョン別エッジキャッシュには、エッジロケーションと同等の機能があります。たと
えば、キャッシュ無効化リクエストでは、有効期限が切れる前に、エッジキャッシュと
リージョン別エッジキャッシュの両方からオブジェクトが削除されます。エンドユーザー
が次にオブジェクトを要求したときに、CloudFront はオリジンに戻ってオブジェクトの最
新バージョンをフェッチします。
• カスタムオリジンで利用できるリージョン別エッジキャッシュ。Amazon S3 オリジンはサ
ポートされません。
• プロキシメソッド PUT/POST/PATCH/OPTIONS/DELETE はエッジロケーションからオリジ
ンに直接送信され、リージョン別エッジキャッシュをプロキシ経由しません。
• リクエスト時に決定される動的コンテンツ (すべてのヘッダーを転送するように設定された
キャッシュ動作) は、リージョン別エッジキャッシュを介して送信されず、直接オリジンに
送信されます。
• コンソールで利用できるキャッシュヒット率メトリクスを使用して、この機能によるパ
フォーマンス向上を測定できます。キャッシュヒット率メトリクスの詳細については、
「CloudFront キャッシュ統計レポート」を参照してください。
API Version 2016-09-29
7
Amazon CloudFront 開発者ガイド
CloudFront エッジサーバーの場所と IP アドレス範囲
CloudFront エッジサーバーの場所と IP アドレス
範囲
CloudFront エッジサーバーの場所の一覧については、Amazon CloudFront 製品の詳細情報ページをご
覧ください。
Amazon Web Services (AWS) は、その現在の IP アドレス範囲を JSON 形式で公開します。現在の
範囲を参照するには、ip-ranges.json ファイルをダウンロードします。詳細については、『アマゾン
ウェブ サービス全般のリファレンス』の「AWS IP アドレスの範囲」を参照してください。
CloudFront エッジサーバーに関連付けられた IP アドレス範囲を見つけるには、ip-ranges.json ファイ
ルで次の文字列を検索します。
"service": "CLOUDFRONT"
PCI DSS への準拠
CloudFront は、マーチャントまたはサービスプロバイダーによるクレジットカードデータの処理、
ストレージ、および伝送をサポートしており、Payment Card Industry (PCI) Data Security Standard
(DSS) に準拠していることが確認されています。PCI DSS の詳細 (AWS PCI Compliance Package の
コピーをリクエストする方法など) については、「PCI DSS レベル 1」を参照してください。
セキュリティを確保するうえでのベストプラクティスとして、CloudFront エッジキャッシュにク
レジットカード情報をキャッシュしないことを推奨します。たとえば、クレジットカード番号の
末尾 4 桁の数字やカード所有者の連絡先情報などのクレジットカード情報を含んでいる CacheControl:no-cache="field-name" ヘッダーをレスポンスの含めるようにオリジンを設定できま
す。
API Version 2016-09-29
8
Amazon CloudFront 開発者ガイド
CloudFront の AWS の請求書と使用
状況レポート
Amazon CloudFront は、お客様が前払い金を支払う必要がないように、またお客様がコンテンツの量
に義務を負う必要がないように設計されています。他の AWS サービスと同様に、使用時に使用した
ものに対してのみ支払いを行います。
以下の図と表を使用して、CloudFront の使用料の概要を説明します。
API Version 2016-09-29
9
Amazon CloudFront 開発者ガイド
AWS からの毎月の請求書では、AWS のサービスと機能ごとに使用量と金額が分けられています。次
の表は、前の図で説明した料金の一覧です。
料金
コメント
Amazon S3 バケットのスト
レージ
通常の Amazon S3 ストレージ料金を支払って、お客様のバ
ケットにオブジェクトを保存します。料金は、AWS ステート
メントの Amazon S3 部分に表示されます。
エッジロケーションからのオ
ブジェクトの提供
CloudFront がオブジェクトに対するリクエストに応答する
と、CloudFront の料金が発生します。これらの料金は、対
応する Amazon S3 の料金より安くなります。CloudFront 料
金は、AWS ステートメントの CloudFront 部分に表示されま
す。詳細については、「Amazon CloudFront 料金表」を参照
してください。
オリジンへのデータの送信
ユーザーがデータをオリジンに転送する
と、CloudFront 料金が発生します。転送データには
DELETE、OPTIONS、PATCH、POST、PUT リクエストが
含まれます。CloudFront 料金は、AWS ステートメント
の CloudFront 部分に表示されます。詳細については、
「Amazon CloudFront 料金表」を参照してください。
API Version 2016-09-29
10
Amazon CloudFront 開発者ガイド
CloudFront 用の AWS 請求レポート
Note
HTTPS リクエストに対する追加料金も発生します。詳細については、「Amazon CloudFront
料金表」を参照してください。
AWS には、CloudFront の使用状況レポートが 2 種類、用意されています。
• 請求レポートは、CloudFront も含めて使用している AWS サービスのアクティビティすべてを高レ
ベルで把握します。詳細については、「CloudFront 用の AWS 請求レポート (p. 11)」を参照して
ください。
• 使用状況レポートは、特定のサービスのアクティビティの概要を時間、日、または月単位で集約し
て示します。詳細については、「CloudFront 用の AWS 使用状況レポート (p. 12)」を参照してく
ださい。
さらに、CloudFront の使用状況をグラフィカルに表現する使用状況グラフも表示できます。詳細につ
いては、「CloudFront 使用状況レポート (p. 26)」を参照してください。
CloudFront 用の AWS 請求レポート
AWS マネジメントコンソール の請求ページで、AWS の使用状況と料金の概要をサービス別に表示で
きます。
また、レポートの詳細版を CSV 形式でダウンロードすることもできます。詳細請求レポートに
は、CloudFront に該当する次の値が記載されています。
• ProductCode — AmazonCloudFront
• UsageType — 以下の値のいずれかです。
• データ転送のタイプを識別するコード
• Invalidations
• SSL-Cert-Custom
詳細については、「CloudFront の AWS 請求書と AWS 使用状況レポートの解釈 (p. 13)」を参照
してください。
• ItemDescription — UsageType の請求レートの説明。
• Usage Start Date/Usage End Date — 使用状況に該当する協定世界時(UTC)による日付。
• Usage Quantity — 以下の値のいずれかです。
• 指定した期間のリクエストの数
• データ転送量(GB)
• 無効にされたオブジェクトの数
• SSL 証明書を有効な CloudFront ディストリビューションに関連付けた月数を案分計算した合計
値。たとえば、ある証明書を有効なディストリビューションに 1 か月まるまる関連付け、別の証
明書を有効なディストリビューションに半月だけ関連付けた場合、この値は 1.5 になります。
請求情報の概要を表示し、詳細請求レポートをダウンロードするには
1.
AWS マネジメントコンソール(https://console.aws.amazon.com/console/home)にサインインし
ます。
2.
タイトルバーで、自分の IAM ユーザー名をクリックし、[Billing & Cost Management] をクリック
します。
3.
ナビゲーションペインで、[Bills] をクリックします。
4.
CloudFront の概要情報を表示するには、[Details] の [CloudFront] をクリックします。
API Version 2016-09-29
11
Amazon CloudFront 開発者ガイド
CloudFront 用の AWS 使用状況レポート
5.
詳細請求レポートを CSV 形式でダウンロードするには、[Download CSV] をクリックし、画面の
指示に従ってレポートを保存します。
CloudFront 用の AWS 使用状況レポート
AWS には、CloudFront 使用状況レポートが用意されています。これは請求レポートよりは詳細です
が、CloudFront アクセスログほど詳細ではありません。使用状況レポートには、使用状況データが
時間、日、または月単位で集計され、リージョンと使用タイプ別に操作が一覧で示されます(たとえ
ば、オーストラリアリージョンからデータが転送されたなど)。
CloudFront 使用状況レポートには次の値が含まれています。
• Service — AmazonCloudFront
• Operation — HTTP メソッド。値には、DELETE、GET、OPTIONS、HEAD、PATCH、POST、PUT が
あります。
• UsageType — 以下の値のいずれかです。
• データ転送のタイプを識別するコード
• Invalidations
• SSL-Cert-Custom
詳細については、「CloudFront の AWS 請求書と AWS 使用状況レポートの解釈 (p. 13)」を参照
してください。
• Resource — 使用状況に関連付けられた CloudFront ディストリビューションの ID、また
は、CloudFront ディストリビューションに関連付けた SSL 証明書の証明書 ID。
• StartTime/EndTime — 使用状況に該当する協定世界時(UTC)による日付。
• UsageValue —(1)指定した期間のリクエストの数、または(2)転送データ量(バイト)。
Amazon S3 を CloudFront のオリジンとして使用している場合は、Amazon S3 の使用状況レポートも
作成することを検討してください。ただし、CloudFront ディストリビューションのオリジンとして以
外の目的でも Amazon S3 を使用している場合は、どの部分が CloudFront で使用されたのか明確にな
らない可能性があります。
Tip
お客様のディストリビューションの CloudFront アクセスログをオンにすることで、お客様の
オブジェクトについて CloudFront が受信するすべてのリクエストに関する詳細な情報を取得
することができます。詳細については、「アクセスログ (p. 289)」を参照してください。
CloudFront または Amazon S3 の使用状況レポートをダウンロードするには
1.
AWS マネジメントコンソール(https://console.aws.amazon.com/console/home)にサインインし
ます。
2.
タイトルバーで、自分の IAM ユーザー名をクリックし、[Billing & Cost Management] をクリック
します。
3.
ナビゲーションペインで、[Reports] をクリックします。
4.
[AWS Usage Report] で、[AWS Usage Report] をクリックします。
5.
[Service] リストで、[CloudFront] または [Amazon Simple Storage Service] をクリックします。
6.
該当する設定を選択します。
• [Usage Types] — CloudFront の使用タイプの詳細な説明については、「the section called
“CloudFront の AWS 請求書と AWS 使用状況レポートの解釈” (p. 13)」を参照してくださ
い。
API Version 2016-09-29
12
Amazon CloudFront 開発者ガイド
CloudFront の AWS 請求書
と AWS 使用状況レポートの解釈
Amazon S3 の場合は、[All Usage Types] を選択します。
7.
8.
• [Operation] — [All Operations] を選択します。
• [Time Period] — レポートの対象とする期間を選択します。
• [Report Granularity] — 時間、日、月単位の小計をレポートに含めるかどうかを選択します。
目的の形式のダウンロードボタンをクリックします。
画面に表示される指示に従って、レポートを表示または保存します。
CloudFront の AWS 請求書と AWS 使用状況レ
ポートの解釈
CloudFront サービスの AWS 請求書にはコードや略語が使用されていますが、それらは一目見て分か
るものではないかもしれません。次の表の 1 列目には、請求書に記載される項目が一覧になってお
り、各項目の内容が説明されています。
また、CloudFront の AWS 使用状況レポートも取得することができます。それには CloudFront の
AWS 請求書よりも詳細な内容が記載されています。表の 2 列目には、使用状況レポートに記載され
る項目が一覧になっており、請求書の項目と使用状況レポートの項目との相互関係が示されていま
す。
2 つの列のコードには、たいてい、アクティビティの場所を示す 2 文字の略語が入っています。次の
表のコードの region は、AWS 請求書と使用状況レポートでは以下の 2 文字の略語に置き換えられ
ます。
• AP: 香港、フィリピン、韓国、シンガポール、台湾(アジアパシフィック)
• AU: オーストラリア
• CA: カナダ
• EU: ヨーロッパ
• IN: インド
• JP: 日本
• SA: 南米
• US: 米国
リージョン別料金表の詳細については、「Amazon CloudFront 料金表」を参照してください。
Note
次の表には、Amazon S3 バケットから CloudFront エッジロケーションへのオブジェクト
転送の料金は含まれていません。この料金が発生している場合、AWS 請求書の AWS Data
Transfer の部分に料金が表記されます。
CloudFront 請求書の項目
CloudFront 使用状況レポートの「Usage Type」列の値
region-DataTransfer-Out-Bytes
ウェブディストリビューション:
CloudFront がウェブディストリビュー
ションと RTMP ディストリビュー
ションに供給した合計バイト数。
• region-Out-Bytes-HTTP-Static: TTL >= 3600 秒のオブ
ジェクトのために HTTP 経由で供給されたバイト数
• region-Out-Bytes-HTTPS-Static: TTL >= 3600 秒のオブ
ジェクトのために HTTPS 経由で供給されたバイト数
• ウェブディストリビューション:
ユーザー GET と HEAD リクエスト
へのレスポンスのために region の
• region-Out-Bytes-HTTP-Dynamic: TTL < 3600 秒のオブ
ジェクトのために HTTP 経由で供給されたバイト数
API Version 2016-09-29
13
Amazon CloudFront 開発者ガイド
CloudFront の AWS 請求書
と AWS 使用状況レポートの解釈
CloudFront 請求書の項目
CloudFront 使用状況レポートの「Usage Type」列の値
CloudFront エッジロケーションから
供給された合計バイト数。
• region-Out-Bytes-HTTPS-Dynamic: TTL < 3600 秒のオ
ブジェクトのために HTTPS 経由で供給されたバイト数
• RTMP ディストリビューション:
• region-Out-Bytes-HTTP-Proxy:
region の CloudFront エッジロケー
DELETE、OPTIONS、PATCH、POST、PUT リクエストへ
ションからエンドユーザーに転送さ
の応答として 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 リクエストへの
DELETE、OPTIONS、PATCH、POST、PUTレスポンスのために CloudFront エッジロケーションから
リクエストへのレスポンスのために
オリジンに HTTP 経由で転送された合計バイト数
CloudFront エッジロケーションからオ
region-Out-OBytes-HTTPS-Proxy
リジンに転送された合計バイト数
DELETE、OPTIONS、PATCH、POST、PUT リクエストへの
レスポンスのために CloudFront エッジロケーションから
オリジンに HTTPS 経由で転送された合計バイト数
region-Requests-Tier1
region-Requests-HTTP-Static
ウェブディストリビューションのみ:
HTTP GET および HEAD リクエストの
数
TTL ≥ 3600 秒のオブジェクトのために供給された HTTP
GET および HEAD リクエストの数
region-Requests-HTTP-Dynamic
TTL 3600 < 秒のオブジェクトのために供給された HTTP
GET および HEAD リクエストの数
region-Requests-Tier2-HTTPS
region-Requests-HTTPS-Static
ウェブディストリビューションのみ:
HTTPS GET および HEAD リクエスト
の数
TTL ≥ 3600 秒のオブジェクトのために供給された HTTPS
GET および HEAD リクエストの数
region-Requests-HTTPS-Dynamic
TTL < 3600 秒のオブジェクトのために供給された HTTPS
GET および HEAD リクエストの数
region-Requests-HTTP-Proxy
region-Requests-HTTP-Proxy
ウェブディストリビューショ
CloudFront 請求書の対応する項目と同じ
ンのみ: CloudFront によって
オリジンに転送される HTTP
DELETE、OPTIONS、PATCH、POST、PUT
リクエストの数
API Version 2016-09-29
14
Amazon CloudFront 開発者ガイド
CloudFront の AWS 請求書
と AWS 使用状況レポートの解釈
CloudFront 請求書の項目
CloudFront 使用状況レポートの「Usage Type」列の値
region-Requests-HTTPS-Proxy
region-Requests-HTTPS-Proxy
ウェブディストリビューショ
CloudFront 請求書の対応する項目と同じ
ンのみ: CloudFront によって
オリジンに転送される HTTPS
DELETE、OPTIONS、PATCH、POST、PUT
リクエストの数
無効化
無効化
ウェブディストリビューションのみ:
オブジェクトを無効化する(オブジェ
クトを CloudFront エッジロケーショ
ンから削除する)ための料金。詳細に
ついては、「オブジェクトの無効化に
対する支払い (p. 148)」を参照して
ください。
CloudFront 請求書の対応する項目と同じ
SSL-Cert-Custom
SSL-Cert-Custom
ウェブディストリビューションのみ:
デフォルトの CloudFront SSL 証明書
と CloudFront がお客様のディストリ
ビューションに割り当てたドメイン名
を使用する代わりに、example.com な
どの CloudFront 代替ドメイン名を指
定した SSL 証明書を使用する場合の
料金
CloudFront 請求書の対応する項目と同じ
API Version 2016-09-29
15
Amazon CloudFront 開発者ガイド
CloudFront レポート
CloudFront コンソールには、さまざまなレポートがあります。
• CloudFront Cache Statistics Reports (p. 16)
• CloudFront Popular Objects Report (p. 16)
• CloudFront Top Referrers Report (p. 17)
• CloudFront Usage Reports (p. 17)
• CloudFront Viewers Reports (p. 17)
これらのレポートのほとんどは、CloudFront アクセスログのデータに基づいており、このログに
は CloudFront が受け取ったすべてのユーザーリクエストの詳細が含まれています。このレポート
を表示するために、アクセスログを有効にする必要はありません。詳細については、「アクセス
ログ (p. 289)」を参照してください。CloudFront 使用状況レポートは、特別な設定を必要としな
い、CloudFront 用の AWS 使用状況レポートに基づいています。詳細については、「CloudFront 用の
AWS 使用状況レポート (p. 12)」を参照してください。
CloudFront キャッシュ統計レポート
CloudFront キャッシュ統計レポートには次の情報が含まれます。
• Total Requests – すべての HTTP ステータスコード(200、404 など)およびすべてのメソッド
(GET、HEAD、POST など)のリクエストの総数が表示されます
• Percentage of Viewer Requests by Result Type – 選択された CloudFront ディストリビューションの
ビューアリクエスト合計からヒット、ミス、エラーの割合を示します
• Bytes Transferred to Viewers – 合計バイト数とミスのバイト数を示します
• HTTP Status Codes – HTTP ステータスコード別のビューアリクエストを示します
• Percentage of GET Requests that Didn't Finish Downloading – リクエストされたオブジェクトのダ
ウンロードを終了しなかったビューアの GET リクエストを、合計リクエスト数の割合として表示し
ます
詳細については、「CloudFront キャッシュ統計レポート (p. 17)」を参照してください。
CloudFront 人気オブジェクトレポート
CloudFront 人気オブジェクトレポートには、50 件の人気オブジェクトとこれらのオブジェクトの統計
情報が表示されます。これには、オブジェクトのリクエスト数、ヒットとミスの数、ヒット率、ミス
API Version 2016-09-29
16
Amazon CloudFront 開発者ガイド
CloudFront キャッシュ統計レポート
に供給されたバイト数、供給された合計バイト数、不完全なダウンロードの数、および HTTP ステー
タスコード(2xx、3xx、4xx、および 5xx)別のリクエスト数が含まれます。
詳細については、「CloudFront 人気オブジェクトレポート (p. 21)」を参照してください。
CloudFront トップリファラレポート
CloudFront トップリファラレポートには、上位 25 件のリファラ、リファラからのリクエストの数、
指定された期間のリクエストの合計数に対するリファラからのリクエスト数の割合が含まれます。
詳細については、「CloudFront トップリファラレポート (p. 24)」を参照してください。
CloudFront 使用状況レポート
CloudFront 使用状況レポートには次の情報が含まれます。
• Number of Requests – 指定した CloudFront ディストリビューションで時間間隔ごと
に、CloudFront が応答する、選択したリージョンのエッジロケーションからの HTTP および
HTTPS リクエストの数が表示されます。
• Data Transferred by Protocol – 指定した CloudFront ディストリビューションで時間間隔ごとに、選
択したリージョンの CloudFront エッジロケーションから HTTP および HTTPS 経由で転送される
データの合計量が表示されます。
• Data Transferred by Destination – 指定した CloudFront ディストリビューションで時間間隔ごと
に、選択したリージョンの CloudFront エッジロケーションから HTTP および HTTPS 経由で転送さ
れるデータの合計量が表示されます。
詳細については、「CloudFront 使用状況レポート (p. 26)」を参照してください。
CloudFront ビューアレポート
CloudFront ビューアレポートには次の情報が含まれます。
• Devices – ユーザーがコンテンツにアクセスするために使用するデバイスのタイプ(デスクトップや
モバイルなど)を示します
• Browsers – Chrome や Firefox など、コンテンツにアクセスするときに、ユーザーが最も頻繁に使
用するブラウザの名前(または名前とバージョン)を示します
• Operating Systems – Linux、Mac OS X、Windows など、コンテンツにアクセスするときにビュー
アが最も頻繁に実行するオペレーティングシステムの名前(または名前とバージョン)を示します
• Locations – コンテンツに最も頻繁にアクセスするビューアの場所(国、または米国の州/準州)を示
します
詳細については、「CloudFront ビューア レポート (p. 31)」を参照してください。
CloudFront キャッシュ統計レポート
Amazon CloudFront コンソールを使用して、CloudFront エッジロケーションに関連する統計をグラフ
表示できます。これらの統計のデータは CloudFront アクセスログと同じソースから取得されます。
毎時間または毎日のデータポイントを使用して、過去 60 日間の指定した日付範囲のグラフを表示で
きます。通常は、1 時間前までに CloudFront が受け取ったリクエストについてデータを表示できます
が、データが 24 時間ほど遅れることもあります。
Note
キャッシュ統計を表示するために、アクセスログを有効にする必要はありません。
API Version 2016-09-29
17
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
CloudFront キャッシュ統計を表示するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
ナビゲーションペインで、[Cache Statistics] をクリックします。
3.
[CloudFront Cache Statistics Reports] ペインの [Start Date] と [End Date] で、キャッシュ統計の
グラフを表示する日付範囲を選択します。使用できる範囲は、[Granularity] で選択した値によっ
て決まります。
• Daily – 1 日につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日の中で
任意の日付範囲を選択します。
• Hourly – 1 時間につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日以内
で最大 14 日間の任意の日付範囲を選択します。
日付と時刻は協定世界時 (UTC) です。
4.
[Granularity] では、グラフに 1 日につき 1 つのデータポイントを表示するか、1 時間につき 1 つ
のデータポイントを表示するかを指定します。14 日を超える日付範囲を指定した場合、1 時間に
つき 1 つのデータポイントを指定することはできなくなります。
5.
[Viewer Location] で、ビューアのリクエストが発信された大陸を選択するか、[All Locations] を選
択します。キャッシュ統計のグラフには、指定した場所から CloudFront が受信したリクエストの
データが含まれます。
6.
[Distribution] リストでは、使用状況グラフにデータを表示するディストリビューションを選択し
ます。
• 個々のウェブディストリビューション – 選択した CloudFront ウェブディストリビューションの
データがグラフに表示されます。[Distribution] リストには、ディストリビューションのディス
トリビューション ID と代替ドメイン名(CNAME)が表示されます(ある場合)。ディストリ
ビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンド
メイン名が含まれます。
• All Web Distributions – 現在の AWS アカウントに関連付けられているすべてのウェブディスト
リビューションのデータが集計されてグラフに表示されます。ただし、削除したウェブディス
トリビューションは除外されます。
7.
[Update] をクリックします。
8.
グラフ内の毎日または毎時間のデータポイントのデータを表示するには、データポイントの上に
マウスポインタを移動します。
9.
転送データを示すグラフの場合、各グラフの Y 軸の単位をギガバイト、メガバイト、キロバイト
のいずれかに変更できることに注意してください。
トピック
• CSV 形式でのデータのダウンロード (p. 18)
• キャッシュ統計のグラフと CloudFront アクセスログのデータとの関連 (p. 20)
CSV 形式でのデータのダウンロード
キャッシュ統計レポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウ
ンロードする方法と、レポートの値について説明します。
キャッシュ統計レポートを CSV 形式でダウンロードするには
1.
キャッシュ統計レポートを表示しているときに、[CSV] をクリックします。
2.
[Opening file name] ダイアログボックスで、ファイルを開くか保存するかを選択します。
API Version 2016-09-29
18
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
レポートに関する情報
レポートの先頭数行には次の情報が含まれます。
バージョン
この CSV ファイルの形式のバージョン。
レポート
レポートの名前。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
StartDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。
EndDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。
GeneratedTimeUTC
協定世界時 (UTC) によるレポートを実行した日時。
詳細度
レポートの各行が 1 時間と 1 日のどちらを表すか。
ViewerLocation
ビューアリクエストが発信された大陸。または、すべての場所についてレポートをダウンロード
する場合は ALL。
キャッシュ統計レポートのデータ
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
ViewerLocation
ビューアリクエストが発信された大陸。または、すべての場所についてレポートをダウンロード
する場合は ALL。
TimeBucket
協定世界時 (UTC) によるデータに該当する時間または日付。
RequestCount
すべての HTTP ステータスコード(200、404 など)およびすべてのメソッド
(GET、HEAD、POST など)のリクエストの総数。
HitCount
CloudFront エッジキャッシュからオブジェクトが提供されたビューアリクエストの数。
MissCount
オブジェクトが現在エッジキャッシュに存在せず、CloudFront でオリジンからオブジェクトを取
得する必要があるビューアリクエストの数。
ErrorCount
エラーになり、CloudFront でオブジェクトを提供できなかったビューアリクエストの数。
IncompleteDownloadCount
ビューアがオブジェクトのダウンロードを開始したが、ダウンロードを終了できなかったビュー
アリクエストの数。
API Version 2016-09-29
19
Amazon CloudFront 開発者ガイド
キャッシュ統計のグラフと CloudFront
アクセスログのデータとの関連
HTTP2xx
HTTP ステータスコードが 2xx 値(成功)であるビューアリクエストの数。
HTTP3xx
HTTP ステータスコードが 3xx 値(追加のアクションが必要)であるビューアリクエストの数。
HTTP4xx
HTTP ステータスコードが 4xx 値(クライアントエラー)であるビューアリクエストの数。
HTTP5xx
HTTP ステータスコードが 5xx 値(サーバーエラー)であるビューアリクエストの数。
TotalBytes
すべての HTTP メソッドに対するすべてのリクエストに応じて CloudFront からビューアに提供さ
れる合計バイト数。
BytesFromMisses
リクエストの発生時に適用可能なエッジキャッシュに存在しなかったオブジェクトのビューアに
提供されたバイト数。この値は、オリジンから CloudFront エッジキャッシュに転送されたバイト
の正確な概算です。ただし、エッジキャッシュに既に存在していても、有効期限が切れているオ
ブジェクトのリクエストは除きます。
キャッシュ統計のグラフと CloudFront アクセスロ
グのデータとの関連
次の表は、CloudFront コンソールのキャッシュ統計のグラフと、対応する CloudFront アクセスログ
の値を示します。CloudFront アクセスログの詳細については、「アクセスログ (p. 289)」を参照し
てください。
Total Requests
このグラフには、すべての HTTP ステータスコード(200 または 404 など)およびすべてのメ
ソッド(GET、HEAD、または POST など)のリクエストの総数が表示されます。このグラフに
表示されるリクエストの総数は、同じ期間のアクセスログファイルのリクエストの総数と同じで
す。
Percentage of Viewer Requests by Result Type
このグラフには、選択した CloudFront ディストリビューションの合計ビューアリクエストに対す
るヒット、ミス、エラーの割合が表示されます。
• Hit – オブジェクトが CloudFront エッジキャッシュから提供されるビューアリクエスト。アク
セスログでは、これらのリクエストの x-edge-response-result-type の値は Hit です。
• Miss – オブジェクトが現在エッジキャッシュに存在せず、CloudFront でオリジンからオブジェ
クトを取得する必要があるビューアリクエスト。アクセスログでは、これらのリクエストの xedge-response-result-type の値は Miss です。
• Error – エラーになり、CloudFront でオブジェクトを提供できなかったビューアリクエス
ト。アクセスログでは、これらのリクエストの x-edge-response-result-type の値は
Error、LimitExceeded または CapacityExceeded です。
グラフには、エッジキャッシュに存在しても、有効期限が切れているオブジェクトのリフレッ
シュヒット—リクエストは含まれません。アクセスログでは、リフレッシュヒットのリクエスト
の x-edge-response-result-type の値は RefreshHit です。
Bytes Transferred to Viewers
このグラフには 2 つの値が表示されます。
• Total Bytes – すべての HTTP メソッドに対するすべてのリクエストに応じて CloudFront から
ビューアに提供される合計バイト数。CloudFront アクセスログでは、[Total Bytes] は、scbytes 列の同じ期間に発生したすべてのリクエストの値の合計です。
• Bytes from Misses – リクエストの発生時に適用可能なエッジキャッシュに存在しなかったオ
ブジェクトのビューアに提供されたバイト数。CloudFront アクセスログでは、[Bytes from
Misses] は、sc-bytes 列で、x-edge-result-type の値が Miss であるリクエストの値の合
計です。この値は、オリジンから CloudFront エッジキャッシュに転送されたバイトの正確な概
API Version 2016-09-29
20
Amazon CloudFront 開発者ガイド
CloudFront 人気オブジェクトレポート
算です。ただし、エッジキャッシュに既に存在していても、有効期限が切れているオブジェク
トのリクエストは除きます。
HTTP Status Codes
このグラフには HTTP ステータスコードごとのビューアリクエストが表示されます。CloudFront
アクセスログでは、ステータスコードは sc-status 列に表示されます。
• 2xx – 成功したリクエスト。
• 3xx – 追加のアクションが必要です。たとえば、301(Moved Permanently)は、リクエストさ
れたオブジェクトが異なる場所に移動されていることを意味します。
• 4xx – クライアント側のエラー。 たとえば、404(Not Found)は、クライアントが、検出でき
ないオブジェクトをリクエストしたことを意味します。
• 5xx – オリジンサーバーがリクエストを実行しませんでした。たとえば、503(Service
Unavailable)は、オリジンサーバーが現在利用できないことを意味します。
Percentage of GET Requests that Didn't Finish Downloading
このグラフでは、合計リクエストに対して、リクエストされたオブジェクトのダウンロードが終
了していない、ビューアの GET リクエストの割合が表示されます。通常、オブジェクトのダウ
ンロードが完了しないのは、たとえば別のリンクをクリックしたり、ブラウザを閉じたりして、
ビューアによってキャンセルされたときです。CloudFront アクセスログでは、これらのリクエス
トの sc-status 列の値は、200 で、x-edge-result-type 列の値は、Error です。
CloudFront 人気オブジェクトレポート
Amazon CloudFront コンソールでは、過去 60 日の中の指定した日付範囲の間、ディストリビュー
ションで最も人気の高い 50 件のオブジェクトのリストを表示できます。
人気のオブジェクトレポートのデータは、CloudFront アクセスログと同じソースから取得されます。
上位 50 件のオブジェクトの正確な数を取得するには、CloudFront で、午前 0 時から 10 分間隔です
べてのオブジェクトのリクエストをカウントし、その後 24 時間にわたって上位 150 件のオブジェク
トの現在までの累計を保持します(CloudFront は、上位 150 件のオブジェクトの毎日の合計を 60 日
間保持します)。リストの最下位に近いオブジェクトは、リストに加わったり、リストからなくなっ
たりするため、これらのオブジェクトの合計は概算です。150 件のオブジェクトのリストの中の上位
50 件のオブジェクトもリスト内で上がったり下がったりする可能性はありますが、リストから完全に
なくなることはほとんどないため、通常これらのオブジェクトの合計は信頼できます。
オブジェクトが上位 150 件のリストからなくなり、その日のうちに再びリストに加わった場
合、CloudFront で、そのオブジェクトがリストになかった期間の推定リクエスト数が追加されます。
この予測は、その期間中にリストの最後にあったオブジェクトから受け取ったリクエストの数に基づ
いています。オブジェクトがその日のうちに上位 50 件のオブジェクトに加わった場合、オブジェク
トが上位 150 件になかった間に CloudFront が受け取ったリクエストの数の予想により、通常、人気
オブジェクトレポートのリクエスト数は、そのオブジェクトのアクセスログに表示されるリクエスト
の数を超えます。
Note
人気オブジェクトのリストを参照するために、アクセスログを有効にする必要はありませ
ん。
ディストリビューションの人気オブジェクトを表示するには
1.
2.
3.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
ナビゲーションペインで、[Popular Objects] をクリックします。
[CloudFront Popular Objects Report] ペインの [Start Date] と [End Date] で、人気オブジェクトの
リストを表示する日付範囲を選択します。過去 60 日間の任意の日付範囲を選択できます。
日付と時刻は協定世界時 (UTC) です。
API Version 2016-09-29
21
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
4.
[Distribution] リストで、人気オブジェクトのリストを表示するディストリビューションを選択し
ます。
5.
[Update] をクリックします。
トピック
• CSV 形式でのデータのダウンロード (p. 22)
• 人気オブジェクトレポートのデータと CloudFront アクセスログのデータとの関連 (p. 23)
CSV 形式でのデータのダウンロード
人気オブジェクトレポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダ
ウンロードする方法と、レポートの値について説明します。
人気オブジェクトレポートを CSV 形式でダウンロードするには
1.
人気オブジェクトレポートを表示しているときに、[CSV] をクリックします。
2.
[Opening file name] ダイアログボックスで、ファイルを開くか保存するかを選択します。
レポートに関する情報
レポートの先頭数行には次の情報が含まれます。
バージョン
この CSV ファイルの形式のバージョン。
レポート
レポートの名前。
DistributionID
レポートを実行した対象のディストリビューションの ID。
StartDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。
EndDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。
GeneratedTimeUTC
協定世界時 (UTC) によるレポートを実行した日時。
人気オブジェクトレポートのデータ
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
オブジェクト
オブジェクトの URL の最後の 500 文字。
RequestCount
このオブジェクトに対するリクエストの総数。
HitCount
CloudFront エッジキャッシュからオブジェクトが提供されたビューアリクエストの数。
API Version 2016-09-29
22
Amazon CloudFront 開発者ガイド
人気オブジェクトレポートのデータと
CloudFront アクセスログのデータとの関連
MissCount
オブジェクトが現在エッジキャッシュに存在せず、CloudFront でオリジンからオブジェクトを取
得する必要があるビューアリクエストの数。
HitCountPct
RequestCount の値に対する HitCount の値の割合。
BytesFromMisses
リクエストの発生時に適用可能なエッジキャッシュにオブジェクトが存在しなかった場合に、こ
のオブジェクトについてビューアに提供されたバイト数。
TotalBytes
すべての HTTP メソッドのすべてのリクエストに応じて、このオブジェクトについて CloudFront
からビューアに提供される合計バイト数。
IncompleteDownloadCount
このオブジェクトについて、ビューアがオブジェクトのダウンロードを開始したが、ダウンロー
ドを終了できなかったビューアリクエストの数。
HTTP2xx
HTTP ステータスコードが 2xx 値(成功)であるビューアリクエストの数。
HTTP3xx
HTTP ステータスコードが 3xx 値(追加のアクションが必要)であるビューアリクエストの数。
HTTP4xx
HTTP ステータスコードが 4xx 値(クライアントエラー)であるビューアリクエストの数。
HTTP5xx
HTTP ステータスコードが 5xx 値(サーバーエラー)であるビューアリクエストの数。
人気オブジェクトレポートのデータと CloudFront
アクセスログのデータとの関連
次のリストは、CloudFront コンソールの人気オブジェクトレポートの値と、対応する CloudFront
アクセスログの値を示します。CloudFront アクセスログの詳細については、「アクセスロ
グ (p. 289)」を参照してください。
URL
オブジェクトへのアクセスにビューアが使用する URL の末尾 500 文字です。
リクエスト
オブジェクトに対するリクエストの総数。一般的にこの値は、CloudFront アクセスログのオブ
ジェクトの GET リクエストの数とほぼ一致します。
Hits
CloudFront エッジキャッシュからオブジェクトが提供されたビューアリクエストの数。アクセス
ログでは、これらのリクエストの x-edge-response-result-type の値は Hit です。
Misses
オブジェクトがエッジキャッシュに存在しないため、CloudFront でオリジンからオブジェクト
が取得されたビューアリクエストの数。アクセスログでは、これらのリクエストの x-edgeresponse-result-type の値は Miss です。
Hit Ratio
[Requests] 列の値に対する、[Hits] 列の値の割合。
Bytes from Misses
リクエストの発生時に適用可能なエッジキャッシュに存在しなかったオブジェクトのビューア
に提供されたバイト数。CloudFront アクセスログでは、[Bytes from Misses] は、sc-bytes 列
で、x-edge-result-type の値が Miss であるリクエストの値の合計です。
Total Bytes
すべての HTTP メソッドのオブジェクトに対するすべてのリクエストに応じて CloudFront か
らビューアに提供される合計バイト数。CloudFront アクセスログでは、[Total Bytes] は、scbytes 列の同じ期間に発生したすべてのリクエストの値の合計です。
API Version 2016-09-29
23
Amazon CloudFront 開発者ガイド
CloudFront トップリファラレポート
Incomplete Downloads
リクエストされたオブジェクトのダウンロードが終了しなかったビューアリクエストの数。通
常、ダウンロードが完了しないのは、たとえば別のリンクをクリックしたり、ブラウザを閉じた
りして、ビューアによってキャンセルされたときです。CloudFront アクセスログでは、これらの
リクエストの sc-status 列の値は、200 で、x-edge-result-type 列の値は、Error です。
2xx
3xx
4xx
5xx
HTTP ステータスコードが 2xx、Successful であるリクエストの数。CloudFront アクセスログ
では、ステータスコードは sc-status 列に表示されます。
HTTP ステータスコードが 3xx、Redirection であるリクエストの数。3xx ステータスコードは
追加のアクションが必要であることを示します。たとえば、301(Moved Permanently)は、リク
エストされたオブジェクトが異なる場所に移動されていることを意味します。
HTTP ステータスコードが 4xx、Client Error であるリクエストの数。4xx ステータスコード
はクライアント側にエラーがあることを示します。たとえば、404(Not Found)は、クライアン
トが、検出できないオブジェクトをリクエストしたことを意味します。
HTTP ステータスコードが 5xx、Server Error であるリクエストの数。5xx ステータスコー
ドはオリジンサーバーがリクエストを実行しなかったことを示します。たとえば、503(Service
Unavailable)は、オリジンサーバーが現在利用できないことを意味します。
CloudFront トップリファラレポート
CloudFront コンソールでは、CloudFront で指定したディストリビューションに配布しているオブジェ
クトのほとんどの HTTP および HTTPS リクエストを発信した 25 件のウェブサイトのドメインのリ
ストを表示できます。これらのトップリファラーは、検索エンジン、オブジェクトに直接リンクされ
た他のウェブサイト、またはユーザー自身のウェブサイトである場合もあります。たとえば、http://
example.com/index.html links が 10 個のグラフィックにリンクしている場合、example.com は、10 個
すべてのグラフィックのリファラです。トップリファラーレポートは、過去 60 日のあらゆる日付範
囲で表示できます。
Note
ユーザーがブラウザのアドレス行に直接 URL を入力した場合、リクエストしたオブジェクト
のリファラはありません。
トップリファラレポートのデータは、CloudFront アクセスログと同じソースから取得されます。上位
25 件のリファラの正確な数を取得するには、CloudFront ですべてのオブジェクトのリクエストを 10
分間隔でカウントし、上位 75 件のリファラの現在までの累計を保持します。リストの最下位に近い
リファラは、リストに加わったり、リストからなくなったりするため、これらのリファラの合計は概
算です。75 件のリファラのリストの中の上位 25 件のリファラもリスト内で上がったり下がったりす
る可能性はありますが、リストから完全になくなることはほとんどないため、通常これらのリファラ
の合計は信頼できます。
Note
トップリファラのリストを参照するために、アクセスログを有効にする必要はありません。
ディストリビューションのリファラを表示するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
ナビゲーションペインで、[Top Referrers] をクリックします。
API Version 2016-09-29
24
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
3.
[CloudFront Top Referrers Report] ペインの [Start Date] と [End Date] で、トップリファラのリス
トを表示する日付範囲を選択します。
日付と時刻は協定世界時 (UTC) です。
4.
[Distribution] リストで、トップリファラのリストを表示するディストリビューションを選択しま
す。
5.
[Update] をクリックします。
トピック
• CSV 形式でのデータのダウンロード (p. 25)
• トップリファラレポートのデータと CloudFront アクセスログのデータとの関連 (p. 26)
CSV 形式でのデータのダウンロード
トップリファラレポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウ
ンロードする方法と、レポートの値について説明します。
トップリファラレポートを CSV 形式でダウンロードするには
1.
トップリファラレポートを表示しているときに、[CSV] をクリックします。
2.
[Opening file name] ダイアログボックスで、ファイルを開くか保存するかを選択します。
レポートに関する情報
レポートの先頭数行には次の情報が含まれます。
バージョン
この CSV ファイルの形式のバージョン。
レポート
レポートの名前。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
StartDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。
EndDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。
GeneratedTimeUTC
協定世界時 (UTC) によるレポートを実行した日時。
トップリファラレポートのデータ
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
API Version 2016-09-29
25
Amazon CloudFront 開発者ガイド
トップリファラレポートのデータと
CloudFront アクセスログのデータとの関連
Referrer
リファラのドメイン名。
[Referrer] 列のドメイン名からのリクエストの総数。
RequestsPct
指定した期間のリクエストの総数に対してリファラによって送信されたリクエストの数の割合。
トップリファラレポートのデータと CloudFront ア
クセスログのデータとの関連
次のリストは、CloudFront コンソールのトップリファラレポートの値と、対応する CloudFront アク
セスログの値を示します。CloudFront アクセスログの詳細については、「アクセスログ (p. 289)」
を参照してください。
Referrer
リファラのドメイン名。アクセスログでは、リファラは cs(Referer) 列に表示されます。
Request Count
[Referrer] 列のドメイン名からのリクエストの総数。一般的にこの値は、CloudFront アクセスロ
グのリファラからの GET リクエストの数とほぼ一致します。
リクエスト %
指定した期間のリクエストの総数に対してリファラによって送信されたリクエストの数の割合。
リファラが 25 個以上あると、[Request Count] 列に指定した期間のすべてのリクエストを含める
ことができないため、このテーブルのデータに基づいて [Request %] を計算することはできませ
ん。
CloudFront 使用状況レポート
Amazon CloudFront コンソールは、使用状況レポートデータのサブセットに基づいて CloudFront の
使用状況をグラフィカルに表示できます。毎時間または毎日のデータポイントを使用して、過去 60
日間の指定した日付範囲のグラフを表示できます。通常、最近 4 時間前までに CloudFront が受け取っ
たリクエストについてデータを表示できますが、ときにはデータが 24 時間、遅れることがありま
す。
詳細については、「使用状況グラフと CloudFront 使用状況レポートのデータとの関連 (p. 29)」を
参照してください。
CloudFront 使用状況グラフを表示するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
3.
[navigation] ペインで、[Usage Reports] をクリックします。
[CloudFront Usage Reports] ペインの [Start Date] と [End Date] で、使用状況グラフを表示する日
付範囲を選択します。使用できる範囲は、[Granularity] で選択した値によって決まります。
• [Daily] — 1 日につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日の日
付範囲を選択します。
• [Hourly] — 1 時間につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日以
内の最大 14 日間の日付範囲を選択します。
4.
日付と時刻は協定世界時 (UTC) です。
[Granularity] では、グラフに 1 日につき 1 つのデータポイントを表示するか、1 時間につき 1 つ
のデータポイントを表示するかを指定します。14 日を超える日付範囲を指定した場合、1 時間に
つき 1 つのデータポイントを指定することはできなくなります。
API Version 2016-09-29
26
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
5.
[Billing Region] では、データを表示する CloudFront 請求リージョンを選択するか、[All Regions]
を選択します。使用状況グラフは、指定したリージョンのエッジロケーションで CloudFront が処
理するリクエストのデータを含みます。CloudFront がリクエストを処理するリージョンは、ユー
ザーの場所に対応していることも、していないこともあります。
ディストリビューションの価格クラスに含まれるリージョンのみを選択してください。それ以
外の場合、おそらく使用状況グラフにはデータが含まれません。たとえば、ディストリビュー
ションで価格クラス 200 を選択した場合、南米およびオーストラリアの請求リージョンは含ま
れません。そのため、CloudFront は一般にこれらのリージョンからのリクエストを処理しませ
ん。価格クラスの詳細については、「CloudFront ディストリビューションの価格クラスを選択す
る (p. 58)」を参照してください。
6.
[Distribution] リストでは、使用状況グラフにデータを表示するディストリビューションを選択し
ます。
• 個々のウェブディストリビューション — 選択した CloudFront ディストリビューションのデー
タがグラフに表示されます。[Distribution] リストには、ディストリビューションのディスト
リビューション ID と代替ドメイン名(CNAME)が表示されます(ある場合)。ディストリ
ビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンド
メイン名が含まれます。
• [All Web Distributions (excludes deleted)] — 現在の AWS アカウントに関連付けられているすべ
てのウェブディストリビューションのデータが集計されてグラフに表示されます。ただし、削
除したウェブディストリビューションは除外されます。
• [All Deleted Distributions] — 現在の AWS アカウントに関連付けられていて過去 60 日間に削除
されたすべてのウェブディストリビューションのデータが集計されてグラフに表示されます。
7.
[Update Graphs] をクリックします。
8.
グラフ内の毎日または毎時間のデータポイントのデータを表示するには、データポイントの上に
マウスポインタを移動します。
9.
転送データを示すグラフの場合、各グラフの Y 軸の単位をギガバイト、メガバイト、キロバイト
のいずれかに変更できることに注意してください。
トピック
• CSV 形式でのデータのダウンロード (p. 27)
• 使用状況グラフと CloudFront 使用状況レポートのデータとの関連 (p. 29)
CSV 形式でのデータのダウンロード
使用状況レポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウンロー
ドする方法と、レポートの値について説明します。
使用状況レポートを CSV 形式でダウンロードするには
1.
使用状況レポートを表示しているときに、[CSV] をクリックします。
2.
[Opening file name] ダイアログボックスで、ファイルを開くか保存するかを選択します。
レポートに関する情報
レポートの先頭数行には次の情報が含まれます。
バージョン
この CSV ファイルの形式のバージョン。
API Version 2016-09-29
27
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
レポート
レポートの名前。
DistributionID
レポートを実行した対象のディストリビューションの ID。すべてのディストリビューションを対
象にレポートを実行した場合は ALL。削除したディストリビューションを対象にレポートを実行
した場合は ALL_DELETED。
StartDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。
EndDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。
GeneratedTimeUTC
協定世界時 (UTC) によるレポートを実行した日時。
詳細度
レポートの各行が 1 時間と 1 日のどちらを表すか。
BillingRegion
ビューアリクエストが発信された大陸。または、すべての請求リージョンについてレポートをダ
ウンロードする場合は ALL。
使用状況レポートのデータ
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。すべてのディストリビューションを対
象にレポートを実行した場合は ALL。削除したディストリビューションを対象にレポートを実行
した場合は ALL_DELETED。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
BillingRegion
レポートを実行した対象の CloudFront 請求リージョン、または ALL。
TimeBucket
協定世界時 (UTC) によるデータに該当する時間または日付。
HTTP
指定した CloudFront ディストリビューションで時間間隔ごとに、CloudFront が応答する、選択
したリージョンのエッジロケーションからの HTTP リクエストの数。値には以下のものが含まれ
ます。
• CloudFront がユーザーにデータを転送する、GET および HEAD リクエストの数
• CloudFront がオリジンにデータを転送する、DELETE、OPTIONS、PATCH、POST、および PUT
リクエストの数
HTTPS
指定した CloudFront ディストリビューションで時間間隔ごとに、CloudFront が応答する、選択
したリージョンのエッジロケーションからの HTTPS リクエストの数。値には以下のものが含ま
れます。
• CloudFront がユーザーにデータを転送する、GET および HEAD リクエストの数
• CloudFront がオリジンにデータを転送する、DELETE、OPTIONS、PATCH、POST、および PUT
リクエストの数
HTTPBytes
指定した CloudFront ディストリビューションで期間中に、選択した請求リージョンの
CloudFront エッジロケーションから HTTP 経由で転送されるデータの合計量。値には以下のもの
が含まれます。
API Version 2016-09-29
28
Amazon CloudFront 開発者ガイド
使用状況グラフと CloudFront 使
用状況レポートのデータとの関連
• GET および HEAD リクエストに応じて CloudFront からユーザーに転送されるデータ
• DELETE、OPTIONS、PATCH、POST、および PUT リクエストに応じて、CloudFront からオリジ
ンに転送されるデータ
• DELETE、OPTIONS、PATCH、POST、および PUT リクエストに応じて、CloudFront から
ユーザーに転送されるデータ
HTTPSBytes
指定した CloudFront ディストリビューションで期間中に、選択した請求リージョンの
CloudFront エッジロケーションから HTTPS 経由で転送されるデータの合計量。値には以下のも
のが含まれます。
• GET および HEAD リクエストに応じて CloudFront からユーザーに転送されるデータ
• DELETE、OPTIONS、PATCH、POST、および PUT リクエストに応じて、CloudFront からオリジ
ンに転送されるデータ
• DELETE、OPTIONS、PATCH、POST、および PUT リクエストに応じて、CloudFront から
ユーザーに転送されるデータ
BytesIn
指定した CloudFront ディストリビューションで時間間隔ごとに、選択したリージョンの
DELETE、OPTIONS、PATCH、POST、および PUT リクエストについて、CloudFront からオリジン
に転送されるデータの合計量。
BytesOut
指定した CloudFront ディストリビューションで時間間隔ごとに、選択したリージョンで
CloudFront からユーザーに HTTP および HTTPS 経由で転送されるデータの合計量。値には以下
のものが含まれます。
• GET および HEAD リクエストに応じて CloudFront からユーザーに転送されるデータ
• DELETE、OPTIONS、PATCH、POST、および PUT リクエストに応じて CloudFront からユー
ザーに転送されるデータ
使用状況グラフと CloudFront 使用状況レポートの
データとの関連
次のリストは、CloudFront コンソールの使用状況グラフと、対応する CloudFront 使用状況レポート
の [Usage Type] 列の値を示します。
トピック
• リクエストの数 (p. 29)
• プロトコルごとのデータ転送 (p. 30)
• ディストリビューションごとのデータ転送 (p. 30)
リクエストの数
このグラフには、指定した CloudFront ディストリビューションで時間間隔ごとに、CloudFront が応
答する、選択したリージョンのエッジロケーションからの HTTP および HTTPS リクエストの数が表
示されます。
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 2016-09-29
29
Amazon CloudFront 開発者ガイド
使用状況グラフと CloudFront 使
用状況レポートのデータとの関連
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 リクエストの数
プロトコルごとのデータ転送
このグラフには、指定した CloudFront ディストリビューションで時間間隔ごとに、選択したリージョ
ンの CloudFront エッジロケーションから HTTP および HTTPS 経由で転送されるデータの合計量が表
示されます。
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 経由で転送された合計バイ
ト数
ディストリビューションごとのデータ転送
このグラフには、指定した CloudFront ディストリビューションで時間間隔ごとに、選択したリージョ
ンの CloudFront エッジロケーションから HTTP および HTTPS 経由で転送されるデータの合計量が表
示されます。
Data Transferred from CloudFront to Your Users
• region-Out-Bytes-HTTP-Static: TTL >= 3600 秒のオブジェクトのために 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 経由で返されたバイト数
API Version 2016-09-29
30
Amazon CloudFront 開発者ガイド
CloudFront ビューア レポート
• 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 経由で転送された合計バイ
ト数
CloudFront ビューア レポート
CloudFront コンソールでは、物理デバイス(デスクトップコンピュータ、モバイルデバイス)および
コンテンツにアクセスするビューア(通常はウェブブラウザ)に関する 4 つのレポートを表示できま
す。
• デバイス – コンテンツにアクセスするユーザーが最も頻繁に使用するデバイスのタイプ(デスク
トップやモバイルなど)。
• ブラウザ – Chrome や Firefox など、コンテンツにアクセスするときに、ユーザーが最も頻繁に使用
するブラウザの名前(または名前とバージョン)。このレポートには、上位 10 件のブラウザが表
示されます。
• オペレーティングシステム – Linux、Mac OS X、Windows など、コンテンツにアクセスするときに
ビューアが最も頻繁に実行するオペレーティングシステムの名前(または名前とバージョン)。こ
のレポートには、上位 10 件のオペレーティングシステムが表示されます。
• ロケーション – コンテンツに最も頻繁にアクセスするビューアの場所(国、または米国の州/準
州)。このレポートには、上位 50 件の国、または米国の州/準州が表示されます。
4 つのビューアレポートはすべて、過去 60 日の中のどの日付範囲でも表示できます。ロケーション
レポートでは、過去 60 日の中で最大 14 日間の日付範囲の間、1 時間ごとにデータポイントのあるレ
ポートを表示することもできます。
Note
ビューアのグラフおよびレポートを参照するために、アクセスログを有効にする必要はあり
ません。
トピック
• ビューアのグラフおよびレポートの表示 (p. 31)
• CSV 形式でのデータのダウンロード (p. 32)
• ロケーションレポートのデータと CloudFront アクセスログのデータとの関連 (p. 37)
ビューアのグラフおよびレポートの表示
CloudFront ビューアのグラフおよびレポートを表示するには、以下の手順を実行します。
CloudFront ビューアのグラフおよびレポートを表示するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
3.
ナビゲーションペインで [Viewers] をクリックします。
[CloudFront Viewers] ペインの [Start Date] と [End Date] で、ビューアのグラフおよびレポートを
表示する日付範囲を選択します。
API Version 2016-09-29
31
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
ロケーショングラフで使用できる範囲は、[Granularity] で選択した値によって異なります。
• Daily – 1 日につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日の中で
任意の日付範囲を選択します。
• Hourly – 1 時間につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日以内
で最大 14 日間の任意の日付範囲を選択します。
日付と時刻は協定世界時 (UTC) です。
4.
(ブラウザとオペレーティングシステムのグラフのみ)[Grouping] で、ブラウザおよびオペ
レーティングシステムを名前(Chrome、Firefox)ごと、または名前とバージョン(Chrome
40.0、Firefox 35.0)ごとにグループ化するかどうかを指定します。
5.
(ロケーショングラフのみ)[Granularity] で、グラフに 1 日につき 1 つのデータポイントを表示
するか、1 時間につき 1 つのデータポイントを表示するかを指定します。14 日を超える日付範囲
を指定した場合、1 時間につき 1 つのデータポイントを指定することはできなくなります。
6.
(ロケーショングラフのみ)[Details] で、上位のロケーションを国ごとに表示するか、米国の州
ごとに表示するかを指定します。
7.
[Distribution] リストでは、使用状況グラフにデータを表示するディストリビューションを選択し
ます。
• 個々のウェブディストリビューション – 選択した CloudFront ウェブディストリビューションの
データがグラフに表示されます。[Distribution] リストには、ディストリビューションのディス
トリビューション ID と代替ドメイン名(CNAME)が表示されます(ある場合)。ディストリ
ビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンド
メイン名が含まれます。
• All Web Distributions (excludes deleted) – 現在の AWS アカウントに関連付けられているすべて
のウェブディストリビューションのデータが集計されてグラフに表示されます。ただし、削除
したウェブディストリビューションは除外されます。
8.
[Update] をクリックします。
9.
グラフ内の毎日または毎時間のデータポイントのデータを表示するには、データポイントの上に
マウスポインタを移動します。
CSV 形式でのデータのダウンロード
各ビューアレポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウン
ロードする方法と、レポートの値について説明します。
ビューアレポートを CSV 形式でダウンロードするには
1.
該当するビューアレポートを表示しているときに、[CSV] をクリックします。
2.
ダウンロードするデータ([Devices] や [Devices Trends] など)を選択します。
3.
[Opening file name] ダイアログボックスで、ファイルを開くか保存するかを選択します。
トピック
• レポートに関する情報 (p. 33)
• デバイスレポート (p. 33)
• デバイストレンドレポート (p. 33)
• ブラウザレポート (p. 34)
• ブラウザトレンドレポート (p. 35)
• オペレーティングシステムレポート (p. 35)
• オペレーティングシステムトレンドレポート (p. 36)
API Version 2016-09-29
32
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
• ロケーションレポート (p. 36)
• ロケーショントレンドレポート (p. 37)
レポートに関する情報
各レポートの先頭数行には次の情報が含まれます。
バージョン
この CSV ファイルの形式のバージョン。
レポート
レポートの名前。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのウェブディストリ
ビューションを対象にレポートを実行した場合は ALL。
StartDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。
EndDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。
GeneratedTimeUTC
協定世界時 (UTC) によるレポートを実行した日時。
Grouping(ブラウザとオペレーティングシステムのレポートのみ)
データをブラウザやオペレーティングシステムの名前によってグループ化するか、または名前と
バージョンによってグループ化するか。
詳細度
レポートの各行が 1 時間と 1 日のどちらを表すか。
Details(ロケーションレポートのみ)
リクエストを国別にリストするか、米国の州別にリストするか。
デバイスレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
リクエスト
CloudFront が各タイプのデバイスから受け取ったリクエストの数。
RequestsPct
CloudFront がすべてのデバイスから受け取ったリクエストの数に対する、CloudFront が各タイプ
のデバイスから受け取ったリクエストの数の割合。
デバイストレンドレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
API Version 2016-09-29
33
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
TimeBucket
協定世界時 (UTC) によるデータに該当する時間または日付。
Desktop
期間中に CloudFront がデスクトップコンピュータから受け取ったリクエストの数。
モバイル
期間中に CloudFront がモバイルデバイスから受け取ったリクエストの数。モバイルデバイスに
は、タブレットと携帯電話の両方が含まれる場合があります。CloudFront でリクエストがモバ
イルデバイスとタブレットのいずれから発信されたかを特定できない場合、そのリクエストは
Mobile 列でカウントされます。
Smart-TV
期間中に CloudFront がスマート TV から受け取ったリクエストの数。
Tablet
期間中に CloudFront がタブレットから受け取ったリクエストの数。CloudFront でリクエストが
モバイルデバイスとタブレットのいずれから発信されたかを特定できない場合、そのリクエスト
は Mobile 列でカウントされます。
不明
User-Agent HTTP ヘッダーの値が標準デバイスタイプのいずれか(Desktop や Mobile など)
に関連付けられていなかったリクエスト。
Empty
期間中に CloudFront が受け取ったリクエストで、HTTP User-Agent ヘッダーに値が含まれてい
なかったリクエストの数。
ブラウザレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
グループ
Grouping の値に応じて、CloudFront がリクエストを受け取ったブラウザまたはブラウザとバー
ジョン。ブラウザ名に加えて、次の値が含まれる場合があります。
• Bot/Crawler – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
• Empty – User-Agent HTTP ヘッダーの値が空であったリクエスト。
• Other – CloudFront によって識別されたが、一般的ではないブラウザ。Bot/
Crawler、Empty、Unknown が最初の 9 個の値に表示されない場合、Other にも含まれてい
ます。
• Unknown – User-Agent HTTP ヘッダーの値が標準的なブラウザに関連付けられていなかった
リクエスト。このカテゴリのほとんどのリクエストは、カスタムアプリケーションまたはスク
リプトからのリスクエストです。
リクエスト
CloudFront が各タイプのブラウザから受け取ったリクエストの数。
RequestsPct
期間中に CloudFront が受け取ったすべてのリクエストの数に対する、CloudFront が各タイプの
ブラウザから受け取ったリクエストの数の割合。
API Version 2016-09-29
34
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
ブラウザトレンドレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
TimeBucket
協定世界時 (UTC) によるデータに該当する時間または日付。
(ブラウザ)
レポートの残りの列には、Grouping の値に応じて、ブラウザまたはブラウザとバージョンがリ
ストされます。ブラウザ名に加えて、次の値が含まれる場合があります。
• Bot/Crawler – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
• Empty – User-Agent HTTP ヘッダーの値が空であったリクエスト。
• Other – CloudFront によって識別されたが、一般的ではないブラウザ。Bot/
Crawler、Empty、Unknown が最初の 9 個の値に表示されない場合、Other にも含まれてい
ます。
• Unknown – User-Agent HTTP ヘッダーの値が標準的なブラウザに関連付けられていなかった
リクエスト。このカテゴリのほとんどのリクエストは、カスタムアプリケーションまたはスク
リプトからのリスクエストです。
オペレーティングシステムレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
グループ
Grouping の値に応じて、CloudFront がリクエストを受け取ったオペレーティングシステムまた
はオペレーティングシステムとバージョン。オペレーティングシステム名に加えて、次の値が含
まれる場合があります。
• Bot/Crawler – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
• Empty – User-Agent HTTP ヘッダーの値が空であったリクエスト。
• Other – CloudFront によって識別されたが、一般的ではないオペレーティングシステム。Bot/
Crawler、Empty、Unknown が最初の 9 個の値に表示されない場合、Other にも含まれてい
ます。
• Unknown – User-Agent HTTP ヘッダーの値が標準的なブラウザに関連付けられていなかった
リクエスト。このカテゴリのほとんどのリクエストは、カスタムアプリケーションまたはスク
リプトからのリスクエストです。
リクエスト
CloudFront が各タイプのオペレーティングシステムから受け取ったリクエストの数。
RequestsPct
期間中に CloudFront が受け取ったすべてのリクエストの数に対する、CloudFront が各タイプの
オペレーティングシステムから受け取ったリクエストの数の割合。
API Version 2016-09-29
35
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
オペレーティングシステムトレンドレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
TimeBucket
協定世界時 (UTC) によるデータに該当する時間または日付。
(オペレーティングシステム
レポートの残りの列には、Grouping の値に応じて、オペレーティングシステムまたはオペレー
ティングシステムとバージョンがリストされます。オペレーティングシステム名に加えて、次の
値が含まれる場合があります。
• Bot/Crawler – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
• Empty – User-Agent HTTP ヘッダーの値が空であったリクエスト。
• Other – CloudFront によって識別されたが、一般的ではないオペレーティングシステム。Bot/
Crawler、Empty、Unknown が最初の 9 個の値に表示されない場合、Other にも含まれてい
ます。
• Unknown – User-Agent HTTP ヘッダーでオペレーティングシステムが指定されていないリク
エスト。
ロケーションレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
LocationCode
CloudFront が受け取ったリクエストの発信元のロケーションの略語。表示される可能性がある値
の詳細については、「ロケーションレポートのデータと CloudFront アクセスログのデータとの関
連 (p. 37)」のロケーションの説明を参照してください。
LocationName
CloudFront が受け取ったリクエストの発信元のロケーションの名前。
リクエスト
CloudFront が各ロケーションから受け取ったリクエストの数。
RequestsPct
期間中に CloudFront がすべてのロケーションから受け取ったリクエストの数に対す
る、CloudFront が各ロケーションから受け取ったリクエストの数の割合。
TotalBytes
指定したディストリビューションおよび期間に、CloudFront からこの国または州のビューアに提
供されたバイト数。
API Version 2016-09-29
36
Amazon CloudFront 開発者ガイド
ロケーションレポートのデータと
CloudFront アクセスログのデータとの関連
ロケーショントレンドレポート
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビュー
ションを対象にレポートを実行した場合は ALL。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
TimeBucket
協定世界時 (UTC) によるデータに該当する時間または日付。
(ロケーション)
レポートの残りの列には、CloudFront が受け取ったリクエストの発信元のロケーションがリス
トされます。表示される可能性がある値の詳細については、「ロケーションレポートのデータと
CloudFront アクセスログのデータとの関連 (p. 37)」のロケーションの説明を参照してくださ
い。
ロケーションレポートのデータと CloudFront アク
セスログのデータとの関連
次のリストは、CloudFront コンソールのロケーションレポートの値と、対応する CloudFront アクセ
スログの値を示します。CloudFront アクセスログの詳細については、「アクセスログ (p. 289)」を
参照してください。
ロケーション
ビューアがいる国または米国の州。アクセスログの c-ip 列には、ビューアが実行中のデバイス
の IP アドレスが含まれています。位置情報データを使用して、IP アドレスに基づくデバイスの
地理的場所を識別します。
[Locations] レポートを国ごとに表示している場合、国のリストは「ISO 3166-2、国および地方行
政区画に対するコード – Part 2: 行政区画コード」を基にしている点に注意してください。国のリ
ストには、以下の追加の値が含まれています。
• Anonymous Proxy – 匿名のプロキシからのリクエスト。
• Satellite Provider – 複数の国にインターネットサービスを提供している衛星プロバイダーからの
リクエスト。ユーザーは、不正行為のリスクが高い国にいる可能性があります。
• Europe (Unknown) – 複数の欧州諸国で使用されているブロックの IP からのリクエスト。リク
エスト元の国を特定することはできません。CloudFront では、[Europe (Unknown)] はデフォル
トとして使用されます。
• Asia/Pacific (Unknown) – アジアパシフィックリージョンの複数の国で使用されているブロック
の IP からのリクエスト。リクエスト元の国を特定することはできません。CloudFront では、
[Asia/Pacific (Unknown)] はデフォルトとして使用されます。
[Locations] レポートを米国の州ごとに表示している場合、レポートには以下の米国準州と米軍基
地所在地域が含まれることがあります。
Request Count
ビューアがいる国または米国の州からの、指定したディストリビューションおよび期間のリクエ
ストの総数。一般的にこの値は、CloudFront アクセスログのその国または州の IP アドレスから
の GET リクエストの数とほぼ一致します。
リクエスト %
[Details] で選択した値に基づき、次のうちのいずれか。
• Countries – リクエストの総数に対するこの国からのリクエストの割合。
API Version 2016-09-29
37
Amazon CloudFront 開発者ガイド
ロケーションレポートのデータと
CloudFront アクセスログのデータとの関連
• U.S. States – 米国からのリクエストの総数に対するこの州からのリクエストの割合。
50 以上の国からリクエストがあると、[Request Count] 列に指定した期間のすべてのリクエスト
を含めることができないため、このテーブルのデータに基づいて [Request %] を計算することは
できません。
Bytes
指定したディストリビューションおよび期間に、CloudFront からこの国または州のビューアに提
供されたバイト数。この列のデータの表示を KB、MB、または GB に変更するには、列見出しの
リンクをクリックします。
API Version 2016-09-29
38
Amazon CloudFront 開発者ガイド
ステップ 1: アマゾン ウェブ サービスにサインアップする
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. 62)またはRTMP を使用するストリーミングメ
ディアファイルのタスクリスト (p. 105)を参照してください。
いくつかの基本的なステップを実行するだけで、CloudFront を使用してコンテンツの送付を開始する
ことができます。最初のステップは、サインアップです。その後、CloudFront ディストリビューショ
ンを作成し、ウェブページやアプリケーションのコンテンツを参照するのに、CloudFront ドメイン名
を使用します。
トピック
• ステップ 1: アマゾン ウェブ サービスにサインアップする (p. 39)
• ステップ 2: コンテンツを Amazon S3 にアップロードし、オブジェクトに許可を付与す
る (p. 40)
• ステップ 3: CloudFront ウェブディストリビューションを作成する (p. 41)
• ステップ 4: リンクをテストする (p. 47)
ステップ 1: アマゾン ウェブ サービスにサイン
アップする
まだアマゾン ウェブ サービスにサインアップしていない場合は、http://aws.amazon.com からサイン
アップします。[Sign Up Now] を選択し、必須事項を入力します。
API Version 2016-09-29
39
Amazon CloudFront 開発者ガイド
ステップ 2: コンテンツを Amazon S3 にアッ
プロードし、オブジェクトに許可を付与する
ステップ 2: コンテンツを Amazon S3 にアップ
ロードし、オブジェクトに許可を付与する
Amazon S3 バケットは、オブジェクトやフォルダを含めることができるコンテナです。 CloudFront
は、ソースとして Amazon S3 バケットを使用して、たとえばテキストや画像、動画など、ほぼあら
ゆる種類のオブジェクトを配信できます。 複数のバケットを作成できます。また、Amazon S3 で作
成できるデータの量には制限はありません。
デフォルトでは、Amazon S3 バケットと、バケット内のすべてのオブジェクトはプライベートです。
バケットを作成した AWS アカウントのみが、バケット内のオブジェクトの読み取りまたは書き込み
許可を持っています。 CloudFront の URL を使用して、全員に Amazon S3 バケット内のオブジェク
トにアクセスを許可する場合、オブジェクトにパブリックの読み取り許可を許諾する必要がありま
す。 (これが、CloudFront および Amazon S3 を使用して作業を行う際の、最も一般的な誤りの 1 つ
です。 Amazon S3 バケットで、各オブジェクトに明示的に権限を許諾する必要があります。)
Note
コンテンツをダウンロードできるユーザーを制限したい場合は、CloudFront のプライベート
コンテンツ機能を使用することができます。プライベートコンテンツの配信の詳細について
は、「CloudFront を使用してプライベートコンテンツを供給する (p. 186)」を参照してくだ
さい。
コンテンツを Amazon S3 にアップロードし、全員に読み取り許可を許諾
1.
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール(https://
console.aws.amazon.com/s3/)を開きます。
2.
Amazon S3 コンソールで、[Create Bucket] を選択します。
3.
[Create Bucket] ダイアログに、バケット名を入力します。
Important
バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもの
でなければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイ
ド」の「バケットの制約と制限」を参照してください。
4.
バケットのリージョンを選択します。デフォルトでは、Amazon S3 は 米国東部(バージニア北
部) リージョンにバケットを作成します。 レイテンシーを最適化するため、コストを最小化する
ため、また規制要件に対応するために、最寄りのリージョンを選択してください。
5.
[Create] を選択します。
6.
[Buckets] ペインでバケットを選択し、[Upload] を選択します。
7.
[Upload – Select Files] ページで、[Add Files] を選択し、アップロードするファイルを選択しま
す。
API Version 2016-09-29
40
Amazon CloudFront 開発者ガイド
ステップ 3: CloudFront ウェブディ
ストリビューションを作成する
8.
9.
[Amazon S3] バケットにアップロードする各オブジェクトについて、パブリックの読み取り権限
を有効にします。
a.
[Set Details] を選択します。
b.
[Set Details] ページで、[Set Permissions] を選択します。
c.
[Set Permissions] ページで、[Make everything public] を選択します。
[Start Upload] を選択します。
アップロードが完了したら、その URL でこの項目をナビゲートすることができます。前の例の
ケースでは、URL は次のようになります。
http://s3.amazonaws.com/example-myawsbucket/filename
Amazon S3 の URL を使って、コンテンツへパブリックにアクセスできることを確認します。た
だし、これはコンテンツを実際に配信するときに使用する URL ではありません。
ステップ 3: CloudFront ウェブディストリビュー
ションを作成する
CloudFront ウェブディストリビューションを作成するには
1.
https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。
2.
[Create Distribution] を選択します。
3.
[Select a delivery method for your content] ページで、[Web] セクションの [Get Started] を選択し
ます。
API Version 2016-09-29
41
Amazon CloudFront 開発者ガイド
ステップ 3: CloudFront ウェブディ
ストリビューションを作成する
4.
[Create Distribution] ページの [Origin Settings] で、前の手順で作成した Amazon S3 バケットを選
択します。[Origin ID]、[Origin Path]、[Restrict Bucket Access]、および [Origin Custom Headers]
については、デフォルト値をそのまま使用します。
5.
[Default Cache Behavior Settings] の下で、デフォルト値をそのまま使用すると、CloudFront は次
のように動作します。
API Version 2016-09-29
42
Amazon CloudFront 開発者ガイド
ステップ 3: CloudFront ウェブディ
ストリビューションを作成する
• 配信に CloudFront の URL を使用するすべてのリクエスト (例:http://
d111111abcdef8.cloudfront.net/image.jpg) を、手順 4 で指定した [Amazon S3] バ
ケットに転送。
• エンドユーザーに、HTTP または HTTPS のいずれかを使用して、オブジェクトへのアクセス
を許可。
• オブジェクトに対するリクエストに応答します。
• CloudFront エッジロケーションでオブジェクトを 24 時間キャッシュします。
• デフォルトのリクエストヘッダーのみをオリジンに転送し、ヘッダーの値に基づいてオブジェ
クトをキャッシュすることはしません。
• オブジェクトのリクエストをオリジンに転送する際、クッキーとクエリ文字列パラメーターを
除外。(Amazon S3 はクッキーの処理は行わず、一部のクエリ文字列パラメーターのみを処理
します。)
• Microsoft スムーズストリーミング形式でメディアファイルを配信するようには構成されていま
せん。
• 全員にコンテンツの閲覧を許可します。
• 自動的にコンテンツを圧縮しません。
キャッシュ動作オプションの詳細については、「キャッシュ動作の設定 (p. 73)」を参照してく
ださい。
API Version 2016-09-29
43
Amazon CloudFront 開発者ガイド
ステップ 3: CloudFront ウェブディ
ストリビューションを作成する
6.
[Distribution Settings] で、適切な値を入力します。
価格クラス
CloudFront サービスに支払う上限価格に対応する価格クラスを選択します。デフォルトで
は、CloudFront は、すべての CloudFront リージョンのエッジロケーションからオブジェク
トを供給します。
API Version 2016-09-29
44
Amazon CloudFront 開発者ガイド
ステップ 3: CloudFront ウェブディ
ストリビューションを作成する
価格クラスおよび、配信の CloudFront パフォーマンスへの価格クラスの選択の影響の詳細に
ついては、CloudFront ディストリビューションの価格クラスを選択する (p. 58)を参照し
てください。価格クラスと CloudFront リージョンのマッピングを含め、CloudFront 料金表
の詳細については、「Amazon CloudFront 料金表」を参照してください。
AWS WAF ウェブ ACL
AWS WAF を使用して、指定した条件に基づいて HTTP リクエストと HTTPS リクエストを
許可したりブロックしたりする場合は、このディストリビューションに関連付けられたウェ
ブ ACL を選択します。AWS WAF の詳細については、『AWS WAF 開発者ガイド』を参照し
てください。
代替ドメイン名(CNAME):(オプション)
ディストリビューションを作成するときに CloudFront が割り当てるドメイン名ではなく、オ
ブジェクトの URL に使用する 1 つ以上のドメイン名を指定します。たとえば、次のオブジェ
クトの URL があります。
/images/image.jpg
この 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 レコードを作成する許可
が必要です。通常、これはドメインを所有していることを指しますが、ドメイン所有
者向けにアプリケーションを開発している場合にも当てはまります。CNAME の詳細
については、「代替ドメイン名(CNAME)を使用する (p. 53)」を参照してくだ
さい。
ディストリビューションに追加できる代替ドメイン名の数に関する現在の制限については、
『アマゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照
してください。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/
home#/case/create?issueType=service-limit-increase&limitType=service-code-cloudfrontdistributions」を参照してください。
SSL 証明書
デフォルト値である [Default CloudFront Certificate] をそのまま使用します。
デフォルトのルートオブジェクト:(オプション)
ビューアがディストリビューション内のオブジェクト(http://www.example.com/
product-description.html)ではなくディストリビューションのルート URL
(http://www.example.com/)を要求するときに、CloudFront が要求する、オリジンか
らのオブジェクト(index.html など)。デフォルトのルートオブジェクトを指定すると、
ディストリビューションのコンテンツが公開されなくなります。
ログ作成 :(オプション)
オブジェクトの各リクエストについての情報のログを CloudFront が作成し、ログファイル
を [Amazon S3] バケットに保存する場合、[On] を選択し、バケットとログファイル名のオ
プションのプレフィックスを指定します。ログ作成を有効にしても追加料金はかかりません
が、ファイルの保存とアクセスについて通常の Amazon S3 料金が発生します。 CloudFront
はログを自動的に削除しませんが、いつでも削除を行えます。
API Version 2016-09-29
45
Amazon CloudFront 開発者ガイド
ステップ 3: CloudFront ウェブディ
ストリビューションを作成する
Cookie のログ作成
この例では、オブジェクトのオリジンとして Amazon S3 を使用しており、Amazon S3 は
Cookie の処理を行わないため、[Cookie Logging] の値に [Off] を選択することをお勧めしま
す。
コメント :(オプション)
配信とともに保存するコメントを入力します。
ディストリビューションの状態
ディストリビューションの作成直後に CloudFront でリクエストの処理を開始する場合、
[Enabled] を選択します。または、ディストリビューションの作成後に CloudFront でリクエ
ストの処理を開始しない場合には、[Disabled] を選択します。
7.
[Create Distribution] を選択します。
API Version 2016-09-29
46
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. 315)に
あるヒントも参照してください。
ブラウザに、イメージファイルが埋め込まれたページが表示されます。これは CloudFront がオブジェ
クトを供給するのに適切と判断したエッジロケーションから供給されたものです。
API Version 2016-09-29
47
Amazon CloudFront 開発者ガイド
ステップ 4: リンクをテストする
CloudFront 使用の詳細に関しては、Amazon CloudFront リソース (p. 393)をご覧ください。
API Version 2016-09-29
48
Amazon CloudFront 開発者ガイド
ディストリビューションの使用
トピック
• ウェブディストリビューションと RTMP ディストリビューションの概要 (p. 50)
• ウェブディストリビューションと RTMP ディストリビューションの作成 (p. 51)
• CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 52)
• ディストリビューションを削除する (p. 53)
• 代替ドメイン名(CNAME)を使用する (p. 53)
• CloudFront ディストリビューションの価格クラスを選択する (p. 58)
• Amazon S3 での CloudFront の使用 (p. 59)
• CloudFront API の変更点 (p. 61)
ディストリビューションに対して実行可能なアクション、および CloudFront コンソールと
CloudFront API を使用してそのアクションを実行する方法に関するドキュメントへのリンクを次の表
に示します。
アクション
CloudFront コンソール
を使用
CloudFront API を使
用: ウェブディストリ
ビューション
CloudFront API を使
用: RTMP ディストリ
ビューション
ディストリビューショ
ンを作成する
ウェブディストリ
ビューション:「ウェ
ブディストリビュー
ションを作成する
ためのタスクリス
ト (p. 62)」を参照
してください
RTMP ディストリ
ビューション:「RTMP
を使用するストリー
ミングメディアファ
イルのタスクリス
ト (p. 105)」を参照
してください
「POST Distribution
」を参照してください
「POST Streaming
Distribution
」を参照してください
API Version 2016-09-29
49
Amazon CloudFront 開発者ガイド
ウェブディストリビューションと
RTMP ディストリビューションの概要
アクション
CloudFront コンソール
を使用
CloudFront API を使
用: ウェブディストリ
ビューション
CloudFront API を使
用: RTMP ディストリ
ビューション
ディストリビューショ
ンのリストを表示する
「CloudFront ディ
ストリビューション
の一覧表示、詳細表
示、および更新を行
う (p. 52)
」を参照してください
「GET Distribution List
」を参照してください
「GET Streaming
Distribution List
」を参照してくださ
い。
ディストリビューショ
ンに関するすべての情
報を取得する
「CloudFront ディ
ストリビューション
の一覧表示、詳細表
示、および更新を行
う (p. 52)
」を参照してください
「GET Distribution
」を参照してください
「GET Streaming
Distribution
」を参照してください
ディストリビューショ
ン構成を取得する
「CloudFront ディ
ストリビューション
の一覧表示、詳細表
示、および更新を行
う (p. 52)
」を参照してください
「GET Distribution
Config
」を参照してください
「GET Streaming
Distribution Config
」を参照してください
ディストリビューショ
ンを更新する
「CloudFront ディ
ストリビューション
の一覧表示、詳細表
示、および更新を行
う (p. 52)
」を参照してください
「PUT Distribution
Config
」を参照してください
「PUT Streaming
Distribution Config
」を参照してください
ディストリビューショ
ンを削除する
「ディストリビュー
ションを削除す
る (p. 53)
」を参照してください
「DELETE Distribution
」を参照してください
「DELETE Streaming
Distribution
」を参照してください
ウェブディストリビューションと RTMP ディス
トリビューションの概要
CloudFront を使用してコンテンツを配信するときは、ディストリビューションを作成して、以下のよ
うな構成設定を指定します。
• オリジン。これは CloudFront が配信するファイルを取得する Amazon S3 バケットまたは HTTP
サーバーです。オリジンとして、最大で 10 個の Amazon S3 バケットと HTTP サーバーの任意の組
み合わせを指定できます。
• ファイルをすべてのユーザーが使用できるようにするか、または選択されたユーザーにアクセスを
制限するか。
• CloudFront でコンテンツへのアクセスに HTTPS を必須にするかどうか。
• CloudFront でオリジンに Cookie またはクエリ文字列を転送するかどうか。
• CloudFront で特定の国のユーザーをコンテンツにアクセスできなくするかどうか。
• CloudFront でアクセスログを作成するかどうか。
API Version 2016-09-29
50
Amazon CloudFront 開発者ガイド
ウェブディストリビューション
AWS アカウントごとに作成できるウェブディストリビューションと RTMP ディストリビュー
ションの数に関する現在の制限については、『アマゾン ウェブ サービス全般のリファレン
ス』の「Amazon CloudFront の上限」を参照してください。制限の引き上げを要求するに
は、「https://console.aws.amazon.com/support/home#/case/create?issueType=service-limitincrease&limitType=service-code-cloudfront-distributions」を参照してください。
供給可能な、ディストリビューションごとのファイル数に制限はありません。
ウェブディストリビューション
ウェブディストリビューションを使用して、HTTP または HTTPS 経由で以下のコンテンツを供給で
きます。
• HTTP または HTTPS を使用した静的および動的なダウンロードコンテンツ。たとえ
ば、.html、.css、.php、イメージファイル。
• プログレッシブダウンロードと Apple HTTP Live Streaming(HLS)を使用したオンデマンドマルチ
メディアコンテンツ。 詳細については、「ウェブディストリビューションの使用 (p. 62)」の該
当するトピックを参照してください。
HTTP または HTTPS を介して Adobe Flash マルチメディアコンテンツを供給することはできま
せんが、CloudFront RTMP ディストリビューションを使用して供給することはできます。以下の
「RTMP ディストリビューション (p. 51)」を参照してください。
• ライブイベント。リアルタイムのミーティング、会議、コンサートなど。ライブストリーミング
の場合は、AWS CloudFormation スタックを使用して自動的にディストリビューションを作成しま
す。詳細については、「CloudFront ストリーミングチュートリアル (p. 319)」の該当するライブ
ストリーミングチュートリアルを参照してください。
ウェブディストリビューションの場合、オリジンは、Amazon S3 バケットまたは HTTP サーバー
(ウェブサーバーなど)です。ウェブディストリビューションを作成する際に指定する値を含め、
ウェブディストリビューションが動作する仕組みの詳細については、「ウェブディストリビューショ
ンの使用 (p. 62)」を参照してください。ウェブディストリビューションの作成については、「ウェ
ブディストリビューションを作成するためのタスクリスト (p. 62)」を参照してください。
RTMP ディストリビューション
RTMP ディストリビューションは、Adobe Media Server と Adobe Real-Time Messaging
Protocol(RTMP)を使用してメディアファイルをストリーミングします。RTMP ディストリビュー
ションでは、Amazon S3 バケットをオリジンとして使用する必要があります。
RTMP ディストリビューションを作成する際に指定する値については、「RTMP ディストリビュー
ションの使用 (p. 103)」を参照してください。RTMP ディストリビューションの作成については、
「RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 105)」を参照してくださ
い。
ウェブディストリビューションと RTMP ディス
トリビューションの作成
ウェブディストリビューション: CloudFront コンソールを使用したウェブディストリビューションの
作成については、「ウェブディストリビューションを作成するためのタスクリスト (p. 62)」を参
照してください。CloudFront API を使用してウェブディストリビューションを作成する方法について
は、『Amazon CloudFront API リファレンス』の「POST Distribution」を参照してください。
RTMP ディストリビューション: CloudFront コンソールを使用した RTMP ディストリビューションの
作成については、「RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 105)」
API Version 2016-09-29
51
Amazon CloudFront 開発者ガイド
CloudFront ディストリビューションの
一覧表示、詳細表示、および更新を行う
を参照してください。CloudFront API を使用して RTMP ディストリビューションを作成する方法につ
いては、『Amazon CloudFront API リファレンス』の「POST Streaming Distribution」を参照してく
ださい。
CloudFront ディストリビューションの一覧表示、
詳細表示、および更新を行う
CloudFront コンソールを使用して、AWS アカウントに関連付けられた CloudFront ディストリビュー
ションの一覧を表示したり、ディストリビューションの設定を表示したり、ほとんどの設定を更新し
たりできます。
ディストリビューション構成に対する変更を保存すると、CloudFront はすべてのエッジロケーション
への変更の伝達を開始します。エッジロケーションで構成が更新されるまで、CloudFront は以前の構
成に基づいて、そのエッジロケーションからコンテンツを引き続き供給します。エッジロケーション
で構成が更新されると、CloudFront は新しい構成に基づいて、そのエッジロケーションからコンテン
ツの供給を直ちに開始します。
変更は、すべてのエッジロケーションにすぐに伝達されるわけではありません。伝達が完了すると、
ディストリビューションのステータスが [InProgress] から [Deployed] に変わります。CloudFront が
エッジロケーションに変更が伝達している間、特定のエッジロケーションでコンテンツが以前の構成
または新しい構成のどちらに基づいて供給されるかを判別することはできません。
CloudFront コンソールを使用して、CloudFront ディストリビューションの一覧表示、詳細表
示、および更新を行うには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
表示または更新するディストリビューションの ID を選択します。
Note
上部のペインには、CloudFront コンソールへのサインイン時に使用された AWS アカウ
ントに関連付けられたすべてのディストリビューションの一覧が表示されます。
3.
RTMP ディストリビューションの設定を表示または編集するには、このステップをスキップして
ステップ 4 に進んでください。
ウェブディストリビューションの設定を表示または編集するには、以下のステップを実行しま
す。
a.
[Distribution Settings] ペインで、変更する設定のタブ([General]、[Origins]、または
[Behaviors)をクリックします。
b.
全般設定については、[Edit] をクリックします。
オリジンまたはキャッシュ動作については、オリジンまたはキャッシュ動作をクリックし
て、[Edit] をクリックします。
c.
該当する値を入力するか、更新します。フィールドの詳細については、以下の各トピックを
参照してください。
• 全般設定: ディストリビューションの詳細 (p. 81)
• オリジンの設定: オリジンの設定 (p. 69)
• キャッシュ動作の設定: キャッシュ動作の設定 (p. 73)
d.
4.
[Yes, Edit] をクリックします。
RTMP ディストリビューションの設定を編集または表示するには、以下のステップを実行しま
す。
API Version 2016-09-29
52
Amazon CloudFront 開発者ガイド
ディストリビューションを削除する
a.
[Distribution Details] ペインで、[Edit] をクリックします。
b.
該当する値を入力するか、更新します。各フィールドの詳細については、「RTMP ディスト
リビューションを作成または更新する場合に指定する値 (p. 107)」を参照してください。
[Yes, Edit] をクリックします。
c.
ディストリビューションを削除する
ディストリビューションを使用する必要がなくなった場合は、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.
2.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
CloudFront コンソールの右のペインで、削除するディストリビューションを見つけます。
3.
[State] 列の値が [Disabled] の場合は、このステップをスキップしてステップ 7 に進みます。
[State] の値が [Enabled] であり、[Status] の値が [Deployed] の場合、ステップ 4 に進んでディス
トリビューションを無効にしてから、ディストリビューションを削除します。
4.
5.
6.
7.
8.
[State] の値が [Enabled] であり、[Status] の値が [InProgress] の場合、[Status] が [Deployed] に
変わるまで待機します。次に、ステップ 4 に進んでディストリビューションを無効にしてから、
ディストリビューションを削除します。
CloudFront コンソールの右のペインで、削除するディストリビューションのチェックボックスを
オンにします。
[Disabled] をクリックしてディストリビューションを無効にして、[Yes, Disable] をクリックして
確定します。次に、[Close] をクリックします。
[State] 列の値が [Disabled] に直ちに変わります。[Status] 列の値が [Deployed] に変わるまで待機
します。
削除するディストリビューションのチェックボックスをオンにします。
[Delete] をクリックし、[Yes, Delete] をクリックして確定します。次に、[Close] をクリックしま
す。
代替ドメイン名(CNAME)を使用する
CloudFront では、CNAME とも呼ばれる代替ドメイン名を使用すると、オブジェクトへのリンク
に、CloudFront によってディストリビューションに割り当てられたドメイン名ではなく、独自のドメ
API Version 2016-09-29
53
Amazon 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
トピック
• 代替ドメイン名に * ワイルドカードを使用する (p. 54)
• 代替ドメイン名を使用する上での制限 (p. 54)
• 代替ドメイン名の追加 (p. 55)
代替ドメイン名に * ワイルドカードを使用する
代替ドメイン名を追加するとき、サブドメインを個別に指定する代わりに、ドメイン名の最初
に * ワイルドカードを使用できます。たとえば、代替ドメイン名を *.example.com にして
いる場合は、www.example.com、product-name.example.com、marketing.productname.example.com など、末尾が 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 のように、ドメイン名の真ん中のサブドメインを置き換えること
もできません。
*.example.com などのワイルドカードの代替ドメイン名には、example.com のような別の代替ドメ
イン名を、両方が同じ CloudFront ディストリビューション、または同じ AWS アカウントを使用して
作成されたディストリビューションにあるかぎり含めることができます。
代替ドメイン名を使用する上での制限
代替ドメイン名の使用には、以下の制限があることに注意してください。
代替ドメイン名の最大数
ディストリビューションに追加できる代替ドメイン名の数に関する現在の制限については、『ア
マゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してくだ
さい。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/
create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照
してください。
API Version 2016-09-29
54
Amazon CloudFront 開発者ガイド
代替ドメイン名の追加
DNS 設定を変更する権限
ディストリビューションに代替ドメイン名を追加する場合は、CloudFront ディストリビューショ
ンにドメイン名の DNS クエリをルーティングする CNAME レコードを作成する必要がありま
す。対応するドメインの DNS サービスプロバイダーのある CNAME レコードを作成する権限が
必要です。通常、これはドメインを所有していることを指しますが、ドメイン所有者向けにアプ
リケーションを開発している場合にも当てはまります。
重複する代替ドメイン名
代替ドメイン名が別の CloudFront ディストリビューションにすでに存在する場合は、AWS アカ
ウントがその他のディストリビューションを所有していても、代替ドメイン名を CloudFront ディ
ストリビューションに追加することはできません。
ただし、*.example.com のようなワイルドカードの代替ドメイン名を追加できます。これに
は、www.example.com のような非ワイルドカードの代替ドメイン名(重複している)が含まれ
ます。重複しているドメイン名は同じディストリビューション、または両方のディストリビュー
ションが同じ AWS アカウントを使用して作成されている場合は他のディストリビューションに
存在できます。
ドメインの Zone Apex の代替ドメイン名
ディストリビューションに代替ドメイン名を追加する場合、CloudFront ディストリビュー
ションにドメイン名の DNS クエリをルーティングするように、DNS 設定で CNAME レ
コードを作成する必要があります。ただし、DNS プロトコルでは、zone apex とも呼ばれ
る、DNS 名前空間の最上位ノードに対して CNAME レコードを作成することができませ
ん。たとえば、example.com という DNS 名を登録した場合、Zone Apex は example.com
になります。example.com に対して CNAME レコードを作成することはできません
が、www.example.com や newproduct.example.com などに対しては CNAME レコードを作
成できます。
DNS サービスとして Amazon Route 53 を使用している場合、エイリアスリソースレコードセッ
トを作成できます。これは、CNAME レコードに比べて 2 つの利点があります。zone apex のド
メイン名(example.com)に対してエイリアスリソースレコードセットを作成することもできま
す。また、エイリアスリソースレコードセットを使用した場合、Amazon Route 53 クエリに対す
る料金はかかりません。
Note
IPv6 を有効にする場合、2 つのエイリアスリソースレコードセットを作成する必要が
あります。IPv6 トラフィック (A レコード) をルーティングするため、および IPv4 トラ
フィック (AAAA レコード) をルーティングするためです。詳細については、トピック
「ウェブディストリビューションを作成または更新する場合に指定する値 (p. 67)」の
「IPv6 を有効にする (p. 84)」を参照してください。
詳細については、「Amazon Route 53 開発者ガイド」の「Routing Queries to an Amazon
CloudFront Distribution」を参照してください。
代替ドメイン名と HTTPS
代替ドメイン名を含む HTTPS をビューアが使用するように構成する場合は、追加の構成が必要
です。詳細については、「代替ドメイン名と HTTPS の使用 (p. 259)」を参照してください。
代替ドメイン名の追加
以下のタスクリストでは、CloudFront コンソールを使用して代替ドメイン名をディストリビュー
ションに追加するプロセスを説明します。これにより、ディストリビューションに関連付けられた
CloudFront ドメインの代わりに、独自のドメイン名をリンクの中で使用できます。
Note
ビューアで代替ドメイン名を含む HTTPS を使用する場合は、「代替ドメイン名と HTTPS の
使用 (p. 259)」を参照してください。
API Version 2016-09-29
55
Amazon CloudFront 開発者ガイド
代替ドメイン名の追加
CloudFront API を使用したディストリビューションの更新については、「ディストリビューションの
使用 (p. 49)」を参照してください。
CloudFront コンソールを使用して代替ドメイン名を追加する
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
更新するディストリビューションの ID を選択します。
3.
[General] タブで、[Edit] を選択します。
4.
以下の値を更新します。
代替ドメイン名(CNAME)
該当する代替ドメイン名を追加します。ドメイン名をコンマで区切るか、新しい行にドメイ
ン名を 1 つずつ入力します。
SSL 証明書 (ウェブディストリビューションのみ)
ビューアがコンテンツにアクセスするのに HTTPS を使用するかどうかに応じて、該当する
オプションを選択します。
• HTTPS を使用しない – [Default CloudFront Certificate] を選択します。
• HTTPS を使用する – [Custom SSL Certificate] を選択して、リストから証明書を選択しま
す。リストには、AWS Certificate Manager (ACM) がプロビジョニングした証明書、別の
認証機関から購入して ACM にアップロードした証明書、および別の認証局から購入して
IAM 証明書ストアにアップロードした証明書が含まれます。
IAM 証明書ストアに証明書をアップロードする場合で、それがリストに表示されない場合
は、SSL/TLS 証明書をインポートする (p. 266) の手順を確認して、証明書が正しくアッ
プロードされたことを確認します。
この設定を選択した場合、オブジェクト URL でのみ代替ドメイン名を使用することをお
勧めします(https://example.com/logo.jpg)。CloudFront のディストリビューションドメ
イン名(https://d111111abcdef8.cloudfront.net/logo.jpg)を使用した場合、ビューアが SNI
をサポートしていると、CloudFront は正常に動作します。しかし、ビューアが SNI をサ
ポートしていないと、[Clients Supported] の値に応じてビューアは次のいずれかの動作を
示します。
• [All Clients]: ビューアが SNI をサポートしていない場合、CloudFront ドメイン名が SSL/
TLS 証明書のドメイン名と一致しないため、警告が表示されます。
• [Only Clients that Support Server Name Indication (SNI)]: CloudFront はオブジェクトを
返さないでビューアとの接続を中断します。
サポートされるクライアント (ウェブディストリビューションのみ)
適用可能なオプションを選択します。
• [All Clients]: CloudFront が専用の IP アドレスを使用して HTTPS コンテンツを供給
します。このオプションを選択した場合、有効になっているディストリビューション
に SSL/TLS 証明書を関連付けると、追加料金がかかります。詳細については、http://
aws.amazon.com/cloudfront/pricing を参照してください。
• [Only Clients that Support Server Name Indication (SNI)]: 古いブラウザなど SNI をサポー
トしないクライアントは、別の方法を使用してコンテンツにアクセスする必要がありま
す。
詳細については、「CloudFront で HTTPS リクエストを供給する方法の選択 (p. 260)」を参
照してください。
5.
[Yes, Edit] を選択します。
6.
ディストリビューションの [General] タブで、[Distribution Status] が [Deployed] に変わったこと
を確認します。ディストリビューションに対する更新がデプロイされる前に代替ドメインの使用
を試みた場合、以下のステップで作成するリンクは機能しません。
7.
ドメイン (example.com など) のトラフィックをルーティングするためのドメインの DNS サービ
スを、ディストリビューションの CloudFront ドメイン名 (d111111abcdef8.cloudfront.net など)
API Version 2016-09-29
56
Amazon CloudFront 開発者ガイド
代替ドメイン名の追加
に設定します。使用する方法は、ドメインの DNS サービスプロバイダーとして使用する Amazon
Route 53 によって異なります。
Amazon Route 53
エイリアスリソースレコードセットを作成します。エイリアスリソースレコードセットを使
用した場合、Amazon Route 53 クエリに対する料金はかかりません。また、ルートドメイ
ン名 (example.com) に対してエイリアスリソースレコードセットを作成することもできま
す。DNS では CNAME の使用が許可されていません。詳細については、「Amazon Route 53
開発者ガイド」の「Routing Queries to an Amazon CloudFront Distribution」を参照してくだ
さい。
別の DNS サービスプロバイダー
DNS サービスプロバイダーから提供された方法を使用して、CNAME リソースレコードセッ
トをドメインのホストゾーンに追加します。この新しい CNAME リソースレコードセットに
よって、DNS クエリがドメイン(例: www.example.com)からディストリビューションの
CloudFront ドメイン名(例: d111111abcdef8.cloudfront.net)にリダイレクトされます。詳細
については、DNS サービスプロバイダーから提供されたドキュメントを参照してください。
Important
ドメイン名用の CNAME レコードがすでに存在する場合は、そのリソースレコード
セットを更新するか、ディストリビューションの CloudFront ドメイン名を指す新し
いリソースレコードセットで置き換えます。
また、CNAME リソースレコードセットがディストリビューションのドメイン名を指
しており、どのオリジンサーバーも指していないことを確認します。
8.
dig などのツールを使用して、ステップ 7 で作成したリソースレコードセットがディストリ
ビューションのドメイン名を指していることを確認します。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 レコードを修正します。
9.
いくつかのテストリンクを作成し、その URL の中でディストリビューションの CloudFront ドメ
イン名ではなく独自のドメイン名を使用することで、代替ドメイン名をテストします。
API Version 2016-09-29
57
Amazon CloudFront 開発者ガイド
CloudFront ディストリビュー
ションの価格クラスを選択する
10. アプリケーションで CloudFront ディストリビューションのドメイン名ではなく代替ドメイン名を
使用するように、オブジェクトへのリンクを変更します。
CloudFront ディストリビューションの価格クラス
を選択する
CloudFront では、世界中にエッジロケーションがあります。各エッジロケーションのコストは異なる
ため、請求する料金は、CloudFront がどのエッジロケーションからリクエストを処理するかに応じて
異なります。
CloudFront エッジロケーションは地理的リージョンに分類され、リージョンは価格クラスに分類され
ます。デフォルトの価格クラスにはすべてのリージョンが含まれます。また、ほとんどのリージョン
(米国リージョン、ヨーロッパリージョン、香港リージョン、韓国リージョン、およびシンガポール
リージョン、日本リージョン、およびインドリージョン)が含まれ、最もコストのかかるリージョン
が除外されている別の価格クラスがあります。さらに、最もコストの低いリージョン(米国リージョ
ンおよびヨーロッパリージョン)のみが含まれる価格クラスもあります。
デフォルトでは、CloudFront はパフォーマンスのみに基づいてオブジェクトのリクエストに応答し
ます。つまり、オブジェクトは、ビューアにとってレイテンシーが最も低いエッジロケーションから
供給されます。コスト削減を優先し、一部の地理的リージョンにおけるレイテンシーの延長を容認で
きるのであれば、使用する CloudFront リージョンが限定された価格クラスを選択することもできま
す。CloudFront はこの価格クラス内のエッジロケーションからのみオブジェクトを供給しますが、
さらに、選択された価格クラス内のエッジロケーションのうちレイテンシーが最も短いエッジロケー
ションからコンテンツが供給されます。ただし、一部のユーザー、特に、価格クラスに含まれない地
理的リージョンのユーザーについては、コンテンツが供給されるどの CloudFront エッジロケーション
よりもレイテンシーが長くなる場合があります。たとえば、米国とヨーロッパのみを含む価格クラス
を選択した場合、オーストラリアとアジアのビューアのレイテンシーは、オーストラリアとアジアを
含む価格クラスを選択した場合よりも長くなります。
一部のエッジロケーションを含まない価格クラスを選択した場合も、CloudFront は価格クラスに含
まれていないリージョンのエッジロケーションからコンテンツのリクエストを処理することがありま
す。この場合、オブジェクトの供給元である、コストの高いリージョンの料金は請求されません。代
わりに、選択された価格クラスのリージョンの中で最もコストの低いリージョンの料金が請求されま
す。
CloudFront ウェブディストリビューションや RTMP ディストリビューションを作成または更新する
とき、価格クラスを選択できます。CloudFront コンソールまたは API を使用して、ウェブディストリ
ビューションまたは RTMP ディストリビューションを作成または更新する方法に関する各トピックに
ついては、「ディストリビューションの使用 (p. 49)」を参照してください。
CloudFront API(AWS SDK の 1 つ)または AWS CloudFormation を使用してディストリビューショ
ンを作成または更新する場合、有効な値のリストについては、該当するトピックを参照してください
(PriceClass で検索)。
• ウェブディストリビューション – DistributionConfig 複合型
• RTMP ディストリビューション – StreamingDistributionConfig 複合型
CloudFront 料金および価格クラスの詳細については、「Amazon CloudFront 料金表」を参照してくだ
さい。
API Version 2016-09-29
58
Amazon CloudFront 開発者ガイド
Amazon S3 での CloudFront の使用
Amazon S3 での CloudFront の使用
コンテンツは Amazon S3 バケットに保存し、CloudFront を使用して配信できます。このトピックで
は、S3 バケットで CloudFront を使用する方法と、S3 バケットを別のリージョンに移動した場合に
CloudFront ディストリビューションを更新する方法について説明します。
トピック
• CloudFront を追加して Amazon S3 からコンテンツを配信する (p. 59)
• Amazon S3 バケットを別のリージョンに移動する (p. 60)
CloudFront を追加して Amazon S3 からコンテンツ
を配信する
オブジェクトを Amazon S3 バケットに保存すると、ユーザーが S3 からオブジェクトを直接取得でき
るようにするか、CloudFront が S3 からオブジェクトを取得してユーザーに配信するように設定でき
ます。
使用量が多ければ、Amazon S3 データ転送よりも CloudFront データ転送のほうが料金が安いので、
ユーザーがオブジェクトに頻繁にアクセスする場合は、CloudFront を使用するほうがコストパフォー
マンスが向上します。また、Amazon S3 だけからダウンロードするよりも、CloudFront を使用した
ほうが、ユーザーにより近い場所にオブジェクトが保存されているので、より速くダウンロードでき
ます。
Note
CloudFront で Amazon S3 の Cross-Origin Resource Sharing 設定を尊重する場合は、Origin
ヘッダーを Amazon S3 に転送するように CloudFront を設定します。詳細については、「リ
クエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 128)」を参照してください。
現在、Amazon S3 バケットのドメイン名 (MyAWSBucket.s3.amazonaws.com など) を使わずに、お
客様自身のドメイン名 (example.com など) を使って Amazon S3 バケットから直接コンテンツを配信
している場合は、以下の手順を行うことにより、支障なく CloudFront を追加できます。
Amazon S3 からコンテンツをすでに配信している場合に CloudFront を追加するには
1.
該当するトピックで説明されている手順を使用して、CloudFront ディストリビューションを作成
します。
• ウェブディストリビューションを作成するためのタスクリスト (p. 62)
• RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 105)
ディストリビューションを作成するときに、オリジンサーバーとして Amazon S3 バケットの名
前を指定します。
Important
バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったも
のでなければなりません。詳細は、Amazon Simple Storage Service 開発者ガイドの
「Bucket Restrictions and Limitations」を参照してください。
Amazon S3 で CNAME を使用している場合、ディストリビューションにもその CNAME を指定
します。
API Version 2016-09-29
59
Amazon CloudFront 開発者ガイド
Amazon S3 バケットを別のリージョンに移動する
2.
3.
Amazon S3 バケット内にあるパブリックに読み出し可能なオブジェクトへのリンクを含
むテストウェブページを作成して、リンクをテストします。この初期テストでは、オブ
ジェクト URL にお客様のディストリビューションの CloudFront ドメイン名(例: http://
d111111abcdef8.cloudfront.net/images/image.jpg)を使用します。
CloudFront URL の形式の詳細については、「CloudFront オブジェクトの URL の形
式 (p. 117)」を参照してください。
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
Amazon Route 53 を DNS サービスとして使用している場合は、CNAME リソースレ
コードセットまたはエイリアスリソースレコードセットを使用できます。リソースレ
コードセットの編集については、「リソースレコードセットの編集」を参照してくださ
い。エイリアスリソースレコードセットについては、「エイリアスおよび非エイリアス
リソースレコードセットの選択」を参照してください。どちらのトピックも『Amazon
Route 53 開発者ガイド』にあります。
CloudFront での CNAME の使用の詳細については、「代替ドメイン名(CNAME)を使用す
る (p. 53)」を参照してください。
CNAME リソースレコードセットを更新してから変更が DNS システム全体に伝達されるまで最大
で 72 時間かかりますが、通常は、それよりも早く終了します。この間、コンテンツに対する一
部の要求は引き続き Amazon S3 バケットにルーティングされ、それ以外の要求は CloudFront に
ルーティングされます。
Amazon S3 バケットを別のリージョンに移動する
CloudFront ディストリビューションのオリジンとして Amazon S3 を使用していて、バケットを別の
リージョンに移動する場合、以下の両方に該当するときは、CloudFront でレコードを更新してリー
ジョンの変更を反映するまでに最大 1 時間かかることがあります。
• CloudFront オリジンアクセスアイデンティティ (OAI) を使用してバケットへのアクセスを制限して
いる
• バケットの移動先の Amazon S3 リージョンで認証に署名バージョン 4 が要求される
API Version 2016-09-29
60
Amazon CloudFront 開発者ガイド
CloudFront API の変更点
OAI を使用している場合、CloudFront はリージョン (数ある値の中で) を使用して、バケットのオブ
ジェクトをリクエストするために使用する署名を計算します。OAI の詳細については、「オリジン
アクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 190)」
を参照してください。Amazon S3 リージョンと各リージョンでサポートする署名バージョンのリス
トについてはアマゾン ウェブ サービス全般のリファレンスの「リージョンとエンドポイント」章で
「Amazon Simple Storage Service (Amazon S3)」を参照してください。
CloudFront レコードの更新を高速化させるには、CloudFront コンソールの [General] タブの
[Comment] フィールドを更新するなどして、CloudFront ディストリビューションを更新できます。
ディストリビューションを更新すると、CloudFront はバケットがあるリージョンを即座に確認しま
す。すべてのエッジロケーションに変更が反映されるまでに 15 分近くかかる場合があります。
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 バージョンを使用して、ディストリビューションのリストや、ディストリビューション
に関する情報、ディストリビューション構成を取得できます。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 2016-09-29
61
Amazon CloudFront 開発者ガイド
ウェブディストリビューション
を作成するためのタスクリスト
ウェブディストリビューションの使
用
このセクションでは、CloudFront ウェブディストリビューションを構成して管理する方法について
説明します。ディストリビューションの基本的な説明については、「ディストリビューションの使
用 (p. 49)」を参照してください。CloudFront RTMP ディストリビューションの詳細については、
「RTMP ディストリビューションの使用 (p. 103)」を参照してください。
トピック
• ウェブディストリビューションを作成するためのタスクリスト (p. 62)
• CloudFront コンソールを使用したウェブディストリビューションの作成または更新 (p. 64)
• ウェブディストリビューションのテスト (p. 65)
• Amazon S3 オリジンおよびカスタムオリジンを使用したウェブディストリビューショ
ン (p. 65)
• ウェブディストリビューションを作成または更新する場合に指定する値 (p. 67)
• ウェブディストリビューションを作成または更新する場合に CloudFront がコンソールに表示する
値 (p. 87)
• Amazon EC2 と他のカスタムオリジンの使用に関する要件および推奨事項 (p. 89)
• AWS WAF を使用してコンテンツへのアクセスを管理する (p. 89)
• コンテンツの地理的ディストリビューションの制限 (p. 90)
• オンデマンドスムーズストリーミングの構成 (p. 93)
• オンデマンドプログレッシブダウンロードの構成 (p. 94)
• オンデマンド Apple HTTP Live Streaming(HLS)の構成 (p. 94)
ウェブディストリビューションを作成するための
タスクリスト
以下のタスクリストでは、ウェブディストリビューションの作成処理の概要について説明します。
ウェブディストリビューションを作成するには
1.
1 つ以上の Amazon S3 バケットを作成するか、HTTP サーバーをオリジンサーバーとして
構成します。オリジンとは、ウェブコンテンツのオリジナルバージョンを保存する場所で
API Version 2016-09-29
62
Amazon CloudFront 開発者ガイド
ウェブディストリビューション
を作成するためのタスクリスト
す。CloudFront は、ファイルに対するリクエストを受け取ると、オリジンにアクセスし、エッジ
ロケーションに配信するファイルを取得します。オリジンサーバーとして、10 個の Amazon S3
バケットと HTTP サーバーの任意の組み合わせを使用できます。
Amazon S3 を使用する場合は、バケット名をすべて小文字にする必要があります。また、バケッ
ト名にスペースを含めることはできません。
Amazon EC2 サーバーまたは別のカスタムオリジンを使用する場合は、「Amazon EC2 と他のカ
スタムオリジンの使用に関する要件および推奨事項 (p. 89)」を確認してください。
ディストリビューションに作成できるオリジンの数に関する現在の制限については、『アマゾン
ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してください。
制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/create?
issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照してく
ださい。
2.
コンテンツをオリジンサーバーにアップロードします。CloudFront の署名付き URL を使用し
て、コンテンツへのアクセスを制限しない場合は、オブジェクトをパブリックに読み出し可能に
します。
Caution
オリジンサーバーのセキュリティを確保する責任はお客様にあります。サーバーへのア
クセス権限を CloudFront に持たせる必要があります。また、コンテンツを保護するため
のセキュリティ設定を適切に行う必要があります。
3.
CloudFront ウェブディストリビューションを作成します。
• CloudFront コンソールを使用してウェブディストリビューションを作成する方法につい
ては、「CloudFront コンソールを使用したウェブディストリビューションの作成または更
新 (p. 64)」を参照してください。
• CloudFront API を使用してウェブディストリビューションを作成する方法については、
「Amazon CloudFront API リファレンス」の「POST Distribution」を参照してください。
4.
オプション: CloudFront コンソールを使用してディストリビューションを作成している場合は、
ディストリビューションのキャッシュ動作またはオリジンをさらに作成します。詳細について
は、「CloudFront コンソールを使用して、CloudFront ディストリビューションの一覧表示、詳細
表示、および更新を行うには (p. 52)」を参照してください。
5.
ウェブディストリビューションをテストします。詳細については、「ウェブディストリビュー
ションのテスト (p. 65)」を参照してください。
6.
ステップ 3 でディストリビューションを作成した後に CloudFront から返されたドメイ
ン名を使用して、お客様のコンテンツにアクセスするためのウェブサイトまたはアプリ
ケーションを開発します。たとえば、CloudFront がディストリビューションのドメイ
ン名として d111111abcdef8.cloudfront.net を返した場合、Amazon S3 バケット内また
は HTTP サーバーのルートディレクトリ内のファイル image.jpg の URL は http://
d111111abcdef8.cloudfront.net/image.jpg になります。
ディストリビューションの作成時に 1 つ以上の代替ドメイン名(CNAME)を指定した
場合、独自のドメイン名を使用できます。この場合、image.jpg の URL を http://
www.example.com/image.jpg にすることができます。
次の点に注意してください。
• 署名付き URL を使用してコンテンツへのアクセスを制限する場合は、「CloudFront を使用し
てプライベートコンテンツを供給する (p. 186)」を参照してください。
• 圧縮されたコンテンツを供給する場合は、「圧縮ファイルの供給 (p. 157)」を参照してくださ
い。
• Amazon S3 オリジンおよびカスタムオリジンに対する CloudFront のリクエスト動作およびレ
スポンス動作については、「リクエストとレスポンスの動作 (p. 162)」を参照してください。
API Version 2016-09-29
63
Amazon CloudFront 開発者ガイド
CloudFront コンソールを使用したウェブ
ディストリビューションの作成または更新
CloudFront コンソールを使用したウェブディスト
リビューションの作成または更新
このトピックの手順で、CloudFront コンソールを使用してウェブディストリビューションの作成ま
たは更新する方法について説明します。CloudFront API を使用してウェブディストリビューション
を作成する場合は、「Amazon CloudFront API リファレンス」の「POST Distribution」を参照して
ください。CloudFront API を使用してウェブディストリビューションを更新する場合は、「Amazon
CloudFront API リファレンス」の「PUT DistributionConfig」を参照してください。
AWS アカウントごとに作成できるウェブディストリビューションの数に関する現在の制限について
は、アマゾン ウェブ サービス全般のリファレンスの「Amazon CloudFront の上限」を参照してく
ださい。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/
create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照して
ください。
• CloudFront コンソールを使用して CloudFront ウェブディストリビューションを作成するに
は (p. 64)
• CloudFront コンソールを使用して CloudFront ウェブディストリビューションを更新するに
は (p. 64)
CloudFront コンソールを使用して CloudFront ウェブディストリビューションを作成するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
[Create Distribution] を選択します。
3.
[Create Distribution Wizard] の最初のページで、[Web] セクションの [Get Started] を選択します。
4.
ディストリビューションの設定項目を指定します。詳細については、「ウェブディストリビュー
ションを作成または更新する場合に指定する値 (p. 67)」を参照してください。
5.
変更の保存.
6.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。配信を有効にするよう選択すると、リクエスト
の処理を行えるようになります。
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。(ドメイン名は、選択されたディストリビューションの [General]
タブにも表示されます)。
7.
ディストリビューションをデプロイする場合は、新しい CloudFront URL または CNAME を使
用してコンテンツにアクセスできることを確認します。詳細については、「ウェブディストリ
ビューションのテスト (p. 65)」を参照してください。
CloudFront コンソールを使用して CloudFront ウェブディストリビューションを更新するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
更新するディストリビューションの ID を選択します。
3.
目的の値を更新します。詳細については、「ウェブディストリビューションを作成または更新す
る場合に指定する値 (p. 67)」を参照してください。
4.
[Create Distribution] を選択します。
5.
設定を変更した後で、ディストリビューションの [Status] 列の値が [InProgress] に変わ
り、CloudFront が変更をエッジロケーションに伝播します。[Status] が [Deployed] に変わった
ら、ディストリビューションでリクエストを処理する準備が整います。(ディストリビューショ
ンの [State] 列の値も、[Enabled] になっている必要があります。)
API Version 2016-09-29
64
Amazon 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.
HTML コードを、html ファイル名拡張子の付いたファイルに保存します。
3.
ブラウザでウェブページを開いて、オブジェクトが見られるかどうかを確認します。
ブラウザに、イメージファイルが埋め込まれたページが表示されます。これは CloudFront がオブジェ
クトを供給するのに適切と判断したエッジロケーションから供給されたものです。
Amazon S3 オリジンおよびカスタムオリジンを
使用したウェブディストリビューション
ウェブディストリビューションを作成する場合、エッジロケーションに配信するファイルに対する
リクエストを CloudFront がどの場所に送信するかを指定します。CloudFront は、オリジンとして
Amazon S3 バケットおよび HTTP サーバー(ウェブサーバーなど)を使用することをサポートしま
す。
API Version 2016-09-29
65
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. 16)」を参照してく
ださい。
Important
バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったものでな
ければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」の
「バケットの制約と制限」を参照してください。
CloudFront がオブジェクトを取得する Amazon S3 バケットを指定するとき、バケット名を指定する
方法は、バケットをウェブサイトエンドポイントとして構成しているかどうかによって変わります。
バケットはウェブサイトエンドポイントとして構成されていない
一般に、次の形式を使用します。
bucket-name.s3.amazonaws.com
バケットが米国スタンダードリージョンにあり、Amazon S3 がバージニア北部の施設にリクエス
トをルーティングするように設定する場合は、次の形式を使用します。
bucket-name.s3-external-1.amazonaws.com
この形式でバケット名を指定した場合、以下の CloudFront 機能を使用することができます。
• SSL を使用して Amazon S3 バケットと通信するように CloudFront を構成します。詳細につい
ては、「CloudFront で HTTPS を使用する (p. 254)」を参照してください。
• オリジンアクセスアイデンティティを使用して、ユーザーに Amazon S3 URL ではなく
CloudFront URL を使用してコンテンツにアクセスするよう要求します。詳細については、「オ
リジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限す
る (p. 190)」を参照してください。
• POST リクエストと PUT リクエストを CloudFront に送信して、バケットのコンテンツを更新し
ます。詳細については、トピック「CloudFront がリクエストを処理して Amazon S3 オリジン
サーバーに転送する方法 (p. 162)」の「HTTP メソッド (p. 164)」を参照してください。
バケットはウェブサイトエンドポイントとして構成されている
バケットの Amazon S3 静的ウェブサイトホスティングエンドポイントを入力します。この値
は、Amazon S3 コンソールの [Static Website Hosting] の [Properties] ページに表示されます。
この形式でバケット名を指定すると、Amazon S3 リダイレクトと Amazon S3 カスタムエラード
キュメントを使用できます。(CloudFront でもカスタムエラーページが提供されています。詳
細については、「エラーレスポンスのカスタマイズ (p. 149)」を参照してください。)Amazon
S3 の諸機能について詳しくは、「Amazon S3 ドキュメント」を参照してください。
以下の形式を使用してバケットを指定しないでください。
• Amazon S3 のパススタイル(s3.amazonaws.com/bucket-name)
• Amazon S3 の CNAME(ある場合)
API Version 2016-09-29
66
Amazon CloudFront 開発者ガイド
Amazon EC2 または他のカスタムオリジンの使用
Amazon EC2 または他のカスタムオリジンの使用
カスタムオリジンは、HTTP サーバーです(例: ウェブサーバー)。HTTP サーバーには、Amazon
EC2 インスタンス、またはプライベートで管理する HTTP サーバーを使用できます。カスタムオリ
ジンを使用する場合、サーバーの DNS 名に加えて、オリジンからオブジェクトを取得するときに
CloudFront が使用する HTTP ポート、HTTPS ポート、およびプロトコルを指定します。
カスタムオリジンを使用する場合、以下の機能を除いて、ほとんどの CloudFront 機能がサポートされ
ます。
• RTMP ディストリビューション – サポートされません。
• プライベートコンテンツ – 署名付き URL を使用してカスタムオリジンからコンテンツを配信できま
すが、CloudFront の場合、カスタムオリジンにアクセスするには、オリジンがパブリックにアクセ
ス可能な状態になっている必要があります。詳細については、「CloudFront を使用してプライベー
トコンテンツを供給する (p. 186)」を参照してください。
カスタムオリジンを使用する場合の要件および推奨事項については、「Amazon EC2 と他のカスタム
オリジンの使用に関する要件および推奨事項 (p. 89)」を参照してください。
ウェブディストリビューションを作成または更新
する場合に指定する値
新しいウェブディストリビューションの作成や、既存のディストリビューションの更新を行う場合、
以下の値を指定します。CloudFront コンソールを使用したウェブディストリビューションの作成また
は更新について詳しくは、該当するトピックを参照してください。
• ウェブディストリビューションの使用 (p. 62)
• CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 52)
配信形式 (p. 69)
オリジンの設定 (p. 69)
• オリジンドメイン名 (p. 69)
• オリジンのパス (p. 70)
• オリジン ID (p. 71)
• バケットアクセスの制限(Amazon S3 のみ) (p. 71)
• オリジンアクセスアイデンティティ(Amazon S3 のみ) (p. 71)
• 新しいアイデンティティに関するコメント(Amazon S3 のみ) (p. 71)
• アイデンティティ(Amazon S3 のみ) (p. 71)
• バケットに読み取り許可を付与する(Amazon S3 のみ) (p. 71)
• オリジン SSL プロトコル (Amazon EC2 および他のカスタムオリジンのみ) (p. 72)
• オリジンプロトコルポリシー(Amazon EC2 および他のカスタムオリジンのみ) (p. 72)
• HTTP ポート(Amazon EC2 および他のカスタムオリジンのみ) (p. 72)
• HTTPS ポート(Amazon EC2 および他のカスタムオリジンのみ) (p. 73)
• オリジンのカスタムヘッダー (p. 73)
キャッシュ動作の設定 (p. 73)
API Version 2016-09-29
67
Amazon CloudFront 開発者ガイド
ウェブディストリビューションを作
成または更新する場合に指定する値
• パスパターン (p. 74)
• オリジン(既存のディストリビューションのみ) (p. 75)
• ビューアプロトコルポリシー (p. 75)
• 許可される HTTP メソッド (p. 76)
• キャッシュされる HTTP メソッド (p. 76)
• Forward Headers (p. 77)
• Whitelist Headers (p. 77)
• オブジェクトキャッシュ (p. 77)
• 最小 TTL (p. 77)
• デフォルト TTL (p. 78)
• 最大 TTL (p. 78)
• Cookie の転送(Amazon EC2 および他のカスタムオリジンのみ) (p. 78)
• ホワイトリスト Cookie(Amazon EC2 および他のカスタムオリジンのみ) (p. 79)
• クエリ文字列の転送とキャッシュ (p. 79)
• クエリ文字列のホワイトリスト (p. 79)
• スムーズストリーミング (p. 80)
• ビューアのアクセス制限(署名付き URL の使用) (p. 80)
• 信頼された署名者 (p. 80)
• AWS アカウント番号 (p. 80)
• オブジェクトを自動的に圧縮する (p. 81)
ディストリビューションの詳細 (p. 81)
• 価格クラス (p. 81)
• AWS WAF ウェブ ACL (p. 81)
• 代替ドメイン名(CNAME) (p. 81)
• SSL 証明書 (p. 82)
• Clients Supported(サポートされるクライアント) (p. 82)
• SSL プロトコルの最低バージョン (p. 83)
• サポートされる HTTP バージョン (p. 83)
• デフォルトのルートオブジェクト (p. 83)
• ログ記録 (p. 83)
• ログ用のバケット (p. 84)
• ログのプレフィックス (p. 84)
• Cookie のログ作成 (p. 84)
• IPv6 を有効にする (p. 84)
• コメント (p. 85)
• ディストリビューションの状態 (p. 85)
Custom Error Pages(カスタムエラーページ)と Error Caching(エラーキャッシュ) (p. 86)
• エラーコード (p. 86)
• Response Page Path(レスポンスページのパス) (p. 86)
• Response Code(応答コード) (p. 86)
• Error Caching Minimum TTL(エラーキャッシュ最小 TTL) (p. 86)
制限 (p. 86)
API Version 2016-09-29
68
Amazon CloudFront 開発者ガイド
配信形式
• Enable Geo Restriction(地域制限の有効化) (p. 87)
• Restriction Type(制限タイプ) (p. 87)
• Countries(国) (p. 87)
配信形式
ディストリビューションを作成する場合、配信方法を指定します。ウェブディストリビューションの
場合、この値は常に [Web] です。既存のディストリビューションの配信方法を変更することはできま
せん。
オリジンの設定
ディストリビューションを作成または更新する場合、1 つ以上の場所に関する情報を指定します。こ
れは、オリジンと呼ばれるものであり、ウェブコンテンツのオリジナルバージョンを保存する場所で
す。CloudFront はオリジンからウェブコンテンツを取得し、世界中のエッジサーバーネットワーク経
由でビューアにウェブコンテンツを供給します。各オリジンは、Amazon S3 バケットまたは HTTP
サーバー(ウェブサーバーなど)です。
ディストリビューションに作成できるオリジンの数に関する現在の制限については、『アマゾン
ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してください。
制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/create?
issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照してくださ
い。
オリジンを削除する場合は、まず、そのオリジンに関連付けられたキャッシュ動作を編集または削除
する必要があります。
Caution
オリジンを削除する場合は、そのオリジンによって以前供給されていたファイルが別のオリ
ジンで利用可能であり、現在、そのファイルへのリクエストがキャッシュ動作によって新し
いオリジンにルーティングされていることを確認します。
ディストリビューションを作成または更新する場合、オリジンごとに以下の値を指定します。
オリジンドメイン名
CloudFront がこのオリジンのオブジェクトの取得先としている Amazon S3 バケットまたは HTTP
サーバーの DNS ドメイン名。以下に例を示します。
• Amazon S3 バケット – myawsbucket.s3.amazonaws.com
• Amazon EC2 インスタンス – ec2-203-0-113-25.compute-1.amazonaws.com
• Elastic Load Balancingロードバランサー – my-load-balancer-1234567890.uswest-2.elb.amazonaws.com
オリジンが HTTP サーバーである場合は、リソースのドメイン名を入力します。ファイルはパブリッ
クに読み取り可能である必要があります。
オリジンが CloudFront コンソールの Amazon S3 バケットである場合は、[Origin Domain Name]
フィールドを選択して、現在の AWS アカウントに関連付けられた Amazon S3 バケットの一覧を表示
します。次の点に注意してください。
• バケットがウェブサイトとして構成されている場合は、バケットの Amazon S3 静的ウェブサイト
ホスティングエンドポイントを入力します。[Origin Domain Name] フィールドの一覧からバケット
名を選択しないでください。静的ウェブサイトホスティングエンドポイントは、Amazon S3 コン
ソールの [Static Website Hosting] の [Properties] ページに表示されます。
API Version 2016-09-29
69
Amazon CloudFront 開発者ガイド
オリジンの設定
• バケットに Amazon S3 Transfer Acceleration を設定した場合、[Origin Domain Name] に s3accelerate エンドポイントを指定しないでください。
• 使用しているバケットが別の AWS アカウントのものであり、そのバケットがウェブサイトとして
構成されていない場合は、次の形式で名前を入力します。
bucket-name.s3.amazonaws.com
バケットが米国スタンダードリージョンにあり、Amazon S3 がバージニア北部の施設にリクエスト
をルーティングするように設定する場合は、次の形式を使用します。
bucket-name.s3-external-1.amazonaws.com
バケットが 欧州 (フランクフルト) リージョンにある場合は、次の形式を使用することもできます。
bucket-name.s3.eu-central-1.amazonaws.com
• CloudFront のオリジンアクセスアイデンティティを使用して Amazon S3 内のコンテンツを保護
しない限り、ファイルをパブリックに読み出し可能とする必要があります。詳細については、
「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限す
る (p. 190)」を参照してください。
Important
オリジンが Amazon S3 バケットの場合、バケット名は DNS 命名要件に準拠する必要があり
ます。詳細については、「Amazon Simple Storage Service 開発者ガイド」の「バケットの制
約と制限」を参照してください。
オリジンの [Origin Domain Name] の値を変更すると、CloudFront は CloudFront エッジロケーション
に対する変更の複製を直ちに開始します。CloudFront は、該当のエッジロケーションでディストリ
ビューション構成が更新されるまで、リクエストを以前の HTTP サーバーまたは Amazon S3 バケッ
トに引き続き転送します。該当のエッジロケーションでディストリビューション構成が更新される
と、CloudFront は新しい HTTP サーバーまたは Amazon S3 バケットへのリクエストの転送を直ちに
開始します。
オリジンを変更しても、CloudFront が、新しいオリジンからのオブジェクトでエッジキャッシュを
再生成する必要はありません。アプリケーション内でビューアのリクエストが変更されていない限
り、各オブジェクトの TTL の有効期限が切れるか、要求頻度の低いオブジェクトが削除されるま
で、CloudFront は、引き続き、エッジキャッシュにすでに保持されているオブジェクトを供給しま
す。
オリジンのパス
CloudFront で Amazon S3 バケットまたはカスタムオリジンのディレクトリにコンテンツがリクエ
ストされるようにするには、/ から開始してディレクトリパスを入力します。このディレクトリパ
スが CloudFront によって [Origin Domain Name] の値に追加されます(例: cf-origin.example.com/
production/images)。パスの末尾には / を追加しないでください。
たとえば、特定のディストリビューションに対して次の値を指定したとします。
• [Origin Domain Name] – myawsbucket という名前の Amazon S3 バケット
• [Origin Path] – /production
• [Alternate Domain Names (CNAMEs)] – example.com
この場合、ユーザーがブラウザに「example.com/index.html」と入力すると、CloudFront は
myawsbucket/production/index.html に対するリクエストを Amazon S3 に送信します。
ユーザーがブラウザに「example.com/acme/index.html」と入力すると、CloudFront は myawsbucket/
production/acme/index.html に対するリクエストを Amazon S3 に送信します。
API Version 2016-09-29
70
Amazon CloudFront 開発者ガイド
オリジンの設定
オリジン ID
このディストリビューション内でこのオリジンを他のオリジンから一意に区別する文字列。デフォル
トのキャッシュ動作に加えてキャッシュ動作を作成する場合、ここで指定したオリジン ID を使用し
て、そのキャッシュ動作のパスパターンにリクエストが一致した場合に CloudFront がリクエストを
ルーティングするオリジンを識別します。詳細については、「キャッシュ動作の設定 (p. 73)」を参
照してください。
バケットアクセスの制限(Amazon S3 のみ)
Amazon S3 URL ではなく CloudFront URL のみを使用して Amazon S3 バケット内のオブジェクトに
アクセスするようエンドユーザーに要求する場合は、[Yes] を選択します。次に、適用可能な値を指定
します。
エンドユーザーが CloudFront URL または Amazon S3 URL を使用してオブジェクトにアクセスでき
るようにするには、[No] を選択します。
詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアク
セスを制限する (p. 190)」を参照してください。
URL のみ使用してカスタムオリジン内のオブジェクトにアクセスするよう要求する方法の詳細につい
ては、「CloudFrontカスタムヘッダーを使用してカスタムオリジンのコンテンツへのアクセスを制限
する (p. 134)」を参照してください。
オリジンアクセスアイデンティティ(Amazon S3 のみ)
[Restrict Bucket Access] で [Yes] を選択した場合、新しいオリジンアクセスアイデンティティを作
成するか、AWS アカウントに関連付けられた既存のオリジンアクセスアイデンティティを使用す
るかを選択します。オリジンアクセスアイデンティティがすでにある場合は、それを再利用し、メ
ンテナンスを簡素化することをお勧めします。オリジンアクセスアイデンティティの詳細について
は、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限す
る (p. 190)」を参照してください。
新しいアイデンティティに関するコメント(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
API Version 2016-09-29
71
Amazon CloudFront 開発者ガイド
オリジンの設定
を使用してバケット内のオブジェクトにアクセスするための許可を持っているユーザー
は、CloudFront がバケットポリシーを更新した後もその許可を依然として持っています。既
存のバケットポリシー、およびバケット内のオブジェクトに対する既存の許可を表示または
変更するには、Amazon S3 から提供される方法を使用します。詳細については、「オリジン
アクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り許可を付与す
る (p. 193)」を参照してください。
許可を手動で更新する場合、たとえば、バケットの許可を更新する代わりにオブジェクトに対する
ACL を更新する場合は、[No, I will Update Permissions] を選択します。
オリジン SSL プロトコル (Amazon EC2 および他のカスタム
オリジンのみ)
オリジンで HTTPS 接続を確立するときに CloudFront が使用できる SSL プロトコルを選択しま
す。SSLv3 プロトコルの安全性が低いため、オリジンが TLSv1 以降をサポートしていない場合にの
み SSLv3 を選択することをお勧めします。
オリジンが Amazon S3 バケットの CloudFront である場合は、TLSv1.2 を必ず使用します。
オリジンプロトコルポリシー(Amazon EC2 および他のカス
タムオリジンのみ)
CloudFront がオリジンサーバーからオブジェクトをフェッチするときに使用するプロトコルポリ
シー。
Important
Amazon S3 バケットをウェブサイトエンドポイントとして構成している場合、[HTTP Only]
を指定する必要があります。Amazon S3 はこの構成では HTTPS 接続をサポートしていませ
ん。
適用可能な値を選択します。
• [HTTP Only]: CloudFront は HTTP のみを使用してオリジンにアクセスします。
• [HTTPS Only:]: CloudFront は HTTPS のみを使用してオリジンにアクセスします。
• [Match Viewer]: CloudFront は、ビューアのリクエストのプロトコルに応じて HTTP または HTTPS
を使用し、オリジンと通信します。ビューアが HTTP と HTTPS の両方のプロトコルを使用してリ
クエストを行った場合も、CloudFront がオブジェクトをキャッシュするのは 1 回だけです。
Important
CloudFront がこのオリジンに転送する HTTPS ビューアリクエストの場合、オリジンサー
バーの SSL 証明書のドメイン名のうち 1 つは、[Origin Domain Name] で指定したドメイン
名に一致する必要があります。それ以外の場合、CloudFront は、ビューアリクエストに対
して、リクエストされたオブジェクトではなく、HTTP ステータスコード 502(不正なゲー
トウェイ)を返します。詳細については、「CloudFront で SSL/TLS の証明書を使用するた
めの要件 (p. 261)」を参照してください。
HTTP ポート(Amazon EC2 および他のカスタムオリジンの
み)
オプション。カスタムオリジンがリッスンしている HTTP ポート。有効な値には、ポート 80、443、
および 1024 ~ 65535 が含まれます。デフォルト値はポート 80 です。
API Version 2016-09-29
72
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
HTTPS ポート(Amazon EC2 および他のカスタムオリジンの
み)
オプション。カスタムオリジンがリッスンしている HTTPS ポート。有効な値には、ポート
80、443、および 1024 ~ 65535 が含まれます。デフォルト値はポート 443 です。
オリジンのカスタムヘッダー
リクエストをオリジンに転送するときに CloudFront が常にカスタムヘッダーを含めるようにする場合
は、次の値を指定します。
ヘッダー名
CloudFront がオリジンに転送するヘッダーの名前。
値
[Custom Header] フィールドで指定したヘッダーの値。
詳細については、「カスタムヘッダーをオリジン(ウェブディストリビューションのみ)へ転送す
る (p. 132)」を参照してください。
現在のように、オリジンに転送できるカスタムヘッダーの最大数、カスタムヘッダー名と値の最大
長、およびすべてのヘッダー名と値の全長に対する現在の制限については、「制限 (p. 391)」を参照
してください。
キャッシュ動作の設定
キャッシュ動作を使用すると、ウェブサイトにあるファイルの特定の URL パスパターンに応じてさま
ざまな CloudFront 機能を構成できます。たとえば、CloudFront のオリジンサーバーとして使用して
いるウェブサーバーの images ディレクトリ内にあるすべての .jpg ファイルに 1 つのキャッシュ動
作を適用することができます。キャッシュ動作ごとに構成可能な機能として以下が含まれます。
• パスパターン。
• CloudFront ディストリビューションに対して複数のオリジンを構成した場合、CloudFront でリクエ
ストをどのオリジンに転送するか。
• クエリ文字列をオリジンに転送するかどうか。
• 指定したファイルへのアクセスに署名付き URL を必要とするかどうか。
• これらのファイルへのアクセスに HTTPS を使用するようユーザーに要求するかどうか。
• オリジンがファイルに追加する Cache-Control ヘッダーの値に関係なく、これらのファイルを
CloudFront キャッシュに保持する最小時間。
新しいディストリビューションを作成する場合、デフォルトのキャッシュ動作の設定を指定します。
デフォルトのキャッシュ動作では、ディストリビューションの作成時に指定されたオリジンにすべて
のリクエストが自動的に転送されます。ディストリビューションを作成した後、追加のキャッシュ動
作を作成し、パスパターン(例: *.jpg)に一致するオブジェクトのリクエストを受け取ったときに
CloudFront がどのように応答するかを定義できます。追加のキャッシュ動作を定義した場合、デフォ
ルトのキャッシュ動作は常に最後に処理されます。他のキャッシュ動作は、CloudFront コンソール
に表示された順序で処理されるか、CloudFront API が使用されている場合は、ディストリビューショ
ンの DistributionConfig エレメントに示された順序で処理されます。詳細については、「パスパ
ターン (p. 74)」を参照してください。
キャッシュ動作を作成する場合、CloudFront がオブジェクトの取得先とする 1 つのオリジンを指定し
ます。結果として、CloudFront がすべてのオリジンからオブジェクトを配信する場合、少なくともオ
リジンと同じ数のキャッシュ動作(デフォルトのキャッシュ動作を含む)が必要です。たとえば、2
つのオリジンとデフォルトのキャッシュ動作のみがある場合、デフォルトのキャッシュ動作によっ
API Version 2016-09-29
73
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
て、CloudFront は 1 つのオリジンからオブジェクトを取得します。その他のオリジンは一切使用され
ません。
ディストリビューションに追加できるキャッシュ動作の数に関する現在の制限については、『アマ
ゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してください。
制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/create?
issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照してくださ
い。
パスパターン
パスパターン(例: images/*.jpg)を使用して、このキャッシュ動作をどのリクエストに割り当て
るかを指定します。CloudFront がエンドユーザーリクエストを受け取ると、要求されたパスは、ディ
ストリビューションに含まれるキャッシュ動作の順序でパスパターンと照合されます。最初の一致に
よって、そのリクエストに適用されるキャッシュ動作が決まります。たとえば、以下の 3 つのパスパ
ターンを持つ 3 つのキャッシュ動作がこの順序で設定されているとします。
• images/*.jpg
• images/*
• *.gif
Note
オプションで、/images/*.jpg などのように、パスパターンの先頭にスラッシュ (/) を含め
ることができます。CloudFront の動作は先頭のスラッシュ (/) の有無で変化しません。
ファイル images/sample.gif のリクエストは 1 番目のパスパターンを満たさないため、関連付けら
れたキャッシュ動作はこのリクエストに適用されません。ファイルは 2 番目のパスパターンを満たし
ます。リクエストは 3 番目のパスパターンにも一致しますが、2 番目のパスパターンに関連付けられ
たキャッシュ動作が適用されます。
Note
新しいディストリビューションを作成すると、デフォルトのキャッシュ動作の [Path Pattern]
の値が *(すべてのファイル)に設定され、変更することはできません。この値によっ
て、CloudFront は、オブジェクトに対するすべてのリクエストを、オリジンドメイン
名 (p. 69) フィールドに指定されたオリジンに転送します。オブジェクトのリクエストが、
他のどのキャッシュ動作のパスパターンにも一致しない場合、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 ディレクトリのファイルに割り当て
API Version 2016-09-29
74
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
る場合、images/product1 用の独立したキャッシュ動作を作成し、そのキャッシュ動作を images
ディレクトリ用のキャッシュ動作の上(前)の位置に移動します。
パスパターンには、以下のワイルドカード文字を使用できます。
• * は、0 個以上の文字に一致します。
• ? は、正確に 1 個の文字に一致します。
以下の例を使用して、ワイルドカード文字がどのように機能するかを示します。
パスパターン
パスパターンに一致するファイル
*.jpg
すべての .jpg ファイル。
images/*.jpg
images ディレクトリ内、および images ディレクトリ下のサブディレクトリ
内のすべての .jpg ファイル。
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 リクエストにリダイレクトされます。
API Version 2016-09-29
75
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
• [HTTPS Only]: ビューアは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。
詳細については、「ビューアと CloudFront との通信で HTTPS を必須にする (p. 255)」を参照して
ください。
許可される HTTP メソッド
CloudFront が処理してオリジンに転送する HTTP メソッドを指定します。
• [GET, HEAD]: CloudFront を使用して、オリジンからのオブジェクトの取得またはオブジェクト
ヘッダーの取得のみを行うことができます。
• [GET, HEAD, OPTIONS]: CloudFront を使用して、オリジンからのオブジェクトの取得、オブジェ
クトヘッダーの取得、またはオリジンサーバーがサポートするオプションのリスト取得のみを行う
ことができます。
• [GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE]: CloudFront を使用して、オブジェクトの
取得、追加、更新、削除、およびオブジェクトヘッダーの取得を行うことができます。また、ウェ
ブフォームからのデータの送信など、その他の POST 操作も実行できます。
Note
CloudFront は、GET リクエスト、HEAD リクエスト、および(オプションで)OPTIONS リ
クエストに対する応答をキャッシュします。CloudFront はその他のメソッドを使用するリ
クエストへのレスポンスをキャッシュしません。
ディストリビューションのオリジンとして Amazon S3 バケットを使用し、CloudFront オリジンアク
セスアイデンティティを使用する場合、POST リクエストは一部の Amazon S3 リージョンでサポート
されず、これらリージョンの PUT リクエストでは追加のヘッダーが必要です。詳細については、「署
名バージョン 4 のみをサポートする Amazon S3 リージョンでのオリジンアクセスアイデンティティ
の使用 (p. 195)」を参照してください。
Caution
[GET, HEAD, OPTIONS] または [GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE] を
選択した場合は、望ましくない操作がユーザーによって実行されないように、Amazon S3 バ
ケットまたはカスタムオリジンへのアクセスを制限する必要が生じることがあります。以下
の例は、アクセスを制限する方法を示しています。
• Amazon S3 をディストリビューションのオリジンとして使用している場合: Amazon S3
コンテンツへのアクセスを制限する CloudFront オリジンアクセスアイデンティティを
作成して、そのオリジンアクセスアイデンティティに適切な許可を付与します。たとえ
ば、PUT を使用したいというだけの理由で、上記のメソッドを受け入れて転送するよう
に CloudFront を構成するという場合は、Amazon S3 バケットのポリシーまたは ACL を
DELETE リクエストを適切に処理するように引き続き構成する必要があります。詳細につい
ては、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセ
スを制限する (p. 190)」を参照してください。
• カスタムオリジンを使用している場合: すべてのメソッドを処理するようにオリジンサー
バーを構成します。たとえば、POST を使用したいというだけの理由で、上記のメソッド
を受け入れて転送するように CloudFront を構成するという場合は、オリジンサーバーを
DELETE リクエストを適切に処理するように引き続き構成する必要があります。
キャッシュされる HTTP メソッド
ビューアから OPTIONS リクエストが送信されたときに、オリジンからの応答を CloudFront でキャッ
シュするかどうかを指定します。CloudFront は、GET リクエストと HEAD リクエストへの応答を常に
キャッシュします。
API Version 2016-09-29
76
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
Forward Headers
CloudFront がリクエストヘッダーをオリジンサーバーに転送し、ヘッダー値に基づいてオブジェクト
をキャッシュするかを指定します。
• [All] – CloudFront はキャッシュ動作のためにすべてのヘッダーをオリジンに転送します。
Important
すべてのヘッダーをオリジンに転送するように CloudFront を設定した場合、CloudFront
はこのキャッシュ動作に関連付けられたオブジェクトをキャッシュしません。その代わり
に、すべてのリクエストをオリジンに送信します。
• [Whitelist] – CloudFront は指定されたヘッダーのみをオリジンに転送します。Whitelist Headers を
使って、CloudFront が転送するヘッダーを選択します。
• [None (Improves Caching)] – CloudFront はデフォルトヘッダーをオリジンに転送しますが、ヘッ
ダー値に基づいてオブジェクトをキャッシュすることはしません。
オリジンとして Amazon S3 バケットを使用している場合は、Amazon S3 が 3 つのヘッダー
(Access-Control-Request-Headers、Access-Control-Request-Method、Origin)のみを
処理することに注意してください。リクエストのその他のヘッダーはすべて無視されます。
ヘッダーのオリジン転送の詳細については、「リクエストヘッダーに基づいてオブジェクトをキャッ
シュするように CloudFront を設定する (p. 128)」を参照してください。HTTP ヘッダーの一覧
と、CloudFront がデフォルトでヘッダーをオリジンに転送するかどうかの情報については、「HTTP
リクエストヘッダーと CloudFront の動作 (p. 173)」を参照してください。
Whitelist Headers
オブジェクトをキャッシュする際に CloudFront が考慮するヘッダーを指定します。使用可能なヘッ
ダーのリストからヘッダーを選択し、[Add] を選択します。カスタムヘッダーを転送するには、フィー
ルドにそのヘッダーの名前を入力して、[Add Custom] を選択します。
キャッシュ動作ごとにホワイトリストに登録できるヘッダーの数に関する現在の制限については、
『アマゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してく
ださい。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/
create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照して
ください。
オブジェクトキャッシュ
オリジンサーバーが Cache-Control ヘッダーをオブジェクトに追加して、オブジェクトを
CloudFront キャッシュに保持する期間を制御している場合、Cache-Control の値を変更しないとき
は、[Use Origin Cache Headers] を選択します。
Cache-Control ヘッダーに関係なくオブジェクトを CloudFront キャッシュに保持する最小および最
大期間を指定するには、また、オブジェクトに Cache-Control ヘッダーがないときにオブジェクト
を CloudFront キャッシュに保持するデフォルトの期間を指定するには、[Customize] を選択します。
その後、[Minimum TTL]、[Default TTL]、[Maximum TTL] の各フィールドで、該当する値を指定しま
す。
詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
最小 TTL
オブジェクトが更新されたかどうかを調べるために CloudFront がオリジンに別のリクエストを送る
までに、オブジェクトを CloudFront キャッシュに保持する最小期間(秒)を指定します。[Minimum
TTL] のデフォルト値は 0(秒)です。
API Version 2016-09-29
77
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
Important
キャッシュ動作のためにすべてのヘッダーをオリジンに転送するように CloudFront を設
定した場合、CloudFront は関連付けられたオブジェクトをキャッシュしません。その代わ
り、CloudFront はそのオブジェクトに関するすべてのリクエストをオリジンに転送します。
その設定では、[Minimum TTL] の値を 0 にする必要があります。
[Minimum TTL] の値を指定するには、[Object Caching] 設定で [Customize] オプションを選択する必要
があります。
詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
デフォルト TTL
オブジェクトが更新されたかどうかを調べるために CloudFront がオリジンに別のリクエストを
送るまでオブジェクトを CloudFront キャッシュに保持するデフォルト期間(秒)を指定します。
[Default TTL] に指定する値は、オリジンが Cache-Control max-age、Cache-Control smaxage、Expires などの HTTP ヘッダーをオブジェクトに追加しないときにのみ適用されます。詳
細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
[Default TTL] の値を指定するには、[Object Caching] 設定で [Customize] オプションを選択する必要が
あります。
[Default TTL] のデフォルト値は 86,400(秒)、つまり 1 日です。[Minimum TTL] の値を
86,400(秒)より大きい値に変更する場合は、[Default TTL] のデフォルト値を [Minimum TTL] の値に
変更します。
最大 TTL
オブジェクトが更新されたかどうかを CloudFront がオリジンに照会するまでに、オブジェクトを
CloudFront キャッシュに保持する最大期間(秒)を指定します。[Maximum TTL] に指定する値は、
オリジンが Cache-Control max-age、Cache-Control s-maxage、Expires などの HTTP ヘッ
ダーをオブジェクトに追加するときにのみ適用されます。詳細については、「CloudFront エッジ
キャッシュにオブジェクトを保持する時間の指定(有効期限切れ) (p. 136)」を参照してください。
[Maximum TTL] の値を指定するには、[Object Caching] 設定で [Customize] オプションを選択する必
要があります。
[Maximum TTL] のデフォルト値は 31,536,000(秒)、つまり 1 年です。[Minimum TTL] または
[Default TTL] の値を 31,536,000(秒)より大きい値に変更する場合は、[Maximum TTL] のデフォルト
値を [Default TTL] の値に変更します。
Cookie の転送(Amazon EC2 および他のカスタムオリジンの
み)
CloudFront からオリジンサーバーに Cookie を転送するかどうかと、転送する場合にどれを転送する
かを指定します。選択された Cookie(Cookie のホワイトリスト)のみを転送するように選択した場
合、Cookie 名を [Whitelist Cookies] フィールドに入力します。[All] を選択した場合、アプリケーショ
ンで使用されている Cookie の数に関係なく、CloudFront はすべての Cookie を転送します。
Amazon S3 は、Cookie を処理しません。オリジンに Cookie を転送するとキャッシュ可能性が低下
します。リクエストを Amazon S3 オリジンに転送するキャッシュ動作の場合、[Forward Cookies] で
[None] を選択します。
オリジンへの Cookie の転送の詳細については、「Cookie に基づいてオブジェクトをキャッシュする
ように CloudFront を設定する (p. 126)」を参照してください。
API Version 2016-09-29
78
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
ホワイトリスト Cookie(Amazon EC2 および他のカスタムオ
リジンのみ)
[Forward Cookies] リストで [Whitelist] を選択した場合は、このキャッシュ動作に応じて CloudFront
がオリジンサーバーに転送する Cookie の名前を [Whitelist Cookies] フィールドに入力します。各
Cookie 名を新しい行に入力します。
以下のワイルドカード文字を使用して Cookie 名を指定することができます。
• * は、Cookie 名に含まれる 0 個以上の文字に一致します。
• ? は、Cookie 名に含まれる 1 文字に一致します。
たとえば、オブジェクトに対するビューアリクエストに、次の名前の Cookie が含まれているとしま
す。
userid_member-number
member-number は、各ユーザーに割り当てられた一意の値です。各メンバーについて、個別バー
ジョンのオブジェクトを CloudFront でキャッシュするものとします。そのためにすべての Cookie を
オリジンに転送することもできますが、ビューアリクエストには、CloudFront でキャッシュすること
が望ましくない Cookie も含まれています。これに代わる方法として、Cookie 名として次の値を指定
することができます。その場合 CloudFront は、userid_ から始まるすべての Cookie を適切なオリジ
ンに転送します。
userid_*
キャッシュ動作ごとにホワイトリストに登録できる Cookie 名の数に関する現在の制限については、
『アマゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してく
ださい。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/
create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照して
ください。
クエリ文字列の転送とキャッシュ
CloudFront は、クエリ文字列パラメーターの値に基づいて、コンテンツのさまざまなバージョンを
キャッシュできます。適用可能なオプションを選択します。
None (Improves Caching)
オリジンがクエリ文字列パラメーターの値に関係なくオブジェクトの同じバージョンを返す場
合、このオプションを選択します。これにより、CloudFront がキャッシュからリクエストを処理
できる可能性が高くなり、パフォーマンスが向上し、オリジンの負荷が低下します。
Forward all, cache based on whitelist
オリジンサーバーが 1 つ以上のクエリ文字列パラメーターに基づいてオブジェクトの異なるバー
ジョンを返す場合、このオプションを選択します。次に、キャッシュ条件として CloudFront が使
用するパラメーターを [クエリ文字列のホワイトリスト (p. 79)] フィールドに指定します。
Forward all, cache based on all
オリジンサーバーがすべてのクエリ文字列パラメーターについてオブジェクトの異なるバージョ
ンを返す場合、このオプションを選択します。
パフォーマンスを向上する方法を含む、クエリ文字列パラメーターに基づくキャッシュについて
詳しくは、「クエリ文字列パラメーターに基づいてキャッシュするように CloudFront を設定す
る (p. 123)」を参照してください。
クエリ文字列のホワイトリスト
クエリ文字列の転送とキャッシュ (p. 79) で [Forward all, cache based on whitelist] を選択した場
合、CloudFront がキャッシュ条件として使用するクエリ文字列パラメーターを選択します。
API Version 2016-09-29
79
Amazon CloudFront 開発者ガイド
キャッシュ動作の設定
スムーズストリーミング
このキャッシュ動作に関連付けられたオリジンを使用して Microsoft スムーズストリーミング形式のメ
ディアファイルを配信する場合、[Yes] を選択します。それ以外の場合、[No] を選択します。
Note
[Yes] を指定した場合でも、コンテンツが [Path Pattern] の値と一致すれば、このキャッシュ
動作を使用してそのほかのコンテンツを配信できます。
詳細については、「オンデマンドスムーズストリーミングの構成 (p. 93)」を参照してください。
ビューアのアクセス制限(署名付き URL の使用)
このキャッシュ動作の PathPattern に一致するオブジェクトのリクエストでパブリック URL を使用
する場合、[No] を選択します。
このキャッシュ動作の PathPattern に一致するオブジェクトのリクエストで署名付き URL を使用
する場合、[Yes] を選択します。次に、署名付き URL の作成に使用する AWS アカウントを指定しま
す。このアカウントは信頼された署名者として知られています。
信頼された署名者の詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作
成が可能な AWS アカウントの指定 (p. 196)」を参照してください。
信頼された署名者
このキャッシュ動作の信頼された署名者として使用する AWS アカウントを選択します。
• Self: 信頼されたアカウントとして AWS マネジメントコンソール へのサインインに現在使用してい
るアカウントを使用します。現在、IAM ユーザーとしてサインインしている場合は、関連付けられ
た AWS アカウントを、信頼された署名者として追加します。
• Specify Accounts: 信頼された署名者のアカウント番号を [AWS Account Numbers] フィールドに入
力します。
署名付き URL を作成するには、AWS アカウント番号に少なくとも 1 つのアクティブな CloudFront
キーペアが必要です。
Caution
コンテンツの配信ですでに使用されているディストリビューションを更新する場合は、オブ
ジェクトの署名付き URL の生成を開始する準備ができたときにのみ、信頼された署名者を追
加します。信頼された署名者がディストリビューションに追加されると、ユーザーは、この
キャッシュ動作の PathPattern に一致するオブジェクトへのアクセスに、署名付き URL を
使用する必要があります。
AWS アカウント番号
現在のアカウントに加えて、または現在のアカウントの代わりに、AWS アカウントを使用して署名付
き URL を作成する場合、このフィールドの行ごとに 1 つの AWS アカウント番号を入力します。次の
点に注意してください。
• 指定するアカウントに少なくとも 1 つのアクティブな CloudFront キーペアが必要です。詳細につい
ては、「信頼された署名者の CloudFront キーペアを作成する (p. 197)」を参照してください。
• IAM ユーザーの CloudFront キーペアを作成できないため、信頼された署名者として IAM ユーザー
を使用することはできません。
API Version 2016-09-29
80
Amazon CloudFront 開発者ガイド
ディストリビューションの詳細
• アカウントの AWS アカウント番号を取得する方法については、「セキュリティ認証情報の取得方
法」(『アマゾン ウェブ サービス全般のリファレンス』)を参照してください。
• 現在のアカウントのアカウント番号を入力した場合、CloudFront は、自動的に [Self] チェックボッ
クスをオンにして、[AWS Account Numbers] リストからアカウント番号を削除します。
オブジェクトを自動的に圧縮する
ビューアのリクエストのリクエストヘッダーに Accept-Encoding: gzip が含まれる場
合に、CloudFront に特定のタイプのファイルを自動的に圧縮させるには、[Yes] を選択しま
す。CloudFront がコンテンツを圧縮する際、ファイルが小さいためダウンロードはより高速に
行われ、ウェブページは高速にレンダリングされます。詳細については、「圧縮ファイルの供
給 (p. 157)」を参照してください。
ディストリビューションの詳細
以下の値はディストリビューション全体に適用されます。
価格クラス
CloudFront サービスに支払う上限価格に対応する価格クラスを選択します。デフォルトで
は、CloudFront は、すべての CloudFront リージョンのエッジロケーションからオブジェクトを供給
します。
価格クラスの詳細、および選択した価格クラスがディストリビューションの CloudFront パフォー
マンスに与える影響の詳細については、「CloudFront ディストリビューションの価格クラスを
選択する (p. 58)」を参照してください。価格クラスと CloudFront リージョンのマッピングを含
め、CloudFront 料金表の詳細については、「Amazon CloudFront 料金表」を参照してください。
AWS WAF ウェブ ACL
AWS WAF を使用して、指定した条件に基づいてリクエストを許可したりブロックしたりする場合
は、このディストリビューションに関連付けられたウェブ ACL を選択します。
AWS WAF は、CloudFront に転送される HTTPS リクエストおよび HTTP をモニタリングするを転
送可能にし、コンテンツへのアクセスをコントロール可能にするウェブアプリケーションファイア
ウォールです。クエリ文字列からの実行またはクエリ文字列の値をリクエストする IP アドレスのよ
うな、指定した条件に基づいて、CloudFront はリクエストされたコンテンツまたは HTTP 403 ステー
タスコード(禁止)のリクエストのいずれかに対応します。CloudFront を設定して、リクエストがブ
ロックされたときにカスタムエラーを返すこともできます。AWS WAF の詳細については、『AWS
WAF 開発者ガイド』を参照してください。
代替ドメイン名(CNAME)
オプション。ディストリビューションを作成するときに CloudFront が割り当てるドメイン名ではな
く、オブジェクトの URL に使用する 1 つ以上のドメイン名を指定します。たとえば、次のオブジェ
クトの URL があります。
/images/image.jpg
この URL を次のように表示します。
http://www.example.com/images/image.jpg
次のようには指定しません。
http://d111111abcdef8.cloudfront.net/images/image.jpg
この場合、www.example.com の CNAME を追加します。
API Version 2016-09-29
81
Amazon CloudFront 開発者ガイド
ディストリビューションの詳細
Important
www.example.com の CNAME をディストリビューションに追加する場合、DNS サービ
スを使用して CNAME レコードを作成(または更新)し、www.example.com のクエリを
d111111abcdef8.cloudfront.net にルーティングする必要もあります。ドメインの DNS
サービスプロバイダーのある CNAME レコードを作成する許可が必要です。通常、これはド
メインを所有していることを指しますが、ドメイン所有者向けにアプリケーションを開発し
ている場合にも当てはまります。
ディストリビューションに追加できる代替ドメイン名の数に関する現在の制限については、『アマ
ゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してください。
制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/create?
issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照してくださ
い。
代替ドメイン名の詳細については、「代替ドメイン名(CNAME)を使用する (p. 53)」を参照してく
ださい。CloudFront URL の詳細については、「CloudFront オブジェクトの URL の形式 (p. 117)」
を参照してください。
SSL 証明書
ビューアがオブジェクトへのアクセスに HTTPS を使用する場合、該当する設定を選択します。さら
に、[Custom SSL Certificate] を選択した場合は、使用する証明書を選択します。
• デフォルトの CloudFront 証明書(*.cloudfront.net)– オブジェクトの URL で https://
d111111abcdef8.cloudfront.net/image1.jpg のような CloudFront ドメイン名を使用する場
合、このオプションを選択します。また、ビューアが HTTP を使用してオブジェクトにアクセスす
る場合も、このオプションを選択します。
• カスタム SSL 証明書 – オブジェクトの URL で https://example.com/image1.jpg のような独
自のドメイン名を使用する場合は、このオプションを選択して該当する証明書を選択します。リス
トには、AWS Certificate Manager によって提供された証明書とサードパーティーの認証機関から購
入した証明書を含めることが可能で、ACM または IAM 証明書ストアにアップロードできます。詳
細については、「代替ドメイン名と HTTPS の使用 (p. 259)」を参照してください。
この設定を選択した場合、オブジェクト 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 はオブジェクトを返さない
でビューアとの接続を中断します。
Clients Supported(サポートされるクライアント)
代替ドメイン名を指定し、IAM 証明書ストア内の SSL 証明書を指定した場合、CloudFront が HTTPS
リクエストを処理する方法を、すべてのクライアントで動作する方法にするか、それともほとんどの
クライアントで動作する方法にするかを選択します。
• [All Clients]: どのクライアントもコンテンツにアクセスできます。ただし、この機能を使用するには
許可を得る必要があり、追加の月額料金が発生します。
• [Only Clients that Support Server Name Indication (SNI)]: 最新のブラウザはすべて SNI をサポート
するため、コンテンツにアクセスできます。しかし、まだ使用されている一部のブラウザは SNI を
サポートしていません。このようなブラウザのユーザーは、他の方法を使用して、たとえばオリジ
ンからオブジェクトを直接取得することで、コンテンツにアクセスする必要があります。
API Version 2016-09-29
82
Amazon CloudFront 開発者ガイド
ディストリビューションの詳細
詳細については、「代替ドメイン名と HTTPS の使用 (p. 259)」を参照してください。
SSL プロトコルの最低バージョン
ビューアと CloudFront との間の HTTPS 接続に使用する SSL プロトコルの最低バージョン —[SSLv3]
または [TLSv1]— を指定します。CloudFront は、指定された SSL バージョン以上をサポートする
ビューアのみにオブジェクトを提供します。TLSv1 プロトコルの方がより安全であるため、[SSLv3]
を指定するのは、TLSv1 がサポートされていないブラウザまたはデバイスをユーザーが使用している
場合に限定することをお勧めします。次の点に注意してください。
• [SSL Certificate] で選択するオプションが [Default CloudFront Certificate] の場合、最低 SSL プロト
コルバージョンは TLSv1 となり、変更できません。
• [SSL Certificate] で選択するオプションが [Custom SSL Certificate] で、[Custom SSL Client
Support] で選択するオプションが [Only Clients that Support Server Name Indication (SNI)] の場
合、CloudFront は SNI の最小許容 SSL プロトコルである TLSv1 を使用します。
[Custom SSL Certificate] と [Only Clients that Support Server Name Indication (SNI)] を選択した場
合、CloudFront は SNI の最小許容 SSL である TLSv1 を使用する必要があります。
サポートされる HTTP バージョン
ビューワーが CloudFront との通信に使用する HTTP バージョンを選択します。ビューワー
は、CloudFront で使用するよう設定した最新バージョンを使用します。HTTP/2 をサポートしない
ビューワーは、自動的に以前のバージョンを使用します。
ビューワーと CloudFront が HTTP/2 を使用するには、ビューワーが TLS 1.2 以降と Server Name
Identification(SNI)をサポートしている必要があります。
一般的には、CloudFront とビューワーによる HTTP/2 を使った通信を設定するとレイテンシーが短
縮されます。また、HTTP/2 の最適化によってパフォーマンスを向上できます。詳細については、
「http/2 最適化」でインターネット検索してください。
デフォルトのルートオブジェクト
オプション。ビューアがディストリビューション内のオブジェクト(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. 155)」を参照してください。
ログ記録
CloudFront がオブジェクトに対する各リクエストの情報をログに記録し、ログファイルを Amazon
S3 バケットに保存するかどうか。ログ作成はいつでも有効または無効にできます。ログ作成を有効
API Version 2016-09-29
83
Amazon CloudFront 開発者ガイド
ディストリビューションの詳細
にしても追加料金はかかりませんが、Amazon S3 バケットにおけるファイルの保存とファイルへの
アクセスについては通常の Amazon S3 料金が発生します。ログの削除はいつでも行うことができま
す。CloudFront アクセスログの詳細については、「アクセスログ (p. 289)」を参照してください。
ログ用のバケット
[Logging] で [On] を選択した場合に、CloudFront がアクセスログを保存する Amazon S3 バケット
(例: myawslogbucket.s3.amazonaws.com)。ログ作成を有効にした場合、CloudFront はオブ
ジェクトに対する各エンドユーザーリクエストの情報を記録し、ファイルを、指定された Amazon S3
バケットに保存します。ログ作成はいつでも有効または無効にできます。CloudFront アクセスログの
詳細については、「アクセスログ (p. 289)」を参照してください。
Note
Amazon S3 バケット ACL を取得して更新するための権限が必要です。また、バケットの S3
ACL から FULL_CONTROL が付与される必要があります。これによって、CloudFront から
awsdatafeeds アカウントに、バケットにログファイルを保存するための権限が付与されま
す。詳細については、「ロギングの設定およびログファイルへのアクセスに必要なアクセス
許可 (p. 291)」を参照してください。
ログのプレフィックス
オプション。[Logging] で [On] を選択した場合、このディストリビューションのアクセスログファイ
ル名の先頭に CloudFront が追加する文字列(ある場合)を指定します(例: exampleprefix/)。末
尾のスラッシュ(/)はオプションですが、ログファイルの参照を容易にするためにこれを使用するこ
とをお勧めします。CloudFront アクセスログの詳細については、「アクセスログ (p. 289)」を参照
してください。
Cookie のログ作成
CloudFront で Cookie をアクセスログに含めるようにするには、[On] を選択します。Cookie をログ
に含めるように選択した場合、CloudFront はすべての Cookie をログに記録します。このディストリ
ビューションのキャッシュ動作がどのように構成されているか(オリジンにすべての Cookie を転送
するか、Cookie を転送しないか、指定された一連の Coolie を転送するか)は関係ありません。
Amazon S3 は Cookie を処理しません。したがって、ディストリビューションに Amazon EC2 または
他のカスタムオリジンも含まれていない限り、[Cookie Logging] の値に [Off] を選択することをお勧め
します。
Cookie の詳細については、「Cookie に基づいてオブジェクトをキャッシュするように CloudFront を
設定する (p. 126)」を参照してください。
IPv6 を有効にする
IPv6 は、IP プロトコルの新しいバージョンです。これは IPv4 に今後取って代わるもの
で、より大きなアドレス空間を使用します。CloudFront は常に IPv4 リクエストに応答しま
す。CloudFront が、IPv4 の IP アドレス (192.0.2.44 など) からのリクエストおよび IPv6 のアドレス
(2001:0db8:85a3:0000:0000:8a2e:0370:7334 など) からのリクエストに応答するようにするには、
[Enable IPv6] を選択します。
一般的に、IPv6 ネットワークのユーザーがいてコンテンツにアクセスする場合は、IPv6 を有効にす
る必要があります。ただし、コンテンツへのアクセスを制限するために署名付き URL または署名付
き Cookie を使用していて、コンテンツへのアクセスが可能な IP アドレスを制限する IP アドレスを
含む IpAddress パラメーターを使用している場合、IPv6 は有効にしません。一部のコンテンツへの
アクセスを IP アドレスで制限し、他のコンテンツへのアクセスを制限しない場合 (またはアクセスを
制限するが IP アドレスでは行わない場合)、2 つのディストリビューションを作成します。カスタム
ポリシーを使用して署名付き URL を作成する方法については、カスタムポリシーを使用して署名付き
URL を作成する (p. 214)を参照してください。カスタムポリシーを使用して署名付き Cookie を作成
API Version 2016-09-29
84
Amazon CloudFront 開発者ガイド
ディストリビューションの詳細
する方法については、カスタムポリシーを使用した署名付き Cookie の設定 (p. 231)を参照してくだ
さい。
CloudFront ディストリビューションにトラフィックをルーティングするために Amazon Route 53 エ
イリアスリソースレコードセットを使用している場合、次の両方に該当するなら 2 つ目のエイリアス
リソースレコードセットを作成する必要があります。
• ディストリビューションで IPv6 を有効にする
• オブジェクトの URL で代替ドメイン名を使用している
詳細については、Amazon Route 53 開発者ガイド にあるドメイン名を使用したトラフィックの
Amazon CloudFront ウェブディストリビューションへのルーティング を参照してください。
Amazon Route 53 または別の DNS サービスで CNAME リソースレコードセットを作成した場合、変
更を行う必要はありません。ビューアリクエストの IP アドレスフォーマットに関係なく、CNAME レ
コードはトラフィックをディストリビューションにルーティングします。
IPv6 と CloudFront アクセスログを有効にすると、c-ip 列には IPv4 および IPv6 フォーマットの値が
含められます。詳細については、「アクセスログ (p. 289)」を参照してください。
Note
ビューアネットワークによっては IPv6 が十分にサポートされていますが、IPv6 を全くサポー
トしないビューアネットワークもあります。(ビューアネットワークは、ホームインターネッ
トやワイヤレスキャリアに似ています)。
お客様に対する優れた可用性を維持するために、データによって IPv4 がより優れたユー
ザーエクスペリエンスを提供することが判明している場合、CloudFront は IPv4 を使用
してビューアリクエストに応じます。CloudFront が IPv6 によって対応するリクエストの
割合を知るには、ディストリビューションで CloudFront ロギングを有効にし、リクエス
トを行ったビューアの IP アドレスを含む c-ip 列を解析します。IPv6 のサポートについ
ては、CloudFront FAQ を参照してください。アクセスログを有効にする方法の詳細につ
いては、ログ記録 (p. 83)、ログ用のバケット (p. 84)、および ログのプレフィック
ス (p. 84) のフィールドを参照してください。
コメント
オプション。ディストリビューションを作成するときに、最大で 128 文字のコメントを含めることが
できます。コメントの更新はいつでも行うことができます。
ディストリビューションの状態
ディストリビューションがデプロイされた後にディストリビューションを有効または無効のどちらに
するかを示します。
• Enabled: ディストリビューションが完全にデプロイされた後、ディストリビューションのドメイン
名を使用するリンクをデプロイでき、ユーザーがコンテンツを取り込むことができます。ディスト
リビューションを有効にすると、そのディストリビューションに関連付けられたドメイン名を使用
するコンテンツへのエンドユーザーリクエストを受け付けて処理することができます。
CloudFront ディストリビューションの作成、変更、削除を行った場合、その変更が CloudFront
データベースに伝達されるまで時間がかかります。変更直後に出したディストリビューションに関
する情報のリクエストには、変更が反映されていない可能性があります。通常、伝達は数分以内で
完了しますが、システムの高負荷またはネットワークパーティションによっては、それより時間が
かかる可能性があります。
• Disabled: ディストリビューションがデプロイされ、その使用準備ができていても、ユーザーはディ
ストリビューションを使用できません。ディストリビューションを無効にするときはいつでも、そ
のディストリビューションに関連付けられたドメイン名を使用するコンテンツへのエンドユーザー
API Version 2016-09-29
85
Amazon CloudFront 開発者ガイド
Custom Error Pages(カスタムエラーペー
ジ)と Error Caching(エラーキャッシュ)
リクエストを CloudFront は受け付けません。(ディストリビューションの構成を更新することで)
ディストリビューションを無効から有効に切り替えるまで、誰もディストリビューションを使用で
きません。
ディストリビューションの無効と有効は何度でも切り替えることができます。ディストリビューショ
ンの構成を更新するプロセスに従います。詳細については、「CloudFront ディストリビューションの
一覧表示、詳細表示、および更新を行う (p. 52)」を参照してください。
Custom Error Pages(カスタムエラーページ)と
Error Caching(エラーキャッシュ)
Amazon S3 またはカスタムオリジンが HTTP 4xx または 5xx ステータスコードを CloudFront に返す
場合、CloudFront にオブジェクトをビューアーに返させることができます(例: HTML ファイル)。
オリジンまたはカスタムエラーページからのエラーレスポンスを CloudFront エッジキャッシュに
キャッシングする時間を指定することもできます。詳細については、「エラーレスポンスのカスタマ
イズ (p. 149)」を参照してください。
Note
以下の値は [Create Distribution] ウィザードに含まれていないため、ディストリビューション
を更新するときにのみ、カスタムエラーページを構成することができます。
エラーコード
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 ディストリ
ビューションを構成して、ホワイトリストに指定した国のユーザーだけにコンテンツへのアクセスを
API Version 2016-09-29
86
Amazon CloudFront 開発者ガイド
ウェブディストリビューションを作成または更新
する場合に CloudFront がコンソールに表示する値
許可したり、またはブラックリストに指定した国のユーザーにはコンテンツへのアクセスを許可し
ないようにしたりできます。詳細については、「コンテンツの地理的ディストリビューションの制
限 (p. 90)」を参照してください。
Note
以下の値は [Create Distribution] ウィザードに含まれていないため、ディストリビューション
を更新するときにのみ、地域制限を構成できます。
Enable Geo Restriction(地域制限の有効化)
特定の国のユーザーをコンテンツにアクセスできなくするかどうか。地域制限の構成に追加料金は発
生しません。
Restriction Type(制限タイプ)
どの国のユーザーがコンテンツにアクセスできるかを指定する方法。
• ホワイトリスト: Countries リストには、その国のユーザーはコンテンツにアクセスできると指定す
るすべての国が含まれます。
• ブラックリスト: [Countries] リストには、その国のユーザーはコンテンツにアクセスできないと指
定するすべての国が含まれます。
Countries(国)
ホワイトリストまたはブラックリストに追加する国。国を追加するには、左のリストで国を選択し
て、[Add] を選択します。次の点に注意してください。
• 連続する複数の国を追加するには、最初の国を選択し、Shift キーを押したまま最後の国を選択し
て、[Add] を選択します。
• 連続しない複数の国を追加するには、最初の国を選択肢、Ctrl キーを押したまま残りの国を選択し
て、[Add] を選択します。
• 左のリストで国を見つけるには、国のフルネームの最初の数文字を入力します。
• 各国名の前の 2 文字のコードは、CloudFront API を使用してディストリビューションを作成または
更新する場合に入力する値です。国際標準化機構の国コードが使用されています。コード順、国順
に並べ替えることのできる使いやすい一覧については、Wikipedia の ISO 3166-1 alpha-2 の項目を
参照してください。
ウェブディストリビューションを作成または更新
する場合に CloudFront がコンソールに表示する
値
新しいウェブディストリビューションの作成や、既存のディストリビューションの更新を行う場
合、CloudFront は以下の情報を CloudFront コンソールに表示します。
Note
有効な信頼済み署名者、つまり有効な CloudFront キーペアを持つ AWS アカウントのうち有
効な署名付き URL の作成に使用できる AWS アカウントは、CloudFront コンソールに現在表
示されません。
API Version 2016-09-29
87
Amazon CloudFront 開発者ガイド
ディストリビューション ID([General] タブ)
ディストリビューション ID([General] タブ)
CloudFront API を使用してディストリビューションに対するアクションを実行する場合、ディストリ
ビューション ID を使用して、どのディストリビューションに対してアクションを実行するかを指定し
ます(例: EDFDVBD6EXAMPLE)。ディストリビューション ID を変更することはできません。
ディストリビューションのステータス([General]
タブ)
ディストリビューションのステータス値として考えられるものを次の表に示します。
値
説明
InProgress
ディストリビューションは依然として作成中または更新中です。
Deployed
ディストリビューションの作成または更新が完了し、変更が CloudFront システ
ム全体に完全に伝達されました。
Note
ユーザーが CloudFront を使用してコンテンツにアクセスできるようにするには、ディスト
リビューションのステータスが [Deployed] であることを確認するのに加えて、ディストリ
ビューションを有効にする必要があります。詳細については、「ディストリビューションの
状態 (p. 85)」を参照してください。
最終更新日時([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. 117)」を参照してください。
1 つ以上の代替ドメイン名(CNAME)を指定した場合、オブジェクトへのリンクに、CloudFront ド
メイン名ではなく独自のドメイン名を使用できます。CNAME の詳細については、「代替ドメイン名
(CNAME) (p. 81)」を参照してください。
Note
CloudFront ドメイン名は一意です。ディストリビューションのドメイン名は以前のディスト
リビューションで使用されておらず、今後の別のディストリビューションでも再利用されま
せん。
API Version 2016-09-29
88
Amazon CloudFront 開発者ガイド
Amazon EC2 と他のカスタムオリジ
ンの使用に関する要件および推奨事項
Amazon EC2 と他のカスタムオリジンの使用に関
する要件および推奨事項
Amazon EC2 インスタンスおよび他のカスタムオリジンを CloudFront とともに使用するには、次の
ガイドラインに従います。
• すべてのサーバーで同じコンテンツをホストし、供給します。
• すべてのサーバーで X-Amz-Cf-Id ヘッダーエントリをログに記録します。CloudFront はデバッグ
のためにこの情報を必要とします。
• カスタムオリジンがリッスンしている HTTP および HTTPS ポートへのアクセスリクエストを制限
します。
• 実装内のすべてのサーバーの時計を同期します。
• 冗長サーバーを使用して障害に対処します。
• カスタムオリジンを使用したプライベートコンテンツ供給の詳細については、「プライベートコン
テンツ用の HTTP サーバーの使用 (p. 188)」を参照してください。
• リクエストとレスポンス動作、およびサポートされる HTTP ステータスコードについては、「リク
エストとレスポンスの動作 (p. 162)」を参照してください。
カスタムオリジンで Amazon Elastic Compute Cloud を使用する場合は、以下の点に従うことをお勧
めします。
1.
ウェブサーバーのソフトウェアを自動的にインストールする Amazon マシンイメージを使用しま
す。詳細については、Amazon EC2 に関するドキュメントを参照してください。
2.
Elastic Load Balancing ロードバランサーを使用して、複数の Amazon EC2 インスタンスにわ
たるトラフィックを処理するほかに、Amazon EC2 インスタンスの変更からアプリケーション
を隔離します。たとえば、ロードバランサーを使用する場合、アプリケーションを変更せずに
Amazon EC2 インスタンスの追加と削除ができます。詳細については、Elastic Load Balancing に
関するドキュメントを参照してください。
3.
CloudFront ディストリビューションを作成する場合は、オリジンサーバーのドメイン名にロー
ドバランサーの URL を指定します。詳細については、「ウェブディストリビューションの使
用 (p. 62)」を参照してください。
AWS WAF を使用してコンテンツへのアクセスを
管理する
AWS WAF は、CloudFront に転送される HTTPS リクエストおよび HTTP をモニタリングするを転
送可能にし、コンテンツへのアクセスをコントロール可能にするウェブアプリケーションファイア
ウォールです。クエリ文字列からの実行またはクエリ文字列の値をリクエストする IP アドレスのよ
うな、指定した条件に基づいて、CloudFront はリクエストされたコンテンツまたは HTTP 403 ステー
タスコード(禁止)のリクエストのいずれかに対応します。CloudFront を設定して、リクエストがブ
ロックされたときにカスタムエラーを返すこともできます。AWS WAF の詳細については、『AWS
WAF 開発者ガイド』を参照してください。
AWS WAF ウェブアクセスコントロールリスト(ウェブ ACL)を作成した後で、作成のみ、または
ウェブディストリビューションを作成または更新して、ディストリビューションをウェブ ACL に関連
付けます。同じウェブ ACL または別のウェブ ACL に必要な数の CloudFront ディストリビューション
に関連付けることができます。ウェブディストリビューションを作成し、ウェブ ACL に関連付ける方
法の詳細については、「CloudFront コンソールを使用したウェブディストリビューションの作成また
は更新 (p. 64)」を参照してください。
API Version 2016-09-29
89
Amazon CloudFront 開発者ガイド
コンテンツの地理的ディストリビューションの制限
関連付けてから、またはウェブ ACL と既存のディストリビューションを関連付けるまたは関連付けを
解除する、またはディストリビューションに関連付けられたウェブ ACL を変更するには、次の手順を
実行します。
CloudFront を使用して AWS WAF ウェブ ACL と既存の CloudFront ディストリビューション
の関連付けまたは関連付け解除を行うには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
更新するディストリビューションの ID を選択します。
3.
[General] タブで、[Edit] を選択します。
4.
[AWS WAF Web ACL] の [Distribution Settings] ページで、に、このディストリビューションに関
連付けるウェブ ACL を選択します。
すべてのウェブ ACL からディストリビューションの関連付けを解除する場合は、[None] を選択
します。ディストリビューションを別のウェブ ACL と関連付ける場合は、新しいウェブ ACL を
選択します。
5.
[Yes, Edit] を選択します。
6.
AWS WAF ウェブ ACL との関連付けを追加、削除、または変更する場合は、他のディストリ
ビューションでステップ 2 から 5 を繰り返してください。
7.
設定を変更した後で、更新したディストリビューションの [Status] 列の値が [InProgress] に変わ
り、CloudFront が変更をエッジロケーションに伝播します。ディストリビューションの [Status]
が [Deployed] に変わったら、そのディストリビューションはリクエストの処理に AWS WAF を
使用可能となります。(ディストリビューションの [State] 列の値も、[Enabled] になっている必
要があります。)この値の更新は、ディストリビューションに対する変更を保存してから 15 分
以内に完了します。
コンテンツの地理的ディストリビューションの制
限
地域制限(地理的ブロッキング)を使用すると、CloudFront ウェブディストリビューションを通じて
配信しているコンテンツについて、特定地域のユーザーによるアクセスを回避できます。地域制限を
使用するには、次の 2 つの方法があります。
• CloudFront の地理制限機能を使用する。ディストリビューションに関連するすべてのファイルへの
アクセスを制限し、国レベルでアクセスを制限する場合は、この方法を使用します。
• サードパーティの位置情報サービスを使用する。ディストリビューションに関連するファイルのサ
ブセットへのアクセスを制限する場合や、国レベルより詳細なレベルでアクセスを制限する場合
は、この方法を使用します。
トピック
• CloudFront の地域制限を使用する (p. 90)
• サードパーティの位置情報サービスを使用する (p. 92)
CloudFront の地域制限を使用する
ユーザーがコンテンツをリクエストすると、通常 CloudFront はユーザーがいる場所に関係なくリクエ
ストされたコンテンツを提供します。特定の国のユーザーによるコンテンツへのアクセスを回避する
必要がある場合は、CloudFront の地域制限を使用して、次のいずれかを行うことができます。
API Version 2016-09-29
90
Amazon CloudFront 開発者ガイド
CloudFront の地域制限を使用する
• 承認された国のホワイトリストに含まれているいずれかの国にユーザーがいる場合のみ、コンテン
ツへのアクセスを許可する。
• 禁止された国のブラックリストに含まれているいずれかの国にユーザーがいる場合、コンテンツへ
のアクセスを禁止する。
たとえば、著作権上の理由でコンテンツの配信が許可されていない国がリクエスト元である場合
は、CloudFront の地域制限を使用してリクエストをブロックすることができます。
Note
CloudFront は、サードパーティーの GeoIP データベースを使用して、ユーザーがいる場所を
判別します。IP アドレスと国とのマッピングの正確さは、リージョンによって異なります。
最近のテストによれば、全体的な正確性は 99.8% です。
地域制限は次のような仕組みになっています。
1. 仮に、コンテンツをリヒテンシュタインでのみ配信する権限を持っているとしましょう。自分の
CloudFront ウェブディストリビューションを更新して、リヒテンシュタイン王国のみを含むホワイ
トリストを追加します。(または、リヒテンシュタイン王国以外のすべての国を含むブラックリス
トを追加することもできます。)
2. モナコ王国に住むユーザーがお客様のコンテンツをリクエストすると、DNS はそのリクエストをイ
タリア、ミラノにある CloudFront エッジロケーションにルーティングします。
3. ミラノのエッジロケーションはお客さまのディストリビューションを検索し、モナコ王国のユー
ザーはコンテンツをダウンロードすることは許可されていないと判断します。
4. CloudFront はユーザーに HTTP ステータスコード 403(Forbidden)を返します。
オプションで、ユーザーにカスタムエラーメッセージを返すよう CloudFront を構成することができ
ますし、リクエストされたオブジェクトのエラーレスポンスを CloudFront がキャッシュする時間を指
定することもできます(デフォルト値は 5 分)。詳細については、「エラーレスポンスのカスタマイ
ズ (p. 149)」を参照してください。
地域制限はウェブディストリビューション全体に適用されます。コンテンツのある部分に特定の制限
を適用し、コンテンツの別の部分に別の制限を適用する(または制限を適用しない)必要がある場合
は、別々の CloudFront ウェブディストリビューションを作成するか、サードパーティの位置情報サー
ビスを使用する必要があります。
CloudFront のアクセスログ記録を有効にすると、sc-status(HTTP ステータスコード)の値が 403
であるログエントリを検索することによって、CloudFront で拒否されたリクエストを特定できます。
しかし、アクセスログだけでは、ユーザーのいる場所に基づいて CloudFront が拒否したリクエスト
と、別の理由でオブジェクトへのアクセス権限がユーザーになかったために CloudFront が拒否したリ
クエストとを区別することができません。Digital Element や MaxMind などサードパーティの位置情報
サービスを利用している場合は、アクセスログの c-ip(クライアント IP)列にある IP アドレスに基
づいてリクエストの場所を識別できます。CloudFront アクセスログの詳細については、「アクセスロ
グ (p. 289)」を参照してください。
以下の手順では、CloudFront コンソールを使用して、地域制限を既存のウェブディストリビューショ
ンに追加する方法を説明します。コンソールを使用してウェブディストリビューションを作成する方
法の詳細については、「ウェブディストリビューションの使用 (p. 62)」を参照してください。
CloudFront コンソールを使用して、地域制限を CloudFront ウェブディストリビューションに
追加するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
更新するディストリビューションを選択します。
API Version 2016-09-29
91
Amazon CloudFront 開発者ガイド
サードパーティの位置情報サービスを使用する
3.
[Distribution Settings] ペインで、[Restrictions] タブを選択します。
4.
5.
6.
[Edit] を選択します。
適切な値を入力します。詳細については、「制限 (p. 86)」を参照してください。
[Yes, Edit] を選択します。
サードパーティの位置情報サービスを使用する
CloudFront の地域制限機能を使用すると、特定のウェブディストリビューションで配信するすべての
ファイルについて、国レベルでコンテンツのディストリビューションを制御できます。コンテンツの
配信先について地理的な制限があり、この制限が国境と一致していない場合や、CloudFront を通じて
配信するファイルの一部のみにアクセスを制限する場合は、CloudFront とサードパーティの位置情報
サービスを組み合わせることができます。これにより、国だけではなく、都市、郵便番号、または緯
度/経度に基づいてコンテンツへのアクセスを制御できます。
サードパーティの位置情報サービスを使用する場合は、有効期限の日時を指定できる CloudFront 署
名付き URL を使用することをお勧めします。有効期限を経過すると、この URL は無効になります。
さらに、オリジンとして Amazon S3 バケットを使用することをお勧めします。CloudFront オリジン
アクセスアイデンティティを使用することで、オリジンのコンテンツへのユーザーによる直接アクセ
スを回避できるためです。署名付き URL とオリジンアクセスアイデンティティの詳細については、
「CloudFront を使用してプライベートコンテンツを供給する (p. 186)」を参照してください。
以下のタスクリストは、サードパーティの位置情報サービスを使用してファイルへのアクセスを制御
する方法を説明しています。
地理的場所に基づいて CloudFront ディストリビューション内のファイルへのアクセスを制限
するためのタスクリスト
1.
2.
位置情報サービスのアカウントを取得します。
コンテンツを Amazon Simple Storage Service(S3)バケットにアップロードします。詳細につ
いては、Amazon S3 に関するドキュメントを参照してください。
3.
プライベートコンテンツを供給するように Amazon CloudFront と Amazon S3 を構成します。詳
細については、「CloudFront を使用してプライベートコンテンツを供給する (p. 186)」を参照
してください。
以下の処理を行うようにウェブアプリケーションを記述します。
4.
a.
b.
c.
各ユーザーリクエストの IP アドレスを位置情報サービスに送信します。
位置情報サービスからの戻り値を評価し、ユーザーの場所が CloudFront によるコンテンツ配
信先に該当するかどうかを判別します。
ユーザーの場所にコンテンツを配信するかどうかによって、CloudFront コンテンツの署名付
き URL を生成するか、HTTP ステータスコード 403(禁止)をユーザーに返します。また
は、カスタムエラーメッセージが返されるように CloudFront を設定することもできます。詳
細については、「エラーレスポンスのカスタマイズ (p. 149)」を参照してください。
詳細については、使用する位置情報サービスのドキュメントを参照してください。
ウェブサーバー変数を使用すると、ウェブサイトを訪れたユーザーの IP アドレスを取得できます。次
の点に注意してください。
• ウェブサーバーがインターネットにロードバランサー経由で接続されていない場合、ウェブサー
バー変数を使用してリモート IP アドレスを取得できます。ただし、この IP アドレスは常にユー
ザーの IP アドレスであるとは限りません。ユーザーのインターネットへの接続方法によっては、プ
ロキシサーバーの IP アドレスである可能性もあります。
• ウェブサーバーがインターネットにロードバランサー経由で接続されている場合、ウェブサーバー
変数には、ユーザーの IP アドレスではなく、ロードバランサーの IP アドレスが含まれる可能性が
API Version 2016-09-29
92
Amazon CloudFront 開発者ガイド
オンデマンドスムーズストリーミングの構成
あります。この構成では、X-Forwarded-For http ヘッダーに含まれる最後の IP アドレスを使用す
ることをお勧めします。通常、このヘッダーには複数の IP アドレスが含まれており、そのほとんど
はプロキシまたはロードバランサーの IP アドレスです。ユーザーの地理的な場所に関連付けられて
いる可能性が最も高い IP アドレスは、リストの最後にある IP アドレスです。
ウェブサーバーがロードバランサーに接続されていない場合は、IP アドレスのスプーフィングを回避
するために、X-Forwarded-For ヘッダーではなくウェブサーバー変数を使用することをお勧めしま
す。
オンデマンドスムーズストリーミングの構成
CloudFront を使用して、Microsoft スムーズストリーミング形式に変換したメディアファイルのオンデ
マンドストリーミングを実行できます。スムーズストリーミングコンテンツをオンデマンドで配信す
るには、2 種類の方法があります。
• ディストリビューションのオリジンとして、Microsoft スムーズストリーミング形式に変換したファ
イルをストリーミングできるウェブサーバーを指定します。
• CloudFront ディストリビューションでスムーズストリーミングを有効にします。スムーズストリー
ミングはキャッシュ動作のプロパティです。つまり、1 つのディストリビューションで、他のコン
テンツに加えてスムーズストリーミングメディアファイルも配信できます。
スムーズストリーミングを有効にする場合は、以下に注意してください。
• 他のコンテンツがキャッシュ動作の [Path Pattern] の値と一致した場合、同じキャッシュ動作を使
用して、そのコンテンツも配信できます。
• CloudFront は、スムーズストリーミングメディアファイルで Amazon S3 バケットまたはカスタ
ムオリジンを使用できます。ただし、サーバーがスムーズストリーミング用に構成されている場
合、CloudFront でオリジンとして Microsoft IIS Server を使用することはできません。
• スムーズストリーミング形式のメディアファイルを無効にすることはできません。有効期限が切れ
る前にファイルを更新する場合は、ファイルの名前を変更する必要があります。詳細については、
「ディストリビューション内のオブジェクトの追加、削除、または置換 (p. 135)」を参照してくだ
さい。
スムーズストリーミングクライアントについては、Microsoft ウェブサイトの「Smooth Streaming
Primer」を参照してください。
CloudFront を使用して、スムーズストリーミング形式でファイルをストリーミングできるウェブサー
バーを使用しないで、Microsoft スムーズストリーミング形式でエンコードされたメディアファイルの
ストリーミングを行うには、以下の作業を実行します。
1.
スムーズストリーミングでフラグメント化された MP4 形式にメディアファイルを変換します。ス
ムーズストリーミング形式に変換できるアプリケーションの一覧については、Microsoft ウェブサ
イトの「Smooth Streaming Primer」を参照してください。
2.
次のいずれかを行ってください。
• CloudFront コンソールを使用している場合: ウェブディストリビューションを作成するとき、
デフォルトのキャッシュ動作でスムーズストリーミングを有効にします。既存の CloudFront
ウェブディストリビューションのデフォルトのキャッシュ動作/カスタムキャッシュ動作で、ス
ムーズストリーミングを有効にすることもできます。
• CloudFront API を使用している場合: デフォルトのキャッシュ動作またはカスタムキャッシュ
動作の DistributionConfig 複合型に SmoothStreaming エレメントを追加します。
3.
スムーズストリーミングプレゼンテーションのファイルを該当するオリジンにアップロードしま
す。
API Version 2016-09-29
93
Amazon CloudFront 開発者ガイド
オンデマンドプログレッシブダウンロードの構成
4.
clientaccesspolicy.xml または crossdomainpolicy.xml ファイルを作成し、そ
れをディストリビューションのルートのアクセスできる場所に追加します(例: http://
d111111abcdef8.cloudfront.net/clientaccesspolicy.xml)。次に、ポリシーの例を示
します。
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
詳細については、Microsoft Developer Network ウェブサイトの「Making a Service Available
Across Domain Boundaries」を参照してください。
5.
アプリケーションでリンクする場合は、次の形式でクライアントマニフェストを指定します。
http://d111111abcdef8.cloudfront.net/video/presentation.ism/Manifest
オンデマンドプログレッシブダウンロードの構成
CloudFront で、プログレッシブダウンロードを使用してメディアファイルを配信するには、以下の作
業を実行します。
1.
2.
3.
該当する場合、メディアファイルを変換します。
CloudFront ウェブディストリビューションを作成します。特別な設定は必要ありません。
ディストリビューションの作成時に指定したオリジンにファイルをアップロードします。
4.
アプリケーション(メディアプレーヤーなど)でリンクする場合、CloudFront を使って配信
する他のオブジェクトと同じ形式でメディアファイルの名前を指定します。詳細については、
「CloudFront オブジェクトの URL の形式 (p. 117)」を参照してください。
オンデマンド 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. 117)」を参照してください。
API Version 2016-09-29
94
Amazon CloudFront 開発者ガイド
Lambda@Edge とは
CloudFront と Lambda@Edge の使
用
CloudFront イベントに応じて Lambda@Edge を使用し、CloudFront を通じて配信されるコンテンツ
をカスタマイズできます。これにより、レイテンシーを短縮できます。
トピック
• Lambda@Edge とは (p. 95)
• Lambda@Edge のユースケース (p. 96)
• 対象となる CloudFront イベント (p. 96)
• イベントの構造 (p. 97)
• ヘッダー制限 (p. 98)
• 関数の例 (p. 101)
Lambda@Edge とは
AWS Lambda は、サーバーをプロビジョニングまたは管理することなく、AWS クラウドでコードを
実行できるコンピューティングサービスです。AWS Lambda は必要に応じてコードを実行し、1 日あ
たり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケーリングします。
Lambda@Edge は、CloudFront イベントに応じて AWS エッジロケーションで Lambda 関数を実行す
ることができます。Lambda@Edge がない場合、カスタマイズされた処理で、一元化されたサーバー
のコンピューティングリソースにリクエストを転送する必要があります。これにより、エンドユー
ザーのエクスペリエンスが低下します。
Lambda@Edge は、サーバー側の JavaScript フレームワークである Node.js をサポートしま
す。CloudFront リクエストでは、次の 4 つの異なるトリガーポイントがサポートされます。
• リクエストが最初に閲覧者から届いたとき (閲覧者リクエスト)
• リクエストをオリジンに転送するとき (オリジンリクエスト)
• オリジンからレスポンスが届いたとき (オリジンレスポンス)
• 閲覧者に応答する前 (閲覧者のレスポンス)
Lambda@Edge では、CloudFront イベントに応じて次の操作を実行します。
API Version 2016-09-29
95
Amazon CloudFront 開発者ガイド
Lambda@Edge のユースケース
• A/B テスト用に異なるバージョンのサイトに URL を書き換えるために Cookie を検査する Lambda
関数を記述する
• user-agent ヘッダーに基づいて異なるオブジェクトをユーザーに送信する (たとえば、デバイス
に基づいて異なる解像度のイメージをユーザーに送信する)
• ヘッダーまたは認証トークンを検査し、対応するヘッダーを挿入して、リクエストをオリジンに転
送する前に、アクセス制御を有効にする
• ヘッダーの追加、削除、変更、および URL パスの書き換えを行い、キャッシュの異なるオブジェク
トにユーザーをダイレクトする
Lambda@Edge を使用した CloudFront の設定の詳細については、Lambda 開発者ガイドの
「Lambda@Edge」を参照してください。
Lambda@Edge のユースケース
Lambda@Edge を使用して、HTTP ヘッダー値にアクセス、処理、変更できます。ここにいくつか例
を挙げます。
A/B テスト
2 つの異なるバージョンのホームページをユーザーに対してテストしたいが、URL のリダイレクトの
作成または URL の変更は行いたくないと考えています。ページの両方のバージョンである「A」と
「B」は、CloudFront キャッシュに存在します。Lambda@Edge を使用して、エッジロケーションに
Cookie を設定する関数を記述し、ユーザーをランダムにバージョン A または B に割り当てて、正し
いバージョンのページをユーザーに返すことができます。これにより、ユーザーに対するレスポンス
を高速化し、オリジンの負荷を軽減できます。
顧客のユーザーエージェントの検出とグループ化
user-agent ヘッダーに基づいて、サイトにアクセスするユーザーに異なるオブジェクトを返すこと
ができます。エッジでオブジェクトの複数のバージョン (たとえば、異なる解像度のイメージ) を持
ち、ユーザーエージェント文字列の独自のカスタムパターン一致に基づいて、適切なバージョンのイ
メージを選択できます。追加の条件を考慮することもあります。たとえば、Cookie を検査して、配信
するイメージのバージョンを決定できます。また、リファラーのタイプも考慮できます。たとえば、
ボットには最も低い解像度のイメージを常に配信できます。このロジックは、ビジネスニーズに応じ
てエッジでカスタマイズできます。
その他の例
URL をリライトし、アプリケーションコードのレガシーバージョンをサポートして、URL をよりわ
かりやすくしたり、URL を変更してカスタムエラーページを指したり、ヘッダーを追加または削除し
たりできます。たとえば、ユーザーがモバイルデバイスを使用しているかどうかに応じて ContentDisposition ヘッダーを追加したり、特定の Cookie 値を確認したときに HSTS ヘッダーを挿入
したりでき、各リクエストがバックエンドオリジンのインフラストラクチャに戻る必要がありませ
ん。Node.js は、ヘッダーをループして特定のパターンを数えたり、見つけたりすることもできま
す。
対象となる CloudFront イベント
Lambda@Edge 関数には、4 つの CloudFront イベントを関連付けることができます。各イベントを次
に示します。
API Version 2016-09-29
96
Amazon CloudFront 開発者ガイド
イベントの構造
CloudFront 閲覧者リクエスト
クライアントリクエストが CloudFront によって受け取られた後で、CloudFront キャッシュ参照が実
行される前にトリガーされます。
CloudFront オリジンリクエスト
リクエストが CloudFront からオリジンに転送される前にトリガーされます。このイベント
は、CloudFront がオリジンにリクエストを転送するときにトリガーされます。CloudFront キャッシュ
から提供されたコンテンツが、このイベントをトリガーすることはありません。
CloudFront オリジンレスポンス
オリジンレスポンスが CloudFront によって受け取られた後で、このレスポンスが CloudFront によっ
てキャッシュされる前にトリガーされます。このイベントは、CloudFront がオリジンにリクエストを
転送するときにトリガーされます。CloudFront キャッシュから提供されたコンテンツが、このイベン
トをトリガーすることはありません。
CloudFront 閲覧者のレスポンス
レスポンスが CloudFront から閲覧者に送信される前にトリガーされます。コンテンツは、すでに
CloudFront キャッシュに保存されているコンテンツとするか、CloudFront がリクエストをオリジンに
転送する必要があった場合は、オリジンからフェッチされたコンテンツとすることができます。
イベントの構造
リクエストイベントの例を次に示します。ヘッダー、URI、クライアント IP は、次のようにイベント
内で使用できます。
リクエストイベント:
{
"Records":[
{
"cf": {
"configuration": {
"distributionId": "EXAMPLE"
},
"request": {
"uri": "/me.pic",
"method": "GET",
"httpVersion": "2.0",
"clientIp": "2001:cdba::3257:9652",
"headers": {
"User-Agent": ["Test Agent"],
"Host" : ["d2fadu0nynjpfn.cloudfront.net"]
}
}
}
}
]
}
レスポンスイベント:
{
"Records":[
API Version 2016-09-29
97
Amazon CloudFront 開発者ガイド
リクエストイベント
{
"cf": {
"configuration": {
"distributionId": "EDFDVBD6EXAMPLE "
},
"response": {
"status": "200",
"statusDescription": "HTTP OK",
"httpVersion": "2.0",
"headers": {
"User-agent": [ "mozilla", "safari" ],
"Vary": [ "*" ]
}
}
}
}
]
}
リクエストイベント
• Uri (読み取り/書き込み): CloudFront から要求されているコンテンツの相対パス。このフィールドを
更新すると、提供中のコンテンツが変更されます。
• メソッド (読み取り専用): 受信リクエストの HTTP メソッド。
• httpVersion (読み取り専用): 受信リクエストの HTTP バージョン。
• clientIp (読み取り専用): 受信リクエストのクライアント IP。
• ヘッダー (読み取り/書き込み): 受信リクエストのヘッダーを表すオブジェクト。各ヘッダーは値の
配列として表されます。ヘッダー使用の制限の詳細については、「ヘッダー制限 (p. 98)」を参照
してください。
レスポンスイベント
• Status (読み取り専用): クライアントに提供された HTTP ステータスコード。
• statusDescription (読み取り専用): クライアントに提供された HTTP ステータス。
• httpVersion (読み取り専用): 送信 HTTP レスポンスの HTTP バージョン。
• Headers (読み取り/書き込み): 送信レスポンスのヘッダーを表すオブジェクト。各ヘッダーは値の配
列として表されます。ヘッダー使用の制限の詳細については、「ヘッダー制限 (p. 98)」を参照し
てください。
ヘッダー制限
Lambda@Edge には、ブラックリストに記載されているヘッダーや読み取り専用ヘッダーなど、認識
しておく必要があるいくつかのヘッダー制限があります。
ブラックリストに記載されているヘッダー
特定のヘッダーは公開されず、Lambda@Edge 関数で追加することはできません。ブラックリストに
記載されているヘッダーを追加すると、CloudFront の検証に失敗し、ユーザーに対して HTTP 502 エ
ラーが発生します。
これらのヘッダーには以下が含まれます。
API Version 2016-09-29
98
Amazon CloudFront 開発者ガイド
読み取り専用ヘッダー
• X-Amz-Meta-* を除き、X-Amz-* で始まるヘッダー
• X-Amzn-* で始まるヘッダー
• X-Edge-* で始まるヘッダー
• X-Cache
• X-Accel-Redirect
• X-Accel-Limit-Rate
• X-Accel-Buffering
• X-Accel-Charset
• Proxy-Authenticate
• Proxy-Authorization
• Proxy-Connection
• Trailer
• X-Real-IP
• X-Forwarded-Proto
• CloudFront-Forwarded-Proto
• CloudFront-Is-Mobile-Viewer
• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Tablet-Viewer
• CloudFront-Viewer-Country
• Expect
読み取り専用ヘッダー
読み取り専用ヘッダーは読み取ることができますが、編集することはできません。CloudFront キャッ
シュロジックへの入力として使用でき、Lambda 関数で読み取ることができますが、値を変更するこ
とはできません。読み取り専用ヘッダーを追加または編集すると、CloudFront 検証に失敗し、ユー
ザーに対する HTTP 502 エラーになります。
CloudFront 閲覧者リクエストイベントの読み取り専用ヘッ
ダー
• Content-Length
• ホスト
• Via
• Transfer-Encoding
• アップグレード
• 警告
• 接続
• Retry-After
• Accept-Encoding
CloudFront オリジンリクエストイベントの読み取り専用ヘッ
ダー
• Content-Length
• Via
API Version 2016-09-29
99
Amazon CloudFront 開発者ガイド
読み取り専用ヘッダー
• 範囲
• If-Modified-Since
• If-UnModified-Since
• If-None-Match
• If-Range
• Transfer-Encoding
• アップグレード
• 警告
• 接続
• Retry-After
• Accept-Encoding
• ヘッダー制限 (p. 98)
CloudFront オリジンレスポンスイベントの読み取り専用ヘッ
ダー
• Content-Length
• Via
• Transfer-Encoding
• アップグレード
• 警告
• 接続
• Retry-After
• Content-Encoding
CloudFront 閲覧者レスポンスイベントの読み取り専用ヘッ
ダー
• Content-Length
• Via
• Transfer-Encoding
• アップグレード
• 警告
• 接続
• Retry-After
• Content-Encoding
制限されたヘッダー
制限されたヘッダーをオリジンに転送するよう CloudFront ディストリビューションが設定されている
場合のみ、CloudFront オリジンリクエストイベントで、制限されたヘッダーを追加または編集できま
す。CloudFront ディストリビューションが、制限されたヘッダーを転送するよう設定されていない場
合にヘッダーを追加または変更すると、CloudFront の検証に失敗し、ユーザーに対して HTTP 502 エ
ラーが発生します。
制限されたヘッダー:
API Version 2016-09-29
100
Amazon CloudFront 開発者ガイド
関数の例
• Accept
• Accept-Charset
• Accept-Language
• 承認
• Referer
• TE
関数の例
例: A/B テスト
A/B テストの目的に関するクライアントの分類に基づき、異なるコンテンツを提供します。
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
if (request.uri !== '/experiment-pixel.jpg') {
// do not process if this is not an A-B test request
callback(null, request);
}
const experimentCookieName = 'X-Experiment-Name=';
const groupA = 'A';
const groupB = 'B';
const groupAObject = '/experiment-group/control-pixel.jpg';
const groupBObject = '/experiment-group/treatment-pixel.jpg';
/*
* Lambda at the Edge headers are array objects.
* Client may send multiple Cookie headers, i.e.:
* > GET /viewerRes/test HTTP/1.1
* > User-Agent: curl/7.18.1 (x86_64-unknown-linux-gnu) libcurl/7.18.1
OpenSSL/1.0.1u zlib/1.2.3
* > Cookie: First=1; Second=2
* > Cookie: ClientCode=abc
* > Host: example.com
* You can access the first Cookie line by
*
headers["Cookie"][0]
* and the second by
*
headers["Cookie"][1]
*
headers["Cookie"][0] will return "First=1; Second=2", cookie tokens
are not parsed
* separately.
*/
if (headers.Cookie !== undefined) {
for (let i = 0; i < headers.Cookie.length; i++) {
const experimentIndex =
headers.Cookie[i].indexOf(experimentCookieName);
if (experimentIndex > 0) {
if (headers.Cookie[i][experimentIndex +
experimentCookieName.length] === groupA) {
API Version 2016-09-29
101
Amazon CloudFront 開発者ガイド
関数の例
request.uri = groupAObject;
callback(null, request);
}
if (headers.Cookie[i][experimentIndex +
experimentCookieName.length] === groupB) {
request.uri = groupBObject;
callback(null, request);
}
}
}
}
/*
* This is the first time the viewer is
* requesting this, so randomly distribute them
*/
if (Math.random() < 0.75) {
// 75% of the viewers go to group A.
request.uri = groupAObject;
} else {
request.uri = groupBObject;
}
callback(null, event.Records[0].cf.request);
};
例: レスポンスのヘッダーのオーバーライド
別のヘッダーから提供される値に基づいて、レスポンスの既存のヘッダーを追加または変更したい場
合があります。
'use strict';
exports.handler = (event, context, callback) => {
const headers = event.Records[0].cf.response.headers;
const customHeaderName = 'X-Amz-Meta-Last-Modified';
const headerNameToBeChanged = 'Last-Modified';
if (headers[customHeaderName] !== undefined) {
headers[headerNameToBeChanged] = headers[customHeaderName];
}
callback(null, event.Records[0].cf.response);
};
}
API Version 2016-09-29
102
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションの機能
RTMP ディストリビューションの使
用
トピック
• RTMP ディストリビューションの機能 (p. 103)
• RTMP を使用するストリーミングメディアファイルのタスクリスト (p. 105)
• CloudFront コンソールを使用した RTMP ディストリビューションの作成 (p. 106)
• RTMP ディストリビューションを作成または更新する場合に指定する値 (p. 107)
• RTMP ディストリビューションを作成または更新する場合に CloudFront がコンソールに表示する
値 (p. 112)
• メディアプレーヤーを構成する (p. 113)
• RTMP ディストリビューションのオリジンとして Amazon S3 バケットを使用する (p. 114)
• 1 つのオリジンサーバーに対して複数の RTMP ディストリビューションを作成する (p. 114)
• Crossdomain.xml を使用してアクセスを制限する (p. 115)
• RTMP ディストリビューションのエラーコード (p. 115)
• RTMP ディストリビューションをトラブルシューティングする (p. 115)
このセクションでは、RTMP ディストリビューションを構成して管理する方法について説明しま
す。RTMP ディストリビューションを作成する方法については、「RTMP を使用するストリーミング
メディアファイルのタスクリスト (p. 105)」を参照してください。
RTMP ディストリビューションの機能
CloudFront を使用してメディアファイルのストリーミングを行うには、2 種類のファイルをエンド
ユーザーに提供します。
• メディアファイル
API Version 2016-09-29
103
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションの機能
• メディアプレーヤー(例: JW Player、Flowplayer、Adobe Flash)
エンドユーザーは、メディアファイルを、そのメディアファイル用に提供されたメディアプレーヤー
を使用して視聴します。エンドユーザーは、自分のコンピューターまたは他のデバイスにすでにイン
ストールされているメディアプレーヤー(ある場合)を使用しません。
エンドユーザーがメディアファイルのストリーミングを実行すると、メディアプレーヤー
は、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 2016-09-29
104
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 を使用したストリーミングの概要」を参照し
てください。概要には、サポートされるコーデックやコンテナに関する情報が含まれます。
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. 376)
• CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミン
グ (p. 381)
• CloudFront および JW Player を使用したオンデマンドビデオストリーミング (p. 386)
RTMP を使用するストリーミングメディアファイ
ルのタスクリスト
このセクションは、メディアプレーヤーで Adobe RTMP プロトコルを使用してオンデマンドストリー
ミングを構成するための一般的なプロセスをまとめたものです。メディアプレーヤーとして Adobe
Flash Player、Flowplayer、または JW Player を使用している場合は、代わりに、該当するチュートリ
アルを参照してください。
• CloudFront および Adobe Flash Player を使用したオンデマンドビデオストリーミング (p. 376)
• CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミン
グ (p. 381)
• CloudFront および JW Player を使用したオンデマンドビデオストリーミング (p. 386)
以下のタスクリストでは、ウェブディストリビューションの作成処理の概要について説明します。
API Version 2016-09-29
105
Amazon CloudFront 開発者ガイド
CloudFront コンソールを使用した
RTMP ディストリビューションの作成
RTMP ディストリビューションを作成するには
1.
メディアファイル用の Amazon S3 バケットを作成します。メディアプレーヤー用に別の
Amazon S3 バケットを使用している場合、そのメディアプレーヤーファイル用の Amazon S3 バ
ケットも作成します。
バケット名をすべて小文字にする必要があります。また、バケット名にスペースを含めることは
できません。
2.
メディアファイルを再生するメディアプレーヤーを選択して構成します。詳細については、メ
ディアプレーヤーに関するドキュメントを参照してください。
3.
CloudFront がファイルを取得するオリジンに、メディアプレーヤー用のファイルをアップロー
ドします。メディアプレーヤーのオリジンとして Amazon S3 バケットを使用している場合は、
ファイル(バケットではない)をパブリックに読み出し可能にします。
4.
メディアプレーヤー用のウェブディストリビューションを作成します。(既存のディストリ
ビューションを使用することもできます)。詳細については、「ウェブディストリビューション
を作成するためのタスクリスト (p. 62)」を参照してください。
5.
メディアプレーヤー用に作成した Amazon S3 バケットにメディアファイルをアップロードし、
コンテンツ(バケットではない)をパブリックに読み出し可能にします。
Important
Flash Video コンテナ内のメディアファイルには .flv ファイル名拡張子が含まれている必
要があります。含まれていない場合、メディアのストリーミングが行われません。
メディアプレーヤーファイルとメディアファイルは、同じバケットに配置できます。
6.
メディアファイル用の RTMP ディストリビューションを作成します。
• CloudFront コンソールを使用してウェブディストリビューションを作成する方法については、
「CloudFront コンソールを使用した RTMP ディストリビューションの作成 (p. 106)」を参照
してください。
• CloudFront API を使用してウェブディストリビューションを作成する方法については、
「Amazon CloudFront API リファレンス」の「POST Streaming Distribution」を参照してくだ
さい。
7.
メディアプレーヤーを構成します。詳細については、「メディアプレーヤーを構成す
る (p. 113)」を参照してください。
再生するコンテンツの取得に問題がある場合は、「RTMP ディストリビューションをトラブルシュー
ティングする (p. 115)」を参照してください。
CloudFront コンソールを使用した RTMP ディス
トリビューションの作成
以下の手順では、CloudFront コンソールを使用して RTMP ディストリビューションを作成する方
法を説明します。CloudFront API, を使用して RTMP ディストリビューションを作成する場合は、
「Amazon CloudFront API リファレンス」の「POST Streaming Distribution」を参照してください。
AWS アカウントごとに作成できる RTMP ディストリビューションの数に関する現在の制限について
は、『アマゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照して
ください。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/
create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照して
ください。
API Version 2016-09-29
106
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションを作
成または更新する場合に指定する値
CloudFront コンソールを使用して RTMP ディストリビューションを作成するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
[Create Distribution] をクリックします。
3.
[Create Distribution Wizard] の最初のページで、[RTMP] セクションの [Get Started] を選択しま
す。
4.
ディストリビューションの設定項目を指定します。詳細については、「RTMP ディストリビュー
ションを作成または更新する場合に指定する値 (p. 107)」を参照してください。
5.
[Create Distribution] をクリックします。
6.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。配信を有効にするよう選択すると、リクエスト
の処理を行えるようになります。この所要時間は 15 分以内となります。
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [General]
タブにも表示されます。
RTMP ディストリビューションを作成または更新
する場合に指定する値
CloudFront を使用してメディアファイルのストリーミングを行うには、RTMP ディストリビューショ
ンを作成し、以下の値を指定します。
トピック
• オリジンドメイン名(Amazon S3 バケット) (p. 107)
• バケットアクセスの制限(Amazon S3 のみ) (p. 108)
• オリジンアクセスアイデンティティ(Amazon S3 のみ) (p. 108)
• 新しいアイデンティティに関するコメント(Amazon S3 のみ) (p. 109)
• アイデンティティ(Amazon S3 のみ) (p. 109)
• バケットに読み取り許可を付与する(Amazon S3 のみ) (p. 109)
• 価格クラス (p. 109)
• 代替ドメイン名(CNAME) (p. 109)
• ログ記録 (p. 110)
• ログ用のバケット (p. 110)
• ログのプレフィックス (p. 110)
• コメント (p. 110)
• ディストリビューションの状態 (p. 110)
• ビューアのアクセス制限(署名付き URL の使用) (p. 111)
• 信頼された署名者 (p. 111)
• AWS アカウント番号 (p. 111)
オリジンドメイン名(Amazon S3 バケット)
CloudFront がこのオリジンのオブジェクトの取得先としている Amazon S3 バケットの DNS ドメイ
ン名(例: myawsbucket.s3.amazonaws.com)。CloudFront コンソールで [Origin Domain Name]
フィールドをクリックすると、現在の AWS アカウントに関連付けられた Amazon S3 バケットの一覧
API Version 2016-09-29
107
Amazon CloudFront 開発者ガイド
バケットアクセスの制限(Amazon S3 のみ)
が表示されます。異なる AWS アカウントからのバケットを使用するには、バケットのドメイン名を
次の形式で入力します。
bucket-name.s3.amazonaws.com
バケットが米国スタンダードリージョンにあり、Amazon S3 がバージニア北部の施設にリクエストを
ルーティングするように設定する場合は、次の形式を使用します。
bucket-name.s3-external-1.amazonaws.com
バケットに Amazon S3 Transfer Acceleration を設定した場合、[Origin Domain Name] に s3accelerate エンドポイントを指定しないでください。
CloudFront のオリジンアクセスアイデンティティを使用して Amazon S3 内のコンテンツを保護しな
い限り、ファイルをパブリックに読み出し可能とする必要があります。詳細については、「オリジン
アクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 190)」を
参照してください。
Important
バケット名は DNS 命名要件に準拠する必要があります。詳細については、「Amazon Simple
Storage Service 開発者ガイド」の「バケットの制約と制限」を参照してください。
CloudFront が現在のオリジンのオブジェクトの取得先としているバケットが変更される
と、CloudFront は CloudFront エッジロケーションに対する変更の複製を直ちに開始しま
す。CloudFront は、該当のエッジロケーションでディストリビューション構成が更新されるまで、引
き続き、リクエストを以前の Amazon S3 バケットに転送します。該当のエッジロケーションでディ
ストリビューション構成が更新されると、CloudFront は新しい Amazon S3 バケットへのリクエスト
の転送を直ちに開始します。
バケットを変更しても、CloudFront が、新しいオリジンからのオブジェクトでエッジキャッシュを
再生成する必要はありません。アプリケーション内でビューアのリクエストが変更されていない限
り、各オブジェクトの TTL の有効期限が切れるか、要求頻度の低いオブジェクトが削除されるま
で、CloudFront は、引き続き、エッジキャッシュにすでに保持されているオブジェクトを供給しま
す。
詳細については、「RTMP ディストリビューションのオリジンとして Amazon S3 バケットを使用す
る (p. 114)」を参照してください。
バケットアクセスの制限(Amazon S3 のみ)
Amazon S3 URL ではなく CloudFront URL のみを使用して Amazon S3 バケット内のオブジェクトに
アクセスするようエンドユーザーに要求する場合は、[Yes] をクリックします。次に、適用可能な値を
指定します。
エンドユーザーが CloudFront URL または Amazon S3 URL を使用してオブジェクトにアクセスでき
るようにするには、[No] をクリックします。
詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアク
セスを制限する (p. 190)」を参照してください。
オリジンアクセスアイデンティティ(Amazon S3
のみ)
[Restrict Bucket Access] で [Yes] を選択した場合、新しいオリジンアクセスアイデンティティを作
成するか、AWS アカウントに関連付けられた既存のオリジンアクセスアイデンティティを使用す
るかを選択します。オリジンアクセスアイデンティティがすでにある場合は、それを再利用し、メ
API Version 2016-09-29
108
Amazon CloudFront 開発者ガイド
新しいアイデンティティに関す
るコメント(Amazon S3 のみ)
ンテナンスを簡素化することをお勧めします。オリジンアクセスアイデンティティの詳細について
は、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限す
る (p. 190)」を参照してください。
新しいアイデンティティに関するコメント
(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. 193)」を参照してください。
許可を手動で更新する場合、たとえば、バケットの許可を更新する代わりにオブジェクトに対する
ACL を更新する場合は、[No, I will Update Permissions] をクリックします。
価格クラス
CloudFront サービスに支払う上限価格に対応する価格クラス。デフォルトでは、CloudFront は、すべ
ての CloudFront リージョンのエッジロケーションからオブジェクトを供給します。
価格クラスの詳細、および選択した価格クラスがディストリビューションの CloudFront パフォー
マンスに与える影響の詳細については、「CloudFront ディストリビューションの価格クラスを
選択する (p. 58)」を参照してください。価格クラスと CloudFront リージョンのマッピングを含
め、CloudFront 料金表の詳細については、「Amazon CloudFront 料金表」を参照してください。
代替ドメイン名(CNAME)
オプション。1 つ以上の CNAME エイリアスをディストリビューションに関連付けることができま
す。これにより、ディストリビューションの作成時に CloudFront によって割り当てられたドメイン名
API Version 2016-09-29
109
Amazon CloudFront 開発者ガイド
ログ記録
を使用する代わりに、お客様のドメイン名(例: example.com)をオブジェクトの URL 内で使用でき
ます。詳細については、「代替ドメイン名(CNAME)を使用する (p. 53)」を参照してください。
ログ記録
CloudFront がオブジェクトに対する各リクエストの情報をログに記録し、ログファイルを Amazon
S3 バケットに保存するかどうか。ログ作成はいつでも有効または無効にできます。ログ作成を有効
にしても追加料金はかかりませんが、Amazon S3 バケットにおけるファイルの保存とファイルへの
アクセスについては通常の Amazon S3 料金が発生します。ログの削除はいつでも行うことができま
す。CloudFront アクセスログの詳細については、「アクセスログ (p. 289)」を参照してください。
ログ用のバケット
[Logging] で [On] を選択した場合に、CloudFront がアクセスログを保存する Amazon S3 バケット
(例: myawslogbucket.s3.amazonaws.com)。ログ作成を有効にした場合、CloudFront はオブ
ジェクトに対する各エンドユーザーリクエストの情報を記録し、ファイルを、指定された Amazon S3
バケットに保存します。ログ作成はいつでも有効または無効にできます。CloudFront アクセスログの
詳細については、「アクセスログ (p. 289)」を参照してください。
Note
Amazon S3 バケット ACL を取得して更新するための権限が必要です。また、バケットの S3
ACL から FULL_CONTROL が付与される必要があります。これによって、CloudFront から
awsdatafeeds アカウントに、バケットにログファイルを保存するための権限が付与されま
す。詳細については、「ロギングの設定およびログファイルへのアクセスに必要なアクセス
許可 (p. 291)」を参照してください。
ログのプレフィックス
オプション。[Logging] で [On] を選択した場合、このディストリビューションのアクセスログファイ
ル名の先頭に CloudFront が追加する文字列(ある場合)を指定します(例: exampleprefix/)。末
尾のスラッシュ(/)はオプションですが、ログファイルの参照を容易にするためにこれを使用するこ
とをお勧めします。CloudFront アクセスログの詳細については、「アクセスログ (p. 289)」を参照
してください。
コメント
オプション。ディストリビューションを作成するときに、最大で 128 文字のコメントを含めることが
できます。コメントの更新はいつでも行うことができます。
ディストリビューションの状態
ディストリビューションを作成する場合、作成後にディストリビューションを有効または無効のどち
らにするかを指定する必要があります。
• Enabled: ディストリビューションが完全にデプロイされた後、ディストリビューションのドメイ
ン名を使用するリンクをデプロイでき、エンドユーザーがコンテンツを取り込むことができます。
ディストリビューションを有効にすると、そのディストリビューションに関連付けられたドメイン
名を使用するコンテンツへのエンドユーザーリクエストを CloudFront は受け付けて処理することが
できます。
CloudFront ディストリビューションの作成、変更、削除を行った場合、その変更が CloudFront
データベースに伝達されるまで時間がかかります。変更直後に出したディストリビューションに関
する情報のリクエストには、変更が反映されていない可能性があります。通常、伝達は数分以内で
API Version 2016-09-29
110
Amazon CloudFront 開発者ガイド
ビューアのアクセス制限(署名付き URL の使用)
完了しますが、システムの高負荷またはネットワークパーティションによっては、それより時間が
かかる可能性があります。
• Disabled: ディストリビューションがデプロイされ、その使用準備ができていても、エンドユーザー
はディストリビューションを使用できません。ディストリビューションを無効にすると、そのディ
ストリビューションに関連付けられたドメイン名を使用するコンテンツへのエンドユーザーリクエ
ストを CloudFront は受け付けません。(ディストリビューションの構成を更新することで)ディス
トリビューションを無効から有効に切り替えるまで、誰もディストリビューションを使用できませ
ん。
ディストリビューションの無効と有効は何度でも切り替えることができます。ディストリビューショ
ンの構成の更新方法については、「CloudFront ディストリビューションの一覧表示、詳細表示、およ
び更新を行う (p. 52)」を参照してください。
ビューアのアクセス制限(署名付き URL の使用)
このディストリビューションによって供給されるオブジェクトへのリクエストでパブリック URL が使
用される場合、[No] をクリックします。リクエストで署名付き URL を使用する場合、[Yes] をクリッ
クします。次に、署名付き URL の作成に使用する AWS アカウントを指定します。このアカウントは
信頼された署名者として知られています。
信頼された署名者の詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作
成が可能な AWS アカウントの指定 (p. 196)」を参照してください。
信頼された署名者
このディストリビューションの信頼された署名者として使用する AWS アカウントを選択します。
• Self: 信頼されたアカウントとして AWS マネジメントコンソール へのサインインに現在使用してい
るアカウントを使用します。現在、IAM ユーザーとしてサインインしている場合は、関連付けられ
た AWS アカウントを、信頼された署名者として追加します。
• Specify Accounts: 信頼された署名者のアカウント番号を [AWS Account Numbers] フィールドに入
力します。
署名付き URL を作成するには、AWS アカウント番号に少なくとも 1 つのアクティブな CloudFront
キーペアが必要です。
Caution
コンテンツの配信ですでに使用されているディストリビューションを更新する場合は、オブ
ジェクトの署名付き URL の生成を開始する準備ができたときにのみ、信頼された署名者を追
加します。信頼された署名者がディストリビューションに追加されると、ユーザーは、この
ディストリビューションで供給されるオブジェクトへのアクセスに、署名付き URL を使用す
る必要があります。
AWS アカウント番号
現在のアカウントに加えて、または現在のアカウントの代わりに、AWS アカウントを使用して署名付
き URL を作成する場合、このフィールドの行ごとに 1 つの AWS アカウント番号を入力します。次の
点に注意してください。
• 指定するアカウントに少なくとも 1 つのアクティブな CloudFront キーペアが必要です。詳細につい
ては、「信頼された署名者の CloudFront キーペアを作成する (p. 197)」を参照してください。
• IAM ユーザーの CloudFront キーペアを作成できないため、信頼された署名者として IAM ユーザー
を使用することはできません。
API Version 2016-09-29
111
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションを作成または更新
する場合に CloudFront がコンソールに表示する値
• アカウントの AWS アカウント番号を取得する方法については、「セキュリティ認証情報の取得方
法」(『アマゾン ウェブ サービス全般のリファレンス』)を参照してください。
• 現在のアカウントのアカウント番号を入力した場合、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. 110)」を参照
してください。
最終更新日時
ディストリビューションが最後に変更された日時。ISO 8601 形式が使用されます(例:
2012-05-19T19:37:58Z)。詳細については、http://www.w3.org/TR/NOTE-datetime を参照してくださ
い。
ドメイン名
オブジェクトへのリンクには、代替ドメイン名(CNAME)を使用しない限り、ディストリ
ビューションのドメイン名を使用します。たとえば、ディストリビューションのドメイン名が
d111111abcdef8.cloudfront.net の場合、例の /images/image.jpg ファイルへのリンク
API Version 2016-09-29
112
Amazon CloudFront 開発者ガイド
メディアプレーヤーを構成する
は http://d111111abcdef8.cloudfront.net/images/image.jpg になります。ディストリ
ビューションの CloudFront ドメイン名を変更することはできません。オブジェクトへのリンクの
CloudFront URL の詳細については、「CloudFront オブジェクトの URL の形式 (p. 117)」を参照し
てください。
1 つ以上の代替ドメイン名(CNAME)を指定した場合、オブジェクトへのリンクに、CloudFront ド
メイン名ではなく独自のドメイン名を使用できます。CNAME の詳細については、「代替ドメイン名
(CNAME) (p. 81)」を参照してください。
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」ページにアクセ
スします。
MPEG ファイル
MP3 オーディオファイルまたは H.264/MPEG-4 ビデオファイルを供給するには、ファイル名の先頭
にプレフィックス mp3: または mp4: を追加することが必要になる場合があります。メディアプレー
ヤーによっては、プレフィックスを自動で追加するように構成できます。メディアプレーヤーは、
ファイル拡張子のないファイル名の指定を要求する場合もあります(例: magicvideo.mp4 ではなく
magicvideo)。
API Version 2016-09-29
113
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションのオリジ
ンとして Amazon S3 バケットを使用する
RTMP ディストリビューションのオリジンとして
Amazon S3 バケットを使用する
ディストリビューションを作成するときに、CloudFront がエッジロケーションに配信するファイルを
どこで取得するかを指定します。RTMP ディストリビューションの場合、Amazon S3 バケットを使
用する必要があります。カスタムオリジンはサポートされません。オブジェクトをバケットに挿入す
るには、Amazon S3 でサポートされる任意の方法を使用できます(例: Amazon S3 API、サードパー
ティツール)。他の Amazon S3 バケットと同様に、バケット内に階層を作成できます。バケットへ
のオブジェクトの保存には、通常の Amazon S3 料金が発生します。CloudFront の使用料の詳細につ
いては、「CloudFront レポート (p. 16)」を参照してください。
既存の Amazon S3 バケットを CloudFront オリジンサーバーとして使用してもバケットに変更は一
切ありません。Amazon S3 オブジェクトの保存やアクセスで通常使用しているとおりに(通常の
Amazon S3 価格で)バケットを使用できます。
RTMP ディストリビューションとウェブディストリビューションに同じ Amazon S3 バケットを使用
できます。
Note
RTMP ディストリビューションを作成した後で、そのオリジンサーバーを変更することはで
きません。RTMP ディストリビューションの Amazon S3 バケットを変更する必要がある場合
は、新しいバケットを使用する新しいディストリビューションを作成し、新しいディストリ
ビューションのドメイン名を使用するようにリンクまたは DNS レコードを更新する必要があ
ります。その後、オリジナルのディストリビューションを削除できます。詳細については、
「ディストリビューションを削除する (p. 53)」を参照してください。
CloudFront がオブジェクトの取得先としている Amazon S3 バケットの名前をお客様が指定する場
合、一般に次の形式を使用します。
bucket-name.s3.amazonaws.com
バケットが米国スタンダードリージョンにあり、Amazon S3 がバージニア北部の施設にリクエストを
ルーティングするように設定する場合は、次の形式を使用します。
bucket-name.s3-external-1.amazonaws.com
以下の値を使用してバケットの名前を指定しないでください。
• Amazon S3 のパススタイル(s3.amazonaws.com/bucket-name)
• Amazon S3 の CNAME(ある場合)
Important
バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったものでな
ければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」の
「バケットの制約と制限」を参照してください。
1 つのオリジンサーバーに対して複数の RTMP
ディストリビューションを作成する
通常、Amazon S3 バケットごとに 1 つの RTMP ディストリビューションを作成しますが、同じ
バケットに対して複数の RTMP ディストリビューションを作成するように選択できます。たとえ
API Version 2016-09-29
114
Amazon CloudFront 開発者ガイド
Crossdomain.xml を使用してアクセスを制限する
ば、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 ディストリビューションをトラブルシュー
ティングする
メディアファイルの再生に問題がある場合、以下の項目を確認してください。
確認項目
説明
メディアプレーヤー
ファイル用のディス
トリビューションと
メディアファイル用の
ディストリビューショ
ンを分けます。
メディアプレーヤーは通常の HTTP ディストリビューションによって供給
される必要があり(例: ドメイン名 d111111abcdef8.cloudfront.net)、メ
ディアファイルは RTMP ディストリビューションによって供給される必
要があります(例: ドメイン名 s5c39gqb8ow64r.cloudfront.net)。この 2
つに対して同じディストリビューションを使用していないことを確認しま
す。
ファイルパス内の /
cfx/st
ファイルのパスに /cfx/st が含まれていることを確認します。Amazon
S3 バケット内のオブジェクトへのパスに、/cfx/st を含める必要はあり
ません。詳細については、「メディアプレーヤーを構成する (p. 113)」
を参照してください。
API Version 2016-09-29
115
Amazon CloudFront 開発者ガイド
RTMP ディストリビューション
をトラブルシューティングする
確認項目
説明
ファイルパス内のファ
イル名
一部のメディアプレーヤーでは、ファイルパス内のファイル名の前に拡張
子(たとえば、mp4:)を指定する必要があります。また一部のメディア
プレーヤーでは、ファイルパスから拡張子(たとえば、.mp4)を削除す
る必要もあります。詳細については、「MPEG ファイル (p. 113)」を参
照してください。
Note
Amazon S3 バケット内のメディアファイルの名前は必ず、該当す
るファイル名拡張子を含む必要があります。
ファイアウォールの
ポート 1935
Adobe Flash Media Server は、RTMP 用にポート 1935 を使用します。
ファイアウォールでこのポートが開かれていることを確認します。開かれ
ていない場合、"ビデオを再生できない" ことを示す一般的なメッセージが
返されます。ポート 80 を使用して HTTP でトンネルするように、RTMPT
に切り替えることもできます。
Adobe Flash Player
メッセージング
デフォルトでは、Adobe Flash Player は、再生しようとしているビデオ
ファイルがない場合にメッセージを表示しません。代わりに、ファイルが
現れるまで待機します。エンドユーザーの操作性を高めるには、この動作
の変更が必要になる場合があります。
ビデオがない場合にプレーヤーからメッセージを送信するに
は、play("vid") の代わりに play("vid",0,-1) を使用します。
API Version 2016-09-29
116
Amazon CloudFront 開発者ガイド
CloudFront オブジェクトの URL の形式
オブジェクトの使用
トピック
• CloudFront オブジェクトの URL の形式 (p. 117)
• CloudFront が HTTP および HTTPS リクエストを処理する方法 (p. 120)
• CloudFront エッジキャッシュから提供されるリクエストの比率の向上 (p. 120)
• クエリ文字列パラメーターに基づいてキャッシュするように CloudFront を設定する (p. 123)
• Cookie に基づいてオブジェクトをキャッシュするように CloudFront を設定する (p. 126)
• リクエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 128)
• カスタムヘッダーをオリジン(ウェブディストリビューションのみ)へ転送する (p. 132)
• ディストリビューション内のオブジェクトの追加、削除、または置換 (p. 135)
• エラーレスポンスのカスタマイズ (p. 149)
• CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 (p. 154)
• デフォルトルートオブジェクトの指定(ウェブディストリビューションのみ) (p. 155)
• 圧縮ファイルの供給 (p. 157)
このセクションでは、CloudFront でオブジェクトを使用する方法について説明します。
CloudFront オブジェクトの URL の形式
トピック
• Amazon S3 内のオブジェクトのパブリック URL の形式 (p. 118)
• カスタムオリジン内のオブジェクトのパブリック URL の形式 (p. 119)
• パブリック URL がディレクトリの無効化に与える影響 (p. 119)
• 署名付き URL の形式 (p. 120)
ディストリビューションを作成すると、そのディストリビューションに関連付けられた CloudFront ド
メイン名を受け取ります。オブジェクトへのリンクを作成する場合にこのドメイン名を使用します。
別のドメイン名(例: www.example.com)があり、それを使用する場合は、CNAME エイリアスを追
加できます。詳細については、「代替ドメイン名(CNAME)を使用する (p. 53)」を参照してくださ
い。
API Version 2016-09-29
117
Amazon CloudFront 開発者ガイド
Amazon S3 内のオブジェクトのパブリック URL の形式
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. 73)」を参照し
てください。署名付き URL の詳細については、「CloudFront を使用してプライベートコンテンツを
供給する (p. 186)」を参照してください。
Amazon S3 内のオブジェクトのパブリック URL の
形式
Amazon S3 バケット内のオブジェクトのパブリック URL では、以下の形式が使用されます。
http://<CloudFront domain name>/<object name in Amazon S3 bucket>
Important
ディストリビューションでストリーミングコンテンツを供給する場合は、ファイルへの
パスに追加の文字が必要になります。詳細については、「メディアプレーヤーを構成す
る (p. 113)」を参照してください。
たとえば、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 ディストリビューションにおけるオリジンおよび
キャッシュ動作の設定の詳細については、「ウェブディストリビューションを作成または更新する場
合に指定する値 (p. 67)」を参照してください。
API Version 2016-09-29
118
Amazon CloudFront 開発者ガイド
カスタムオリジン内のオブジェ
クトのパブリック URL の形式
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. 67)」を参照して
ください。
パブリック URL がディレクトリの無効化に与える
影響
ディレクトリへのアクセスをエンドユーザーに提供する CloudFront URL を使用する場合、次のよう
に、末尾のスラッシュ(/)を付けるかどうかに関して、同じ URL 形式を常に使用することをお勧め
します。
http://d111111abcdef8.cloudfront.net/images/
http://d111111abcdef8.cloudfront.net/images
ブラウザおよび他のウェブアプリケーションは、この両方の形式を同じディレクトリに解決します。
ただし、CloudFront では、リクエストに表示されるとおりにパブリック URL が保存されます。ディ
レクトリを無効にする場合は、スラッシュを含めるか除いて、まったく同じディレクトリを指定する
必要があります。ディレクトリの指定方法に関して標準がない場合は、スラッシュを付けた形式とス
ラッシュを付けない形式を使用してディレクトリを無効にして、CloudFront がディレクトリをエッジ
ロケーションから削除したことを確認する必要があります。1 か月の無料の無効化回数の上限に達し
た場合、この 2 つのディレクトリのうち 1 つしか存在しない場合でも、お客様は両方の無効化に対し
て料金を支払う必要があります。
API Version 2016-09-29
119
Amazon CloudFront 開発者ガイド
署名付き URL の形式
署名付き URL の形式
署名付き URL を使用すると、エンドユーザーは、プライベートコンテンツを供給するように構成され
たディストリビューション内のオブジェクトにアクセスできます。URL には、キャッシュされたオブ
ジェクトへのアクセスを制限する特別な情報が含まれます。署名付き URL の形式の詳細については、
「CloudFront を使用してプライベートコンテンツを供給する (p. 186)」を参照してください。
CloudFront が HTTP および HTTPS リクエストを
処理する方法
Amazon S3 オリジンの場合、デフォルトでは、CloudFront は、HTTP および HTTPS プロトコ
ルで、CloudFront ディストリビューション内のオブジェクトのリクエストを受け取ります。次
に、CloudFront は、リクエストと同じプロトコルを使用して、リクエストを Amazon S3 バケットに
転送します。
カスタムオリジンでは、ディストリビューションを作成する場合、CloudFront がオリジンにアクセス
する方法を指定できます(HTTP のみか、ビューアが使用しているプロトコルと一致させる)。カス
タムオリジンにおいて CloudFront が HTTP および HTTPS リクエストを処理する方法については、
「プロトコル (p. 177)」を参照してください。
エンドユーザーが HTTPS を使用してのみオブジェクトにアクセスできるようにウェブディストリ
ビューションを制限する方法については、「CloudFront で HTTPS を使用する (p. 254)」を参照して
ください。(このオプションは、RTMP プロトコルを使用する RTMP ディストリビューションには適
用されません)。
Note
HTTPS リクエストの料金は HTTP リクエストの料金よりも高くなります。請求料率の詳細に
ついては、CloudFront 料金表体系を参照してください。
CloudFront エッジキャッシュから提供されるリク
エストの比率の向上
CloudFront を使用する目的の 1 つに、オリジンサーバーが応答するリクエストの数を減らすことがあ
ります。これにより、ユーザーにより近い CloudFront エッジロケーションからより多くのオブジェ
クトが提供されるため、オリジンサーバーに対する負荷が軽減され、レイテンシーも短縮されます。
すべてのリクエストのうち、CloudFront がエッジキャッシュから提供できるリクエストの数が多けれ
ば多いほど(キャッシュヒット率が大きければ大きいほど)、CloudFront がオブジェクトの最新バー
ジョンまたは一意のバージョンを取得するためにオリジンに転送する必要のあるリクエストの数が少
なくなります。
ヒット、ミス、またはエラーであるビューアリクエストの割合は CloudFront コンソールで確認でき
ます。詳細については、Amazon CloudFront 開発者ガイド の「CloudFront キャッシュ統計レポー
ト (p. 17)」を参照してください。
以下のセクションでは、キャッシュヒット率を改善する方法について説明します。
トピック
• CloudFront がオブジェクトをキャッシュする期間の指定 (p. 121)
• クエリ文字列パラメーターに基づくキャッシュ (p. 121)
API Version 2016-09-29
120
Amazon CloudFront 開発者ガイド
CloudFront がオブジェクトをキャッシュする期間の指定
• Cookie 値に基づくキャッシュ (p. 121)
• リクエストヘッダーに基づくキャッシュ (p. 122)
• HTTP を使用したメディアコンテンツの提供 (p. 123)
CloudFront がオブジェクトをキャッシュする期間の
指定
Cache-Control max-age ディレクティブをオブジェクトに追加し、max-age に対して最も長い実
用的な値を指定するようにオリジンを設定することによって、キャッシュヒット率を向上させること
ができます。キャッシュ期間が短ければ短いほど、CloudFront はより頻繁に、オブジェクトが変更さ
れているかどうかを特定し、変更されている場合は最新バージョンを取得するために別のリクエスト
をオリジンに転送します。詳細については、「CloudFront エッジキャッシュにオブジェクトを保持す
る時間の指定(有効期限切れ) (p. 136)」を参照してください。
クエリ文字列パラメーターに基づくキャッシュ
クエリ文字列パラメーターに基づいてキャッシュするように CloudFront を設定する場合、以下を行う
ことでキャッシュを改善できます。
• オリジンが一意のオブジェクトを返すクエリ文字列パラメーターのみを転送するように CloudFront
を設定する。
• 同じパラメーターのすべてのインスタンスで大文字と小文字の区別を統一する。たとえば、1 つの
リクエストに parameter1=A が含まれており、別のリクエストに parameter1=a が含まれている
場合、CloudFront は parameter1=A が含まれているリクエストと parameter1=a が含まれている
リクエストを 2 つの個別のリクエストとしてオリジンに転送します。これが行われると、オブジェ
クトは同一であっても、CloudFront はオリジンから個別に返された対応するオブジェクトを個別に
キャッシュします。A または a のどちらかのみを使用すると、CloudFront がオリジンに転送するリ
クエストが少なくなります。
• パラメーターの順序を統一する。大文字と小文字が区別されることと同じように、あるオブジェク
トに対するリクエストに parameter1=a&parameter2=b というクエリ文字列が含まれており、同
じオブジェクトに対する別のリクエストに parameter2=b&parameter1=a が含まれている場合、
オブジェクトは同一であっても、CloudFront は両方のリクエストをオリジンに転送し、対応するオ
ブジェクトを個別にキャッシュします。パラメーターの順序を統一すると、CloudFront がオリジン
に転送するリクエストが少なくなります。
詳細については、「クエリ文字列パラメーターに基づいてキャッシュするように CloudFront を設定
する (p. 123)」を参照してください。CloudFront がオリジンに転送するクエリ文字列を確認するに
は、CloudFront のアクセスログを有効にし、ログファイルの cs-uri-query 列の値を確認します。
詳細については、「アクセスログ (p. 289)」を参照してください。
Cookie 値に基づくキャッシュ
Cookie 値に基づいてキャッシュするように CloudFront を設定する場合、以下を行うことでキャッ
シュを改善できます。
• すべての Cookie を転送する代わりに特定の Cookie のみを転送するように CloudFront を設定す
る。CloudFront が特定の Cookie をオリジンに転送するように設定すると、オブジェクトはすべて
同一であっても、CloudFront は Cookie の名前と値のすべての組み合わせを転送し、オリジンが返
すオブジェクトを個別にキャッシュします。
たとえば、ビューアがすべてのリクエストに 2 つの Cookie を含め、それぞれの Cookie に使用でき
る値が 3 つあり、Cookie 値のすべての組み合わせが可能であるとします。CloudFront は、各オブ
ジェクトに対して最大 6 つの異なるリクエストをオリジンに転送します。オリジンが 1 つの Cookie
API Version 2016-09-29
121
Amazon CloudFront 開発者ガイド
リクエストヘッダーに基づくキャッシュ
のみに基づいて同じオブジェクトの複数のバージョンを返す場合、CloudFront は必要以上のリクエ
ストをオリジンに転送し、同一オブジェクトの複数のバージョンを不必要にキャッシュします。
• 静的コンテンツと動的コンテンツに対してそれぞれ異なるキャッシュ動作を作成し、動的コンテン
ツの場合にのみ Cookie をオリジンに転送するように CloudFront を設定する。
たとえば、ディストリビューションのキャッシュ動作が 1 つしかなく、このディストリビューショ
ンを .php ファイルなどの動的コンテンツと頻繁に変更されない .css ファイルの両方に使用すると
します。CloudFront は Cookie 値に基づいて個別のバージョンの .css ファイルをキャッシュするた
め、それぞれの CloudFront エッジロケーションがすべての新しい Cookie 値または Cookie 値の組
み合わせに対してリクエストをオリジンに転送します。
Cookie 値に基づいて CloudFront がキャッシュしない、*.css というパスパターンのキャッシュ動作
を作成すると、CloudFront はエッジロケーションが特定の .css ファイルに対して受け取る最初のリ
クエストおよび .css ファイルの有効期限が切れた後の最初のリクエストのみをオリジンに転送しま
す。
• Cookie 値がユーザーごとに一意である(ユーザー ID など)動的コンテンツと、より少ない数の一
意の値に基づいて変化する動的コンテンツに対してそれぞれ異なるキャッシュ動作を作成する(可
能な場合)。
詳細については、「Cookie に基づいてオブジェクトをキャッシュするように CloudFront を設定
する (p. 126)」を参照してください。CloudFront がオリジンに転送する Cookie を確認するに
は、CloudFront のアクセスログを有効にし、ログファイルの cs(Cookie) 列の値を確認します。詳細
については、「アクセスログ (p. 289)」を参照してください。
リクエストヘッダーに基づくキャッシュ
リクエストヘッダーに基づいてキャッシュするように CloudFront を設定する場合、以下を行うことで
キャッシュを改善できます。
• すべてのヘッダーに基づいて転送およびキャッシュする代わりに特定のヘッダーのみに基づいて転
送およびキャッシュするように CloudFront を設定する。特定のヘッダーを指定すると、オブジェク
トはすべて同一であっても、CloudFront はヘッダーの名前と値のすべての組み合わせを転送し、オ
リジンが返すオブジェクトを個別にキャッシュします。
Note
CloudFront は常に以下のトピックで指定されているヘッダーをオリジンに転送します。
• CloudFront がリクエストを処理して Amazon S3 オリジンサーバーに転送する方法 >
CloudFront が削除または更新する HTTP リクエストヘッダー (p. 165)
• CloudFront がリクエストを処理してカスタムオリジンサーバーに転送する方法 > HTTP
リクエストヘッダーと CloudFront の動作 (p. 173)
リクエストヘッダーに基づいてキャッシュするように CloudFront を設定する場合、CloudFront
が転送するヘッダーを変更するのではなく、CloudFront がヘッダー値に基づいてオブジェクトを
キャッシュするかどうかのみを変更します。
• 多数の一意の値を持つリクエストヘッダーに基づいてキャッシュすることを可能な限り回避する。
たとえば、ユーザーのデバイスに基づいてさまざまなサイズのイメージを提供する場合、使用で
きる値が多数ある User-Agent ヘッダーに基づいてキャッシュするように CloudFront を設定し
ないでください。代わりに、CloudFront デバイスタイプヘッダー CloudFront-Is-DesktopViewer、CloudFront-Is-Mobile-Viewer、CloudFront-Is-SmartTV-Viewer、および
CloudFront-Is-Tablet-Viewer に基づいてキャッシュするように CloudFront を設定してくださ
い。さらに、タブレットとデスクトップに同じバージョンのイメージを返す場合は、CloudFrontIs-Desktop-Viewer ヘッダーではなく CloudFront-Is-Tablet-Viewer ヘッダーのみを転送
します。
API Version 2016-09-29
122
Amazon CloudFront 開発者ガイド
HTTP を使用したメディアコンテンツの提供
詳細については、「リクエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront
を設定する (p. 128)」を参照してください。
HTTP を使用したメディアコンテンツの提供
HTTP を使用してメディアコンテンツを配信する場合は、Apple HTTP Dynamic Streaming(Apple
HDS)、Apple HTTP Live Streaming(Apple HLS)、Microsoft Smooth Streaming、MPEG-DASH
などの HTTP ベースの動的ストリーミングプロトコルを使用することを推奨します。動的ストリー
ミングプロトコルを使用すると、ビデオは多数の小さい(通常は数秒の)セグメントに分割されま
す。ユーザーがよくビデオ終了前に視聴を停止する場合(クレジットの表示中にビューアを閉じるな
ど)、CloudFront はビデオのその時点までの小さいセグメントをすべてキャッシュします。ビデオが
単一の大容量ファイルで配信されるプロトコルを使用し、ユーザーがビデオ終了前に視聴を停止する
場合、CloudFront がビデオ全体をキャッシュしない可能性があり、キャッシュしなければ CloudFront
は次回そのビデオのリクエストを受け取ったときに再度オリジンにビデオをリクエストする必要があ
ります。
クエリ文字列パラメーターに基づいてキャッシュ
するように CloudFront を設定する
ウェブアプリケーションによっては、クエリ文字列を使用してオリジンに情報を送信します。クエリ
文字列はウェブリクエストの一部で、? 文字の後に追加されます。この文字列には & 文字で区切られ
たパラメーターを 1 つ以上含めることができます。次の例では、クエリ文字列には 2 つのパラメー
ター(color=red と size=large)が含まれています。
http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large
ウェブディストリビューションの場合、CloudFront がクエリ文字列をオリジンに転送するかどうかを
選択できます。転送する場合、すべてのパラメーターまたは一部のパラメーターのどちらに基づいて
コンテンツをキャッシュするかを選択できます。
たとえば、ウェブサイトが 5 種類の言語で使用でき、ディレクトリ構造とファイル名はウェブサイ
トの5つのバージョンすべてで共通だとします。ユーザーがウェブサイトを表示すると、CloudFront
に転送されるリクエストには、ユーザーが選択した言語に基づく言語によるクエリ文字列が含められ
ます。また、クエリ文字列をオリジンに転送し、言語パラメーターに基づいてキャッシュするよう
CloudFront を設定できます。選択された言語に対応する特定バージョンのページを返すようウェブ
サーバーを設定した場合、CloudFront は、それぞれの言語によるクエリ文字列パラメーターに基づく
各言語のバージョンを個別にキャッシュします。
この例では、ウェブサイトのメインページが main.html で次の 5 つのリクエストが実行される
と、CloudFront は、各言語のクエリ文字列パラメーターをそれぞれの値として main.html を 5 回
キャッシュします。
• http://d111111abcdef8.cloudfront.net/main.html?language=de
• http://d111111abcdef8.cloudfront.net/main.html?language=en
• http://d111111abcdef8.cloudfront.net/main.html?language=es
• http://d111111abcdef8.cloudfront.net/main.html?language=fr
• http://d111111abcdef8.cloudfront.net/main.html?language=jp
次の点に注意してください。
• RTMP ディストリビューションでは、クエリ文字列パラメーターがオリジンに転送されるように
CloudFront を構成することはできません。CloudFront がオリジンサーバーにリクエストを転送する
前に、すべてのクエリ文字列パラメーターが削除されます。
API Version 2016-09-29
123
Amazon CloudFront 開発者ガイド
クエリ文字列の転送とキャッシュの
ためのコンソールおよび API の設定
• 一部の HTTP サーバーはクエリ文字列パラメーターを処理しません。このため、パラメーター値に
基づくオブジェクトの別バージョンを返しません。これらのオリジンについては、クエリ文字列パ
ラメーターをオリジンに返すよう CloudFront を設定している場合、オリジンがすべてのパラメー
ターについて同一バージョンのオブジェクトを CloudFront に返したとしても、CloudFront は引き
続きパラメーター値に基づくキャッシュを実行します。
• クエリ文字列パラメーター間の区切り文字には & 文字を使用する必要があります。別の区切り文字
を使用した場合、キャッシュは、キャッシュ条件として CloudFront で使用するパラメーターと、そ
れらがクエリ文字列に記述される順序の影響を受けます。次の例では、color パラメーターだけに
基づいてキャッシュするよう CloudFront を設定した場合にどのようになるかを示しています。
• 次のリクエストでは、CloudFront は color パラメーターの値に基づいてコンテンツをキャッ
シュしますが、この値を red;size=large と解釈します。
http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red;size=large
• 次のリクエストでは、CloudFront はコンテンツをキャッシュしますが、実行されるキャッシュ
は、クエリ文字列パラメーターに基づくものではありません。これは、color パラメーターに
基づいてキャッシュするよう CloudFront が設定されているものの、CloudFront は次の文字列に
size パラメーター(値は large;color=red)だけしか含まれていないと解釈するためです。
http://d111111abcdef8.cloudfront.net/images/image.jpg?size=large;color=red
次のいずれかを実行するよう CloudFront を設定できます。
• クエリ文字列をオリジンにまったく転送しない。クエリ文字列を転送しない場合、CloudFront はク
エリ文字列パラメーターに基づくキャッシュを実行しません。
• クエリ文字列をオリジンにキャッシュし、クエリ文字列内のすべてのパラメーターに基づいて
キャッシュする。
• クエリ文字列をオリジンにキャッシュし、クエリ文字列内の指定したパラメーターに基づいて
キャッシュする。
詳細については、「キャッシュの最適化 (p. 125)」を参照してください。
トピック
• クエリ文字列の転送とキャッシュのためのコンソールおよび API の設定 (p. 124)
• キャッシュの最適化 (p. 125)
• クエリ文字列パラメーターと CloudFront アクセスログ (p. 126)
クエリ文字列の転送とキャッシュのためのコンソー
ルおよび API の設定
クエリ文字列の転送とキャッシュを CloudFront コンソールで設定するには、「ウェブディストリ
ビューションを作成または更新する場合に指定する値 (p. 67)」の次のセクションを参照してくださ
い。
• クエリ文字列の転送とキャッシュ (p. 79)
• クエリ文字列のホワイトリスト (p. 79)
クエリ文字列の転送とキャッシュを CloudFront の API を使って設定するには、Amazon CloudFront
API リファレンス の「DistributionConfig 複合型」および「DistributionConfigWithTags 複合型」を参
照してください。
• QueryString
• QueryStringCacheKeys
API Version 2016-09-29
124
Amazon CloudFront 開発者ガイド
キャッシュの最適化
キャッシュの最適化
クエリ文字列パラメーターに基づいてキャッシュするよう CloudFront を設定する場合、ここで紹介す
る方法を使って CloudFront によるオリジンへの転送リクエストの数を削減することができます。これ
によりより多くのオブジェクトが CloudFront エッジロケーションから提供されるようになることで、
オリジンサーバーの負荷が軽減され、レイテンシーが短縮されます。
オリジンが返すオブジェクトのバージョンが変わるパラメーターだけに基づいてキャッシュする
CloudFront は、ウェブアプリケーションが CloudFront に転送する各クエリ文字列パラメーター
に対して、すべてのパラメーター値についてオリジンにリクエストを転送し、すべてのパラメー
ター値について異なるバージョンのオブジェクトをキャッシュします。これは、オリジンがパ
ラメーターの値に関係なく常に同じオブジェクトを返す場合も当てはまります。パラメーター
が複数ある場合、リクエスト数とオブジェクトの数は乗算されます。つまり、あるオブジェ
クトにパラメーターが 2 つ含まれていて、それぞれのパラメーターに異なる値が 3 つある場
合、CloudFront がキャッシュするオブジェクトのバージョンは 6 種類になります。この場合、こ
のセクションの別の推奨事項を参照することをお勧めします。
このため、オリジンが返すバージョンが変化するようなクエリ文字列パラメーターだけに基づい
てキャッシュするよう CloudFront を設定し、各パラメーターに基づいてキャッシュするメリッ
トを慎重に検討することをお勧めします。たとえば、ある通販ウェブサイトを運営していて、
ジャケットの写真が色違いで 6 つあり、ジャケットのサイズは 10 種類だとします。また、ジャ
ケットの写真は色違いの 6 色分だけが表示され、サイズ違いの分までは表示されていないもの
とします。この場合にキャッシュを最適化するには、サイズのパラメーターではなく、色のパラ
メーターだけに基づいてキャッシュするよう CloudFront を設定する必要があります。これによ
り、CloudFront がキャッシュからリクエストを処理できる可能性が高くなり、パフォーマンスが
向上し、オリジンの負荷が低下します。
パラメーターの順序を常に統一する
クエリ文字列では、パラメーターの順序が重要になります。次の例は、パラメーターの順序だけ
が異なる同じクエリ文字列です。この場合 CloudFront は、image.jpg に対する 2 つの異なるリク
エストをオリジンに転送し、2 つの異なるバージョンのオブジェクトをキャッシュします。
• http://d111111abcdef8.cloudfront.net/images/
image.jpg?color=red&size=large
• http://d111111abcdef8.cloudfront.net/images/
image.jpg?size=large&color=red
このため、パラメーター名は、常に同じ順序(アルファベット順など)にすることをお勧めしま
す。
パラメーター名とパラメーター値の大文字と小文字を常に統一する
CloudFront は、クエリ文字列パラメーターに基づいてキャッシュを実行する際に、パラメー
ター名とパラメーター値の大文字と小文字の違いを区別します。次の例は、パラメーター名と
パラメーター値の大文字と小文字だけが異なる、同じクエリ文字列です。この場合 CloudFront
は、image.jpg に対する 4 つの異なるリクエストをオリジンに転送し、4 つの異なるバージョンの
オブジェクトをキャッシュします。
• http://d111111abcdef8.cloudfront.net/images/image.jpg?color=red
• http://d111111abcdef8.cloudfront.net/images/image.jpg?color=Red
• http://d111111abcdef8.cloudfront.net/images/image.jpg?Color=red
• http://d111111abcdef8.cloudfront.net/images/image.jpg?Color=Red
このため、パラメーター名とパラメーター値の大文字と小文字を統一する(すべて小文字など)
ことをお勧めします。
署名付き URL と競合するパラメータ名を使わない
署名付き URL を使用してコンテンツへのアクセスを制限している場合(信頼された署名者をディ
ストリビューションに追加した場合)、CloudFront は以下のクエリ文字列パラメーターを削除し
てから URL の残りをオリジンに転送します。
API Version 2016-09-29
125
Amazon CloudFront 開発者ガイド
クエリ文字列パラメーターと CloudFront アクセスログ
• Expires
• Key-Pair-Id
• Policy
• Signature
署名付き URL を使用しており、クエリ文字列をオリジンに転送するように CloudFront を構成
する場合、独自のクエリ文字列パラメーターに Expires、Key-Pair-Id、Policy、または
Signature という名前を付けることはできません。
クエリ文字列パラメーターと CloudFront アクセス
ログ
ウェブディストリビューションと RTMP ディストリビューションでログ作成を有効にした場
合、CloudFront は、クエリ文字列パラメータを含む完全な URL をログに記録します。ウェブディ
ストリビューションでは、クエリ文字列がオリジンに転送されるように CloudFront を構成したか
どうかに関係なく、そのようになります。CloudFront ログ作成の詳細については、「アクセスロ
グ (p. 289)」を参照してください。
Cookie に基づいてオブジェクトをキャッシュす
るように CloudFront を設定する
ウェブディストリビューションの場合、CloudFront で Cookie をオリジンに転送し、ビューアリク
エストの Cookie 値に基づいてオブジェクトの別バージョンをキャッシュするかどうかを選択できま
す。
リアルタイムメッセージングプロトコル (RTMP) ディストリビューションの場合、Cookie を処理する
ように CloudFront を設定することはできません。CloudFront は、オリジンサーバーからのオブジェ
クトを要求する場合、すべての Cookie を削除してからリクエストをオリジンに転送します。オリジ
ンがオブジェクトとともに何らかの Cookie を返した場合、CloudFront は、オブジェクトをビューア
に返す前にその Cookie を削除します。RTMP ディストリビューションでは、CloudFront は Cookie
をエッジキャッシュにキャッシュしません。
Important
Amazon S3 および一部の HTTP サーバーは Cookie を処理しません。Cookie を処理しない
オリジンに Cookie を転送するように CloudFront キャッシュ動作を構成しないでください。
キャッシュ可能性が低下します。つまり、パフォーマンスが低下します。キャッシュ動作の
詳細については、「キャッシュ動作の設定 (p. 73)」を参照してください。
HTTP および HTTPS のウェブディストリビューションでは、CloudFront で Cookie をオリジンに
転送するかどうかを選択できます。RTMP ディストリビューションでは、Cookie を処理するように
CloudFront を構成することはできません。
ウェブディストリビューションの場合、CloudFront のデフォルトでは、エッジロケーションでオ
ブジェクトをキャッシュする際に Cookie が考慮されません。オリジンが 2 つのオブジェクトを返
し、Set-Cookie ヘッダーの値のみが異なる場合、CloudFront は一方のオブジェクトのみをキャッ
シュします。
ビューアリクエストの一部またはすべての Cookie がオリジンに転送されるように CloudFront を設定
できます。CloudFront は、ビューアリクエストの Cookie を使用して、キャッシュ内のオブジェクト
を一意に識別します。たとえば、locations.html に対するリクエストに country Cookie が含ま
API Version 2016-09-29
126
Amazon CloudFront 開発者ガイド
Cookie に基づいてオブジェクトをキャッ
シュするように CloudFront を設定する
れており、その値が uk または fr であるとします。country Cookie の値に基づいてオブジェクトを
キャッシュするように CloudFront を設定すると、CloudFront は locations.html に関するリクエス
トをオリジンに転送し、country Cookie と Cookie 値を含めます。オリジンは locations.html を
返し、CloudFront は country Cookie の値が uk であるリクエスト用に 1 回、値が fr であるリクエ
スト用に 1 回、このオブジェクトをキャッシュします。
Note
オリジンに Cookie を転送するように CloudFront を設定した場合、CloudFront は Cookie の
値に基づいてキャッシュします。これは、オリジンがリクエスト内の Cookie 値を無視し、
(前の例で)同じバージョンの locations.html を CloudFront に常に返す場合にも当ては
まります。結果として、同じオブジェクトのリクエストを CloudFront がオリジンサーバーに
転送する回数が多くなり、パフォーマンスが低下し、オリジンサーバーの負荷が高くなりま
す。特定の Cookie の値に基づいてオリジンサーバーの応答が変わることがない場合は、その
Cookie がオリジンに転送されるように CloudFront を設定しないことをお勧めします。
ウェブディストリビューションの各キャッシュ動作を以下のいずれかを実行するように設定できま
す。
• すべての Cookie をオリジンに転送 – CloudFront は、すべての Cookie を含めて、ビューアリクエス
トをオリジンに転送します。オリジンが応答を返すと、CloudFront は応答と、ビューアリクエスト
内の Cookie および Cookie 値をキャッシュします(ビューアリクエストにない Cookie がオリジン
から返された場合、CloudFront はこれらをキャッシュしません)。CloudFront は、リクエストされ
たオブジェクト、ビューアリクエストになかった Cookie も含めたすべての Cookie および Cookie
値をビューアに返します。
• 指定した Cookie のホワイトリストを転送 – CloudFront は、リクエストをオリジンに転送する前
に、ホワイトリストにないすべての Cookie を削除します。CloudFront は、オリジンからの応答と
共に、指定された Cookie およびその値もキャッシュします(オリジンがホワイトリストに登録さ
れた Cookie と登録されていない Cookie の両方を返した場合、CloudFront はホワイトリストに登録
された Cookie のみをキャッシュします)。また、CloudFront は、指定された Cookie と Cookie 値
を含めて、オブジェクトをビューアに返します。ホワイトリストにない Cookie がオリジンからの
応答に含まれている場合、CloudFront はその Cookie もビューアに返します。
Cookie 名でワイルドカードを指定する方法の詳細については、「ホワイトリスト Cookie(Amazon
EC2 および他のカスタムオリジンのみ) (p. 79)」を参照してください。
キャッシュ動作ごとにホワイトリストに登録できる Cookie 名の数に関する現在の制限について
は、『アマゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront 制限」を参照して
ください。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/
case/create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参
照してください。
• Cookie をオリジンに転送しない – CloudFront は、Cookie 値に基づくオブジェクトのキャッシュを
行いません。また、CloudFront は、オリジンに転送されるリクエストから Cookie ヘッダーを削除
し、ビューアに返される応答から Set-Cookie ヘッダーを削除します。
転送する Cookie を指定するときには、以下に注意してください。
アクセスログ
Cookie をオリジンに転送しないように CloudFront を設定した場合や、指定された Cookie のリス
トのみを転送するように CloudFront を設定した場合でも、リクエストと Cookie をログに記録す
るように CloudFront を設定すると、CloudFront ではすべての Cookie とすべての Cookie 属性が
ログに記録されます。CloudFront ログ作成の詳細については、「アクセスログ (p. 289)」を参
照してください。
大文字と小文字の区別
Cookie 名と値は、大文字と小文字を区別します。たとえば、同じオブジェクトに対する 2 つの
Cookie があり、それらの名前が、大文字小文字が異なる以外は同一の場合、CloudFront はそのオ
ブジェクトを 2 回キャッシュします。
API Version 2016-09-29
127
Amazon CloudFront 開発者ガイド
リクエストヘッダーに基づいてオブジェクトを
キャッシュするように CloudFront を設定する
CloudFront は Cookie をソートする
CloudFront は、リクエストをオリジンに転送する前に、Cookie 名の自然な順序で Cookie を並べ
替えます。
If-Modified-Since と If-None-Match
If-Modified-Since および If-None-Match の条件付きリクエストはサポートされません。
Cookie に基づくキャッシュの一時停止
CloudFront で Cookie と Cookie 属性のキャッシュを一時的に停止するには、CloudFront への応
答に以下のヘッダーを追加するようにオリジンサーバーを設定します。
no-cache="Set-Cookie"
Cookie 名の全体の長さ
CloudFront がオリジンに転送するように設定するすべての Cookie 名の合計バイト数は、次の値
を超えてはなりません。
512 – (the number of cookies that you're forwarding)
たとえば、CloudFront が 10 個の Cookie をオリジンに転送するように設定する場合、10 個の
Cookie 名の合計の長さは 502 バイト(512 - 10)を超えてはなりません。CloudFront がすべての
Cookie をオリジンに転送するように設定する場合、Cookie 名の長さを考慮する必要はありませ
ん。
CloudFront コンソールを使用し、CloudFront で Cookie をオリジンに転送するようにディストリ
ビューションを更新する方法については、「CloudFront ディストリビューションの一覧表示、詳細表
示、および更新を行う (p. 52)」を参照してください。CloudFront API を使用してディストリビュー
ションを更新する方法については、『Amazon CloudFront API リファレンス』の「PUT Distribution
Config」を参照してください。
リクエストヘッダーに基づいてオブジェクトを
キャッシュするように CloudFront を設定する
ウェブディストリビューションの場合、CloudFront で、CloudFront がヘッダーをオリジンに転送し、
ビューアリクエストのヘッダー値に基づいて指定のオブジェクトの別バージョンをキャッシュするか
を選択できます。こうすることで、ユーザーが使っているデバイスの種類やビューアの場所、ビュー
アで使われている言語など、さまざまな条件に基づいてコンテンツの異なるバージョンを提供できま
す。RTMP ディストリビューションの場合、ヘッダー値に基づいてキャッシュするように CloudFront
を設定することはできません。
トピック
• ヘッダーとウェブディストリビューション (p. 128)
• ヘッダーと RTMP ディストリビューション (p. 132)
ヘッダーとウェブディストリビューション
デフォルトで、CloudFront では、エッジロケーションでオブジェクトをキャッシュする際にヘッダー
が考慮されません。オリジンが 2 つのオブジェクトを返し、そのリクエストヘッダーの値のみが異な
る場合、CloudFront はオブジェクトの片方のみをキャッシュします。
ヘッダーをオリジンに転送するように CloudFront を設定できます。その場合、CloudFront は 1 つ以
上のリクエストヘッダーの値に基づいてオブジェクトの複数のバージョンをキャッシュします。た
とえば、logo.jpg のヘッダーオブジェクトがカスタム Product ヘッダーを含み、その値が Acme
または Apex であるとします。Product ヘッダーの値に基づいてオブジェクトをキャッシュする
API Version 2016-09-29
128
Amazon CloudFront 開発者ガイド
ヘッダーとウェブディストリビューション
ように CloudFront を設定すると、CloudFront は logo.jpg に関するリクエストをオリジンに転送
し、Product ヘッダーとヘッダー値を含めます。CloudFront は、Product ヘッダーの値が Acme で
あるリクエスト用に 1 回、値が Apex であるリクエスト用に 1 回、logo.jpg をキャッシュします。
ウェブディストリビューションの各キャッシュ動作を以下のいずれかを実行するように設定できま
す。
• すべてのヘッダーをオリジンに転送する
Important
すべてのヘッダーをオリジンに転送するように CloudFront を設定した場合、CloudFront
はこのキャッシュ動作に関連付けられたオブジェクトをキャッシュしません。その代わり
に、すべてのリクエストをオリジンに送信します。
• 指定したヘッダーのホワイトリストを転送する。CloudFront は、指定されたヘッダーすべての値に
基づいてオブジェクトをキャッシュします。CloudFront は、デフォルトで転送するヘッダーも転送
しますが、指定されたヘッダーの値にのみ基づいてオブジェクトをキャッシュします。
• デフォルトのヘッダーのみを転送する。この設定の場合、CloudFront は、リクエストヘッダーの値
に基づいてオブジェクトをキャッシュすることはしません。
キャッシュ動作ごとにホワイトリストに登録できるヘッダーの数に関する現在の制限については、
『アマゾン ウェブ サービス全般のリファレンス』の「Amazon CloudFront の上限」を参照してく
ださい。制限の引き上げを要求するには、「https://console.aws.amazon.com/support/home#/case/
create?issueType=service-limit-increase&limitType=service-code-cloudfront-distributions」を参照して
ください。
CloudFront コンソールを使用して、CloudFront でヘッダーをオリジンに転送するようにディストリ
ビューションを更新する方法については、「CloudFront ディストリビューションの一覧表示、詳細表
示、および更新を行う (p. 52)」を参照してください。CloudFront API を使用して既存のウェブディス
トリビューションを更新する方法については、『Amazon CloudFront API リファレンス』の「ディス
トリビューション設定の PUT」を参照してください。
トピック
• CloudFront でキャッシュ条件にするヘッダーを選択する (p. 129)
• Cross-Origin Resource Sharing (CORS) 設定を優先するように CloudFront を設定する (p. 130)
• デバイスタイプに基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 131)
• ビューアの言語に基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 131)
• ビューアの場所に基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 131)
• リクエストのプロトコルに基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 131)
• ヘッダーに基づくキャッシュがパフォーマンスに及ぼす影響 (p. 131)
• ヘッダーとヘッダー値の大文字小文字がキャッシュに及ぼす影響 (p. 132)
• CloudFront がビューアに返すヘッダー (p. 132)
CloudFront でキャッシュ条件にするヘッダーを選択する
オリジンに転送できるヘッダーおよび、CloudFront がキャッシュ条件にするヘッダーは、Amazon S3
バケットを使用しているか、それともカスタムオリジンを使用しているかに応じて変わります。
• Amazon S3 – Access-Control-Request-Headers、Access-Control-Request-Method、
および Origin の 3 つのヘッダーのみに基づいてオブジェクトを転送およびキャッシュするよう
API Version 2016-09-29
129
Amazon CloudFront 開発者ガイド
ヘッダーとウェブディストリビューション
に CloudFront を設定できます。これらのヘッダーを転送することによって、CloudFront は CrossOrigin Resource Sharing(CORS)が有効になっているウェブサイトのコンテンツを配信できま
す。カスタムヘッダーを Amazon S3 に転送するように CloudFront を設定することはできません。
詳細については、「Cross-Origin Resource Sharing (CORS) 設定を優先するように CloudFront を設
定する (p. 130)」を参照してください。
• カスタムオリジン – 以下を除く任意のリクエストヘッダーの値に基づいてキャッシュするように
CloudFront を設定できます。
• Accept-Encoding
• Connection
• Cookie – Cookie に基づいて転送しキャッシュする場合は、ディストリビューションの別の設
定を使用します。詳細については、「Cookie に基づいてオブジェクトをキャッシュするように
CloudFront を設定する (p. 126)」を参照してください。
• Proxy-Authorization
• TE
• Upgrade
Date および User-Agent ヘッダーの値に基づいてオブジェクトをキャッシュするように
CloudFront を設定できますが、これはお勧めできません。これらのヘッダーには可能な値が多数あ
り、その値に基づいてキャッシュすると、CloudFront がオリジンに転送するリクエストの数が大幅
に増加します。
すべての HTTP リクエストヘッダーの一覧と、CloudFront がそれを処理する方法については、以下の
該当するトピックを参照してください。
• Amazon S3 オリジン – CloudFront が削除または更新する HTTP リクエストヘッダー (p. 165)
• カスタムオリジン – HTTP リクエストヘッダーと CloudFront の動作 (p. 173)
Cross-Origin Resource Sharing (CORS) 設定を優先するように
CloudFront を設定する
Cross-Origin Resource Sharing(CORS)を Amazon S3 バケットまたはカスタムオリジンで有効にし
ている場合、その CORS 設定を尊重するように CloudFront を設定できます。ヘッダーのホワイトリ
ストを転送し、転送するヘッダーのリストに適切なヘッダーを含めるように、CloudFront を設定しま
す。適切なヘッダーは、Amazon S3 オリジンを使用しているかカスタムオリジンを使用しているかに
よって異なります。
Amazon S3
• OPTIONS 応答をキャッシュする場合は、Origin、Access-Control-RequestHeaders、Access-Control-Request-Method の各ヘッダーを転送するように CloudFront を設
定します。
• OPTIONS 応答をキャッシュしない場合は、Origin のヘッダーを転送するように CloudFront を
設定します。また、Access-Control-Request-Headers および Access-Control-RequestMethod の各ヘッダーを転送するように CloudFront を設定することもできますが、必要ではありま
せん。
カスタムオリジン – オリジンが必要とする他のヘッダーと共に、Origin ヘッダーを転送します。
CORS と Amazon S3 の詳細については、『Amazon Simple Storage Service 開発者ガイド』の
「Cross-Origin Resource Sharing の有効化」を参照してください。
API Version 2016-09-29
130
Amazon CloudFront 開発者ガイド
ヘッダーとウェブディストリビューション
デバイスタイプに基づいてオブジェクトをキャッシュするよう
に CloudFront を設定する
ユーザーがコンテンツの表示に使用しているデバイスに基づいて、オブジェクトの異なるバージョ
ンを CloudFront でキャッシュするには、該当するヘッダーをカスタムオリジンに転送するように
CloudFront を設定します。
• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer
• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer
CloudFront は、User-Agent ヘッダーの値に基づいて、これらのヘッダーの値を true または false
に設定した後、リクエストをオリジンに転送します。デバイスが複数のカテゴリに属する場合は、複
数の値が true になることがあります。たとえば、あるタブレットデバイスについて、CloudFront が
CloudFront-Is-Mobile-Viewer と CloudFront-Is-Tablet-Viewer の両方を true に設定する
場合があります。
ビューアの言語に基づいてオブジェクトをキャッシュするよう
に CloudFront を設定する
リクエストで指定された言語に基づいて、オブジェクトの異なるバージョンを CloudFront でキャッ
シュするには、Accept-Language ヘッダーにその言語を含めるようにアプリケーションをプログラ
ミングし、Accept-Language ヘッダーをオリジンに転送するように CloudFront を設定します。
ビューアの場所に基づいてオブジェクトをキャッシュするよう
に CloudFront を設定する
リクエストの要求元の国に基づいて、オブジェクトの異なるバージョンを CloudFront でキャッシュす
るには、CloudFront-Viewer-Country ヘッダーをオリジンに転送するように CloudFront を設定し
ます。CloudFront はリクエストの要求元の IP アドレスを 2 文字の国コードに自動的に変換します。
コード順、国順に並べ替えることのできる使いやすい国コードの一覧については、Wikipedia の「ISO
3166-1 alpha-2」の項目を参照してください。
リクエストのプロトコルに基づいてオブジェクトをキャッシュ
するように CloudFront を設定する
リクエストのプロトコル(HTTP または HTTPS)に基づいて、オブジェクトの異なるバージョンを
CloudFront でキャッシュするには、CloudFront-Forwarded-Proto ヘッダーをオリジンに転送す
るように CloudFront を設定します。
ヘッダーに基づくキャッシュがパフォーマンスに及ぼす影響
ヘッダーに基づいてキャッシュするように CloudFront を設定した場合、ヘッダーで指定できる値が複
数あると、CloudFront が同じオブジェクトについてオリジンサーバーに転送するリクエストの数が増
えます。このためパフォーマンスが低下し、オリジンサーバーの負荷が増加します。所定のヘッダー
の値に関係なくオリジンサーバーが同じオブジェクトを返す場合は、そのヘッダーに基づいてキャッ
シュするように CloudFront を設定しないことをお勧めします。
複数のヘッダーを転送するように CloudFront を設定した場合、ビューアリクエストのヘッダーの順序
は、値が同じである限り、キャッシュ動作には影響しません。たとえば、あるリクエストのヘッダー
が A:1、B:2 で、別のリクエストのヘッダーが B:2、A:1 である場合、CloudFront はそのオブジェクト
のコピーを 1 つだけキャッシュします。
API Version 2016-09-29
131
Amazon CloudFront 開発者ガイド
ヘッダーと RTMP ディストリビューション
ヘッダーとヘッダー値の大文字小文字がキャッシュに及ぼす影
響
CloudFront がヘッダー値に基づいてキャッシュする場合、ヘッダー名の大文字小文字の違いは無視さ
れますが、ヘッダー値の大文字小文字の違いは考慮されます。
• ビューアリクエストが Product:Acme と product:Acme の両方を含む場合、CloudFront がオブ
ジェクトをキャッシュするのは 1 回だけです。両者の違いはヘッダー名の大文字小文字だけで、こ
れはキャッシュ動作に影響しません。
• ビューアリクエストが Product:Acme と Product:acme の両方を含む場合、CloudFront はオブ
ジェクトを 2 回キャッシュします。値が、あるリクエストでは Acme、別のリクエストでは acme と
異なっているためです。
CloudFront がビューアに返すヘッダー
ヘッダーを転送しキャッシュするように CloudFront を設定しても、CloudFront がビューアに返す
ヘッダーは影響を受けません。CloudFront は、いくつかの例外を除いて、オリジンから取得したヘッ
ダーをすべて返します。詳細については、該当するトピックを参照してください。
• Amazon S3 オリジン –「CloudFront が削除または更新する HTTP レスポンスヘッダー (p. 168)」
を参照してください。
• カスタムオリジン –「CloudFront が削除または更新する HTTP レスポンスヘッダー (p. 180)」を
参照してください。
ヘッダーと RTMP ディストリビューション
RTMP ディストリビューションの場合、ビューアリクエストのヘッダーに基づいてコンテンツを
キャッシュするように CloudFront を設定できます。
カスタムヘッダーをオリジン(ウェブディストリ
ビューションのみ)へ転送する
CloudFront がリクエストをオリジンに転送するときに、常にカスタムヘッダーを含めるように設定で
きます。オリジンごとに、カスタムオリジン用と Amazon S3 バケット用にカスタムヘッダーの名前
と値を指定できます。カスタムヘッダーには、以下のようなさまざまな用途があります。
• CloudFront によってカスタムオリジンに転送されたリクエストを特定できます。これは、ユー
ザーが CloudFront をバイパスするかどうかを知りたい場合、または複数の CDN を使用してどの
リクエストが CDN から来ているのかを知りたい場合に便利です。(Amazon S3 オリジンを使用し
て、Amazon S3 サーバーアクセスログを有効にした場合、ログにヘッダー情報は含まれません。
• 同じオリジンを使用するように複数の CloudFront ディストリビューションを設定した場合は、各
ディストリビューションのオリジンに異なるカスタムヘッダーを指定し、ウェブサーバーのログを
使用して、CloudFront が各ディストリビューションに転送するリクエストを区別できます。
• ユーザーの一部が Cross-Origin Resource Sharing(CORS)をサポートしていないビューアを使用
する場合は、CloudFront が Origin ヘッダーをお使いのオリジンに転送するように設定できます。
これにより、オリジンはリクエストごとに Access-Control-Allow-Origin ヘッダーをオリジン
に返します。
• カスタムヘッダーと、必要に応じて署名付き URL または署名付き cookie を併用して、カスタムオ
リジンのコンテンツへのアクセスを制御できます。カスタムヘッダーが含まれる場合のみリクエス
API Version 2016-09-29
132
Amazon CloudFront 開発者ガイド
カスタムヘッダーをオリジン転送
するよう CloudFront を設定する
トに応答するようカスタムオリジンを設定している場合は、ユーザーが CloudFront をバイパスして
リクエストをオリジンに直接送信することを防ぐことができます。
トピック
• カスタムヘッダーをオリジン転送するよう CloudFront を設定する (p. 133)
• CloudFront がオリジンに転送できないカスタムヘッダー (p. 133)
• Cross-Origin Resource Sharing(CORS)でカスタム ヘッダーを使用する (p. 134)
• カスタムヘッダーを使用してカスタムオリジンのコンテンツへのアクセスを制限する (p. 134)
カスタムヘッダーをオリジン転送するよう
CloudFront を設定する
オリジンにカスタムヘッダーを転送するようウェブディストリビューションを設定するには、次の方
法の 1 つを使用して該当するオリジンの設定を更新します。
CloudFront コンソール
ディストリビューションを作成または更新する場合、[Origin Custom Headers] 設定にヘッダー
名と値を指定します。詳細については、「CloudFront コンソールを使用したウェブディストリ
ビューションの作成または更新 (p. 64)」を参照してください。
CloudFront API
カスタム ヘッダーを転送するオリジンごとに、DistributionConfig 複合型の
CustomHeaders セクションにヘッダー名と値を追加します。詳細については、「POST
Distribution」(新しいディストリビューションを作成する場合)または「PUT Distribution
Config」(既存のディストリビューションを更新する場合)を参照してください。
指定するヘッダーの名前と値が既にビューアのリクエストに存在しない場合、CloudFront がそれらを
追加します。ヘッダーが存在する場合、CloudFront はリクエストをオリジンに転送する前にヘッダー
値を上書きします。
オリジンへのカスタムヘッダーの転送に関する現在の制限については、「制限 (p. 391)」を参照して
ください。
CloudFront がオリジンに転送できないカスタムヘッ
ダー
オリジンに以下のカスタムヘッダーを転送するように CloudFront を設定することはできません。
Accept-Encoding
Proxy-Authenticate
Cache-Control
Proxy-Authorization
接続
Proxy-Connection
Content-Length
範囲
Cookie
Request-Range
ホスト
TE
If-Match
Trailer
If-Modified-Since
Transfer-Encoding
API Version 2016-09-29
133
Amazon CloudFront 開発者ガイド
Cross-Origin Resource Sharing(CORS)
でカスタム ヘッダーを使用する
If-None-Match
アップグレード
If-Range
Via
If-Unmodified-Since
X-Amz-* で始まるヘッダー
Max-Forwards
X-Edge-* で始まるヘッダー
Pragma
X-Real-Ip
Cross-Origin Resource Sharing(CORS)でカスタ
ム ヘッダーを使用する
常に適切なヘッダーをオリジンに転送して、これらのヘッダーをリクエストに自動的に含めない
ビューアに対応するように CloudFront を設定できます。CORS 設定を優先するように CloudFront 設
定する必要があります。詳細については、「Cross-Origin Resource Sharing (CORS) 設定を優先する
ように CloudFront を設定する (p. 130)」を参照してください。
カスタムヘッダーを使用してカスタムオリジンのコ
ンテンツへのアクセスを制限する
カスタムオリジンを使用する場合、カスタム ヘッダーを使用して、ユーザーが CloudFront をバイパ
スしてオリジンから直接コンテンツをリクエストするのを防ぐことができます。オプションで、署
名付き URL または署名付き cookie を使用してユーザーがオブジェクトにアクセスする際に必要にな
るコンテンツへのアクセスを制限することもできます。プライベートコンテンツの詳細については、
「CloudFront を使用してプライベートコンテンツを供給する (p. 186)」を参照してください。
ユーザーに CloudFront を経由してコンテンツにアクセスするよう要求するには、CloudFront ディス
トリビューションで次の設定を変更します。
オリジンのカスタムヘッダー
カスタムヘッダーをオリジンに転送するよう CloudFront を設定します。「カスタムヘッダーをオ
リジン転送するよう CloudFront を設定する (p. 133)」を参照してください。
ビューアプロトコルポリシー
ビューアが CloudFront にアクセスするのに HTTPS を使用しなければならないようにディストリ
ビューションを設定します。「ビューアプロトコルポリシー (p. 75)」を参照してください。
オリジンプロトコルポリシー
CloudFront がビューアと同じプロトコルを使用してリクエストをオリジンに転送するように、
ディストリビューションを設定します。「オリジンプロトコルポリシー(Amazon EC2 および他
のカスタムオリジンのみ) (p. 72)」を参照してください。
[Viewer Protocol Policy] と [Origin Protocol Policy] を組み合わせると、カスタムヘッダーがビューアと
オリジン間で暗号化されます。ただし、定期的に以下のタスクを実行して、CloudFront がオリジンに
転送するカスタムヘッダーをローテーションすることをお勧めします。
1. CloudFront ディストリビューションを更新して、新しいヘッダーのカスタムオリジンへの転送を開
始します。
2. アプリケーションを更新して、リクエストが CloudFront からのものであることの確認として新し
いヘッダーを受け入れます。
3. ビューアで置き換えているヘッダーが含まれていない必要がある場合は、アプリケーションを更新
して、リクエストが CloudFront からのものであることの確認として古いヘッダーを受け入れない
ようにします。
API Version 2016-09-29
134
Amazon CloudFront 開発者ガイド
ディストリビューション内のオブ
ジェクトの追加、削除、または置換
ディストリビューション内のオブジェクトの追
加、削除、または置換
オブジェクトをディストリビューションに追加する方法については、「CloudFront で配布するオブ
ジェクトを追加する (p. 135)」を参照してください。
ディストリビューション内のオブジェクトを置き換える場合は、バージョン付きのオブジェクト名を
使用することをお勧めします。詳細については、「バージョン付きのオブジェクト名を使用した既存
オブジェクトの更新 (p. 135)」を参照してください。同じ名前のオブジェクトでオブジェクトを置き
換えることもできます。「同じオブジェクト名を使用した既存オブジェクトの更新 (p. 136)」を参照
してください。ディストリビューション内のオブジェクトを置き換えるのにどのような方法を選択し
たかに関係なく、オブジェクトを CloudFront キャッシュから削除するタイミングを指定することをお
勧めします。詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定
(有効期限切れ) (p. 136)」を参照してください。
オブジェクトをディストリビューションから直ちに削除する必要がある場合は、オブジェクトを無効
にすることができます。詳細については、「オブジェクトの無効化(ウェブディストリビューション
のみ) (p. 142)」を参照してください。
CloudFront で配布するオブジェクトを追加する
CloudFront で追加オブジェクトの配布を開始するときは、配布用に指定したオリジンの 1 つにオブ
ジェクトを追加し、そのオブジェクトに対する CloudFront リンクを公開します。CloudFront エッジ
ロケーションは、オブジェクトに関するビューアリクエストを受け取るまで、オリジンから新しいオ
ブジェクトを取得しません。詳細については、「CloudFront がコンテンツを配信する方法 (p. 4)」を
参照してください。
CloudFront で配布するオブジェクトを追加するときは、ディストリビューションで指定した Amazon
S3 バケットの 1 つに追加しているか、カスタムオリジンの場合は指定したドメイン内のディレクトリ
に追加していることを確認してください。さらに、該当するキャッシュ動作のパスパターンが正しい
オリジンにリクエストを送信していることを確認します。たとえば、キャッシュ動作のパスパターン
が *.html であるとします。リクエストをそのオリジンに転送するように設定されたキャッシュ動作
が他にない場合、そのオリジンにアップロードされた .jpg ファイルを CloudFront が配布することは
決してありません。
CloudFront サーバーは、供給するオブジェクトの MIME タイプを判別しません。オブジェクトをオリ
ジンにアップロードする場合、オブジェクトの Content-Type ヘッダーフィールドを設定する必要が
あります。
バージョン付きのオブジェクト名を使用した既存オ
ブジェクトの更新
CloudFront ディストリビューション内の既存のオブジェクトを更新する場合、何らかのバージョン
識別名をオブジェクト名またはディレクトリ名に含めて、コンテンツを容易に制御できるようにする
ことをお勧めします。この識別名には、日付タイムスタンプ、連番など、同じオブジェクトの 2 つの
バージョンを区別する方法を使用できます。
たとえば、グラフィックファイルに image.jpg ではなく image_1.jpg という名前を付けることができ
ます。ファイルの新しいバージョンを供給する場合は、新しいファイルに image_2.jpg という名前を
付けて、image_2.jpg を指すようにお使いのウェブアプリケーションまたはウェブサイトのリンクを
更新します。また、すべてのグラフィックを images_v1 ディレクトリに配置することもできます。1
つ以上のグラフィックの新しいバージョンを供給する場合は、新しい images_v2 ディレクトリを作成
し、そのディレクトリを指すようにリンクを更新します。バージョニングを行うことで、CloudFront
API Version 2016-09-29
135
Amazon CloudFront 開発者ガイド
同じオブジェクト名を使用した既存オブジェクトの更新
で新しいバージョンの供給を開始するのにオブジェクトの有効期限切れを待つ必要がなくなり、オブ
ジェクトの無効化に対して料金を支払う必要もなくなります。
オブジェクトにバージョンを設定した場合も、有効期限切れ日付を設定することをお勧めします。詳
細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
Note
バージョン付きのオブジェクト名またはディレクトリ名の指定は、Amazon S3 オブジェクト
のバージョニングとは関係がありません。
同じオブジェクト名を使用した既存オブジェクトの
更新
CloudFront ディストリビューション内の既存のオブジェクトを更新し、同じオブジェクト名を使用す
ることできますが、これはお勧めしません。CloudFront は、オブジェクトが要求された場合にのみ、
オブジェクトをエッジロケーションに配信します。新しいまたは更新されたオブジェクトがオリジン
に配置された場合ではありません。オリジン内の既存のオブジェクトを同じ名前の新しいバージョン
で更新した場合、以下の両方のイベントが発生するまで、エッジロケーションはオリジンから新しい
バージョンを取得しません。
• キャッシュ内にあるオブジェクトの旧バージョンが有効期限切れになった。詳細について
は、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
• エッジロケーションにオブジェクトのエンドユーザーリクエストが存在する。
オブジェクトを置き換えるときに同じ名前を使用した場合、CloudFront で新しいファイルの供給を開
始するタイミングを制御できません。デフォルトでは、CloudFront はエッジロケーションのキャッ
シュにオブジェクトを 24 時間保持します。(詳細については、「CloudFront エッジキャッシュにオ
ブジェクトを保持する時間の指定(有効期限切れ) (p. 136)」を参照してください)。たとえば、
ウェブサイト全体のすべてのオブジェクトを置き換えると仮定します。
• 人気のないページのオブジェクトは、どのエッジロケーションにも存在しない可能性があります。
これらのオブジェクトの新しいバージョンについては、次回のリクエストで供給が開始されます。
• ページによっては、そのオブジェクトが一部のエッジロケーションに存在し、他のエッジロケー
ションに存在しない場合があります。したがって、供給元のエッジロケーションによって、エンド
ユーザーに表示されるバージョンが異なります。
• 最も人気のあるページの新しいバージョンのオブジェクトは、最大で 24 時間供給されない可能
性があります。そのようなページのオブジェクトは、新しいバージョンで置き換えられる直前
に、CloudFront が取り込んでいる可能性があるためです。
CloudFront エッジキャッシュにオブジェクトを保持
する時間の指定(有効期限切れ)
CloudFront が別のリクエストをオリジンに転送するまでにオブジェクトを CloudFront キャッシュに
保持する時間を制御できます。この期間を短くすると、動的なコンテンツを供給できます。この期間
を長くすると、ユーザー側のパフォーマンスは向上します。オブジェクトがエッジキャッシュから直
接返される可能性が高くなるためです。期間を長くすると、オリジンの負荷も軽減されます。
一般的に CloudFront は、指定したキャッシュ保持期間が経過するまで—つまりオブジェクトの有
効期限が切れるまで、エッジロケーションからオブジェクトを返します。オブジェクトの有効期
限が切れると、エッジロケーションがオブジェクトのユーザーリクエストを次に受け取ったとき
API Version 2016-09-29
136
Amazon CloudFront 開発者ガイド
CloudFront エッジキャッシュにオブジェク
トを保持する時間の指定(有効期限切れ)
に、CloudFront は、リクエストをオリジンサーバーに転送し、キャッシュにオブジェクトの最新バー
ジョンが含まれていることを確認します。オリジンからのレスポンスは、オブジェクトが変更された
かどうかによって異なります。
• CloudFront キャッシュに最新バージョンがすでにある場合、オリジンはステータスコード
304(Not Modified)を返します。
• CloudFront キャッシュに最新バージョンがない場合、オリジンはステータスコード 200(OK)とオ
ブジェクトの最新バージョンを返します。
エッジロケーションに頻繁に要求されないオブジェクトがあれば、CloudFront は、頻繁に要求される
ようになったオブジェクト用にスペースを確保するために、そのオブジェクトを削除する(そのオブ
ジェクトの有効期限が切れる前に削除する)場合があります。
デフォルトでは、各オブジェクトは 24 時間後に自動的に有効期限切れになります。ウェブディスト
リビューションでは、以下の 2 つの方法でデフォルトの動作を変更できます。
• 同じパスパターンに一致するすべてのオブジェクトのキャッシュ保持期間を変更するに
は、CloudFront の設定でキャッシュの動作の [Minimum TTL]、[Maximum TTL]、[Default TTL] を変
更できます。個々の設定については、「最小 TTL」、「最大 TTL」、「デフォルト TTL」を参照し
てください。これらの設定を使用するには、[Object Caching] 設定で [Customize] オプションを選択
する必要があります。
• 個々のオブジェクトのキャッシュ保持期間を変更するには、オブジェクトに Cache-Control
max-age または Cache-Control s-maxage ディレクティブを追加するか、Expires ヘッダー
フィールドを追加するように、オリジンを設定します。詳細については、「ヘッダーを使用した
個々のオブジェクトのキャッシュ保持期間の制御 (p. 137)」を参照してください。
[Minimum TTL]、[Default TTL]、[Maximum TTL] が Cache-Control max-age ディレクティ
ブ、Cache-Control s-maxage ディレクティブ、Expires ヘッダーフィールドとどのように連動す
るかの詳細については、「ウェブディストリビューションで CloudFront がキャッシュにオブジェクト
を保持する期間の指定 (p. 138)」を参照してください。
CloudFront がオリジンに別のリクエストを転送して、リクエストされたオブジェクトを再度取得する
ことを試みるまでに、エラー(404, Not Found など)が CloudFront キャッシュに保持される期間を
制御することもできます。詳細については、「CloudFront がオリジンからの HTTP 4xx および 5xx ス
テータスコードを処理してキャッシュに保持する方法 (p. 182)」を参照してください。
トピック
• ヘッダーを使用した個々のオブジェクトのキャッシュ保持期間の制御 (p. 137)
• ウェブディストリビューションで CloudFront がキャッシュにオブジェクトを保持する期間の指
定 (p. 138)
• RTMP ディストリビューションで CloudFront がキャッシュにオブジェクトを保持する最小時間の
指定 (p. 142)
• Amazon S3 コンソールを使用したオブジェクトへのヘッダーの追加 (p. 142)
ヘッダーを使用した個々のオブジェクトのキャッシュ保持期間
の制御
Cache-Control および Expires ヘッダーを使用して、オブジェクトをキャッシュに保持する期間を
制御できます。[Minimum TTL]、[Default TTL]、[Maximum TTL] の設定もキャッシュ保持期間に影響を
与えますが、ここでは、ヘッダーがキャッシュ保持期間に与える影響について概要を示します。
• Cache-Control max-age ディレクティブでは、CloudFront がオリジンサーバーからオブ
ジェクトを再度取得するまでにオブジェクトをキャッシュに保持する期間(秒)を指定できま
す。CloudFront がサポートする最小の有効期限切れ時間は、ウェブディストリビューションで 0
API Version 2016-09-29
137
Amazon CloudFront 開発者ガイド
CloudFront エッジキャッシュにオブジェク
トを保持する時間の指定(有効期限切れ)
秒、RTMP ディストリビューションで 3600 秒です。最大値は 100(年)です。値は次の形式で指
定します。
Cache-Control: max-age=#
たとえば、次のディレクティブは CloudFront に関連付けられているオブジェクトを 3600 秒(1 時
間)キャッシュに保持するよう指示します。
Cache-Control: max-age=3600
ブラウザキャッシュに保持される期間とは異なる期間、オブジェクトを CloudFront エッジキャッ
シュに保持する場合、Cache-Control max-age ディレクティブと Cache-Control s-maxage
ディレクティブを併用できます。詳細については、「ウェブディストリビューションで CloudFront
がキャッシュにオブジェクトを保持する期間の指定 (p. 138)」を参照してください。
• Expires ヘッダーフィールドでは、「RFC 2616、ハイパーテキスト転送プロトコル –– HTTP/1.1
セクション 3.3.1、完全な日付」に規定された形式を使用して、有効期限切れ日時を指定できます。
Sat, 27 Jun 2015 23:59:59 GMT
オブジェクトのキャッシュを制御するには、Expires ヘッダーフィールドではなく、CacheControl max-age ディレクティブを使用することをお勧めします。Cache-Control max-age と
Expires の両方の値を指定した場合、CloudFront は Cache-Control max-age の値のみを使用しま
す。
詳細については、「ウェブディストリビューションで CloudFront がキャッシュにオブジェクトを保持
する期間の指定 (p. 138)」を参照してください。
ビューアからの GET リクエストで HTTP Cache-Control または Pragma ヘッダーフィールドを使用
して、オリジンサーバーに戻ってオブジェクトを取得するように CloudFront を設定することはでき
ません。CloudFront は、ビューアからのリクエストにあるそのようなヘッダーフィールドを無視しま
す。
Cache-Control および Expires ヘッダーフィールドの詳細については、「RFC 2616、ハイパーテ
キスト転送プロトコル –– HTTP/1.1」の以下のセクションを参照してください。
• セクション 14.9 キャッシュ制御
• セクション 14.21 期限
AWS SDK for PHP を使用して Cache-Control および Expires ヘッダーフィールドを追加する方法
の例については、「Amazon Simple Storage Service 開発者ガイド」の「AWS SDK for PHP を使用し
た 1 つのオブジェクトのアップロード」を参照してください。これらのフィールドを追加できるサー
ドパーティツールもあります。
ウェブディストリビューションで CloudFront がキャッシュに
オブジェクトを保持する期間の指定
ウェブディストリビューションで、Cache-Control または Expires ヘッダーと共に、CloudFront
の最小、最大、デフォルトの TTL 値を使用することで、CloudFront が別のリクエストをオリジンに転
送するまでにキャッシュにオブジェクトを保持する期間(秒)を制御できます。ヘッダーの値によっ
て、ブラウザーが別のリクエストを CloudFront に転送するまでにオブジェクトをキャッシュに保持す
る期間も決まります。
Important
キャッシュ動作のためにすべてのヘッダーをオリジンに転送するように CloudFront を設
定した場合、CloudFront は関連付けられたオブジェクトをキャッシュしません。その代
わり、CloudFront はそのオブジェクトに関するすべてのリクエストをオリジンに転送し
API Version 2016-09-29
138
Amazon CloudFront 開発者ガイド
CloudFront エッジキャッシュにオブジェク
トを保持する時間の指定(有効期限切れ)
ます。その設定では、最小 TTL の値を 0 にする必要があります。詳細については、「リ
クエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 128)」を参照してください。
[Minimum TTL]、[Maximum TTL]、[Default TTL] の値を指定するには、[Object Caching] 設定で
[Customize] オプションを選択する必要があります。
オリジン設定
最小 TTL = 0 秒
最小 TTL > 0 秒
オリジンが Cache-Control
max-age ディレクティブをオ
ブジェクトに追加する
CloudFront キャッシュ
CloudFront キャッシュ
CloudFront は、CacheControl max-age ディレク
ティブの値と CloudFront 最大
TTL の値のうち、小さい方の値
に対応する期間、オブジェクト
をキャッシュに保持します。
CloudFront キャッシュ
は、CloudFront 最小 TTL およ
び最大 TTL、Cache-Control
max-age ディレクティブの値に
よって異なります。
ブラウザーキャッシュ
ブラウザーは、CacheControl max-age ディレク
ティブの値に対応する期間、オ
ブジェクトをキャッシュに保持
します。
• 最小 TTL < max-age < 最大
TTL
CloudFront は、CacheControl max-age ディレク
ティブの値に対応する期間、
オブジェクトをキャッシュに
保持します。
• max-age < 最小 TTL
CloudFront は、CloudFront 最
小 TTL の値に対応する期間、
オブジェクトをキャッシュに
保持します。
• max-age > 最大 TTL
CloudFront は、CloudFront 最
大 TTL の値に対応する期間、
オブジェクトをキャッシュに
保持します。
ブラウザーキャッシュ
ブラウザーは、CacheControl max-age ディレク
ティブの値に対応する期間、オ
ブジェクトをキャッシュに保持
します。
オリジンが Cache-Control
max-age ディレクティブをオ
ブジェクトに追加しない
CloudFront キャッシュ
CloudFront キャッシュ
CloudFront は、CloudFront デ
フォルト TTL の値に対応する
期間、オブジェクトをキャッ
シュに保持します。
CloudFront は、CloudFront 最小
TTL またはデフォルト TTL の値
のうち、大きい方の値に対応す
る期間、オブジェクトをキャッ
シュに保持します。
ブラウザーキャッシュ
ブラウザーによって異なりま
す。
API Version 2016-09-29
139
ブラウザーキャッシュ
ブラウザーによって異なりま
す。
Amazon CloudFront 開発者ガイド
CloudFront エッジキャッシュにオブジェク
トを保持する時間の指定(有効期限切れ)
オリジン設定
最小 TTL = 0 秒
最小 TTL > 0 秒
オリジンが Cache-Control
max-age および CacheControl s-maxage ディレク
ティブをオブジェクトに追加す
る
CloudFront キャッシュ
CloudFront キャッシュ
CloudFront は、CacheControl s-maxage ディレク
ティブの値と CloudFront 最大
TTL の値のうち、小さい方の値
に対応する期間、オブジェクト
をキャッシュに保持します。
CloudFront キャッシュ
は、CloudFront 最小 TTL および
最大 TTL、Cache-Control smaxage ディレクティブの値に
よって異なります。
ブラウザーキャッシュ
ブラウザーは、CacheControl max-age ディレク
ティブの値に対応する期間、オ
ブジェクトをキャッシュに保持
します。
• 最小 TTL < s-maxage < 最大
TTL
CloudFront は、CacheControl s-maxage ディレ
クティブの値に対応する期
間、オブジェクトをキャッ
シュに保持します。
• s-maxage < 最小 TTL
CloudFront は、CloudFront 最
小 TTL の値に対応する期間、
オブジェクトをキャッシュに
保持します。
• s-maxage > 最大 TTL
CloudFront は、CloudFront 最
大 TTL の値に対応する期間、
オブジェクトをキャッシュに
保持します。
ブラウザーキャッシュ
ブラウザーは、CacheControl max-age ディレク
ティブの値に対応する期間、オ
ブジェクトをキャッシュに保持
します。
API Version 2016-09-29
140
Amazon CloudFront 開発者ガイド
CloudFront エッジキャッシュにオブジェク
トを保持する時間の指定(有効期限切れ)
オリジン設定
最小 TTL = 0 秒
最小 TTL > 0 秒
オリジンが Expires ヘッダー
をオブジェクトに追加する
CloudFront キャッシュ
CloudFront キャッシュ
CloudFront は、Expires ヘッ
ダーにある日付と CloudFront
最大 TTL の値に対応する日付
のうち、早い方の日付まで、オ
ブジェクトをキャッシュに保持
します。
CloudFront キャッシュ
は、CloudFront 最小 TTL および
最大 TTL、Expires ヘッダーの
値によって異なります。
ブラウザーキャッシュ
ブラウザーは、Expires ヘッ
ダーにある日付までオブジェク
トをキャッシュに保持します。
• 最小 TTL < Expires < 最大
TTL
CloudFront は、Expires
ヘッダーにある日時までオブ
ジェクトをキャッシュに保持
します。
• Expires < 最小 TTL
CloudFront は、CloudFront 最
小 TTL の値に対応する期間、
オブジェクトをキャッシュに
保持します。
• Expires > 最大 TTL
CloudFront は、CloudFront 最
大 TTL の値に対応する期間、
オブジェクトをキャッシュに
保持します。
ブラウザーキャッシュ
ブラウザーは、Expires ヘッ
ダーにある日時までオブジェク
トをキャッシュに保持します。
オリジンが、CacheControl: no-cache、nostore、および private ディ
レクティブ、またはこのいずれ
かをオブジェクトに追加する
CloudFront とブラウザはヘッ
ダーを尊重します。
CloudFront による CacheControl: no-cache ヘッ
ダーの処理方法の例外について
は、「同じオブジェクト(トラ
フィックスパイク)の同時リク
エスト (p. 178)」を参照して
ください。
CloudFront キャッシュ
CloudFront は、CloudFront 最小
TTL の値に対応する期間、オブ
ジェクトをキャッシュに保持し
ます。
ブラウザーキャッシュ
ブラウザーはヘッダーを優先し
ます。
CloudFront コンソールを使用してウェブディストリビューションの設定を変更する方法については、
「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 52)」を参照して
ください。CloudFront API を使用してウェブディストリビューションの設定を変更する方法について
は、「PUT Config」を参照してください。
API Version 2016-09-29
141
Amazon CloudFront 開発者ガイド
オブジェクトの無効化(ウェブ
ディストリビューションのみ)
RTMP ディストリビューションで CloudFront がキャッシュに
オブジェクトを保持する最小時間の指定
RTMP ディストリビューションでは、CloudFront はオブジェクトをエッジキャッシュにデフォルトで
24 時間保持します。Cache-Control または Expires ヘッダーをオブジェクトに追加して、別のリ
クエストをオリジンに転送するまでに CloudFront がエッジキャッシュにオブジェクトを保持する時間
を変更できます。最小時間は 3600 秒(1 時間)です。それより低い値を指定しても、CloudFront は
3600 秒を使用します。
Amazon S3 コンソールを使用したオブジェクトへのヘッダー
の追加
Note
Amazon S3 コンソールを使用した場合、1 回で 1 つのオブジェクトにのみヘッダーを追加で
きますが、一部のサードパーティツールを使用した場合、1 回で複数の Amazon S3 オブジェ
クトにヘッダーを追加できます。Amazon S3 をサポートするサードパーティツールの詳細に
ついては、ウェブで AWS S3 ##########を検索してください。
Amazon S3 コンソールを使用して、Cache-Control または Expires ヘッダーフィールドを
Amazon S3 オブジェクトに追加するには
1.
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール(https://
console.aws.amazon.com/s3)を開きます。
2.
Amazon S3 コンソールのバケットペインで、ファイルを含むバケットの名前をクリックします。
3.
オブジェクトのリストで、ヘッダーフィールドの追加先とする最初のオブジェクトを選択しま
す。
4.
[Actions]、[Properties] の順にクリックします。
5.
右側のペインで、[Metadata] を展開します。
6.
[Add More Metadata] をクリックします。
7.
[Key] リストで、必要に応じて [Cache-Control] または [Expires] をクリックします。
8.
[Value] フィールドに適用可能な値を入力します。
• [Cache-Control] フィールドでは、次のように入力します。
max-age=number of seconds that you want objects to stay in a CloudFront
edge cache
• [Expires] フィールドでは、日時を HTML 形式で入力します。
9.
[Save] をクリックします。
10. ヘッダーフィールドを他のオブジェクトに追加する場合は、次のオブジェクトの名前をクリック
し、ステップ 5 ~ 9 を繰り返します。
オブジェクトの無効化(ウェブディストリビュー
ションのみ)
有効期限切れになる前に CloudFront エッジキャッシュからオブジェクトを削除する場合、以下のいず
れかの処理を行うことができます。
• エッジキャッシュからオブジェクトを無効にします。エンドユーザーが次にオブジェクトを要求し
たときに、CloudFront はオリジンに戻ってオブジェクトの最新バージョンをフェッチします。
API Version 2016-09-29
142
Amazon CloudFront 開発者ガイド
オブジェクトの無効化(ウェブ
ディストリビューションのみ)
• オブジェクトのバージョニングを使用して、異なる名前を持つ異なるバージョンのオブジェクトを
供給します。詳細については、「バージョン付きのオブジェクト名を使用した既存オブジェクトの
更新 (p. 135)」を参照してください。
Important
ウェブディストリビューションで提供されるほとんどの種類は無効にできます。しかし、該
当するキャッシュ動作についてスムーズストリーミングを有効にしても、Microsoft スムー
ズストリーミング形式のメディアファイルを無効にすることはできません。さらに、RTMP
ディストリビューションで供給されるオブジェクトを無効にすることはできません。
オブジェクトを無効にするには、個々のオブジェクトのパスまたは * ワイルドカードで終わるパス
のいずれかを指定します。これは次の例に示すように、1 つまたは複数のオブジェクトに適用できま
す。
• /images/image1.jpg
• /images/image*
• /images/*
月ごとに、指定された数の無効化パスを無料で送信できます。月ごとに割り当てられた数より多くの
無効化パスを送信する場合、送信する無効化パスごとに料金が発生します。無効化に関する料金の詳
細については、「オブジェクトの無効化に対する支払い (p. 148)」を参照してください。
トピック
• オブジェクトを無効化するか、バージョン付きオブジェクト名を使用するかの選択 (p. 143)
• 無効にするオブジェクトの決定 (p. 144)
• 無効にするオブジェクトの指定 (p. 144)
• オブジェクトの無効化および無効化に関する情報の表示 (p. 146)
• オブジェクトを無効にするためのサードパーティツール (p. 148)
• 無効化の制限 (p. 148)
• オブジェクトの無効化に対する支払い (p. 148)
オブジェクトを無効化するか、バージョン付きオブジェクト名
を使用するかの選択
ディストリビューションから供給されるオブジェクトのバージョンを制御するには、オブジェクトを
無効にするか、バージョン付きファイル名をオブジェクトに設定します。オブジェクトを頻繁に更新
する必要がある場合は、以下の理由で、オブジェクトのバージョニングを第一に使用することをお勧
めします。
• バージョニングを使用すると、ローカルにキャッシュされている、または企業のキャッシュプロキ
シの背後にキャッシュされているバージョンをユーザーが保持している場合でも、リクエストが
どのオブジェクトを返すかを制御できます。オブジェクトを無効にした場合、キャッシュ内でオブ
ジェクトが有効期限切れになるまで、ユーザーに旧バージョンが引き続き表示されることがありま
す。
• CloudFront アクセスログにオブジェクト名が含まれるので、バージョニングを使用すると、オブ
ジェクトの変更結果の分析が容易になります。
• バージョニングは、さまざまなバージョンのオブジェクトをさまざまなユーザーに供給する方法を
提供します。
• バージョニングによって、オブジェクトのリビジョン間のロールフォワードとロールバックが簡素
化されます。
API Version 2016-09-29
143
Amazon CloudFront 開発者ガイド
オブジェクトの無効化(ウェブ
ディストリビューションのみ)
• バージョニングのほうがコストが安くなります。CloudFront が新しいバージョンのオブジェクトを
エッジロケーションに転送することに関して料金を支払う必要がありますが、オブジェクトの無効
化に関して料金を支払う必要はありません。
オブジェクトのバージョニングの詳細については、「バージョン付きのオブジェクト名を使用した既
存オブジェクトの更新 (p. 135)」を参照してください。
無効にするオブジェクトの決定
ディレクトリ内のすべてのオブジェクトや、名前が同じ文字で始まるすべてのオブジェクトなど、複
数のオブジェクトを無効にする場合は、無効化パスの末尾に * ワイルドカードを含めることができま
す。* ワイルドカードの使用の詳細については、「Invalidation paths」を参照してください。
選択されたオブジェクトを無効にする必要があり、ユーザーがオリジンのすべてのオブジェクトに必
ずしもアクセスしない場合は、ビューアが CloudFront からどのオブジェクトを要求したかを確認し、
そのオブジェクトのみを無効にできます。ビューアがどのオブジェクトを要求したかを確認するに
は、CloudFront アクセスログの作成を有効にします。アクセスログの詳細については、「アクセスロ
グ (p. 289)」を参照してください。
無効にするオブジェクトの指定
オブジェクトを無効にするために使用するのが、CloudFront コンソールまたは CloudFront API かにか
かわらず、オブジェクトを指定するための要件と制限は同じです。無効にするオブジェクトの指定時
には、以下の事項に注意してください。
大文字と小文字の区別
無効化パスでは大文字と小文字が区別されます。そのため、/images/image.jpg と /images/
Image.jpg は 2 つの異なるオブジェクトを指定したことになります。
デフォルトのルートオブジェクト
デフォルトルートオブジェクトを無効にする場合、他のオブジェクトのパスを指定する場合と同
じ方法でパスを指定します。
配布タイプ
ウェブディストリビューションに関連付けられたオブジェクトのみを無効にできます。
Cookie の転送
オリジンに Cookie を転送するように CloudFront を設定した場合、CloudFront エッジキャッ
シュにオブジェクトの複数のバージョンが含まれることがあります。オブジェクトを無効にす
ると、CloudFront は、関係付けられた Cookie に関係なく、そのオブジェクトのキャッシュされ
たあらゆるバージョンを無効にします。一部のバージョンを選択して無効にすることも、関連
付けられた Cookie に基づいてその他のバージョンを選択して無効にすることもできません。詳
細については、「Cookie に基づいてオブジェクトをキャッシュするように CloudFront を設定す
る (p. 126)」を参照してください。
ヘッダーの転送
ヘッダーのホワイトリストをオリジンに転送し、ヘッダーの値に基づいてキャッシュするように
CloudFront を設定した場合、CloudFront エッジキャッシュにオブジェクトの複数のバージョン
を含むことがあります。オブジェクトを無効にすると、CloudFront は、ヘッダー値に関係なく、
そのオブジェクトのキャッシュされたあらゆるバージョンを無効にします。ヘッダー値に基づい
て一部のバージョンのみ選択して無効にすることはできません(すべてのヘッダーをオリジン
に転送するように CloudFront を設定した場合、CloudFront はオブジェクトをキャッシュしませ
ん)。詳細については、「リクエストヘッダーに基づいてオブジェクトをキャッシュするように
CloudFront を設定する (p. 128)」を参照してください。
クエリ文字列の転送
クエリ文字列をオリジンに転送するように CloudFront を構成している場合、次の例に示すよう
に、オブジェクトを無効にするときにクエリ文字列を含める必要があります。
• images/image.jpg?parameter1=a
API Version 2016-09-29
144
Amazon CloudFront 開発者ガイド
オブジェクトの無効化(ウェブ
ディストリビューションのみ)
• images/image.jpg?parameter1=b
クライアントリクエストに、同じオブジェクトに対する 5 つの異なるクエリ文字列が含まれる場
合、クエリ文字列ごとに 1 回ずつ、5 回オブジェクトを無効にするか、次の例に示すように個別
の無効化パスに * ワイルドカードを使用できます。
/images/image.jpg*
無効化パスでのワイルドカードの使用の詳細については、「Invalidation paths」を参照してくだ
さい。クエリ文字列の詳細については、「クエリ文字列パラメーターに基づいてキャッシュする
ように CloudFront を設定する (p. 123)」を参照してください。使用中のクエリ文字列を確認
するには、CloudFront ログ作成を有効にすることができます。詳細については、「アクセスロ
グ (p. 289)」を参照してください。
制限
無効化の制限については、「無効化の制限 (p. 148)」を参照してください。
Microsoft Smooth Streaming ファイル
対応するキャッシュ動作に対してスムーズストリーミングを有効にした場合は、Microsoft
Smooth Streaming 形式のメディアファイルを無効にすることはできません。
パスの ASCII 以外の文字または安全でない文字
パスに ASCII 以外の文字が含まれるか、RFC 1783(http://www.ietf.org/rfc/rfc1738.txt)に規定さ
れた安全でない文字が含まれる場合、その文字を URL エンコードします。パスに含まれる他の文
字を URL エンコードしないでください。URL エンコードした場合、CloudFront は、更新された
オブジェクトの旧バージョンを無効にしません。
無効化パス
パスはディストリビューションを基準とする相対パスです。先頭の / はオプションです。たとえ
ば、http://d111111abcdef8.cloudfront.net/images/image2.jpg のオブジェクトを無
効にするには、次のように指定します。
/images/image2.jpg
または
images/image2.jpg
* ワイルドカードを使用して、同時に複数のオブジェクトを無効にすることもできます。0 個以
上の文字を置き換える * は、無効化パスの最後の文字である必要があります。以下に例を示しま
す。
• ディレクトリ内のすべてのオブジェクトを無効にするには:
/directory-path/*
• ディレクトリ、そのすべてのサブディレクトリ、およびそのディレクトリとサブディレクトリ
のすべてのオブジェクトを無効にするには:
/directory-path*
• 同じ名前でファイル名拡張子が異なるすべてのファイル(logo.jpg、logo.png、logo.gif など)
を無効にするには:
/directory-path/file-name*
• ファイル名拡張子にかかわらず、ディレクトリ内でファイル名が同じ文字で始まるすべての
ファイル(HLS 形式の動画のすべてのファイルなど)を無効にするには:
/directory-path/initial-characters-in-file-name*
• クエリ文字列パラメーターに基づいてキャッシュするように CloudFront を設定し、オブジェク
トのすべてのバージョンを無効にするには:
/directory-path/file-name.file-name-extension*
API Version 2016-09-29
145
Amazon CloudFront 開発者ガイド
オブジェクトの無効化(ウェブ
ディストリビューションのみ)
• ディストリビューション内のすべてのオブジェクトを無効にするには:
/*
パスの最大長は 4000 文字です。
無効化パスを送信する料金は、無効にするオブジェクトの数に関係なく同じです。つまり、1 つ
のオブジェクト (/images/logo.jpg) であっても、ディストリビューションに関連付けらたすべ
てのオブジェクト (/*) であっても同じです。詳細については、「Amazon CloudFront 料金表」を
参照してください。
無効化パスがディレクトリであり、ディレクトリの指定方法(末尾のスラッシュ (/) を付けるか
どうか)を標準化していない場合、末尾のスラッシュを付けたディレクトリと付けないディレク
トリの両方を無効にすることをお勧めします(例: /images および /images/)。詳細について
は、「パブリック URL がディレクトリの無効化に与える影響 (p. 119)」を参照してください。
書名付き URL
署名付き URL を使用している場合は、URL の疑問符 (?) の前の部分のみを含めてオブジェクトを
無効にします。
オブジェクトの無効化および無効化に関する情報の表示
CloudFront コンソールまたは CloudFront API アクションを使用して、無効化の作成と実行、以前に
送信された無効化のリストの表示、および個々の無効化に関する詳細情報の表示を行うことができま
す。また、既存の無効化のコピー、オブジェクトパスのリストの編集、および編集された無効化の実
行を行うこともできます。
該当するトピックを参照してください。
• CloudFront コンソールを使用したオブジェクトの無効化 (p. 146)
• CloudFront コンソールを使用した既存の無効化のコピー、編集、および再実行 (p. 147)
• CloudFront コンソールを使用した無効化のリストの表示 (p. 147)
• CloudFront コンソールを使用して無効化に関する情報を表示する (p. 147)
• CloudFront API を使用したオブジェクトの無効化および無効化に関する情報の表示 (p. 148)
CloudFront コンソールを使用したオブジェクトの無効化
CloudFront コンソールを使用してオブジェクトを無効にするには、次の手順に従います。
CloudFront コンソールを使用してオブジェクトを無効にするには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
無効にするオブジェクトのディストリビューションを選択します。
3.
[Distribution Settings] を選択します。
4.
[Invalidations] タブを選択します。
5.
[Create Invalidation] を選択します。
6.
無効にするオブジェクトについて、1 行ごとに 1 つの無効化パスを入力します。無効パスの指定
の詳細については、「無効にするオブジェクトの指定 (p. 144)」を参照してください。
Important
オブジェクトパスを慎重に指定します。無効化リクエストは開始後にキャンセルするこ
とはできません。
API Version 2016-09-29
146
Amazon CloudFront 開発者ガイド
オブジェクトの無効化(ウェブ
ディストリビューションのみ)
7.
[Invalidate] を選択します。
CloudFront コンソールを使用した既存の無効化のコピー、編集、および再実
行
以前に作成した無効化をコピーし、無効化パスのリストを更新して、更新した無効化を実行すること
ができます。既存の無効化をコピーし、無効化パスを更新して、更新した無効化を実行せずに保存す
ることはできません。
Important
進行中の無効化をコピーし、無効化パスのリストを更新して、更新した無効化を実行した場
合、コピーした無効化を CloudFront が停止または削除することはありません。ある無効化パ
スがオブジェクトとコピーの両方に含まれる場合、CloudFront はこのオブジェクトの無効化
を 2 回試みます。この 2 回の無効化は月ごとの無料の無効化の最大数に対してカウントされ
ます。無料で行うことができる無効化の最大数にすでに達している場合は、各オブジェクト
の両方の無効化に対して料金が発生します。詳細については、「無効化の制限 (p. 148)」を
参照してください。
CloudFront コンソールを使用して、既存の無効化のコピー、編集、および再実行を行う
1.
2.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
コピーする無効化が含まれるディストリビューションを選択します。
3.
4.
[Distribution Settings] を選択します。
[Invalidations] タブを選択します。
5.
コピーする無効化を選択します。
コピーする無効化が不明な場合は、無効化を選択し、[Details] を選択すると、その無効化の詳細
情報が表示されます。
6.
7.
8.
[Copy] を選択します。
必要に応じて、無効化パスのリストを更新します。
[Invalidate] を選択します。
CloudFront コンソールを使用した無効化のリストの表示
コンソールを使用して、ディストリビューションにおいて作成および実行された最後の 100 個の無効
化のリストを表示できます。100 個を超える無効化のリストを取得する場合は、GET Invalidation List
API アクションを使用します。詳細については、『Amazon CloudFront API リファレンス』の「GET
Invalidation List」を参照してください。
CloudFront コンソールを使用して、無効化のリストを表示するには
1.
2.
3.
4.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
無効化リストの表示の対象となるディストリビューションを選択します。
[Distribution Settings] を選択します。
[Invalidations] タブを選択します。
CloudFront コンソールを使用して無効化に関する情報を表示する
ディストリビューション ID、無効化 ID、無効化のステータス、無効化が作成された日時、無効化パス
の完全リストを含め、無効化に関する詳細情報を表示できます。
API Version 2016-09-29
147
Amazon CloudFront 開発者ガイド
オブジェクトの無効化(ウェブ
ディストリビューションのみ)
CloudFront コンソールを使用して、無効化に関する情報を表示するには
1.
2.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
詳細情報の表示の対象となる無効化が含まれるディストリビューションを選択します。
3.
4.
[Distribution Settings] を選択します。
[Invalidations] タブを選択します。
5.
詳細情報の表示の対象となる無効化を選択します。
6.
[Details] を選択します。
CloudFront API を使用したオブジェクトの無効化および無効化に関する情報
の表示
オブジェクトの無効化に関する情報、および CloudFront API, を使用して無効化に関する情報を表示
する方法については、「Amazon CloudFront API リファレンス」の該当するトピックを参照してくだ
さい。
• オブジェクトの無効化: POST Invalidation
• 無効化のリストの取得: GET Invalidation List
• 特定の無効化に関する情報の取得: GET Invalidation
オブジェクトを無効にするためのサードパーティツール
CloudFront から提供される無効化方法に加えて、いくつかのサードパーティツールでオブジェク
トを無効にするための方法が提供されます。ツールのリストについては、「オブジェクトの無効
化 (p. 395)」を参照してください。
無効化の制限
オブジェクトを個別に無効にする場合は、進行中のディストリビューションごとに最大 3,000 個のオ
ブジェクトまで、一度に無効化リクエストを作成できます。これは、最大 3,000 個のオブジェクト
に対する 1 つの無効化リクエスト、1 つのオブジェクトに対する最大 3,000 個のリクエスト、または
3,000 個のオブジェクトを超えないその他の任意の組み合わせとすることができます。たとえば、そ
れぞれ 100 個のオブジェクトを無効にする 30 個の無効化リクエストを送信できます。30 個の無効化
リクエストがすべてまだ実行中である限り、それ以上の無効化リクエストを送信することはできませ
ん。この制限を超えた場合、CloudFront はエラーメッセージを返します。
* ワイルドカードを使用している場合、最大 15 個の無効化パスのリクエストを一度に作成できます。
また、進行中のディストリビューションごとに最大 3,000 個の個別のオブジェクトを同時に作成する
ことができます。ワイルドカードの無効化リクエストの制限は、オブジェクトの個別の無効化の制限
とは無関係です。
Note
CloudFront が無効化リクエストを完了するには、通常 10~15 分かかります。所要時間は、
リクエストに含まれる無効化パスによって異なります。
オブジェクトの無効化に対する支払い
1 か月に送信した無効化パスのうち、最初の 1000 件は無料です。1 か月に 1000 件を超えると、無
効化パス 1 件ごとに支払いが発生します。無効なパスは 1 つのオブジェクト(/images/logo.jpg
など)に対して、または複数のオブジェクト(/images/*)に対して発生する場合がありま
す。CloudFront が無数のオブジェクトを無効にした場合でも、ワイルドカード * は 1 つのパスとして
含まれます。
API Version 2016-09-29
148
Amazon CloudFront 開発者ガイド
エラーレスポンスのカスタマイズ
1 か月あたり 1000 個の無効化パスの上限は、1 つの AWS アカウントで作成するすべてのディ
ストリビューションの無効化パスの合計数に対して適用されます。たとえば、AWS アカウント
[email protected] を使用して 3 個のディストリビューションを作成し、ある月に、各ディスト
リビューションに 600 個の無効化パス(合計で 1,800 個の無効化パス)を送信しました。この場
合、AWS は、その月に 800 個の無効化パスに対して料金を請求します。無効化の料金表に関する具
体的な情報については、「Amazon CloudFront 料金表」を参照してください。無効化パスの詳細につ
いては、「Invalidation paths」を参照してください。
エラーレスポンスのカスタマイズ
トピック
• カスタムエラーページのキャッシュ動作を作成または更新する (p. 150)
• レスポンスコードを変更する (p. 151)
• CloudFront がエラーをキャッシュする時間を制御する (p. 151)
• カスタムエラーページが利用不可である場合の CloudFront の応答 (p. 152)
• カスタムエラーページの料金 (p. 152)
• エラーレスポンス動作を構成する (p. 152)
CloudFront から供給されているオブジェクトが何らかの理由で使用できなくなったとき、通常、ウェ
ブサーバーは CloudFront に HTTP ステータスコードを返します。たとえば、ビューアが無効な URL
を指定している場合、ウェブサーバーは 404 ステータスコードを CloudFront に返し、CloudFront は
そのステータスコードをビューアに返します。ビューアには、次のような簡潔で特に書式設定されて
いないデフォルトメッセージが表示されます。
Not Found: The requested URL /myfilename.html was not found on this server.
デフォルトメッセージはなく、お客様のウェブサイトの他のページと同じ書式設定のカスタムエラー
メッセージを表示することを希望する場合は、カスタムエラーメッセージを含むオブジェクト(例:
HTML ファイル)が CloudFront からビューアに返されるようにすることができます。
API Version 2016-09-29
149
Amazon CloudFront 開発者ガイド
カスタムエラーページのキャッ
シュ動作を作成または更新する
サポートされている HTTP ステータスコードごとに異なるオブジェクトを指定することができます。
または、サポートされているすべてのステータスコードに同じオブジェクトを使用することもできま
す。一部のステータスコードにオブジェクトを指定して、それ以外には指定しないことも可能です。
CloudFront を通して供給されているオブジェクトは、様々な理由で使用できなくなることがありま
す。理由は、大きく 2 つに分類できます。以下にそれぞれを説明します。
• クライアントエラーは、リクエストに問題があります。たとえば、指定した名前のオブジェクトを
取得できない、または Amazon S3 バケット内のオブジェクトを取得するために必要な許可をユー
ザーが持っていないという場合です。クライアントエラーが発生すると、オリジンは 400 番台の
HTTP ステータスコードを CloudFront に返します。
• サーバーエラーは、オリジンサーバーに問題があります。たとえば、HTTP サーバーが混雑してい
たり使用不能であったりする場合です。サーバーエラーが発生すると、オリジンサーバーから 500
番台の HTTP ステータスコードが CloudFront に返されるか、または一定の時間オリジンサーバー
から CloudFront へのレスポンスがなくなり(ゲートウェイタイムアウトと見なされて)504 ステー
タスコードが返されます。
CloudFront がカスタムエラーページを返すことのできる HTTP ステータスコードは、以下のとおりで
す。
• 400、403、404、405、414、416
• 500、501、502、503、504
Note
リクエストされた範囲は不適格であることを示す HTTP ステータスコード 416(Requested
Range Not Satisfiable)のカスタムエラーページを作成したり、オリジンが CloudFront にス
テータスコード 416 を返すと CloudFront がビューアに返す HTTP ステータスコードを変更
したりできます。(詳細については、「レスポンスコードを変更する (p. 151)」を参照して
ください)。ただし、CloudFront はステータスコード 416 のレスポンスをキャッシュしない
ので、ステータスコード 416 の [Error Caching Minimum TTL] の値を指定することはできます
が、CloudFront はそれを使用しません。
CloudFront がオリジンからのエラーレスポンスを処理する方法の詳細な説明は、「CloudFront
がオリジンからの HTTP 4xx および 5xx ステータスコードを処理してキャッシュに保持する方
法 (p. 182)」を参照してください。
カスタムエラーページのキャッシュ動作を作成また
は更新する
オブジェクトとカスタムエラーページを別の場所に保存する場合は、次の状況に該当するときに適用
されるキャッシュ動作をディストリビューションに組み込む必要があります。
• Path Pattern の値が、カスタムエラーメッセージのパスと一致する。たとえば、4xx エラーのカス
タムエラーページを /4xx-errors というディレクトリーの Amazon S3 バケットに保存したとし
ます。このとき、パスパターンによってカスタムエラーページのリクエストがルーティングされ
る場所のキャッシュ動作を、ディストリビューションに組み込む必要があります(例: /4xx-errors/
*)。
• Origin の値が、カスタムエラーページを含むオリジンの Origin ID の値を指定している。
詳細については、トピック「ウェブディストリビューションを作成または更新する場合に指定する
値 (p. 67)」の「キャッシュ動作の設定 (p. 73)」を参照してください。
API Version 2016-09-29
150
Amazon CloudFront 開発者ガイド
レスポンスコードを変更する
レスポンスコードを変更する
CloudFront から返される HTTP ステータスコードを選択するとともに、特定の HTTP ステータス
コードにカスタムエラーページを指定することができます。たとえば、オリジンから 500 ステータ
スコードが CloudFront に返されるときに、CloudFront からカスタムエラーページと 200 ステータス
コード(OK)がビューアに返されるようにしたいことがあります。さまざまな理由で、オリジンから
CloudFront に返されるステータスコードとは異なるステータスコードが CloudFront からビューアに
返されることが必要になる場合があります。
• インターネットデバイス(一部のファイアウォールやコーポレートプロキシーなど)の中に
は、HTTP 4xx と 5xx を遮断して、レスポンスをビューアに返さないものがあります。200 に置き
換えるなら、レスポンスが遮断されることはほぼなくなります。
• 各種のクライアントエラーとサーバーエラーを区別しなくてよいのであれば、4xx および 5xx のす
べてのステータスコードに対して 400 または 500 を CloudFront が返す値として指定することがで
きます。
• 200 ステータスコード(OK)と静的ウェブサイトが返されるようにして、お客様のウェブサイトが
停止していることをカスタマーに気づかれないようにすることもできます。
CloudFront アクセスログを有効にし、レスポンスの HTTP ステータスコードを変更するように
CloudFront を設定した場合、アクセスログの sc-status 列の値は、指定したステータスコードにな
ります。ただし、x-edge-result-type 列の値は影響を受けません。この列の値は引き続きオリジ
ンからのレスポンスの結果の型になります。たとえば、オリジンが 404(Not Found)を CloudFront
に返すときに 200 ステータスコードを返すように CloudFront を設定したとします。オリジンが 404
ステータスコードでリクエストに応答すると、アクセスログの sc-status 列の値は 200 になります
が、x-edge-result-type 列の値は Error になります。
カスタムエラーページと共に以下の HTTP ステータスコードのいずれかを返すように、CloudFront を
設定できます。
• 200
• 400、403、404、405、414、416
• 500、501、502、503、504
CloudFront がエラーをキャッシュする時間を制御す
る
デフォルトでは、オリジンから HTTP 4xx または 5xx ステータスコードが返されると、CloudFront は
これらのエラーレスポンスを 5 分間キャッシュし、その後オブジェクトに対する次のリクエストをオ
リジンに送信して、エラーの原因となった問題が解決され、リクエストしたオブジェクトが利用可能
になったかどうか確認します。
Note
リクエストされた範囲は不適格であることを示す HTTP ステータスコード 416(Requested
Range Not Satisfiable)のカスタムエラーページを作成したり、オリジンが CloudFront にス
テータスコード 416 を返すと CloudFront がビューアに返す HTTP ステータスコードを変更
したりできます。(詳細については、「レスポンスコードを変更する (p. 151)」を参照して
ください)。ただし、CloudFront はステータスコード 416 のレスポンスをキャッシュしない
ので、ステータスコード 416 の [Error Caching Minimum TTL] の値を指定することはできます
が、CloudFront はそれを使用しません。
CloudFront がキャッシュする 4xx および 5xx ステータスコードそれぞれに対して、エラーキャッシュ
期間(エラーキャッシュ最小 TTL)を指定することができます。手順については、「エラーレスポン
API Version 2016-09-29
151
Amazon CloudFront 開発者ガイド
カスタムエラーページが利用不可
である場合の CloudFront の応答
ス動作を構成する (p. 152)」を参照してください。期間を指定する場合は、以下の点に注意してくだ
さい。
• 短いエラーキャッシュ期間を指定すると、長い期間を指定した場合に比べて CloudFront からオリ
ジンに転送されるリクエストの数が多くなります。5xx エラーの場合、期間を短く設定することに
よって、オリジンからエラーが返されることになった問題が悪化する可能性があります。
• オリジンがオブジェクトに関するエラーを返すと、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. 142)」を参照してください。
カスタムエラーページが利用不可である場合の
CloudFront の応答
HTTP ステータスコードに対してカスタムエラーページを返すように CloudFront を構成したのに、カ
スタムエラーページが利用不可である場合、CloudFront は CloudFront がカスタムエラーページを持
つオリジンから受信したステータスコードをビューアに返します。たとえば、カスタムオリジンから
500 ステータスコードが返され、500 ステータスコードのためのカスタムエラーページを Amazon S3
バケットから取得するように CloudFront を構成してあるとします。ところが、だれかがうっかりカス
タムエラーページをバケットから削除してしまいました。そのオブジェクトをリクエストしたビュー
アに対して、CloudFront は HTTP 404 ステータスコード(Not found)を返します。
カスタムエラーページの料金
CloudFront がカスタムエラーページをビューアに返したときに、リクエストしたオブジェクトの料金
ではなく、カスタムエラーページの標準 CloudFront 料金を支払います。CloudFront の料金の詳細に
ついては、「Amazon CloudFront 料金表」を参照してください。
エラーレスポンス動作を構成する
CloudFront API またはコンソールを使用して、CloudFront エラーレスポンスを設定できま
す。CloudFront API を使用してエラーレスポンスを構成する方法については、「Amazon CloudFront
API リファレンス」の「PUT Distribution Config」に記載されている CustomErrorResponses エレメ
ントの箇所を参照してください。
API Version 2016-09-29
152
Amazon CloudFront 開発者ガイド
エラーレスポンス動作を構成する
コンソールを使用して CloudFront エラーレスポンスを構成するには
1.
オリジンから HTTP 4xx または 5xx エラーが返されたときに CloudFront がビューアに返すカスタ
ムエラーページを作成します。ページは CloudFront からアクセス可能な場所に保存します。
カスタムオリジンを使用していない場合であっても、カスタムエラーページは Amazon S3 バ
ケットに保存することをお勧めします。カスタムエラーページを HTTP サーバーに保存した
場合、このサーバーが 5xx エラーを返し始めるなら、オリジンサーバーが利用不可であるため
に、CloudFront はビューアに返すべきファイルを取得できません。
2.
少なくとも、カスタムエラーページに対する read 許可が CloudFront に付与されていることを確
認してください。
Amazon S3 許可の詳細については、「Amazon Simple Storage Service 開発者ガイド」の「アク
セスコントロール」を参照してください。Amazon S3 コンソールを使用して許可を更新する方法
については、「Amazon Simple Storage Service Console User Guide」を参照してください。
3.
(オプション)可能であれば、Cache-Control ディレクティブまたは Expires ヘッダーを、特
定のオブジェクトに対するエラーレスポンスとともに追加するようにオリジンサーバーを構成し
ます。詳細については、「CloudFront がエラーをキャッシュする時間を制御する (p. 151)」を
参照してください。
4.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
5.
ディストリビューションのリストで、更新するディストリビューションを選択して、[Distribution
Settings] を選択します。
6.
[Error Pages] タブを選択します。その後、[Create Custom Error Response] を選択するか、また
は既存のエラーコードを選択するかして、[Edit] を選択します。
7.
適切な値を入力します。詳細については、「Custom Error Pages(カスタムエラーページ)と
Error Caching(エラーキャッシュ) (p. 86)」を参照してください。
8.
カスタムエラーページを返すように CloudFront を構成した場合は、該当するキャッシュ動作を追
加または更新します。詳細については、「カスタムエラーページのキャッシュ動作を作成または
更新する (p. 150)」を参照してください。
9.
変更を保存するには、[Yes, Edit] を選択します。
API Version 2016-09-29
153
Amazon CloudFront 開発者ガイド
CloudFront がオブジェクトの部分的リ
クエスト(レンジ GET)を処理する方法
CloudFront がオブジェクトの部分的リクエスト
(レンジ GET)を処理する方法
大きなオブジェクトの場合、エンドユーザーのブラウザまたはクライアントは、複数の GET リクエス
トを実行し、Range リクエストヘッダーを使用して、小さい単位でオブジェクトをダウンロードする
場合があります。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 バイト目が到着した直後に、要求された範囲または
オブジェクトをエンドユーザーに供給します。
Note
ビューワーが Range GET をリクエストし、オリジンは Transfer-Encoding: chunked を
返し、CloudFront はリクエストされた範囲ではなくオブジェクト全体をビューワーに返しま
す。
通常、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 範囲」を
参照してください。
API Version 2016-09-29
154
Amazon CloudFront 開発者ガイド
デフォルトルートオブジェクトの指定
(ウェブディストリビューションのみ)
デフォルトルートオブジェクトの指定(ウェブ
ディストリビューションのみ)
エンドユーザーがディストリビューション内のオブジェクトではなくディストリビューションの
ルート URL を要求した場合に特定のオブジェクト(デフォルトルートオブジェクト)を返すように
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 も依然として適
切に設定する必要があり、バケットに対する必要なアクセスレベルを確保する必要がありま
す。
API Version 2016-09-29
155
Amazon CloudFront 開発者ガイド
デフォルトルートオブジェクトの指定
(ウェブディストリビューションのみ)
デフォルトルートオブジェクトを定義しない場合、ディストリビューションのルートの要求はオリジ
ンサーバーに渡されます。Amazon S3 オリジンを使用する場合、以下のいずれかが返される場合があ
ります。
• Amazon S3 バケットのコンテンツのリスト – 以下のいずれかの条件が満たされる場合、CloudFront
を使用してディストリビューションにアクセスするユーザーにオリジンのコンテンツが表示されま
す。
• バケットが適切に構成されていない。
• ディストリビューションに関連付けられているバケット、およびバケット内のオブジェクトに対
する Amazon S3 アクセス許可で、すべてのユーザーにアクセスが付与されている。
• エンドユーザーがオリジンのルート URL を使用してオリジンにアクセスしている。
• オリジンのプライベートコンテンツのリスト – オリジンをプライベートディストリビューション
(構成者と CloudFront のみがアクセス可能)として構成している場合、ディストリビューションに
関連付けられた Amazon S3 バケットのコンテンツは、CloudFront 経由でディストリビューション
にアクセスできる認証情報を持っているユーザーにも表示されます。この場合、ユーザーは、オリ
ジンのルート URL を使用してコンテンツにアクセスできません。プライベートコンテンツの配信の
詳細については、「CloudFront を使用してプライベートコンテンツを供給する (p. 186)」を参照
してください。
• エラー 403 アクセス不可 – CloudFront は、ディストリビューションに関連付けられた Amazon S3
バケットに対する許可またはそのバケット内のオブジェクトに対する許可によって CloudFront およ
びすべてのユーザーのアクセスが拒否された場合にこのエラーを返します。
ウェブディストリビューションのコンテンツが公開されたり、エラーが返されたりすることを回避す
るには、以下の手順を実行して、ディストリビューションのデフォルトルートオブジェクトを指定し
ます。
ディストリビューションのデフォルトルートオブジェクトを指定するには
1.
デフォルトルートオブジェクトを、ディストリビューションが指しているオリジンにアップロー
ドします。
ファイルには、CloudFront でサポートされるあらゆるタイプを使用できます。ファイル名に対す
る制約事項のリストについては、「DistributionConfig Complex Type」の DefaultRootObject
エレメントの説明を参照してください。
Note
デフォルトルートオブジェクトのファイル名が長すぎるか、そのファイル名に無
効な文字が含まれている場合、CloudFront はエラー HTTP 400 Bad Request InvalidDefaultRootObject を返します。また、CloudFront はコードをキャッシュに
5 分間保持し、結果をアクセスログに書き込みます。
2.
オブジェクトの許可によって CloudFront に少なくとも read アクセスが付与されていることを確
認します。
Amazon S3 許可の詳細については、「Amazon Simple Storage Service 開発者ガイド」の「アク
セスコントロール」を参照してください。Amazon S3 コンソールを使用して許可を更新する方法
については、「Amazon Simple Storage Service Console User Guide」を参照してください。
3.
CloudFront コンソールまたは CloudFront API を使用して、デフォルトルートオブジェクトを参照
するようにディストリビューションを更新します。
CloudFront コンソールを使用して、デフォルトルートオブジェクトを指定するには、次を実行し
ます。
a.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/
にある、CloudFront コンソールを開きます。
API Version 2016-09-29
156
Amazon CloudFront 開発者ガイド
圧縮ファイルの供給
b.
上部ペインにあるディストリビューションのリストで、更新するディストリビューションを
選択します。
c.
d.
[Distribution Details] ペインの [General] タブで、[Edit] をクリックします。
[Edit Distribution] ダイアログボックスの [Default Root Object] フィールドに、デフォルト
ルートオブジェクトのファイル名を入力します。
オブジェクト名のみを入力します(例: index.html)。オブジェクト名の前に / を追加しな
いでください。
e.
変更を保存するには、[Yes, Edit] をクリックします。
CloudFront API を使用して、構成を更新するには、ディストリビューションの
DefaultRootObject エレメントの値を指定します。CloudFront API を使用してデフォルトルー
トオブジェクトを指定する方法については、「Amazon CloudFront API リファレンス」の「PUT
Distribution Config」を参照してください。
4.
ルート URL を要求することで、デフォルトルートオブジェクトが有効になっていることを確認し
ます。ブラウザにデフォルトルートオブジェクトが表示されない場合、以下のステップを実行し
ます。
a.
CloudFront コンソールにディストリビューションのステータスを表示し、ディストリビュー
ションが完全にデプロイされていることを確認します。
b.
ステップ 2 と 3 を繰り返し、適切な許可を付与したこと、およびデフォルトルートオブジェ
クトを指定するようにディストリビューションの構成を適切に更新したことを確認します。
圧縮ファイルの供給
ビューアがリクエストヘッダーに Accept-Encoding: gzip を含めるようのリクエストした場合
は、CloudFront が自動的に特定のタイプのファイルを圧縮し圧縮ファイルを供給するように設定でき
ます。コンテンツが圧縮されるとファイルが小さくなるため、ダウンロード時間が短縮されます。—
場合によっては、オリジナルの 4 分の 1 以下のサイズになることがあります。特に、JavaScript およ
び CSS ファイルでは、ダウンロード時間が短縮されると、ユーザーにウェブページが表示されるまで
の時間が短縮されます。また、CloudFront のデータ転送コストは供給されたデータの総量に基づくの
で、圧縮ファイルを供給すると、非圧縮ファイルを供給するよりもコストが安くなります。
Important
ビューアのリクエストにはリクエストヘッダーに Accept-Encoding: gzip が含まれている
必要があり、含まれていない場合 CloudFront はリクエストされたファイルを圧縮しません。
カスタムオリジンを使用すると、CloudFront の有無でファイルを圧縮するようにオリジンを設定で
きます。オリジンは、CloudFront が圧縮しないファイルタイプを圧縮することができます。(参照
CloudFront が圧縮するファイルタイプ (p. 159).) オリジンが圧縮ファイルを CloudFront に返す場
合、CloudFront はファイルが Content-Encoding ヘッダーの値に基づいて圧縮されていることを検
出し、ファイルを圧縮再度することはありません。
トピック
• CloudFront を使用してコンテンツを圧縮する (p. 157)
• カスタムオリジンを使用してコンテンツを圧縮する (p. 160)
CloudFront を使用してコンテンツを圧縮する
CloudFront は、Amazon S3 オリジンとカスタムオリジンのファイルを圧縮することができます。コ
ンテンツを圧縮するように CloudFront を設定した場合は、キャッシュの動作で設定を指定します。
API Version 2016-09-29
157
Amazon CloudFront 開発者ガイド
CloudFront を使用してコンテンツを圧縮する
コンテンツを圧縮するように CloudFront を設定した場合に、CloudFront がコンテンツを供給する方
法を示します。
1. CloudFront ディストリビューションを作成し更新して、コンテンツを圧縮するように CloudFront
を設定します。
2. ビューアがファイルをリクエストします。ビューアはリクエストに Accept-Encoding: gzip
ヘッダーを追加します。これは、ビューアが圧縮コンテンツをサポートすることを示します。
3. エッジロケーションで、CloudFront はリクエスト内で参照されるファイルの圧縮バージョンの
キャッシュを確認します。
4. 圧縮ファイルがキャッシュにすでに存在する場合、CloudFront はファイルをビューアに返し残りの
ステップをスキップします。
5. 圧縮ファイルがキャッシュにない場合、CloudFront はリクエストを Amazon S3 バケットまたはカ
スタムオリジンであるオリジンサーバーに転送します。
Note
CloudFront のキャッシュにファイルの非圧縮バージョンがある場合は、リクエストをオリ
ジンに転送します。
6. オリジンサーバーは、リクエストされたファイルの非圧縮バージョンを CloudFront に返します。
7. CloudFront は、ファイルが圧縮可能であるかどうかを判別します。
• ファイルは CloudFront が圧縮するタイプである必要があります。
• ファイルサイズは 1,000 ~ 10,000,000 バイトの間である必要があります。
• 応答には Content-Length ヘッダーを含めて、ファイルのサイズが CloudFront の圧縮範囲に含
まれるかどうかを CloudFront が判断できるようにする必要があります。Content-Length ヘッ
ダーがない場合、CloudFront はファイルを圧縮しません。
• レスポンスに Content-Encoding ヘッダーを含めることはできません。
8. ファイルが圧縮可能な場合、CloudFront はそれを圧縮して圧縮ファイルをビューアに返し、キャッ
シュに追加します。
9. ビューアがファイルを解凍します。
次の点に注意してください。
CloudFront が圧縮するファイルタイプ
CloudFront は、多数のファイル タイプのファイルを圧縮します。詳細な一覧については、
「CloudFront が圧縮するファイルタイプ (p. 159)」を参照してください。
CloudFront が圧縮するファイルのサイズ
CloudFront は 1,000 ~ 10,000,000 バイトのサイズのファイルを圧縮します。
Content-Length ヘッダー
オリジンは、応答に Content-Length ヘッダーを含めて、ファイルのサイズが CloudFront の
圧縮範囲に含まれるかどうかを CloudFront が判断できるようにする必要があります。ContentLength ヘッダーがない場合、CloudFront はファイルを圧縮しません。
Etag ヘッダー
コンテンツを圧縮するように CloudFront を設定した場合、CloudFront は圧縮したファイルから
ETag レスポンスヘッダーを削除します。ETag ヘッダーがある場合、CloudFront とオリジンは
それを使用して、CloudFront エッジキャッシュ内のファイルのバージョンがオリジンサーバーの
ファイルのバージョンと同じであるかどうかを判別できます。ただし、圧縮後は 2 つのバージョ
ンが同じになることはありません。その結果、圧縮ファイルの期限が切れて CloudFront が別のリ
クエストをオリジンに転送するときに、オリジンは HTTP ステータスコード 304(変更なし)を
返す代わりに、常にファイルを CloudFront に返します。
CloudFront がファイルを圧縮するように設定した場合、コンテンツはすでにエッジロケーションに存
在する
オリジンからファイルを取得するときに、CloudFront は各エッジロケーションでファイルを圧
縮します。コンテンツを圧縮するように CloudFront を設定すると、すでにエッジロケーショ
API Version 2016-09-29
158
Amazon CloudFront 開発者ガイド
CloudFront を使用してコンテンツを圧縮する
ンにあるファイルは圧縮しません。さらに、エッジロケーションのファイルの期限が切れて
CloudFront がファイルの別のリクエストをオリジンに転送した場合、エッジロケーションにすで
にファイルの最新バージョンがあることを意味する HTTP ステータスコード 304 をオリジンが返
すと、CloudFront はファイルを圧縮しません。CloudFront にエッジロケーションにすでに存在す
るファイルを圧縮させる場合は、これらのファイルを無効化する必要があります。詳細について
は、「オブジェクトの無効化(ウェブディストリビューションのみ) (p. 142)」を参照してくだ
さい。
カスタムオリジンがすでにファイルを圧縮するように設定されている
ファイルを圧縮するように CloudFront を設定し、ファイルを圧縮するよう設定されているカス
タムオリジンに CloudFront がリクエストを転送する場合、オリジンが CloudFront に返すファイ
ルがすでに圧縮されていることを示す Content-Encoding: gzip ヘッダーがカスタムオリジン
に含まれます。CloudFront はビューアにキャッシュされたファイルを返し、それをエッジロケー
ションにキャッシュします。
Note
レスポンスに Content-Encoding ヘッダーが含まれる場合、値に関係なく CloudFront
はファイルを圧縮しません。
リクエストに Accept-Encoding: gzip は含まれません
Accept-Encoding ヘッダーがリクエストにない場合、CloudFront は未圧縮のコンテンツを供給
します。Accept-Encoding ヘッダーに追加の値(deflate または sdch など)が含まれる場
合、CloudFront はそれらを削除してからリクエストをオリジンサーバーに転送します。
CloudFront が使用中
ごくまれに、CloudFront エッジロケーションの使用率が以上に高い場合、ファイルが圧縮されな
い場合があります。
CloudFront ディストリビューションがコンテンツを圧縮する
ように設定
ウェブディストリビューションがコンテンツを圧縮するよう設定するには、次の方法の 1 つを使用し
て該当するキャッシュ動作を更新します。
• CloudFront コンソール – [Compress objects automatically] を更新します。詳細については、
「CloudFront コンソールを使用したウェブディストリビューションの作成または更新 (p. 64)」を参
照してください。
• CloudFront API – Compress 要素の値を true に変更します。詳細については、「POST
Distribution」(新しいディストリビューションを作成する場合)または「PUT Distribution Config」
(既存のディストリビューションを更新する場合)を参照してください。
• AWS SDK の 1 つ –「AWS ドキュメント」ページの該当する SDK ドキュメントを参照してくださ
い。
• AWS CLI – 詳細については、『AWS Command Line Interface Reference』の「create-distribution」
または「update-distribution」を参照してください。
CloudFront が圧縮するファイルタイプ
コンテンツを圧縮するように CloudFront を設定すると、CloudFront は Content-Type ヘッダーに次
の値があるファイルを圧縮します。
application/eot
application/x-otf
application/font
application/x-perl
API Version 2016-09-29
159
Amazon CloudFront 開発者ガイド
カスタムオリジンを使用してコンテンツを圧縮する
application/font-sfnt
application/x-ttf
application/javascript
font/eot
application/json
font/ttf
application/opentype
font/otf
application/otf
font/opentype
application/pkcs7-mime
image/svg+xml
application/truetype
text/css
application/ttf
text/csv
application/vnd.ms-fontobject
text/html
application/xhtml+xml
text/javascript
application/xml
text/js
application/xml+rss
text/plain
application/x-font-opentype
text/richtext
application/x-font-truetype
text/tab-separated-values
application/x-font-ttf
text/xml
application/x-httpd-cgi
text/x-script
application/x-javascript
text/x-component
application/x-mpegurl
text/x-java-source
application/x-opentype
カスタムオリジンを使用してコンテンツを圧縮する
CloudFront が圧縮しないファイルタイプを圧縮する場合は、gzip を使用してこれらのタイプのファイ
ルを圧縮するようにカスタムオリジンを設定できます。CloudFront は他の圧縮アルゴリズムをサポー
トしていません。オリジンが圧縮されたファイルを CloudFront に返す場合、ファイルがすでに圧縮さ
れていることを CloudFront に示す Content-Encoding: gzip ヘッダーが含まれます。
Note
レスポンスに Content-Encoding ヘッダーが含まれる場合、値に関係なく CloudFront は
ファイルを圧縮しません。
オリジンサーバーで IIS が実行されている場合の圧縮ファイル
の供給
デフォルトでは、IIS は、CloudFront などのプロキシサーバー経由で送信されたリクエストに対して
圧縮コンテンツを供給しません。IIS を使用しており、IIS が httpCompressionelement を使用して
コンテンツを圧縮するように設定されている場合、noCompressionForProxies 属性の値を false
に変更すると、IIS は圧縮コンテンツを CloudFront に返します。
API Version 2016-09-29
160
Amazon CloudFront 開発者ガイド
カスタムオリジンを使用してコンテンツを圧縮する
さらに、数秒間隔よりも短い頻度でリクエストされるオブジェクトを圧縮した場合
は、frequentHitThreshold および frequentHitTimePeriod の値を変更する必要がある場合が
あります。
詳細については、Microsoft のウェブサイトで IIS に関するドキュメントを参照してください。
オリジンサーバーで NGINX が実行されている場合の圧縮ファ
イルの供給
CloudFront がリクエストをオリジンサーバーに転送するとき、Via ヘッダーが含められます。
これにより、NGINX は、リクエストがプロキシ処理されていると解釈します。デフォルトで
は、NGINX は、プロキシ処理されたリクエストの圧縮を無効にしています。使用しているバー
ジョンの NGINX に gzip_proxied 設定が含まれている場合は、値を any に変更して、NGINX が
圧縮コンテンツを CloudFront に返すようにします。詳細については、NGINX のドキュメントの
ngx_http_gzip_module モジュールに関する記述を参照してください。
API Version 2016-09-29
161
Amazon CloudFront 開発者ガイド
Amazon S3 オリジンにおける
リクエストとレスポンスの動作
リクエストとレスポンスの動作
以下のセクションでは、CloudFront がビューアリクエストを処理してそのリクエストを Amazon S3
またはカスタムオリジンに転送する方法、および CloudFront がオリジンからのレスポンスを処理す
る方法(CloudFront が 4xx および 5xx HTTP ステータスコードを処理およびキャッシュする方法を含
む)について説明します。
トピック
• Amazon S3 オリジンにおけるリクエストとレスポンスの動作 (p. 162)
• カスタムオリジンの場合のリクエストとレスポンスの動作 (p. 169)
• CloudFront がオリジンからの HTTP 3xx ステータスコードを処理する方法 (p. 181)
• CloudFront がオリジンからの HTTP 4xx および 5xx ステータスコードを処理してキャッシュに保
持する方法 (p. 182)
Amazon S3 オリジンにおけるリクエストとレス
ポンスの動作
トピック
• CloudFront がリクエストを処理して Amazon S3 オリジンサーバーに転送する方法 (p. 162)
• CloudFront が Amazon S3 オリジンサーバーからのレスポンスを処理する方法 (p. 167)
CloudFront がリクエストを処理して Amazon S3 オ
リジンサーバーに転送する方法
CloudFront がビューアリクエストを処理して Amazon S3 オリジンに転送する方法については、該当
するトピックを参照してください。
トピック
•
•
•
•
•
キャッシュ期間および最小 TTL (p. 163)
クライアント IP アドレス (p. 163)
条件付きの GET (p. 163)
Cookie (p. 164)
Cross-Origin Resource Sharing (CORS) (p. 164)
• GET リクエストに本文が含まれている (p. 164)
API Version 2016-09-29
162
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理して Amazon
S3 オリジンサーバーに転送する方法
• HTTP メソッド (p. 164)
• CloudFront が削除または更新する HTTP リクエストヘッダー (p. 165)
• リクエストの最大長と URL の最大長 (p. 166)
• OCSP Stapling (p. 166)
• プロトコル (p. 166)
• クエリ文字列 (p. 166)
• リクエストのタイムアウト (p. 166)
• 同じオブジェクト(トラフィックスパイク)の同時リクエスト (p. 167)
キャッシュ期間および最小 TTL
ウェブディストリビューションでは、CloudFront が別のリクエストをオリジンに転送するまでにオブ
ジェクトを CloudFront キャッシュに保持する時間を制御できます。これを行うには、次の手順を実行
します。
• Cache-Control または Expires ヘッダーフィールドを各オブジェクトに追加するようにオリジン
を構成します。
• CloudFront キャッシュ動作で、最小 TTL の値を指定します。
• デフォルト値の 24 時間を使用します。
詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
クライアント IP アドレス
ビューアがリクエストを CloudFront に送信し、X-Forwarded-For リクエストヘッダーを含めない
場合、CloudFront は TCP 接続からビューアの IP アドレスを取得して、IP アドレスが含まれた XForwarded-For ヘッダーを追加し、リクエストをオリジンに転送します。たとえば、CloudFront が
TCP 接続から IP アドレス 192.0.2.2 を取得する場合、以下のヘッダーをオリジンに転送します。
X-Forwarded-For: 192.0.2.2
ビューアがリクエストを CloudFront に転送して X-Forwarded-For リクエストヘッダーを含める場
合、CloudFront はビューアの IP アドレスを TCP 接続から取得してそれを X-Forwarded-For ヘッ
ダーの末尾に追加し、リクエストをオリジンに転送します。たとえば、ビューアのリクエストに XForwarded-For: 192.0.2.4,192.0.2.3 が含まれ、CloudFront が TCP 接続から IP アドレス
192.0.2.2 を取得する場合、以下のヘッダーをオリジンに転送します。
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
Note
X-Forwarded-For ヘッダーには、必要に応じて IPv4 アドレス (192.0.2.44 など) および
IPv6 アドレス (2001:0db8:85a3:0000:0000:8a2e:0370:7334 など) が含まれます。
条件付きの GET
CloudFront は、エッジキャッシュで有効期限切れになっているオブジェクトに対するリクエストを受
け取ると、リクエストを Amazon S3 オリジンに転送し、オブジェクトの最新バージョンを取得する
か、CloudFront エッジキャッシュに最新バージョンがすでに存在することを Amazon S3 に確認しま
す。Amazon S3 はオブジェクトを CloudFront に最初に送信するときに、ETag 値と LastModified
値をレスポンスに含めます。CloudFront は、CloudFront が Amazon S3 に転送する新しいリクエスト
には、次のどちらかまたは両方を追加します。
API Version 2016-09-29
163
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理して Amazon
S3 オリジンサーバーに転送する方法
• オブジェクトの有効期限切れバージョンの ETag 値が含まれる If-Match または If-None-Match
ヘッダー。
• オブジェクトの有効期限切れバージョンの 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 設定を尊重する場合は、選択したヘッ
ダーを Amazon S3 に転送するように CloudFront を設定します。詳細については、「リクエストヘッ
ダーに基づいてオブジェクトをキャッシュするように CloudFront を設定する (p. 128)」を参照してく
ださい。
GET リクエストに本文が含まれている
ビューア GET のリクエストの本文が含まれている場合、CloudFront はビューアに HTTP ステータス
コード 403(禁止)を返します。
HTTP メソッド
サポートするすべての HTTP メソッドを処理するよう CloudFront を構成すると、CloudFront は
ビューアからの以下のリクエストを受け入れて Amazon S3 オリジンに転送します。
• DELETE
• GET
• HEAD
• OPTIONS
• PATCH
• POST
• PUT
CloudFront は、GET リクエストと HEAD リクエストへの応答を常にキャッシュします。OPTIONS リク
エストへの応答をキャッシュするように CloudFront を設定することもできます。CloudFront はその
他のメソッドを使用するリクエストへのレスポンスをキャッシュしません。
ディストリビューションのオリジンとして Amazon S3 バケットを使用し、CloudFront オリジンアク
セスアイデンティティを使用する場合、POST リクエストは一部の Amazon S3 リージョンでサポート
されず、これらリージョンの PUT リクエストでは追加のヘッダーが必要です。詳細については、「署
名バージョン 4 のみをサポートする Amazon S3 リージョンでのオリジンアクセスアイデンティティ
の使用 (p. 195)」を参照してください。
マルチパートアップロードを使用してオブジェクトを Amazon S3 バケットに追加する場合
は、CloudFront オリジンアクセスアイデンティティをディストリビューションに追加して、そのオリ
ジンアクセスアイデンティティに適切な許可を付与する必要があります。詳細については、「オリジ
ンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する (p. 190)」
を参照してください。
API Version 2016-09-29
164
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理して Amazon
S3 オリジンサーバーに転送する方法
Caution
CloudFront がサポートするすべての HTTP メソッドを受け入れて Amazon S3 に転送するよ
うに CloudFront を構成する場合、お客様の Amazon S3 コンテンツへのアクセスを制限する
CloudFront オリジンアクセスアイデンティティを作成して、そのオリジンアクセスアイデン
ティティに適切な許可を付与する必要があります。たとえば、PUT を使用したいので、上記
のメソッドを受け入れて転送するように CloudFront を構成するという場合は、削除すべきで
ないリソースをビューアが削除できないようにするために、DELETE リクエストを適切に処
理する Amazon S3 バケットポリシーまたは ACL を構成する必要があります。詳細について
は、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを
制限する (p. 190)」を参照してください。
Amazon S3 がサポートする操作の詳細については、「Amazon S3 ドキュメント」を参照してくださ
い。
CloudFront が削除または更新する HTTP リクエストヘッダー
CloudFront は、リクエストを Amazon S3 オリジンに転送する前に、以下のヘッダーフィールドを削
除または更新します。
• Accept
• Accept-Charset
• Accept-Encoding – 値が gzip を含む場合、CloudFront は Amazon S3 オリジンに AcceptEncoding: gzip を転送します。値が gzip含まない場合、CloudFront はリクエストをオリジンに
転送する前に Accept-Encoding ヘッダーフィールドを削除します。
• Accept-Language
• Authorization:
• GET、HEAD の各リクエスト: CloudFront は、リクエストをオリジンに転送する前に
Authorization ヘッダーフィールドを削除します。
• OPTIONS リクエスト: OPTIONS リクエストへの応答をキャッシュするように CloudFront を設定
した場合、CloudFront は、リクエストをオリジンに転送する前に、Authorization ヘッダー
フィールドを削除します。
OPTIONS リクエストへの応答をキャッシュするように CloudFront を設定しなかった場
合、CloudFront は、Authorization ヘッダーフィールドをオリジンに転送します。
• DELETE、PATCH、POST、PUT の各リクエスト: CloudFront は、リクエストをオリジンに転送する
前にヘッダーフィールドを削除しません。
• Connection – CloudFront は、Amazon S3 オリジンにリクエストを転送する前にこのヘッダーを
Connection: Keep-Alive ヘッダーに置き換えます。
• Cookie – Cookie を転送するように CloudFront を構成している場合、Amazon S3 オリジンに
Cookie ヘッダーフィールドが転送されます。そうでない場合、CloudFront は Cookie ヘッダー
フィールドを削除します。詳細については、「Cookie に基づいてオブジェクトをキャッシュするよ
うに CloudFront を設定する (p. 126)」を参照してください。
• Expect
• Host – CloudFront は、リクエストされたオブジェクトに関連付けられた Amazon S3 バケットの名
前に値を設定します。
• Proxy-Authorization
• Referer
• TE
• Upgrade
• User-Agent – CloudFront はこのヘッダーフィールドの値を Amazon CloudFront に置き換えま
す。
API Version 2016-09-29
165
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理して Amazon
S3 オリジンサーバーに転送する方法
リクエストの最大長と URL の最大長
パス、クエリ文字列(ある場合)、ヘッダーを含め、リクエストの最大長は 20480 バイトです。
CloudFront はリクエストから URL を構築します。この URL の最大長は 8192 文字です。
リクエストまたは URL がこの制限を超えると、CloudFront は、リクエストヘッダーフィールドが長
すぎることを示す HTTP ステータスコード 413(Request Header Fields Too Large)をビューアに返
してから、ビューアへの TCP 接続を終了します。
OCSP Stapling
オブジェクトに対する HTTPS リクエストをビューアが送信する際には、ドメインの SSL 証明書が無
効になっていないことを CloudFront またはビューアが認証機関 (CA) に対して確認する必要がありま
す。OCSP Stapling を使用すると、CloudFront で証明書を検証して CA からの応答をキャッシュでき
るため、クライアントが直接 CA に対して証明書を検証する必要がなくなり、証明書の検証速度が向
上します。
同一ドメイン内のオブジェクトに対する多数の HTTPS リクエストを CloudFront が受信した場合
は、OCSP Stapling によるパフォーマンス向上がさらに顕著になります。CloudFront エッジロケー
ション内の各サーバーは、別々の検証リクエストを送信する必要があります。同一ドメインに対する
多数の HTTPS リクエストを CloudFront が受信するとすぐに、エッジロケーション内のすべてのサー
バーが、SSL ハンドシェイクでパケットに "ステープリング" できるという CA からの応答を受信しま
す。証明書が有効であることをビューアが確認すると、CloudFront はリクエストされたオブジェクト
を提供できます。CloudFront エッジロケーション内でディストリビューションが十分なトラフィック
を確保できない場合、新しいリクエストは、CA に対して証明書がまだ検証されていないサーバーに
誘導される可能性が高くなります。この場合は、ビューアが検証ステップを別途実行し、CloudFront
サーバーがオブジェクトを提供します。この CloudFront サーバーも CA に検証リクエストを送信する
ため、同じドメイン名が含まれるリクエストを次に受信したときには、CA からの検証応答が既に存
在しているということになります。
プロトコル
CloudFront は、ビューアリクエストのプロトコル(HTTP または HTTPS)に基づいて、HTTP または
HTTPS リクエストをオリジンサーバーに転送します。
Important
Amazon S3 バケットがウェブサイトエンドポイントとして構成されている場合、オリジンと
の通信に HTTPS を使用するように CloudFront を構成することはできません。Amazon S3 は
その構成で HTTPS 接続をサポートしていないためです。
クエリ文字列
ウェブディストリビューションでは、CloudFront でクエリ文字列パラメーターを Amazon S3 オリジ
ンに転送するかどうかを構成できます。RTMP ディストリビューションでは、CloudFront はクエリ文
字列パラメーターを転送しません。詳細については、「クエリ文字列パラメーターに基づいてキャッ
シュするように CloudFront を設定する (p. 123)」を参照してください。
リクエストのタイムアウト
CloudFront のリクエストのタイムアウトは、HTTP メソッドによって決まります。
• GET および HEAD リクエスト – Amazon S3 が 30 秒以内に応答しない場合、CloudFront は接続を中
断して、オリジンに対する接続をさらに 2 回試みます。3 回目の試みでもオリジンが応答しない場
API Version 2016-09-29
166
Amazon CloudFront 開発者ガイド
CloudFront が Amazon S3 オリジンサー
バーからのレスポンスを処理する方法
合、CloudFront は同じオリジンのコンテンツに対する別のリクエストを受け取るまで接続を試みま
せん。
• DELETE、OPTIONS、PATCH、PUT、POST リクエスト – Amazon S3 が 30 秒以内に応答しない場
合、CloudFront は接続を中断し、オリジンへの接続を再試行しません。クライアントは、必要に応
じてリクエストを再送信できます。
すべてのリクエストで、CloudFront はオリジンとの接続の確立を試みます。接続が 10 秒以内に失敗
した場合、CloudFront は接続を中断し、オリジンへの接続をさらに 2 回試みます。3 回目の試みでも
オリジンが応答しない場合、CloudFront は同じオリジンのコンテンツに対する別のリクエストを受け
取るまで接続を試みません。
リクエストと接続のタイムアウトは変更できません。
同じオブジェクト(トラフィックスパイク)の同時リクエスト
CloudFront エッジロケーションがオブジェクトのリクエストを受け取り、オブジェクトが現在キャッ
シュにないか、有効期限が切れている場合、CloudFront はすぐに Amazon S3 オリジンにリクエスト
を送信します。トラフィックスパイクがある—同じオブジェクトへの追加のリクエストが、Amazon
S3 が最初のリクエストに応答する前にエッジロケーションに届く—場合、CloudFront は短時間一時
停止してから、オブジェクトへの追加のリクエストをオリジンに転送します。通常、最初のリクエス
トへのレスポンスは、それ以降のリクエストに対するレスポンスの前に、CloudFront エッジロケー
ションに届きます。この短い一時停止により、Amazon S3 の不要な負荷を減らすことができます。リ
クエストヘッダーやクエリ文字列に基づいてキャッシュするように CloudFront を設定した場合など、
追加のリクエストが同じでない場合、CloudFront はすべての一意のリクエストをオリジンに転送しま
す。
オリジンからのレスポンスに Cache-Control: no-cache ヘッダーが含まれている場合、通常
CloudFront は同じオブジェクトの次のリクエストをオリジンに転送し、オブジェクトが更新された
かどうかを判断します。ただし、トラフィックスパイクがあり、CloudFront が最初のリクエストをオ
リジンに転送した後で一時停止する場合、CloudFront がオリジンからレスポンスを受け取る前に、複
数のビューアリクエストが届くことがあります。CloudFront は、Cache-Control: no-cache ヘッ
ダーを含むレスポンスを受け取ると、元のリクエストを作成したビューアと、一時停止中にオブジェ
クトをリクエストしたすべてのビューアへのレスポンスでオブジェクトを送信します。オリジンから
レスポンスがあると、CloudFront は同じオブジェクトに対する次のビューアリクエストをオリジンに
転送します。CloudFront アクセスログでは、最初のリクエストが x-edge-result-type 列で Miss
として識別され、CloudFront が受け取ったそれ以降のすべてのリクエストは、Hit として識別されま
す。アクセスログファイル形式の詳細については、「ウェブディストリビューションのログファイル
形式 (p. 294)」を参照してください。
CloudFront が Amazon S3 オリジンサーバーからの
レスポンスを処理する方法
トピック
• 取り消されたリクエスト (p. 167)
• CloudFront が削除または更新する HTTP レスポンスヘッダー (p. 168)
• 最大ファイルサイズ (p. 168)
• リダイレクト (p. 168)
取り消されたリクエスト
オブジェクトがエッジキャッシュになく、CloudFront がオブジェクトをオリジンから取得したもの
の、リクエストされたそのオブジェクトを配信する前にビューアがセッションを終了すると(ブラウ
ザを閉じるなど)、CloudFront はそのオブジェクトをエッジロケーションにキャッシュしません。
API Version 2016-09-29
167
Amazon CloudFront 開発者ガイド
CloudFront が Amazon S3 オリジンサー
バーからのレスポンスを処理する方法
CloudFront が削除または更新する HTTP レスポンスヘッダー
CloudFront は、Amazon S3 オリジンからのレスポンスをビューアに転送する前に、以下のヘッダー
フィールドを削除または更新します。
• Set-Cookie – Cookie を転送するように CloudFront を構成している場合、Set-Cookie ヘッダー
フィールドがクライアントに転送されます。詳細については、「Cookie に基づいてオブジェクトを
キャッシュするように CloudFront を設定する (p. 126)」を参照してください。
• Trailer
• Transfer-Encoding – Amazon S3 オリジンがこのヘッダーフィールドを返す場合、CloudFront
は値を chunked に設定してビューアにレスポンスを返します。
• Upgrade
• Via – CloudFront は値を次のように設定します。
Via: 1.1 alphanumeric-string.cloudfront.net (CloudFront)
その後、ビューアにこのレスポンスを返します。以下に例を示します。
Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)
最大ファイルサイズ
CloudFront がビューアに返すレスポンス本文の最大サイズは 20 GB です。これには、ContentLength ヘッダーの値を指定しないチャンク転送レスポンスが含まれます。
リダイレクト
すべてのリクエストを別のホスト名にリダイレクトするように Amazon S3 バケットを構成
できます。別のホスト名には、別の Amazon S3 バケットまたは HTTP サーバーを使用でき
ます。すべてのリクエストをリダイレクトするようにバケットを構成しており、バケットが
CloudFront ディストリビューションのオリジンの場合、ディストリビューションのドメイン名(例:
d111111abcdef8.cloudfront.net)またはディストリビューションに関連付けられた代替ドメイン名
(CNAME)(例: example.com)を使用してすべてのリクエストを CloudFront ディストリビューショ
ンにリダイレクトするようにバケットを構成することをお勧めします。このように構成しない場合、
ビューアリクエストは CloudFront をバイパスし、オブジェクトは新しいオリジンから直接提供されま
す。
Note
代替ドメイン名にリクエストをリダイレクトする場合は、CNAME レコードを追加してド
メインの DNS サービスを更新する必要もあります。詳細については、「代替ドメイン名
(CNAME)を使用する (p. 53)」を参照してください。
すべてのリクエストをリダイレクトするようにバケットを構成した場合の動作を以下に示します。
1.
ビューア(例: ブラウザ)が CloudFront にオブジェクトを要求します。
2.
CloudFront は、ディストリビューションのオリジンである Amazon S3 バケットにリクエストを
転送します。
3.
Amazon S3 は、HTTP ステータスコード 301(Moved Permanently)と新しい場所を返します。
4.
CloudFront は、リダイレクトのステータスコードと場所をキャッシュし、ビューアに値を返しま
す。CloudFront がリダイレクトに従って新しい場所からオブジェクトを取得することはありませ
ん。
5.
ビューアはオブジェクトに対する別のリクエストを送信しますが、今回は、CloudFront から取得
した新しい場所を指定します。
API Version 2016-09-29
168
Amazon CloudFront 開発者ガイド
カスタムオリジンの場合のリクエストとレスポンスの動作
• Amazon S3 バケットがディストリビューションのドメイン名または代替ドメイン名を使
用してすべてのリクエストを CloudFront ディストリビューションにリダイレクトする場
合、CloudFront は新しい場所にある Amazon S3 バケットまたは HTTP サーバーのオブジェク
トを要求します。新しい場所からオブジェクトが返されると、CloudFront はオブジェクトを
ビューアに返し、エッジロケーションにオブジェクトをキャッシュします。
• Amazon S3 バケットがリクエストを別の場所にリダイレクトする場合、2 番目のリクエストは
CloudFront をバイパスします。新しい場所にある Amazon S3 バケットまたは HTTP サーバー
がオブジェクトをビューアに直接返すので、オブジェクトは CloudFront エッジキャッシュに一
切キャッシュされません。
カスタムオリジンの場合のリクエストとレスポン
スの動作
トピック
• CloudFront がリクエストを処理してカスタムオリジンサーバーに転送する方法 (p. 169)
• CloudFront がカスタムオリジンサーバーからのレスポンスを処理する方法 (p. 178)
CloudFront がリクエストを処理してカスタムオリジ
ンサーバーに転送する方法
CloudFront がビューアリクエストを処理してカスタムオリジンに転送する方法については、該当する
トピックを参照してください。
トピック
• 認証 (p. 170)
• キャッシュ期間および最小 TTL (p. 170)
• クライアント IP アドレス (p. 170)
• クライアント側の SSL 認証 (p. 171)
• 圧縮 (p. 171)
• 条件付きリクエスト (p. 171)
• Cookie (p. 171)
• Cross-Origin Resource Sharing (CORS) (p. 171)
• 暗号化 (p. 171)
• GET リクエストに本文が含まれている (p. 172)
• HTTP メソッド (p. 172)
• HTTP リクエストヘッダーと CloudFront の動作 (p. 173)
• HTTP バージョン (p. 176)
• リクエストの最大長と URL の最大長 (p. 176)
• OCSP Stapling (p. 176)
• 持続的接続 (p. 177)
• プロトコル (p. 177)
• クエリ文字列 (p. 177)
• リクエストのタイムアウト (p. 177)
• 同じオブジェクト(トラフィックスパイク)の同時リクエスト (p. 178)
API Version 2016-09-29
169
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
• ユーザーエージェントヘッダー (p. 178)
認証
DELETE、GET、HEAD、PATCH、POST、PUT リクエストの場合、Authorization ヘッダーをオリジ
ンに転送するように CloudFront を設定すると、クライアント認証を要求するようにオリジンサーバー
を設定できます。
OPTIONS リクエストの場合、次の CloudFront 設定を使用した場合のみ、クライアント認証を要求す
るようにオリジンサーバーを設定することができます。
• Authorization ヘッダーをオリジンに転送するように CloudFront を設定
• OPTIONS リクエストへの応答をキャッシュしないように CloudFront を設定
HTTP または HTTPS のいずれかを使用してオリジンにリクエストを転送するように CloudFront を構
成することができます。詳細については、「CloudFront で HTTPS を使用する (p. 254)」を参照して
ください。
キャッシュ期間および最小 TTL
ウェブディストリビューションでは、CloudFront が別のリクエストをオリジンに転送するまでにオブ
ジェクトを CloudFront キャッシュに保持する時間を制御できます。これを行うには、次の手順を実行
します。
• Cache-Control または Expires ヘッダーフィールドを各オブジェクトに追加するようにオリジン
を構成します。
• CloudFront キャッシュ動作で、最小 TTL の値を指定します。
• デフォルト値の 24 時間を使用します。
詳細については、「CloudFront エッジキャッシュにオブジェクトを保持する時間の指定(有効期限切
れ) (p. 136)」を参照してください。
クライアント IP アドレス
ビューアがリクエストを CloudFront に送信し、X-Forwarded-For リクエストヘッダーを含めない
場合、CloudFront は TCP 接続からビューアの IP アドレスを取得して、IP アドレスが含まれた XForwarded-For ヘッダーを追加し、リクエストをオリジンに転送します。たとえば、CloudFront が
TCP 接続から IP アドレス 192.0.2.2 を取得する場合、以下のヘッダーをオリジンに転送します。
X-Forwarded-For: 192.0.2.2
ビューアがリクエストを CloudFront に転送して X-Forwarded-For リクエストヘッダーを含める場
合、CloudFront はビューアの IP アドレスを TCP 接続から取得してそれを X-Forwarded-For ヘッ
ダーの末尾に追加し、リクエストをオリジンに転送します。たとえば、ビューアのリクエストに XForwarded-For: 192.0.2.4,192.0.2.3 が含まれ、CloudFront が TCP 接続から IP アドレス
192.0.2.2 を取得する場合、以下のヘッダーをオリジンに転送します。
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
ロードバランサー (Elastic Load Balancing を含む)、ウェブアプリケーションファイアウォール、リ
バースプロキシ、侵入防御システム、API ゲートウェイなどの一部のアプリケーションでは、リク
エストを転送した CloudFront エッジサーバーの IP アドレスが X-Forwarded-For ヘッダーの末
尾に付加されます。たとえば、CloudFront から ELB に転送するリクエストに X-Forwarded-For:
192.0.2.2 が含まれていて、CloudFront エッジサーバーの IP アドレスが 192.0.2.199 である場
合、EC2 インスタンスで受け取るリクエストのヘッダーは次のようになります。
API Version 2016-09-29
170
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
X-Forwarded-For: 192.0.2.2,192.0.2.199
Note
X-Forwarded-For ヘッダーには、必要に応じて IPv4 アドレス (192.0.2.44 など) および
IPv6 アドレス (2001:0db8:85a3:0000:0000:8a2e:0370:7334 など) が含まれます。
クライアント側の SSL 認証
CloudFront はクライアント側の SSL 証明書を使用したクライアント認証をサポートしていません。
オリジンがクライアント側証明書をリクエストした場合、CloudFront はリクエストを削除します。
圧縮
CloudFront は、"identity" および "gzip" の Accept-Encoding フィールド値を持つリクエスト
を転送します。詳細については、「圧縮ファイルの供給 (p. 157)」を参照してください。
条件付きリクエスト
CloudFront は、エッジキャッシュで有効期限切れになっているオブジェクトに対するリクエス
トを受け取ると、リクエストをオリジンに転送し、オブジェクトの最新バージョンを取得する
か、CloudFront エッジキャッシュに最新バージョンがすでに存在することをオリジンに確認し
ます。通常、オリジンはオブジェクトを CloudFront に最後に送信するときに、ETag 値または
LastModified 値、あるいはその両方の値をレスポンスに含めます。CloudFront は、CloudFront が
オリジンに転送する新しいリクエストには、次のどちらかまたは両方を追加します。
• オブジェクトの有効期限切れバージョンの ETag 値が含まれる If-Match または If-None-Match
ヘッダー。
• オブジェクトの有効期限切れバージョンの LastModified 値が含まれる If-Modified-Since
ヘッダー。
オリジンは、この情報を使用して、オブジェクトが更新されているかどうかを判別します。つまり、
オブジェクト全体を CloudFront に返すか、または HTTP 304 ステータスコード(変更なし)のみを返
すかを判別します。
Cookie
Cookie をオリジンに転送するように CloudFront を構成できます。詳細については、「Cookie に基づ
いてオブジェクトをキャッシュするように CloudFront を設定する (p. 126)」を参照してください。
Cross-Origin Resource Sharing (CORS)
CloudFront で Cross-Origin Resource Sharing 設定を尊重する場合は、Origin ヘッダーをオリジンに
転送するように CloudFront を設定します。詳細については、「リクエストヘッダーに基づいてオブ
ジェクトをキャッシュするように CloudFront を設定する (p. 128)」を参照してください。
暗号化
HTTPS を使用してリクエストを CloudFront に送信するようにビューアに要求し、ビューアが使用し
ているプロトコルを使用してカスタムオリジンにリクエストを転送するように CloudFront に要求する
こともできます。詳細については、次のディストリビューション設定を参照してください。
• ビューアプロトコルポリシー (p. 75)
• オリジンプロトコルポリシー(Amazon EC2 および他のカスタムオリジンのみ) (p. 72)
API Version 2016-09-29
171
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
CloudFront は、SSLv3、TLSv1.0、および TLSv1.2 プロトコルを使用して、HTTPS リクエストをオ
リジンサーバーに転送します。カスタムオリジンでは、オリジンと通信する際に CloudFront が使用す
る SSL プロトコルを選択できます。
• CloudFront コンソールを使用する場合は、[Origin SSL Protocols] チェックボックスを使用するプ
ロトコルを選択します。詳細については、「CloudFront コンソールを使用したウェブディストリ
ビューションの作成または更新 (p. 64)」を参照してください。
• CloudFront API を使用する場合は、OriginSslProtocols 要素を使用してプロトコルを指定しま
す。詳細については、『Amazon CloudFront API リファレンス』の「DistributionConfig 複合型」を
参照してください。
オリジンが Amazon S3 バケットの CloudFront である場合は、TLSv1.2 を必ず使用します。
Important
SSL と TLS のその他のバージョンはサポートされていません。
CloudFront での HTTPS の使用の詳細については、CloudFront で HTTPS を使用する (p. 254)を参照
してください。ビューアと CloudFront との間、および CloudFront とオリジンとの間の HTTPS 通信
で CloudFront がサポートする暗号のリストについては、サポートされる暗号化 (p. 272) を参照して
ください。
GET リクエストに本文が含まれている
ビューア GET のリクエストの本文が含まれている場合、CloudFront はビューアに HTTP ステータス
コード 403(禁止)を返します。
HTTP メソッド
サポートするすべての HTTP メソッドを処理するよう CloudFront を構成すると、CloudFront は
ビューアからの以下のリクエストを受け入れてカスタムオリジンに転送します。
• DELETE
• GET
• HEAD
• OPTIONS
• PATCH
• POST
• PUT
CloudFront は、GET リクエストと HEAD リクエストへの応答を常にキャッシュします。OPTIONS リク
エストへの応答をキャッシュするように CloudFront を設定することもできます。CloudFront はその
他のメソッドを使用するリクエストへのレスポンスをキャッシュしません。
カスタムオリジンが上記のメソッドを処理するかどうかを構成する方法の詳細については、オリジン
のドキュメントを参照してください。
Caution
CloudFront がサポートするすべての HTTP メソッドを受け入れてオリジンに転送するよう
に CloudFront を構成する場合、オリジンサーバーがすべてのメソッドを処理するように構成
します。たとえば、POST を使用したいので、上記のメソッドを受け入れて転送するように
CloudFront を構成する場合は、削除すべきでないリソースをビューアが削除できないように
API Version 2016-09-29
172
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
するために、DELETE リクエストを適切に処理するようオリジンサーバーを構成する必要があ
ります。詳細については、HTTP サーバーのドキュメントを参照してください。
HTTP リクエストヘッダーと CloudFront の動作
次の表は HTTP リクエストヘッダーを列挙し、ヘッダーごとに以下の項目について説明しています。
• ヘッダーをオリジンに転送するように CloudFront を設定していない場合の CloudFront の動作。こ
の場合、CloudFront はヘッダー値に基づいてオブジェクトをキャッシュします。
• そのヘッダーの値に基づいてオブジェクトをキャッシュするように CloudFront を設定できるかどう
か。
Date および User-Agent ヘッダーの値に基づいてオブジェクトをキャッシュするように
CloudFront を設定できますが、これはお勧めできません。これらのヘッダーには可能な値が多数あ
り、その値に基づいてキャッシュすると、CloudFront がオリジンに転送するリクエストの数が大幅
に増加します。
ヘッダー値に基づくキャッシュの詳細については、「リクエストヘッダーに基づいてオブジェクトを
キャッシュするように CloudFront を設定する (p. 128)」を参照してください。
ヘッダー
ヘッダー値に基づいてキャッシュするように
CloudFront を設定しない場合の動作
ヘッダー値に
基づくキャッ
シュがサポー
トされている
他の定義されたヘッダー
CloudFront はヘッダーをオリジンに転送します。
はい
Accept
CloudFront はヘッダーを削除します。
はい
Accept-Charset
CloudFront はヘッダーを削除します。
はい
Accept-Encoding
値が gzip を含む場合、CloudFront は AcceptEncoding: gzip をオリジンに転送します。
いいえ
値が gzip含まない場合、CloudFront はリクエスト
をオリジンに転送する前に Accept-Encoding ヘッ
ダーフィールドを削除します。
Accept-Language
CloudFront はヘッダーを削除します。
はい
Authorization
• GET、HEAD の各リクエスト – CloudFront
は、リクエストをオリジンに転送する前に
Authorization ヘッダーフィールドを削除しま
す。
• OPTIONS リクエスト – OPTIONS リクエストへの
応答をキャッシュするように CloudFront を設定し
た場合、CloudFront は、リクエストをオリジンに
転送する前に、Authorization ヘッダーフィー
ルドを削除します。
はい
OPTIONS リクエストへの応答をキャッシュ
するように CloudFront を設定しなかった場
合、CloudFront は、Authorization ヘッダー
フィールドをオリジンに転送します。
• DELETE、PATCH、POST、PUT の各リクエスト –
CloudFront は、リクエストをオリジンに転送する
前にヘッダーフィールドを削除しません。
API Version 2016-09-29
173
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
ヘッダー
ヘッダー値に基づいてキャッシュするように
CloudFront を設定しない場合の動作
ヘッダー値に
基づくキャッ
シュがサポー
トされている
Cache-Control
CloudFront はヘッダーをオリジンに転送します。
いいえ
CloudFront-ForwardedProto
CloudFront は、リクエストをオリジンに転送する前
にヘッダーを追加しません。
はい
詳細については、「リクエストのプロトコルに
基づいてオブジェクトをキャッシュするように
CloudFront を設定する (p. 131)」を参照してくださ
い。
CloudFront-IsDesktop-Viewer
CloudFront は、リクエストをオリジンに転送する前
にヘッダーを追加しません。
はい
詳細については、「デバイスタイプに基づいてオブ
ジェクトをキャッシュするように CloudFront を設定
する (p. 131)」を参照してください。
CloudFront-Is-MobileViewer
CloudFront は、リクエストをオリジンに転送する前
にヘッダーを追加しません。
はい
詳細については、「デバイスタイプに基づいてオブ
ジェクトをキャッシュするように CloudFront を設定
する (p. 131)」を参照してください。
CloudFront-Is-TabletViewer
CloudFront は、リクエストをオリジンに転送する前
にヘッダーを追加しません。
はい
詳細については、「デバイスタイプに基づいてオブ
ジェクトをキャッシュするように CloudFront を設定
する (p. 131)」を参照してください。
CloudFront-ViewerCountry
CloudFront は、リクエストをオリジンに転送する前
にヘッダーを追加しません。
はい
Connection
CloudFront は、オリジンにリクエストを転送する
前に、このヘッダーを Connection: Keep-Alive
ヘッダーに置き換えます。
いいえ
Content-Length
CloudFront はヘッダーをオリジンに転送します。
いいえ
Content-MD5
CloudFront はヘッダーをオリジンに転送します。
はい
Content-Type
CloudFront はヘッダーをオリジンに転送します。
はい
Cookie
Cookie を転送するように CloudFront を設定して
いる場合、Cookie ヘッダーフィールドがオリジ
ンに転送されます。そうでない場合、CloudFront
は Cookie ヘッダーフィールドを削除します。詳
細については、「Cookie に基づいてオブジェク
トをキャッシュするように CloudFront を設定す
る (p. 126)」を参照してください。
いいえ
Date
CloudFront はヘッダーをオリジンに転送します。
はい、ただし
推奨されませ
ん
API Version 2016-09-29
174
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
ヘッダー
ヘッダー値に基づいてキャッシュするように
CloudFront を設定しない場合の動作
ヘッダー値に
基づくキャッ
シュがサポー
トされている
Expect
CloudFront はヘッダーを削除します。
はい
From
CloudFront はヘッダーをオリジンに転送します。
はい
Host
CloudFront は、リクエストされたオブジェクトに関
連付けられたオリジンのドメイン名に値を設定しま
す。
はい
If-Match
CloudFront はヘッダーをオリジンに転送します。
はい
If-Modified-Since
CloudFront はヘッダーをオリジンに転送します。
はい
If-None-Match
CloudFront はヘッダーをオリジンに転送します。
はい
If-Range
CloudFront はヘッダーをオリジンに転送します。
はい
If-Unmodified-Since
CloudFront はヘッダーをオリジンに転送します。
はい
Max-Forwards
CloudFront はヘッダーをオリジンに転送します。
いいえ
Origin
CloudFront はヘッダーをオリジンに転送します。
はい
Pragma
CloudFront はヘッダーをオリジンに転送します。
いいえ
Proxy-Authenticate
CloudFront はヘッダーを削除します。
いいえ
Proxy-Authorization
CloudFront はヘッダーを削除します。
いいえ
Proxy-Connection
CloudFront はヘッダーを削除します。
いいえ
Range
CloudFront はヘッダーをオリジンに転送します。
詳細については、「CloudFront がオブジェクトの
部分的リクエスト(レンジ GET)を処理する方
法 (p. 154)」を参照してください。
はい(デフォ
ルト)
Referer
CloudFront はヘッダーを削除します。
はい
Request-Range
CloudFront はヘッダーをオリジンに転送します。
いいえ
TE
CloudFront はヘッダーを削除します。
いいえ
Trailer
CloudFront はヘッダーを削除します。
いいえ
Transfer-Encoding
CloudFront はヘッダーをオリジンに転送します。
いいえ
Upgrade
CloudFront はヘッダーを削除します。
いいえ
User-Agent
CloudFront はこのヘッダーフィールドの値を
Amazon CloudFront に置き換えます。ユーザーが
使用しているデバイスに基づいて CloudFront でコ
ンテンツをキャッシュする場合は、「デバイスタイ
プに基づいてオブジェクトをキャッシュするように
CloudFront を設定する (p. 131)」を参照してくださ
い。
はい、ただし
推奨されませ
ん
Via
CloudFront はヘッダーをオリジンに転送します。
はい
API Version 2016-09-29
175
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
ヘッダー
ヘッダー値に基づいてキャッシュするように
CloudFront を設定しない場合の動作
ヘッダー値に
基づくキャッ
シュがサポー
トされている
Warning
CloudFront はヘッダーをオリジンに転送します。
はい
X-Amz-Cf-Id
CloudFront は、ビューアリクエストをオリジンに転
送する前に、ヘッダーをリクエストに追加します。
ヘッダー値には、リクエストを一意に識別する暗号
化された文字列が含められます。
いいえ
X-Edge-*
CloudFront はすべての X-Edge-* ヘッダーを削除し
ます。
いいえ
X-Forwarded-For
CloudFront はヘッダーをオリジンに転送しま
す。詳細については、「クライアント IP アドレ
ス (p. 170)」を参照してください。
はい
X-Forwarded-Proto
CloudFront はヘッダーを削除します。
はい
X-Real-IP
CloudFront はヘッダーを削除します。
いいえ
HTTP バージョン
CloudFront は HTTP/1.1 を使用してカスタムオリジンにリクエストを転送します。
リクエストの最大長と URL の最大長
パス、クエリ文字列(ある場合)、ヘッダーを含め、リクエストの最大長は 20480 バイトです。
CloudFront はリクエストから URL を構築します。この URL の最大長は 8192 文字です。
リクエストまたは URL がこの制限を超えると、CloudFront は、リクエストヘッダーフィールドが長
すぎることを示す HTTP ステータスコード 413(Request Header Fields Too Large)をビューアに返
してから、ビューアへの TCP 接続を終了します。
OCSP Stapling
オブジェクトに対する HTTPS リクエストをビューアが送信する際には、ドメインの SSL 証明書が無
効になっていないことを CloudFront またはビューアが認証機関 (CA) に対して確認する必要がありま
す。OCSP Stapling を使用すると、CloudFront で証明書を検証して CA からの応答をキャッシュでき
るため、クライアントが直接 CA に対して証明書を検証する必要がなくなり、証明書の検証速度が向
上します。
同一ドメイン内のオブジェクトに対する多数の HTTPS リクエストを CloudFront が受信した場合
は、OCSP Stapling によるパフォーマンス向上がさらに顕著になります。CloudFront エッジロケー
ション内の各サーバーは、別々の検証リクエストを送信する必要があります。同一ドメインに対する
多数の HTTPS リクエストを CloudFront が受信するとすぐに、エッジロケーション内のすべてのサー
バーが、SSL ハンドシェイクでパケットに "ステープリング" できるという CA からの応答を受信しま
す。証明書が有効であることをビューアが確認すると、CloudFront はリクエストされたオブジェクト
を提供できます。CloudFront エッジロケーション内でディストリビューションが十分なトラフィック
を確保できない場合、新しいリクエストは、CA に対して証明書がまだ検証されていないサーバーに
誘導される可能性が高くなります。この場合は、ビューアが検証ステップを別途実行し、CloudFront
サーバーがオブジェクトを提供します。この CloudFront サーバーも CA に検証リクエストを送信する
ため、同じドメイン名が含まれるリクエストを次に受信したときには、CA からの検証応答が既に存
在しているということになります。
API Version 2016-09-29
176
Amazon CloudFront 開発者ガイド
CloudFront がリクエストを処理してカ
スタムオリジンサーバーに転送する方法
持続的接続
CloudFront がオリジンからレスポンスを取得すると、その期間中に別のリクエストが届くのに備え、
数秒間、接続を維持しようとします。持続的接続を維持すると、TCP 接続の再構築に必要な時間と後
続のリクエストに対する別の TLS ハンドシェイクの実行に必要な時間を節約できます。パフォーマ
ンスを向上させるため、持続的接続を許可するようにオリジンサーバーを構成することをお勧めしま
す。
プロトコル
CloudFront は、以下の項目に基づいて、HTTP または HTTPS リクエストをオリジンサーバーに転送
します。
• ビューアが CloudFront に送信したリクエストのプロトコル(HTTP または HTTPS)。
• CloudFront コンソールの [Origin Protocol Policy] フィールドの値。または、CloudFront API を
使用する場合は、DistributionConfig 複合型の OriginProtocolPolicy エレメントの
値。CloudFront コンソールで使用できるオプションは、[HTTP Only]、[HTTPS Only]、および
[Match Viewer] です。
[HTTP Only] または [HTTPS Only] を指定すると、CloudFront では、ビューアリクエストのプロトコ
ルに関係なく、指定されたプロトコルのみを使用してリクエストがオリジンサーバーに転送されま
す。
[Match Viewer] を指定した場合、CloudFront はビューアリクエストのプロトコルを使用してリクエス
トをオリジンサーバーに転送します。ビューアが HTTP と HTTPS の両方のプロトコルを使用してリ
クエストを行った場合も、CloudFront がオブジェクトをキャッシュするのは 1 回だけです。
Caution
CloudFront が HTTPS プロトコルを使用してリクエストをオリジンに転送し、オリジンサー
バーから無効な証明書または自己署名証明書が返された場合、CloudFront は TCP 接続を中断
します。
CloudFront コンソールを使用してディストリビューションを更新する方法については、「CloudFront
ディストリビューションの一覧表示、詳細表示、および更新を行う (p. 52)」を参照してくださ
い。CloudFront API を使用してディストリビューションを更新する方法については、「Amazon
CloudFront API リファレンス」の「PUT Distribution Config」を参照してください。
クエリ文字列
CloudFront でクエリ文字列パラメーターをオリジンに転送するかどうかを構成できます。詳細に
ついては、「クエリ文字列パラメーターに基づいてキャッシュするように CloudFront を設定す
る (p. 123)」を参照してください。
リクエストのタイムアウト
CloudFront のリクエストのタイムアウトは、HTTP メソッドによって決まります。
• GET および HEAD リクエスト – オリジンが 30 秒以内に応答しない場合、CloudFront は接続を中断
して、オリジンに対する接続をさらに 2 回試みます。3 回目の試みでもオリジンが応答しない場
合、CloudFront は同じオリジンのコンテンツに対する別のリクエストを受け取るまで接続を試みま
せん。
• DELETE、OPTIONS、PATCH、PUT、POST リクエスト – オリジンが 30 秒以内に応答しない場
合、CloudFront は接続を中断し、オリジンへの接続を再試行しません。クライアントは、必要に応
じてリクエストを再送信できます。
API Version 2016-09-29
177
Amazon CloudFront 開発者ガイド
CloudFront がカスタムオリジンサー
バーからのレスポンスを処理する方法
リクエストのタイムアウトは変更できません。
同じオブジェクト(トラフィックスパイク)の同時リクエスト
CloudFront エッジロケーションがオブジェクトのリクエストを受け取り、オブジェクトが現在キャッ
シュにないか、有効期限が切れている場合、CloudFront はすぐにオリジンにリクエストを送信しま
す。トラフィックスパイクがある—同じオブジェクトへの追加のリクエストが、オリジンが最初の
リクエストに応答する前にエッジロケーションに届く—場合、CloudFront は短時間一時停止してか
ら、オブジェクトへの追加のリクエストをオリジンに転送します。通常、最初のリクエストへのレス
ポンスは、それ以降のリクエストに対するレスポンスの前に、CloudFront エッジロケーションに届
きます。この短い停止により、オリジンサーバーでの不要な負荷が減ります。リクエストヘッダーや
Cookie に基づいてキャッシュするように CloudFront を設定した場合など、追加のリクエストが同じ
でない場合、CloudFront はすべての一意のリクエストをオリジンに転送します。
ユーザーエージェントヘッダー
ユーザーがコンテンツの表示に使用しているデバイスに基づいて、オブジェクトの異なるバージョ
ンを CloudFront でキャッシュするには、該当するヘッダーをカスタムオリジンに転送するように
CloudFront を設定することをお勧めします。
• CloudFront-Is-Desktop-Viewer
• CloudFront-Is-Mobile-Viewer
• CloudFront-Is-SmartTV-Viewer
• CloudFront-Is-Tablet-Viewer
CloudFront は、User-Agent ヘッダーの値に基づいて、これらのヘッダーの値を true または false
に設定した後、リクエストをオリジンに転送します。デバイスが複数のカテゴリに属する場合は、複
数の値が true になることがあります。たとえば、あるタブレットデバイスについて、CloudFront が
CloudFront-Is-Mobile-Viewer と CloudFront-Is-Tablet-Viewer の両方を true に設定する
場合があります。リクエストヘッダーに基づいてキャッシュするように CloudFront を設定する方法の
詳細については、「リクエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront
を設定する (p. 128)」を参照してください。
User-Agent ヘッダーの値に基づいてオブジェクトをキャッシュするように CloudFront を設定できま
すが、これはお勧めできません。User-Agent ヘッダーには可能な値が多数あり、その値に基づいて
キャッシュすると、CloudFront がオリジンに転送するリクエストの数が大幅に増加します。
CloudFront が User-Agent ヘッダーの値に基づいてオブジェクトをキャッシュするように設定しない
場合、CloudFront は以下の値を指定した User-Agent ヘッダーを追加して、リクエストをオリジンに
転送します。
User-Agent = Amazon CloudFront
CloudFront は、ビューアからのリクエストに User-Agent ヘッダーが含まれているかどうかに関係
なく、このヘッダーを追加します。ビューアからのリクエストに User-Agent ヘッダーが含まれる場
合、CloudFront はそのヘッダーを削除します。
CloudFront がカスタムオリジンサーバーからのレス
ポンスを処理する方法
CloudFront がカスタムオリジンサーバーからのレスポンスを処理する方法については、該当するト
ピックを参照してください。
トピック
• キャッシュ (p. 179)
API Version 2016-09-29
178
Amazon CloudFront 開発者ガイド
CloudFront がカスタムオリジンサー
バーからのレスポンスを処理する方法
• 取り消されたリクエスト (p. 179)
•
•
•
•
•
コンテンツネゴシエーション (p. 179)
Cookie (p. 179)
中断された TCP 接続 (p. 179)
CloudFront が削除または更新する HTTP レスポンスヘッダー (p. 180)
最大ファイルサイズ (p. 180)
• 使用できないオブジェクト (p. 181)
• リダイレクト (p. 181)
• 転送エンコード (p. 181)
キャッシュ
• オリジンサーバーが Date および Last-Modified ヘッダーフィールドに有効かつ正確な値を設定
していることを確認します。
• ビューアからのリクエストに If-Match または If-None-Match リクエストヘッダーフィールドが
含まれる場合、ETag レスポンスヘッダーフィールドを設定します。ETag の値が指定されていない
場合、CloudFront は以降の If-Match または If-None-Match ヘッダーを無視します。
• 通常、CloudFront はオリジンからのレスポンスの Cache-Control: no-cache ヘッダーを
優先します。例外については、「同じオブジェクト(トラフィックスパイク)の同時リクエス
ト (p. 178)」を参照してください。
取り消されたリクエスト
オブジェクトがエッジキャッシュになく、CloudFront がオブジェクトをオリジンから取得したもの
の、リクエストされたそのオブジェクトを配信する前にビューアがセッションを終了すると(ブラウ
ザを閉じるなど)、CloudFront はそのオブジェクトをエッジロケーションにキャッシュしません。
コンテンツネゴシエーション
オリジンが応答で Vary:* を返し、対応するキャッシュ動作の [Minimum TTL] の値が [0] の場
合、CloudFront はオブジェクトをキャッシュしますが、そのオブジェクトの後続のすべてのリクエス
トをオリジンに転送して、オブジェクトの最新バージョンが含まれていることを確認します。
オリジンが応答で Vary:* を返し、レスポンスで返される、対応するキャッシュ動作の [Minimum
TTL] の値が別の値になっている場合、CloudFront は「CloudFront が削除または更新する HTTP レス
ポンスヘッダー (p. 180)」に記述されている方法で Vary ヘッダーを処理します。
Cookie
キャッシュ動作の Cookie を有効にしており、オリジンが Cookie とオブジェクトを返す場
合、CloudFront はオブジェクトと Cookie の両方をキャッシュします。これにより、オブジェクトの
キャッシュ可能性が低下します。詳細については、「Cookie に基づいてオブジェクトをキャッシュす
るように CloudFront を設定する (p. 126)」を参照してください。
中断された TCP 接続
オリジンがオブジェクトを CloudFront に返している間に CloudFront とオリジン間の TCP 接続が中断
した場合、CloudFront の動作は、オリジンが Content-Length ヘッダーをレスポンスに含めたかど
うかによって異なります。
• Content-Length ヘッダーあり – CloudFront は、オブジェクトをオリジンから取得すると、ビューア
にオブジェクトを返します。ただし、Content-Length ヘッダーの値がオブジェクトのサイズに一
致しない場合、CloudFront はオブジェクトをキャッシュしません。
API Version 2016-09-29
179
Amazon CloudFront 開発者ガイド
CloudFront がカスタムオリジンサー
バーからのレスポンスを処理する方法
• Transfer-Encoding: Chunked – CloudFront は、オブジェクトをオリジンから取得すると、ビューア
にオブジェクトを返します。ただし、チャンクレスポンスが完了していない場合、CloudFront はオ
ブジェクトをキャッシュしません。
• Content-Length ヘッダーなし – CloudFront はオブジェクトをビューアに返して、オブジェクトを
キャッシュしますが、オブジェクトが完全でない場合があります。Content-Length ヘッダーがな
い場合、CloudFront は、TCP 接続が誤って中断されたか、または故意に中断されたかを判断できま
せん。
Content-Length ヘッダーを追加して、CloudFront が不完全なオブジェクトをキャッシュしないよ
うに HTTP サーバーを設定することをお勧めします。
CloudFront が削除または更新する HTTP レスポンスヘッダー
CloudFront は、オリジンからのレスポンスをビューアに転送する前に、以下のヘッダーフィールドを
削除または更新します。
• Set-Cookie – Cookie を転送するように CloudFront を構成している場合、Set-Cookie ヘッダー
フィールドがクライアントに転送されます。詳細については、「Cookie に基づいてオブジェクトを
キャッシュするように CloudFront を設定する (p. 126)」を参照してください。
• Trailer
• Transfer-Encoding – オリジンがこのヘッダーフィールドを返す場合、CloudFront は値を
chunked に設定してビューアにレスポンスを返します。
• Upgrade
• Vary – 次の点に注意してください。
• デバイス固有のヘッダーのいずれかをオリジン(CloudFront-Is-DesktopViewer、CloudFront-Is-Mobile-Viewer、CloudFront-Is-SmartTVViewer、CloudFront-Is-Tablet-Viewer)に転送するように CloudFront を設定しており、
オリジンが Vary:User-Agent を CloudFront に返すように設定している場合、CloudFront は
Vary:User-Agent をビューアに返します。詳細については、「デバイスタイプに基づいてオブ
ジェクトをキャッシュするように CloudFront を設定する (p. 131)」を参照してください。
• Vary ヘッダーに、Accept-Encoding または Cookie のいずれかを含めるよう設定した場
合、CloudFront はした場合、ビューアへの応答にその値を含めます。
• オリジンにヘッダーのホワイトリストを転送するように CloudFront を設定し、Vary ヘッダー
(たとえば Vary:Accept-Charset,Accept-Language)の CloudFront にヘッダー名を返すよ
うにオリジンを設定した場合、CloudFront はこれらの値を持つ Vary ヘッダーをビューアに返し
ます。
• CloudFront が Vary ヘッダーの * 値を処理する詳細については、「コンテンツネゴシエーショ
ン (p. 179)」を参照してください。
• Vary ヘッダーで他の値を返すようにオリジンを設定している場合、CloudFront は応答をビュー
アに返す前にその値を削除します。
• Via – オリジンがこのヘッダーフィールドを CloudFront に返すかどうかにかかわらず、CloudFront
は次の値を設定します。
Via: 1.1 alphanumeric-string.cloudfront.net (CloudFront)
その後、ビューアにこのレスポンスを返します。以下に例を示します。
Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)
最大ファイルサイズ
CloudFront がビューアに返すレスポンス本文の最大サイズは 20 GB です。これには、ContentLength ヘッダーの値を指定しないチャンク転送レスポンスが含まれます。
API Version 2016-09-29
180
Amazon CloudFront 開発者ガイド
CloudFront がオリジンからの HTTP
3xx ステータスコードを処理する方法
使用できないオブジェクト
オリジンサーバーが使用できないときに、CloudFront がエッジキャッシュに存在するオブジェクトの
リクエストを受け取り、そのオブジェクトが(たとえば、Cache-Control max-age ディレクティブ
に指定された期間が経過しているために)有効期限切れになっている場合、CloudFront は有効期限切
れバージョンのオブジェクトを供給するか、またはカスタムエラーページを供給します。詳細につい
ては、「CloudFront がオリジンからの HTTP 4xx および 5xx ステータスコードを処理してキャッシュ
に保持する方法 (p. 182)」を参照してください。
場合によって、要求頻度の低いオブジェクトは削除されてエッジキャッシュで使用できなくなること
があります。CloudFront は、削除されたオブジェクトを供給することはできません。
リダイレクト
オリジンサーバーでオブジェクトの場所を変更した場合、リクエストを新しい場所にリダイレクトす
るようにウェブサーバーを構成できます。リダイレクトが構成された後、ビューアがオブジェクトの
リクエストを最初に送信したときに、CloudFront はリクエストをオリジンに送信し、オリジンはリダ
イレクトで応答します(例: 302 Moved Temporarily)。CloudFront はリダイレクトをキャッシュ
し、ビューアにリダイレクトを返します。CloudFront はリダイレクトに従いません。
リクエストを以下のどちらかの場所にリダイレクトするようにウェブサーバーを構成できます。
• オリジンサーバーのオブジェクトの新しい URL。ビューアが新しい URL へのリダイレクトに従う
場合、ビューアは CloudFront をバイパスし、オリジンに直接アクセスします。つまり、オリジンに
あるオブジェクトの新しい URL にリクエストをリダイレクトしないことをお勧めします。
• オブジェクトの新しい CloudFront URL。新しい CloudFront URL を含むリクエストがビューアか
ら送信されると、CloudFront は、オリジンの新しい場所からオブジェクトを取得し、エッジロケー
ションにキャッシュした後、ビューアにオブジェクトを返します。オブジェクトに対する以降のリ
クエストはエッジロケーションによって処理されます。これにより、オリジンのオブジェクトを要
求するビューアに関連するレイテンシーと負荷が回避されます。ただし、オブジェクトに対する新
しいすべてのリクエストに、CloudFront への 2 つのリクエストに対する料金がかかります。
転送エンコード
CloudFront は、Transfer-Encoding ヘッダーの chunked 値のみをサポートします。オリジンが
Transfer-Encoding: chunked を返した場合、CloudFront は、エッジロケーションで受け取った
オブジェクトをクライアントに返し、そのオブジェクトをチャンク形式でキャッシュして以降のリク
エストに備えます。
ビューワーが Range GET をリクエストし、オリジンは Transfer-Encoding: chunked を返
し、CloudFront はリクエストされた範囲ではなくオブジェクト全体をビューワーに返します。
レスポンスのコンテンツ長を事前に決定できない場合は、チャンクエンコーディングを使用すること
をお勧めします。詳細については、「中断された TCP 接続 (p. 179)」を参照してください。
CloudFront がオリジンからの HTTP 3xx ステータ
スコードを処理する方法
CloudFront が Amazon S3 バケットまたはカスタムオリジンサーバーにオブジェクトをリクエストす
ると、オリジンは HTTP 3xx ステータスコードを返すことがあります。このコードは一般的に、URL
が変更されたことを示します(301, Moved Permanently または 307, Temporary Redirect)。また
は、CloudFront が前回リクエストしたときからオブジェクトが変更されていないことを示します
(304, Not Modified)。CloudFront は、CloudFront ディストリビューションの設定で指定された期
API Version 2016-09-29
181
Amazon CloudFront 開発者ガイド
CloudFront がオリジンからの HTTP 4xx および 5xx ス
テータスコードを処理してキャッシュに保持する方法
間、また、オブジェクトと共にオリジンが返すヘッダーフィールドで指定された期間、3xx レスポン
スをキャッシュに保持します。詳細については、「CloudFront エッジキャッシュにオブジェクトを保
持する時間の指定(有効期限切れ) (p. 136)」を参照してください。
オリジンが 301 または 307 ステータスコードを返す場合、CloudFront は新しい場所へのリダイレク
トには従いません。
CloudFront がオリジンからの HTTP 4xx および
5xx ステータスコードを処理してキャッシュに保
持する方法
トピック
• カスタムエラーページが構成されている場合に CloudFront がエラーを処理する方法 (p. 182)
• カスタムエラーページが構成されていない場合に CloudFront がエラーを処理する方法 (p. 183)
• CloudFront がキャッシュする HTTP 4xx および 5xx ステータスコード (p. 185)
CloudFront が Amazon S3 バケットまたはカスタムオリジンサーバーのオブジェクトをリクエストす
ると、オリジンサーバーは HTTP 4xx または 5xx ステータスコードを返すことがあります。このス
テータスコードは、エラーが発生したことを示します。CloudFront の動作は、以下の条件によって左
右されます。
• カスタムエラーページが構成されているかどうか。
• オリジンからのエラーレスポンスを CloudFront がキャッシュする時間(エラーキャッシュ最小
TTL)が構成されているかどうか。
• ステータスコード。
• 5xx ステータスコードの場合、リクエストされたオブジェクトが現在 CloudFront エッジキャッシュ
にあるかどうか。
CloudFront コンソールでのカスタムエラーページの設定の詳細については、「Custom Error
Pages(カスタムエラーページ)と Error Caching(エラーキャッシュ) (p. 86)」を参照してくだ
さい。CloudFront コンソールでのエラーキャッシュ最小 TTL の詳細については、「Error Caching
Minimum TTL(エラーキャッシュ最小 TTL) (p. 86)」を参照してください。
CloudFront がキャッシュする HTTP ステータスコードのリストについては、「CloudFront がキャッ
シュする HTTP 4xx および 5xx ステータスコード (p. 185)」を参照してください。
ログ作成を有効にしている場合、CloudFront は、HTTP ステータスコードに関係なく結果をログに書
き込みます。
カスタムエラーページが構成されている場合に
CloudFront がエラーを処理する方法
カスタムエラーページを設定している場合、CloudFront の動作は、リクエストされたオブジェクトが
エッジキャッシュにあるかどうかによって異なります。
リクエストされたオブジェクトがエッジキャッシュにない場合
CloudFront は、以下のすべてが true の場合に、オリジンからリクエストされたオブジェクトを取得し
ようとします。
API Version 2016-09-29
182
Amazon CloudFront 開発者ガイド
カスタムエラーページが構成されていない
場合に CloudFront がエラーを処理する方法
• ビューアがオブジェクトを要求する
• オブジェクトがエッジキャッシュにない
• オリジンがステータスコード 304(変更なし)またはオブジェクトの更新バージョンを返す代わり
に HTTP 4xx または 5xx ステータスコードを返す
CloudFront は以下を実行します。
1. ビューアからリクエストを受け取った CloudFront エッジキャッシュで、CloudFront はディストリ
ビューション設定を確認し、オリジンから返されたステータスコードに対応するカスタムエラー
ページのパスを取得します。
2. CloudFront は、カスタムエラーページのパスと一致するパスパターンを持つ、ディストリビュー
ション内の最初のキャッシュ動作を検索します。
3. CloudFront エッジロケーションは、キャッシュ動作に指定されているオリジンに、カスタムエラー
ページのリクエストを送信します。
4. オリジンはカスタムエラーページをエッジロケーションに返します。
5. CloudFront は、リクエストを送信したビューアにカスタムエラーページを返し、エラーキャッシュ
最小 TTL(デフォルトで 5 分)に指定された時間カスタムエラーページのキャッシュも行います。
6. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、
リクエストされたオブジェクトを再度取得することを試みます。CloudFront は、エラーキャッシュ
最小 TTL に指定された間隔で再試行し続けます。
リクエストされたオブジェクトがエッジキャッシュにある場合
CloudFront は、以下のすべてが true の場合に、エッジキャッシュに現在存在するオブジェクトを引き
続き供給します。
• ビューアがオブジェクトを要求する
• オブジェクトがエッジキャッシュ存在するが有効期限が切れている
• オリジンがステータスコード 304(変更なし)またはオブジェクトの更新バージョンを返す代わり
に HTTP 4xx または 5xx ステータスコードを返す
CloudFront は以下を実行します。
1. オリジンが 5xx ステータスコードを返した場合、CloudFront はオブジェクトの有効期限が切れてい
ても、そのオブジェクトを返します。エラーキャッシュ最小 TTL の期間、CloudFront はビューア
リクエストに対してエッジキャッシュのオブジェクトを返してレスポンスを続けます。
オリジンが 4xx ステータスコードを返した場合、CloudFront はビューアに、リクエストされたオブ
ジェクトではなく、ステータスコードを返します。
2. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、
リクエストされたオブジェクトを再度取得することを試みます。オブジェクトが頻繁にリクエスト
されない場合、CloudFront はそのオブジェクトをエッジキャッシュから削除することがあります
が、オリジンサーバーは引き続き 5xx レスポンスを返します。オブジェクトが CloudFront エッジ
キャッシュに保持される期間については、「CloudFront エッジキャッシュにオブジェクトを保持す
る時間の指定(有効期限切れ) (p. 136)」を参照してください。
カスタムエラーページが構成されていない場合に
CloudFront がエラーを処理する方法
カスタムエラーページを設定していない場合、CloudFront の動作は、リクエストされたオブジェクト
がエッジキャッシュにあるかどうかによって異なります。
API Version 2016-09-29
183
Amazon CloudFront 開発者ガイド
カスタムエラーページが構成されていない
場合に CloudFront がエラーを処理する方法
リクエストされたオブジェクトがエッジキャッシュにない場合
CloudFront は、以下のすべてが true の場合に、オリジンからリクエストされたオブジェクトを取得し
ようとします。
• ビューアがオブジェクトを要求する
• オブジェクトがエッジキャッシュにない
• オリジンがステータスコード 304(変更なし)またはオブジェクトの更新バージョンを返す代わり
に HTTP 4xx または 5xx ステータスコードを返す
CloudFront は以下を実行します。
1. CloudFront は 4xx または 5xx ステータスコードをビューアに返します。
2. また、CloudFront は、リクエストを受け取ったエッジキャッシュにステータスコードをキャッシュ
します。
3. エラーキャッシュ最小 TTL(デフォルトで 5 分)の期間、CloudFront はそれ以後に同じオブジェク
トを要求するビューアリクエストに、キャッシュされた 4xx または 5xx ステータスコードでレスポ
ンスします。
4. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、
リクエストされたオブジェクトを再度取得することを試みます。
リクエストされたオブジェクトがエッジキャッシュにある場合
CloudFront は、以下のすべてが true の場合に、エッジキャッシュに現在存在するオブジェクトを引き
続き供給します。
• ビューアがオブジェクトを要求する
• オブジェクトがエッジキャッシュ存在するが有効期限が切れている
• オリジンがステータスコード 304(変更なし)またはオブジェクトの更新バージョンを返す代わり
に HTTP 4xx または 5xx ステータスコードを返す
CloudFront は以下を実行します。
1. オリジンが 5xx のエラーコードを返した場合、CloudFront は、オブジェクトの有効期限が切れ
ていても、そのオブジェクトを返します。エラーキャッシュ最小 TTL の期間(デフォルトでは 5
分)、CloudFront は、エッジキャッシュからオブジェクトを返すことで、ビューアからのリクエス
トに応答し続けます。
オリジンが 4xx ステータスコードを返した場合、CloudFront はビューアに、リクエストされたオブ
ジェクトではなく、ステータスコードを返します。
2. エラーキャッシュ最小 TTL が経過すると、CloudFront はオリジンに別のリクエストを転送して、
リクエストされたオブジェクトを再度取得することを試みます。オブジェクトが頻繁にリクエスト
されない場合、CloudFront はそのオブジェクトをエッジキャッシュから削除することがあります
が、オリジンサーバーは引き続き 5xx レスポンスを返します。オブジェクトが CloudFront エッジ
キャッシュに保持される期間については、「CloudFront エッジキャッシュにオブジェクトを保持す
る時間の指定(有効期限切れ) (p. 136)」を参照してください。
API Version 2016-09-29
184
Amazon CloudFront 開発者ガイド
CloudFront がキャッシュする HTTP
4xx および 5xx ステータスコード
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 Server Error
501
Not Implemented
502
Bad Gateway
503
Service Unavailable
504
Gateway Time-out
API Version 2016-09-29
185
Amazon CloudFront 開発者ガイド
プライベートコンテンツの概要
CloudFront を使用してプライベー
トコンテンツを供給する
インターネットを通じてコンテンツを配信する多くの企業が、選ばれたユーザー(料金を支払ってい
るユーザーなど)のドキュメント、ビジネスデータ、メディアストリーム、またはコンテンツに対し
て、アクセスを制限する必要があると考えています。CloudFront を使用してこのプライベートコンテ
ンツを安全に供給するには、以下の方法を使用できます。
• 特別な CloudFront 署名付き URL または署名付き Cookie を使用してプライベートコンテンツにア
クセスするようユーザーに要求します。
• Amazon S3 コンテンツへのアクセスにユーザーが Amazon S3 URL ではなく CloudFront URL を使
用するよう要求します。CloudFront URL を要求することは必須ではありませんが、ユーザーが署名
付き URL や署名付き Cookie で指定された制限をバイパスすることを防ぐため、この方法をお勧め
します。
トピック
• プライベートコンテンツの概要 (p. 186)
• プライベートコンテンツ用の HTTP サーバーの使用 (p. 188)
• タスクリスト: プライベートコンテンツを供給する (p. 189)
• オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限す
る (p. 190)
• 署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な AWS アカウントの指
定 (p. 196)
• 署名付き URL と署名付き Cookie の選択 (p. 203)
• 署名付き URL の使用 (p. 204)
• 署名付き Cookie の使用 (p. 224)
• Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う (p. 240)
• 署名付き URL の署名を作成するためのコード例 (p. 241)
プライベートコンテンツの概要
プライベートコンテンツへのユーザーアクセスは、次の図に示されているように 2 つの方法で制御で
きます。
API Version 2016-09-29
186
Amazon CloudFront 開発者ガイド
CloudFront エッジキャッシュ内
のオブジェクトへのアクセス制限
1. CloudFront エッジキャッシュ内のオブジェクトへのアクセス制限
2. Amazon S3 バケット内のオブジェクトへのアクセス制限
CloudFront エッジキャッシュ内のオブジェクトへの
アクセス制限
ユーザーがオブジェクトにアクセスする際に、署名付き URL または署名付き Cookie の使用が求めら
れるように CloudFront を設定することができます。次に、署名付き URL を作成して認証されたユー
ザーに配信するか、認証されたユーザーのビューアで署名付き Cookie を設定する Set-Cookie ヘッ
ダーを送信するアプリケーションを開発します(限られた数のオブジェクトへの長期的なアクセスを
数人のユーザーに付与するために、署名付き URL を手動で作成することもできます)。
オブジェクトへのアクセスを制御するための署名付き URL または署名付き Cookie を作成するとき
に、次の制限を指定できます。
• 最終日時。この日時以降、URL が有効ではなくなります。
• (オプション)URL が有効になる日時。
• (オプション)コンテンツへのアクセスに使用可能なコンピューターの IP アドレスまたはアドレス
範囲。
署名付き URL または署名付き Cookie の 1 つのパートは、パブリック/プライベートキーペアのプライ
ベートキーを使用してハッシュ化および署名されます。ユーザーが署名付き URL や署名付き Cookie
を使用してオブジェクトにアクセスすると、CloudFront は URL や Cookie の署名部分と無署名部分を
比較します。これらが一致しない場合、CloudFront はオブジェクトを供給しません。
API Version 2016-09-29
187
Amazon CloudFront 開発者ガイド
Amazon S3 バケット内のオブジェクトへのアクセス制限
Amazon S3 バケット内のオブジェクトへのアクセ
ス制限
オプションで、Amazon S3 バケット内のコンテンツを保護することで、ユーザーが CloudFront を介
してアクセスできても、Amazon S3 URL を使用して直接アクセスすることはできないように設定で
きます。これにより、アクセスを制限しようとしているコンテンツを、ユーザーが CloudFront をバイ
パスし、Amazon S3 URL を使用して取得することを防止できます。署名付き URL を使用するために
この手順を実行する必要はありませんが、推奨します。
CloudFront URL を使用してコンテンツにアクセスすることをユーザーに要求するには、次のタスクを
実行します。
• オリジンアクセスアイデンティティと呼ばれる特別な CloudFront ユーザーを作成します。
• バケット内のオブジェクトの読み取り許可をオリジンアクセスアイデンティティに与えます。
• 他のユーザーに与えられている、Amazon S3 URL を使用してそれらのオブジェクトを読み取るた
めのアクセス権限を削除します。
プライベートコンテンツ用の HTTP サーバーの使
用
オリジンが Amazon S3 バケットまたは HTTP サーバーのどちらであるかに関係なく、あらゆる
CloudFront ディストリビューションで署名付き URL または署名付き Cookie を使用できます。ただ
し、CloudFront で HTTP サーバーからオブジェクトを取得するには、オブジェクトがパブリックにア
クセス可能な状態で維持されている必要があります。オブジェクトがパブリックにアクセス可能であ
る場合、HTTP サーバーのオブジェクトの URL を知っているユーザーは、ログインしたり、コンテン
ツの料金を支払ったりすることなく、オブジェクトにアクセスできます。署名付き URL や署名付き
Cookie を使用し、オリジンが HTTP サーバーの場合は、HTTP サーバーのオブジェクトの URL をカ
スタマーまたは組織外部のユーザーに提供しないでください。
API Version 2016-09-29
188
Amazon CloudFront 開発者ガイド
タスクリスト: プライベートコンテンツを供給する
タスクリスト: プライベートコンテンツを供給す
る
プライベートコンテンツを供給するように CloudFront を構成するには、以下のタスクを実行します。
1.
(オプション。ただし、推奨)ユーザーが CloudFront 経由でのみコンテンツにアクセスするよう
にします。使用する方法は、Amazon S3 を使用するかカスタムオリジンを使用するかによって異
なります。
• Amazon S3 –「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのア
クセスを制限する (p. 190)」を参照してください。
2.
3.
• カスタムオリジン –「カスタムヘッダーを使用してカスタムオリジンのコンテンツへのアクセ
スを制限する (p. 134)」を参照してください。
署名付きの URL または Cookie の作成に使用する AWS アカウントを指定します。詳細について
は、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な AWS アカウント
の指定 (p. 196)」を参照してください。
署名付き URL または署名付き Cookie を設定する Set-Cookie ヘッダーを使用した、承認された
ユーザーからのリクエストに対応するアプリケーションを記述します。詳細については、「署名
付き URL と署名付き Cookie の選択 (p. 203)」を参照してください。
API Version 2016-09-29
189
Amazon CloudFront 開発者ガイド
オリジンアクセスアイデンティティを使用して
Amazon S3 コンテンツへのアクセスを制限する
オリジンアクセスアイデンティティを使用して
Amazon S3 コンテンツへのアクセスを制限する
トピック
• CloudFront オリジンアクセスアイデンティティを作成してディストリビューションに追加す
る (p. 191)
• オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り許可を付
与する (p. 193)
• 署名バージョン 4 のみをサポートする Amazon S3 リージョンでのオリジンアクセスアイデンティ
ティの使用 (p. 195)
通常、Amazon S3 バケットを CloudFront ディストリビューションのオリジンとして使用する場
合、すべてのユーザーにバケット内のオブジェクトの読み取り許可を与えます。これにより、す
べてのユーザーが CloudFront または Amazon S3 URL を使用してオブジェクトにアクセスできま
す。CloudFront は Amazon S3 URL を公開しませんが、アプリケーションが何らかのオブジェクトを
Amazon S3 から直接供給したり、Amazon S3 内の特定のオブジェクトへの直接リンクが公表された
りした場合、ユーザーはそれらの URL を知ることができます。
Note
カスタムヘッダーを使用して、カスタムオリジンのコンテンツへのアクセスを制限すること
もできます。詳細については、「カスタムヘッダーを使用してカスタムオリジンのコンテン
ツへのアクセスを制限する (p. 134)」を参照してください。
CloudFront 署名付き URL や署名付き Cookie を使用して Amazon S3 バケット内のオブジェクトへの
アクセスを提供する場合は、ユーザーが Amazon S3 URL を使用して Amazon S3 オブジェクトにア
クセスできないようにすることが必要になる場合もあります。ユーザーが Amazon S3 内のオブジェ
クトに直接アクセスすると、ユーザーは CloudFront 署名付き URL や署名付き Cookie によって提供
される制御をバイパスします。たとえば、ユーザーがコンテンツにアクセスできなくなる日時の制御
や、コンテンツへのアクセスに使用できる IP アドレスの制御です。また、ユーザーが CloudFront お
よび直接 Amazon S3 URL 使用してオブジェクトにアクセスする場合、CloudFront アクセスログが不
完全になり、役に立たなくなります。
Note
オリジンアクセスアイデンティティを作成するには、CloudFront コンソールまたは
CloudFront API バージョン 2009-09-09 以降を使用する必要があります。
URL が署名されているかどうかに関係なく、ユーザーがオブジェクトに CloudFront URL のみを使用
してアクセスしていることを確認するには、以下のタスクを実行します。
1.
特別な CloudFront ユーザーであるオリジンアクセスアイデンティティを作成し、そのオリジ
ンアクセスアイデンティティをディストリビューションに関連付けます。(ウェブディストリ
ビューションでは、オリジンアクセスアイデンティティをオリジンに関連付けます。そうするこ
とで、Amazon S3 コンテンツのすべてまたは一部のみの保護が可能です)。ディストリビュー
ションを作成するときに、オリジンアクセスアイデンティティを作成してディストリビューショ
ンに追加することもできます。詳細については、「CloudFront オリジンアクセスアイデンティ
ティを作成してディストリビューションに追加する (p. 191)」を参照してください。
2.
オリジンアクセスアイデンティティのみが読み取り許可(または読み取りとダウンロードの許
可)を持つように、Amazon S3 バケットに対する許可またはバケット内のオブジェクトに対する
許可を変更します。ユーザーが CloudFront を使用して Amazon S3 オブジェクトにアクセスする
と、CloudFront オリジンアクセスアイデンティティがユーザーに代わってオブジェクトを取得し
ます。ユーザーが直接 Amazon S3 URL を使用してオブジェクトをリクエストすると、ユーザー
API Version 2016-09-29
190
Amazon CloudFront 開発者ガイド
CloudFront オリジンアクセスアイデンティティ
を作成してディストリビューションに追加する
はアクセスを拒否されます。オリジンアクセスアイデンティティには、Amazon S3 バケット内の
オブジェクトにアクセスするための権限がありますが、ユーザーにはありません。詳細について
は、「オリジンアクセスアイデンティティに Amazon S3 バケット内のオブジェクトの読み取り
許可を付与する (p. 193)」を参照してください。
CloudFront オリジンアクセスアイデンティティを作
成してディストリビューションに追加する
AWS アカウントは最大で 100 個の CloudFront オリジンアクセスアイデンティティを持つことができ
ます。ただし、1 つのオリジンアクセスアイデンティティを、必要な数のディストリビューションに
追加できるため、通常は 1 つのオリジンアクセスアイデンティティで十分です。
ディストリビューションの作成時にオリジンアクセスアイデンティティを作成してディストリビュー
ションに追加しなかった場合は、ここで、CloudFront コンソールまたは CloudFront API を使用して、
作成と追加を行うことができます。
• CloudFront コンソールを使用する場合 – オリジンアクセスアイデンティティの作成とディストリ
ビューションへの追加を同時に行えます。詳細については、「CloudFront コンソールを使用して、
オリジンアクセスアイデンティティを作成してディストリビューションに追加する (p. 191)」を参
照してください。
• CloudFront API を使用する場合 – オリジンアクセスアイデンティティを作成した後に、それをディ
ストリビューションに追加します。以下の各トピックの手順を実行します。
• CloudFront API を使用してオリジンアクセスアイデンティティを作成する (p. 192)
• CloudFront API を使用してディストリビューションにオリジンアクセスアイデンティティを追加
する (p. 192)
CloudFront コンソールを使用して、オリジンアクセスアイデ
ンティティを作成してディストリビューションに追加する
ディストリビューションの作成時にオリジンアクセスアイデンティティを作成しなかった場合、以下
の手順を実行します。
CloudFront コンソールを使用して CloudFront オリジンアクセスアイデンティティを作成する
には
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
オリジンアクセスアイデンティティを追加するディストリビューションの ID をクリックします。
3.
編集モードに変更します。
• ウェブディストリビューション – [Origins] タブをクリックして、編集するオリジンを選択し、
[Edit] をクリックします。[Origin Type] が [S3 Origin] となっているオリジンに対してのみ、オ
リジンアクセスアイデンティティを作成できます。
• RTMP ディストリビューション – [Edit] をクリックします。
4.
[Restrict Bucket Access] では、[Yes] をクリックします。
5.
使用するオリジンアクセスアイデンティティがすでにある場合は、[Use an Existing Identity] をク
リックします。次に、[Your Identities] リストでアイデンティティを選択します。
Note
オリジンアクセスアイデンティティがすでにある場合は、それを再利用し、メンテナン
スを簡素化することをお勧めします。
API Version 2016-09-29
191
Amazon CloudFront 開発者ガイド
CloudFront オリジンアクセスアイデンティティ
を作成してディストリビューションに追加する
アイデンティティを作成する場合は、[Create a New Identity] をクリックします。次に、アイデン
ティティの説明を [Comment] フィールドに入力します。
6.
[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. 193)」を参照
してください。
Amazon S3 バケットに対する許可を手動で更新する場合は、[No, I Will Update Permissions] をク
リックします。
7.
8.
[Yes, Edit] をクリックします。
オリジンアクセスアイデンティティをウェブディストリビューションに追加しており、複数のオ
リジンがある場合は、必要な回数だけステップ 3 ~ 7 を繰り返します。
CloudFront API を使用してオリジンアクセスアイデンティ
ティを作成する
オリジンアクセスアイデンティティがすでにあり、別のオリジンアクセスアイデンティティを作成す
るのではなくそれを再利用する場合は、このステップをスキップして「CloudFront API を使用して
ディストリビューションにオリジンアクセスアイデンティティを追加する (p. 192)」に進んでくださ
い。
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」を参照してください。
CloudFront API を使用してディストリビューションにオリジ
ンアクセスアイデンティティを追加する
CloudFront API を使用して、CloudFront オリジンアクセスアイデンティティを既存のディストリ
ビューションに追加したり、オリジンアクセスアイデンティティを含む新しいディストリビューショ
API Version 2016-09-29
192
Amazon CloudFront 開発者ガイド
オリジンアクセスアイデンティティに Amazon S3 バ
ケット内のオブジェクトの読み取り許可を付与する
ンを作成したりできます。どちらの場合も、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 を使用してオブジェクトを要求するユーザーに代わって、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 アカウントのみが、バケット内のオブジェクトの読み取りまたは書
き込み許可を持っています。
• オリジンアクセスアイデンティティを既存のディストリビューションに追加する場合、バケットポ
リシーまたはすべてのオブジェクト ACL を必要に応じて変更し、オブジェクトがパブリックに公開
されないようにします。
API Version 2016-09-29
193
Amazon CloudFront 開発者ガイド
オリジンアクセスアイデンティティに Amazon S3 バ
ケット内のオブジェクトの読み取り許可を付与する
• Amazon S3 バケットのコンテンツを引き続き更新できるように、追加の許可を 1 つ以上のセキュア
管理者アカウントに付与します。
Important
Amazon S3 のアクセス権限への変更を保存してから変更が有効になるまでわずかな遅延が生
じる場合があります。変更が有効になるまでは、バケット内のオブジェクトにアクセスしよ
うとすると、アクセス権限が拒否されたことを示すエラーを受け取ることがあります。
Amazon S3 バケットポリシーを更新する
AWS マネジメントコンソール または 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 CloudFront オリジンアイデンティティへのアクセス許可の付与」を参照して
ください。
Amazon S3 ACL を更新する
AWS マネジメントコンソール または 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 によるアクセス管理」
を参照してください。
コードと、AWS SDK の 1 つを使用して、ACL を変更することもできます。たとえば、「C# と .NET
Framework を使用して URL 署名を作成する (p. 245)」にあるダウンロード可能なサンプルコードを
参照してください。
API Version 2016-09-29
194
Amazon CloudFront 開発者ガイド
署名バージョン 4 のみをサポートする Amazon S3 リー
ジョンでのオリジンアクセスアイデンティティの使用
署名バージョン 4 のみをサポートする Amazon S3
リージョンでのオリジンアクセスアイデンティティ
の使用
新しい Amazon S3 リージョンでは、認証済みリクエストに対して署名バージョン 4 を使用する必要
があります(各 Amazon S3 リージョンでサポートされている署名のバージョンについては、『アマ
ゾン ウェブ サービス全般のリファレンス』の「リージョンとエンドポイント」の「Amazon Simple
Storage Service (S3)」を参照してください)。ただし、オリジンアクセスアイデンティティを作成し
て CloudFront ディストリビューションに追加する場合、CloudFront は Amazon S3 バケット内のオブ
ジェクトをリクエストする場合、通常、認証に署名バージョン 2 を使用します。オリジンアクセスア
イデンティティを使用しており、認証に署名バージョン 4 が必要なリージョンの 1 つにある場合、以
下の点に注意してください。
• DELETE、GET、HEAD、OPTIONS、および PATCH リクエストは条件なしでサポートされます。
• CloudFront に PUT リクエストを送信してオブジェクトを Amazon S3 バケットにアップロードす
る場合は、リクエストに x-amz-content-sha256 ヘッダーを追加する必要があり、ヘッダー
値にはリクエストの本文の SHA256 ハッシュが含まれている必要があります。詳細については、
『Amazon Simple Storage Service API Reference』の「一般的なリクエストヘッダー」ページで xamz-content-sha256 ヘッダーのドキュメントを参照してください。
• POST リクエストはサポートされません。
API Version 2016-09-29
195
Amazon CloudFront 開発者ガイド
署名付き URL と署名付き Cookie(信頼された
署名者)の作成が可能な AWS アカウントの指定
署名付き URL と署名付き Cookie(信頼された署
名者)の作成が可能な AWS アカウントの指定
トピック
• 信頼された署名者の CloudFront キーペアを作成する (p. 197)
• CloudFront プライベートキーの形式を変更する(.NET および Java のみ) (p. 199)
• 信頼された署名者をディストリビューションに追加する (p. 199)
• 信頼された署名者が有効になっていることを確認する(オプション) (p. 201)
• CloudFront キーペアを更新する (p. 202)
署名付き URL や署名付き Cookie を作成するには、有効な CloudFront キーペアを持つ少なくとも 1
つの AWS アカウントが必要です。このアカウントは信頼された署名者と呼ばれます。信頼された署
名者には 2 つの目的があります。
• 信頼された署名者の AWS アカウント ID がディストリビューションに追加された直後か
ら、CloudFront は、オブジェクトへのアクセスにユーザーが署名付き URL または署名付き Cookie
を使用するよう要求します。
• 署名付き URL または署名付き Cookie を作成する場合、信頼された署名者のキーペアからプラ
イベートキーを使用して、URL または Cookie の一部を署名します。ユーザーが制限されたオブ
ジェクトをリクエストすると、CloudFront は URL または Cookie の署名部分を無署名部分と比較
して、URL または Cookie が改ざんされていないことを確認します。CloudFront は、URL または
Cookie が有効であることも確認します。たとえば、有効期限切れ日時が経過していないことを確認
します。
信頼された署名者を指定する場合、署名付き URL または署名付き Cookie を必要とするオブジェクト
も間接的に指定します。
• ウェブディストリビューション – 信頼された署名者をキャッシュ動作に追加します。ディストリ
ビューションに 1 つのキャッシュ動作のみが含まれる場合、ユーザーは、ディストリビューション
に関連付けられたオブジェクトへのアクセスに署名付き URL または署名付き Cookie を使用する必
要があります。複数のキャッシュ動作を作成して、信頼された署名者を一部のキャッシュ動作に追
加し、それ以外のキャッシュ動作に追加しなかった場合、一部のオブジェクトへのアクセスについ
ては、ユーザーが署名付き URL または署名付き Cookie を使用するよう要求し、その他のオブジェ
クトへのアクセスについては要求しないということが可能になります。
• RTMP ディストリビューション(署名付き URL のみ)– 信頼された署名者をディストリビューショ
ンに追加します。信頼された署名者を RTMP ディストリビューションに追加した後、ユーザーは、
ディストリビューションに関連付けられたすべてのオブジェクトへのアクセスに署名付き URL を使
用する必要があります。
Note
信頼された署名者をディストリビューションに指定するには、CloudFront コンソールまたは
CloudFront API バージョン 2009-09-09 以降を使用する必要があります。
署名付き URL または署名付き Cookie の作成と、CloudFront ディストリビューションへのアカウント
の追加が許可されるアカウントを指定するには、以下のタスクを実行します。
1.
信頼された署名者として使用する AWS アカウントを決定します。ほとんどの CloudFront カスタ
マーは、ディストリビューションの作成に使用したアカウントを使用します。
2.
ステップ 1 で選択したアカウントごとに、CloudFront キーペアを作成します。詳細については、
「信頼された署名者の CloudFront キーペアを作成する (p. 197)」を参照してください。
API Version 2016-09-29
196
Amazon CloudFront 開発者ガイド
信頼された署名者の CloudFront キーペアを作成する
3.
署名付き URL または署名付き Cookie の作成に .NET または Java を使用する場合
は、CloudFront プライベートキーの形式を変更します。詳細については、「CloudFront プライ
ベートキーの形式を変更する(.NET および Java のみ) (p. 199)」を参照してください。
4.
作成している署名付き URL または署名付き Cookie の対象となるディストリビューションで、信
頼された署名者の AWS アカウント ID を指定します。詳細については、「信頼された署名者を
ディストリビューションに追加する (p. 199)」を参照してください。
5.
(オプション)信頼された署名者に有効な CloudFront キーペアがあることを CloudFront が認識
していることを確認します。詳細については、「信頼された署名者が有効になっていることを確
認する(オプション) (p. 201)」を参照してください。
信頼された署名者の CloudFront キーペアを作成す
る
CloudFront 署名付き URL または署名付き Cookie の作成に使用する AWS アカウント(信頼された署
名者)はすべて、それぞれ独自の CloudFront キーペアを持っている必要があり、キーペアは有効に
なっている必要があります。CloudFront キーペアの代わりに Amazon EC2 キーペアを使用すること
はできません。CloudFront 署名付き URL または署名付き Cookie を作成する場合、信頼された署名者
のキーペアのキーペア ID を URL に含めます。Amazon EC2 では、キーペア ID を使用可能にするこ
とはできません。
アプリケーションのセキュリティを維持するには、CloudFront キーペアを 90 日おきに、またはそれ
より多くの頻度で変更することをお勧めします。詳細については、「CloudFront キーペアを更新す
る (p. 202)」を参照してください。
キーペアは、以下の方法で作成できます。
• AWS マネジメントコンソールでキーペアを作成し、プライベートキーをダウンロードします。
「AWS マネジメントコンソールで CloudFront キーペアを作成するには (p. 197)」の手順を参照
してください。
• OpenSSL などのアプリケーションを使用して RSA キーペアを作成し、パブリックキーを AWS マ
ネジメントコンソールにアップロードします。「RSA キーペアを作成し、パブリックキーを AWS
マネジメントコンソールにアップロードするには (p. 198)」の手順を参照してください。
AWS マネジメントコンソールで CloudFront キーペアを作成するには
1.
AWS アカウントのルート認証情報を使用して AWS マネジメントコンソールにサインインしま
す。
Important
IAM ユーザーは CloudFront キーペアを作成できません。キーペアを作成するには、ルー
ト認証情報を使用してログインする必要があります。
2.
[account-name] メニューで、[Security Credentials] をクリックします。
3.
[CloudFront Key Pairs] を展開します。
4.
複数のキーペアが有効になっていないことを確認します。既に 2 つのキーペアが有効になってい
ると、キーペアを作成できません。
5.
[Create new Key Pair] をクリックします。
6.
[Create Key Pair] ダイアログボックスで、[Download Private Key File] をクリックします。
7.
[Opening <filename>] ダイアログボックスで、[Save File] のデフォルト値を受け入れます。[OK]
をクリックし、CloudFront キーペアのプライベートキーをダウンロードして保存します。
API Version 2016-09-29
197
Amazon CloudFront 開発者ガイド
信頼された署名者の CloudFront キーペアを作成する
Important
CloudFront キーペアのプライベートキーを安全な場所に保存し、必要な管理者ユーザー
だけがそのプライベートキーを読み取ることができるようにファイルのアクセス権限を
設定します。別のユーザーがこのプライベートキーを取得すると、そのユーザーは有効
な署名付き URL および署名付き Cookie を生成し、コンテンツをダウンロードできま
す。プライベートキーを再取得することはできません。したがって、プライベートキー
を削除したか失った場合は、新しい CloudFront キーペアを作成する必要があります。
8.
キーペアのキーペア ID を記録しておきます。(AWS マネジメントコンソールでは、これはアク
セスキー ID と呼ばれます)。この情報は、署名付き URL または署名付き Cookie を作成すると
きに使用します。
RSA キーペアを作成し、パブリックキーを AWS マネジメントコンソールにアップロードす
るには
1.
OpenSSL または別のツールを使用してキーペアを作成します。
たとえば、OpenSSL を使用する場合は、次のコマンドを使用して 4096 ビット長のキーペアを生
成し、private_key.pem ファイルに保存します。
$ openssl genrsa -out private_key.pem 4096
生成されるファイルには、パブリックキーとプライベートキーの両方が含まれます。そのファイ
ルからパブリックキーを抽出するには、次のコマンドを実行します。
$ openssl rsa -pubout -in private_key.pem -out public_key.pem
パブリックキーは、この手順の後のステップでアップロードするファイルです。
キーに関する以下の要件に注意してください。
• キーペアは SSH-2 RSA キーペアである必要があります。
• キーペアは base64 でエンコードされた PEM 形式である必要があります。
• サポートされているキー長は 1024、2048、および 4096 ビットです。
2.
AWS アカウントのルート認証情報を使用して AWS マネジメントコンソールにサインインしま
す。
Important
IAM ユーザーは CloudFront キーペアを作成できません。キーペアを作成するには、ルー
ト認証情報を使用してログインする必要があります。
3.
[account-name] メニューで、[Security Credentials] をクリックします。
4.
[CloudFront Key Pairs] を展開します。
5.
複数のキーペアが有効になっていないことを確認します。既に 2 つのキーペアが有効になってい
る場合は、独自のキーペアをアップロードできません。
6.
[Upload Your Own Key Pair] をクリックします。
7.
[Upload Your Own Key Pair] ダイアログボックスの [Choose File] をクリックし、ステップ 1 で作
成したパブリックキーファイルを選択します。
8.
[Upload] をクリックします。
[Upload Key Pair] ダイアログボックスがクリアされ、新しいキーペアが CloudFront キーペアのリ
ストの最上部に表示されます。
9.
キーペアのキーペア ID を記録しておきます。(AWS マネジメントコンソールでは、これはアク
セスキー ID と呼ばれます)。この情報は、署名付き URL または署名付き Cookie を作成すると
きに使用します。
API Version 2016-09-29
198
Amazon CloudFront 開発者ガイド
CloudFront プライベートキーの形式
を変更する(.NET および Java のみ)
CloudFront プライベートキーの形式を変更する
(.NET および Java のみ)
.NET または Java を使用して署名付き URL または署名付き Cookie を作成する場合、キーペアからの
プライベートキーをデフォルトの .pem 形式のまま使用して署名を作成することはできません。
• .NET Framework – .NET Framework で使用する XML 形式にプライベートキーを変換します。いく
つかのツールを利用できます。
• 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 および署名付き Cookie を作成でき
る AWS アカウントです。デフォルトでは、どのアカウントも(ディストリビューションを作成した
アカウントも)、ディストリビューションの署名付き URL または署名付き Cookie の作成を許可され
ていません。信頼された署名者として使用する AWS アカウントを指定するには、そのアカウントを
ディストリビューションに追加します。
• ウェブディストリビューション – 信頼された署名者はキャッシュ動作に関連付けられます。これ
により、同じディストリビューション内で、一部のオブジェクトに署名付き URL または署名付き
Cookie を要求し、その他のオブジェクトには要求しないということが可能になります。信頼された
署名者は、対応するキャッシュ動作に関連付けられたオブジェクトに対してのみ署名付き URL また
は署名付き Cookie を作成できます。たとえば、1 つのキャッシュ動作に対して 1 つの信頼された署
名者があり、別のキャッシュ動作に対して別の信頼された署名者がある場合、どちらの信頼された
署名者も、もう一方のキャッシュ動作に関連付けられたオブジェクトに対して署名付き URL または
署名付き Cookie を作成できません。
• RTMP ディストリビューション(署名付き URL のみ)– 信頼された署名者はディストリビューショ
ンに関連付けられます。信頼された署名者を RTMP ディストリビューションに追加した後、ユー
ザーは、ディストリビューションに関連付けられたすべてのオブジェクトへのアクセスに署名付き
URL または署名付き Cookie を使用する必要があります。
Caution
コンテンツへの意図されないアクセスがユーザーに与えられないように、また、すべての
ユーザーが利用できるコンテンツへのアクセスが禁止されないように、パスパターンとその
順序を慎重に定義します。たとえば、リクエストが、2 つのキャッシュ動作のパスパターン
に一致したと仮定します。最初のキャッシュ動作は署名付き URL または署名付き Cookie を
要求しませんが、2 番目のキャッシュ動作はこれらを要求します。ユーザーは署名付き URL
または署名付き Cookie を使用せずにオブジェクトにアクセスできます。これは、CloudFront
が、最初の一致に関連付けられたキャッシュ動作を処理するためです。
パスパターンの詳細については、「パスパターン (p. 74)」を参照してください。
API Version 2016-09-29
199
Amazon CloudFront 開発者ガイド
信頼された署名者をディストリビューションに追加する
Caution
コンテンツの配信ですでに使用されているディストリビューションを更新する場合は、オブ
ジェクトの署名付き URL の生成を開始する準備ができたときにのみ、信頼された署名者を追
加します。準備ができていない場合、CloudFront はリクエストを拒否します。
• ウェブディストリビューション – 信頼された署名者をウェブディストリビューションの
キャッシュ動作に追加した後、ユーザーは、キャッシュ動作に関連付けられたオブジェク
トへのアクセスに署名付き URL または署名付き Cookie を使用する必要があります。
• RTMP ディストリビューション(署名付き URL のみ)– 信頼された署名者を RTMP ディス
トリビューションに追加した後、ユーザーは、ディストリビューションに関連付けられた
すべてのオブジェクトへのアクセスに署名付き URL を使用する必要があります。
信頼された署名者の最大数は、ディストリビューションの種類によって異なります。
• ウェブディストリビューション – キャッシュ動作ごとに最大 5
• RTMP ディストリビューション – ディストリビューションごとに最大 5
CloudFront コンソールまたは CloudFront API を使用して、信頼された署名者をディストリビューショ
ンに追加できます。該当のトピックを参照してください。
• CloudFront コンソールを使用して、信頼された署名者をディストリビューションに追加す
る (p. 200)
• CloudFront API を使用して、信頼された署名者をディストリビューションに追加する (p. 201)
CloudFront コンソールを使用して、信頼された署名者をディ
ストリビューションに追加する
CloudFront コンソールを使用して、信頼された署名者をディストリビューションに追加する
には
1.
ディストリビューションを作成した AWS アカウントのみを、信頼された署名者として使用する
場合は、このステップをスキップしてステップ 2 に進んでください。
他の AWS アカウントを使用する場合、アカウントごとに AWS アカウント ID を取得します。
a.
信頼された署名者として使用するアカウントを使用して、AWS マネジメントコンソール
(https://console.aws.amazon.com/console/home)にサインインします。
b.
コンソールの右上で、アカウントに関連付けられた名前をクリックし、[My Account] をク
リックします。
c.
[Account Settings] で、アカウント ID を書き留めます。
d.
AWS マネジメントコンソールからログアウトします。
e.
信頼された署名者として使用する他のアカウントについて、ステップ a ~ d を繰り返しま
す。
2.
Amazon CloudFront コンソール(https://console.aws.amazon.com/cloudfront/)を開きます。信頼
された署名者の追加先のディストリビューションを作成したときに使用したアカウントを使用し
て、サインインします。
3.
ディストリビューション ID をクリックします。
4.
編集モードに変更します。
• ウェブディストリビューション – [Behaviors] タブをクリックし、編集する動作をクリックし
て、[Edit] をクリックします。
• RTMP ディストリビューション – [Edit] をクリックします。
API Version 2016-09-29
200
Amazon CloudFront 開発者ガイド
信頼された署名者が有効になって
いることを確認する(オプション)
5.
[Restrict Viewer Access (Use Signed URLs or Signed Cookies)] で、[Yes] をクリックします。
6.
[Trusted Signers] で、該当のチェックボックスをオンにします。
• Self – 現在のアカウント(ディストリビューションの作成に使用したアカウント)を使用する
場合、このチェックボックスをオンにします。
• Specify Accounts – 他の AWS アカウントを使用する場合、このチェックボックスをオンにしま
す。
7.
[Specify Accounts] チェックボックスをオンにした場合、AWS アカウント ID(ハイフン付きまた
はハイフンなし)を [AWS Account Number] フィールドに入力します。これらは、この手順の最
初のステップで取得したアカウント ID です。行ごとに 1 つのアカウント ID を入力します。
8.
[Yes, Edit] をクリックします。
9.
信頼された署名者をウェブディストリビューションに追加しており、複数のキャッシュ動作があ
る場合は、必要に応じてステップ 4 ~ 8 を繰り返します。
CloudFront API を使用して、信頼された署名者をディストリ
ビューションに追加する
CloudFront API を使用して、信頼された署名者の AWS アカウント ID を既存のディストリビュー
ションに追加したり、信頼された署名者を含む新しいディストリビューションを作成したりできま
す。どちらの場合も、適用可能な値を 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 2016-09-29
201
Amazon CloudFront 開発者ガイド
CloudFront キーペアを更新する
CloudFront API を使用して、信頼された署名者が有効である
ことを確認する
有効なキーペアを持つ信頼された署名者(有効な信頼済み署名者)を確認するには、ディストリ
ビューションを取得し、ActiveTrustedSigners エレメントの値を確認します。このエレメント
には、信頼された署名者としてディストリビューションで識別されている各アカウントの AWS ア
カウント ID が含まれます。信頼された署名者に 1 つ以上の有効な CloudFront キーペアがある場
合、ActiveTrustedSigners エレメントにはそのキーペア ID も含まれます。詳細については、
「Amazon CloudFront API リファレンス」の該当するトピックを参照してください。
• ウェブディストリビューション –「GET Distribution」
• RTMP ディストリビューション –「GET Streaming Distribution」
CloudFront キーペアを更新する
AWS は、有効な CloudFront キーペアを 90 日おきに更新(変更)することをお勧めします。有効期
限がまだ切れていない URL または Cookie を無効にすることなく、署名付き URL または署名付き
Cookie の作成に使用している CloudFront キーペアを更新するには、以下のタスクを実行します。
1.
署名付き URL の作成に使用しているアカウントごとに新しいキーペアを作成します。詳細につい
ては、「信頼された署名者の CloudFront キーペアを作成する (p. 197)」を参照してください。
2.
CloudFront が新しいキーペアを認識していることを確認します。詳細については、「信頼された
署名者が有効になっていることを確認する(オプション) (p. 201)」を参照してください。
3.
新しいキーペアからのプライベートキーを使用して署名を作成するようにアプリケーションを更
新します。
新しいプライベートキーを使用して署名する URL または Cookie が正常に機能することを確認し
ます。
古い CloudFront キーペアを使用して署名された URL または Cookie の有効期限切れの日付が経
過するまで待ちます。
古い CloudFront キーペアを [Inactive] に変更します。
4.
5.
6.
7.
8.
a.
キーペアを無効にしたい AWS アカウントのルート認証情報を使用して AWS マネジメント
コンソールにサインインします。
b.
c.
d.
[account-name] メニューで、[Security Credentials] をクリックします。
[CloudFront Key Pairs] を展開します。
該当のキーペアで、[Make Inactive] をクリックします。
e. キーペアを無効にしたい各 AWS アカウントについて、ステップ a ~ d を繰り返します。
新しいプライベートキーを使用して署名する URL または Cookie が正常に機能することを再度確
認します。
古い CloudFront キーペアを削除します。
a.
9.
セキュリティ認証情報ページに移動します。
b. [CloudFront Key Pairs] を展開します。
c. 該当のキーペアで、[Delete] をクリックします。
古いプライベートキーの保存場所から古いプライベートキーを削除します。
API Version 2016-09-29
202
Amazon CloudFront 開発者ガイド
署名付き URL と署名付き Cookie の選択
署名付き URL と署名付き Cookie の選択
CloudFront 署名付き URL と署名付き Cookie は同じ基本的な機能を提供します。これらによって、コ
ンテンツにアクセスできるユーザーを制御できます。CloudFront を使用してプライベートコンテンツ
を供給する場合に、署名付き URL と署名付き Cookie のどちらを使用するかを決定する場合は、以下
の点を考慮します。
次のような場合は、署名付き URL を使用します。
• RTMP ディストリビューションを使用する場合。署名付き Cookie は RTMP ディストリビューショ
ンではサポートされていません。
• 個別のファイル(アプリケーションのインストールダウンロード)へのアクセスを制限する場合。
• ユーザーが Cookie をサポートしていないクライアント(カスタム HTTP クライアントなど)を使
用している場合。
次のような場合は、署名付き Cookie を使用します。
• 複数の制限されたファイル(HLS 形式の動画のすべてのファイルやウェブサイトの購読者の領域に
あるすべてのファイルなど)へのアクセスを提供する場合。
• 現在の URL を変更したくない場合。
現在署名付き URL を使用していない場合で、URL に次のクエリ文字列パラメーター含まれる場合、
署名付き URL と署名付き Cookie のいずれも使用できません。
• 有効期限
• ポリシー
• 署名
• Key-Pair-Id
CloudFront は、これらのクエリ文字列パラメーター含む URL を署名付き URL であると見なすため、
署名付き Cookie を確認しません。
署名付き URL と署名付き Cookie の両方の使用
署名付き URL と署名付き Cookie の両方を使用して同じオブジェクトへのアクセスを制御しており、
ビューアが署名付き URL を使用してオブジェクトをリクエストする場合、CloudFront は署名付き
URL のみに基づいてビューアにオブジェクトを返すかどうかを決定します。
API Version 2016-09-29
203
Amazon CloudFront 開発者ガイド
署名付き URL の使用
署名付き URL の使用
トピック
• 既定ポリシーとカスタムポリシーの選択(署名付き URL) (p. 204)
• 署名付き URL の仕組み (p. 205)
• 署名付き URL の有効期間の選択 (p. 205)
• CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミング (p. 206)
• サンプルコードおよびサードパーティツール (p. 206)
• 既定ポリシーを使用して署名付き URL を作成する (p. 207)
• カスタムポリシーを使用して署名付き URL を作成する (p. 214)
署名付き URL には、有効期限切れ日時など、追加の情報も含まれており、コンテンツへのアクセスを
より詳細に制御できます。この追加情報は、既定ポリシーまたはカスタムポリシーに基づくポリシー
ステートメントに含まれます。既定ポリシーとカスタムポリシーの違いを以下の 2 つのセクションで
説明します。
Note
同じディストリビューションで、一部の署名付き URL を既定ポリシーを使用して作成し、一
部の署名付き URL をカスタムポリシーを使用して作成することができます。
既定ポリシーとカスタムポリシーの選択(署名付き
URL)
署名付き URL を作成する場合、URL の有効期間など、署名付き URL で制限を指定する JSON 形式の
ポリシーステートメントを作成します。既定ポリシーまたはカスタムポリシーのいずれかを使用でき
ます。既定ポリシーとカスタムポリシーの比較を以下に示します。
説明
既定ポリシー
カスタムポリシー
ポリシーステートメントを複数のオブジェクト用に再
利用できる。ポリシーステートメントを再利用するに
は、Resource オブジェクトでワイルドカード文字を
使用する必要があります。詳細については、「カス
タムポリシーを使用する署名付き URL のポリシース
テートメントで指定する値 (p. 218)」を参照してく
ださい。
いいえ
はい
ユーザーがコンテンツへのアクセスを開始できる日時
を指定できる。
いいえ
はい(オプション)
ユーザーがコンテンツにアクセスできなくなる日時を
指定できる。
はい
はい
コンテンツにアクセスできるユーザーの IP アドレス
または IP アドレス範囲を指定できる。
いいえ
はい(オプション)
署名付き URL にポリシーの base64 エンコードさ
れたバージョンが含まれているため、URL が長くな
る。
いいえ
はい
既定ポリシーを使用して署名付き URL を作成する方法については、「既定ポリシーを使用して署名付
き URL を作成する (p. 207)」を参照してください。
API Version 2016-09-29
204
Amazon CloudFront 開発者ガイド
署名付き URL の仕組み
カスタムポリシーを使用して署名付き URL を作成する方法については、「カスタムポリシーを使用し
て署名付き URL を作成する (p. 214)」を参照してください。
署名付き URL の仕組み
署名付き URL 用の CloudFront と Amazon S3 の設定方法と、ユーザーが署名付き URL を使用してオ
ブジェクトをリクエストするときの CloudFront の応答方法の概要を次に示します。
1.
CloudFront ディストリビューションで、1 件以上の信頼された署名者を指定します。これは、署
名付き URL の作成許可が与えられる AWS アカウントです。
詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な AWS
アカウントの指定 (p. 196)」を参照してください。
2.
アプリケーションを開発して、ユーザーがコンテンツへのアクセス権限を持つかどうかを決定
し、アプリケーションでアクセスを制限するオブジェクトまたは部分用に署名付き URL を作成す
るかを決定します。詳細については、該当するトピックを参照してください。
• 既定ポリシーを使用して署名付き URL を作成する (p. 207)
• カスタムポリシーを使用して署名付き URL を作成する (p. 214)
3.
署名付き URL を必要とするオブジェクトをユーザーが要求します。
4.
アプリケーションは、オブジェクトにアクセスするための資格がユーザーにあることを検証しま
す。たとえば、ユーザーがサインインしていること、コンテンツへのアクセス料を支払っている
こと、他のいくつかのアクセス要件を満たしていることを検証します。
5.
アプリケーションは署名付き URL を作成してエンドユーザーに返します。
6.
署名付き URL を使用すると、ユーザーはコンテンツのダウンロードやストリーミングができま
す。
このステップは自動で実行されます。ユーザーは、コンテンツにアクセスする以外に、何も行う
必要はありません。たとえば、ユーザーがウェブブラウザでコンテンツにアクセスすると、アプ
リケーションは署名付き URL をブラウザに返します。ブラウザは、直ちに、署名付き URL を使
用して CloudFront エッジキャッシュ内のオブジェクトにアクセスします。ユーザーからの介入は
ありません。
7.
CloudFront はパブリックキーを使用して署名を検証し、URL が改ざんされていないことを確認し
ます。署名が無効である場合、リクエストは拒否されます。
署名が有効である場合、CloudFront は URL のポリシーステートメントを参照して(または既定
ポリシーを使用している場合はポリシーステートメントを作成して)、リクエストがまだ有効で
あることを確認します。たとえば、URL の開始日時と終了日時を指定した場合、CloudFront は、
アクセスが許可されている期間にユーザーがコンテンツへのアクセスを試みていることを確認し
ます。
リクエストがポリシーステートメントの要件を満たしている場合、CloudFront は標準の操作を実
行します。つまり、オブジェクトがエッジキャッシュにすでに存在するかどうかを確認し、必要
に応じてリクエストをオリジンに転送して、オブジェクトをユーザーに返します。
署名付き URL の有効期間の選択
短期間(おそらく数分)のみ有効な署名付き URL を使用してプライベートコンテンツを配信できま
す。このように短期間有効な署名付き URL は、限定された目的で、コンテンツをユーザーにオンザ
フライで配信する場合に適しています。たとえば、映画レンタルや音楽ダウンロードをカスタマーに
オンデマンドで配信する場合に適しています。署名付き URL を短期間だけ有効にする場合、開発し
たアプリケーションを使用して、署名付き URL を自動生成することが必要になる場合があります。
ユーザーがオブジェクトのダウンロードまたはメディアファイルの再生を開始すると、CloudFront
は、URL 内の有効期限切れ時刻と現在の時刻を比較して、URL が依然として有効かどうかを判別しま
す。
API Version 2016-09-29
205
Amazon CloudFront 開発者ガイド
CloudFront が署名付き URL 内の有
効期限切れ日時を確認するタイミング
これよりも有効期間の長い(おそらく数年間の)署名付き URL を使用して、プライベートコンテンツ
を配信できます。有効期間の長い署名付き URL は、プライベートコンテンツを既知のユーザーに配信
する場合に役立ちます。たとえば、事業計画を投資家に配信したり、教育資料を従業員に配信したり
する場合に役立ちます。この長い期間の署名付き URL を自動で生成するアプリケーションを開発する
か、プライベートコンテンツの設定ツールとコード例 (p. 395) に示されたサードパーティ GUI ツー
ルの 1 つを使用できます。
CloudFront が署名付き URL 内の有効期限切れ日時
を確認するタイミング
CloudFront が署名付き URL 内の有効期限切れ日時を確認し、URL が依然として有効であるかどうか
を判別するタイミングは、URL がウェブディストリビューション用または RTMP ディストリビュー
ション用のどちらであるかによって異なります。
• ウェブディストリビューション – CloudFront は、HTTP リクエスト時に署名付き URL 内の有効期
限切れ日時を確認します。有効期限切れ時刻の直前にクライアントが大きなオブジェクトのダウン
ロードを開始した場合、ダウンロード中に有効期限切れ時刻が経過してもダウンロードは完了しま
す。TCP 接続が中断し、有効期限切れ時刻が経過した後にクライアントがダウンロードを再開した
場合、ダウンロードは失敗します。
クライアントが、オブジェクトを断片的に取得するレンジ GET を使用した場合、有効期限切れ
時刻が経過した後に実行された GET リクエストは失敗します。レンジ GET の詳細については、
「CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 (p. 154)」を参照
してください。
• RTMP ディストリビューション – CloudFront は、再生イベントの開始時に署名付き URL 内の有効
期限切れ時刻を確認します。有効期限切れ時刻が経過する前にクライアントがメディアファイルの
再生を開始した場合、CloudFront はメディアファイル全体の再生を許可します。ただし、メディア
プレーヤーによっては、一時停止および再開によって別の再生イベントがトリガーされる場合があ
ります。メディアファイル内の別の場所へのスキップによって別の再生イベントがトリガーされま
す。有効期限切れ時刻が経過した後、以降の再生イベントが発生した場合、CloudFront はメディア
ファイルを供給しません。
サンプルコードおよびサードパーティツール
署名付き URL の、ハッシュ化および署名されたパートを作成するサンプルコードについては、以下の
トピックを参照してください。
• Perl を使用して URL 署名を作成する (p. 241)
• PHP を使用して URL 署名を作成する (p. 243)
• C# と .NET Framework を使用して URL 署名を作成する (p. 245)
• Java を使用して URL 署名を作成する (p. 251)
署名付き URL を作成するその他のサンプルコードは、Amazon CloudFront のサンプルコード & ライ
ブラリ ページで取得できます。
署名付き URL の作成を含め、プライベートコンテンツをサポートするサードパーティツールの詳細に
ついては、「プライベートコンテンツの設定ツールとコード例 (p. 395)」を参照してください。
API Version 2016-09-29
206
Amazon CloudFront 開発者ガイド
既定ポリシーを使用して署名付き URL を作成する
既定ポリシーを使用して署名付き URL を作成する
既定ポリシーを使用して署名付き URL を作成するには、以下の手順を実行します。
既定ポリシーを使用して署名付き URL を作成するには
1.
.NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデ
フォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換し
ます。詳細については、「CloudFront プライベートキーの形式を変更する(.NET および Java の
み) (p. 199)」を参照してください。
2.
以下の値を指定の順序で連結し、(タブと改行文字を含めて)パート間の空白文字を削除しま
す。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があり
ます。すべての値は文字列型です。各パートの番号(
す。
)は以下の 2 つの例の番号に対応しま
########## URL
ベース URL は、署名付き URL を使用しなかった場合にオブジェクトへのアクセスに使用
する CloudFront URL であり、独自のクエリ文字列パラメーターを含みます(ある場合)。
ウェブディストリビューション用の URL 形式の詳細については、「CloudFront オブジェク
トの URL の形式 (p. 117)」を参照してください。
以下の例は、ウェブディストリビューションで指定する値を示しています。
• 以下の 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
• FLV – sydney-vacation
• FLV – sydney-vacation.flv
Note
.flv ファイルの場合、.flv ファイル名拡張子を含めるかどうかは、使用するプレー
ヤーによって決まります。MP3 オーディオファイルまたは H.264/MPEG-4 ビデオ
ファイルを供給するには、ファイル名の先頭にプレフィックス mp3: または mp4: を
追加することが必要になる場合があります。メディアプレーヤーによっては、プレ
フィックスを自動で追加するように構成できます。メディアプレーヤーがファイル拡
API Version 2016-09-29
207
Amazon CloudFront 開発者ガイド
既定ポリシーを使用して署名付き URL を作成する
張子のないファイル名の指定を要求する場合もあります(例: sydney-vacation.mp4
ではなく sydney-vacation)。
?
? は、クエリ文字列パラメーターがベース URL の後に続いていることを示します。独自のク
エリ文字列パラメーターがない場合も ? を含めます。
#################&
この値はオプションです。独自のクエリ文字列パラメーター、たとえば次のクエリ文字列パ
ラメーターを追加すると仮定します。
color=red&size=medium
この場合、? (
を参照)の後、かつ Expires パラメーターの前にこのパラメーターを追
加します。特定のまれな状況では、Key-Pair-Id の後にクエリ文字列パラメーターを配置
する必要があります。
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)を参照してください。
該当の URL によるオブジェクトへのアクセスを禁止する日時を指定します。Unix 時間形式
(秒単位)および協定世界時(UTC)で表されます。たとえば、UTC の 2013 年 1 月 1 日午
前 10 時 00 分は、Unix 時間形式の 1357034400 に変換されます。
Signature= ##############################
ハッシュ化され、署名された base64 エンコードバージョンの JSON ポリシーステートメン
ト。詳細については、「既定ポリシーを使用する署名付き URL の署名の作成 (p. 209)」を
参照してください。
&Key-Pair-Id=##################### CloudFront #### ID
アクティブな CloudFront キーペアの ID(APKA9ONS7QCOWEXAMPLE な
ど)。CloudFront キーペア ID は、署名付き URL の検証に使用するパブリックキーを
CloudFront に指示します。CloudFront は、署名内の情報をポリシーステートメント内の情報
と比較して、URL が改ざんされていないことを確認します。
CloudFront 署名付き URL に含めるキーペア ID は、いずれかの信頼された署名者の有効な
キーペア ID である必要があります。
• ウェブディストリビューション – キーペアは、該当のキャッシュ動作に対するいずれかの
信頼された署名者の AWS アカウントに関連付けられる必要があります。
• RTMP ディストリビューション – キーペアは、ディストリビューションに対するいずれか
の信頼された署名者の AWS アカウントに関連付けられる必要があります。
詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な
AWS アカウントの指定 (p. 196)」を参照してください。
API Version 2016-09-29
208
Amazon CloudFront 開発者ガイド
既定ポリシーを使用して署名付き URL を作成する
署名付き URL をプログラムで生成しており、CloudFront キーペアを更新している間にキー
ペアを無効にした場合、いずれかの信頼された署名者の新しい有効なキーペアを使用するよ
うにアプリケーションを更新する必要があります。署名付き URL を手動で生成している場
合は、新しい署名付き URL を作成する必要があります。キーペアの更新の詳細については、
「CloudFront キーペアを更新する (p. 202)」を参照してください。
ウェブディストリビューションの署名付き URL の例。
http://d111111abcdef8.cloudfront.net/image.jpg
?
color=red&size=medium&
Expires=1357034400
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQAj19DzZr vDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6
Id=APKA9ONS7QCOWEXAMPLE
&Key-Pair-
RTMP ディストリビューションの署名付き URL の例。
videos/mediafile.flv
?
color=red&size=medium&
Expires=1357034400
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZr
vDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6
Id=APKA9ONS7QCOWEXAMPLE
&Key-Pair-
既定ポリシーを使用する署名付き URL の署名の作成
既定ポリシーを使用する署名付き URL の署名を作成するには、以下の手順を実行します。
1.
2.
ポリシーステートメントを作成します。「既定ポリシーを使用する署名付き URL のポリシース
テートメントの作成 (p. 209)」を参照してください。
ポリシーステートメントに署名して、署名を作成します。「既定ポリシーを使用する署名付き
URL の署名の作成 (p. 211)」を参照してください。
既定ポリシーを使用する署名付き URL のポリシーステートメントの作成
既定ポリシーを使用して署名付き URL を作成する場合、Signature パラメーターは、ポリシース
テートメントのハッシュ化および署名されたバージョンです。カスタムポリシーを使用する署名付き
URL とは異なり、既定ポリシーを使用する署名付き URL では、URL にポリシーステートメントを含
めません。ポリシーステートメントを作成するには、以下の手順を実行します。
既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには
1.
以下の JSON 形式および UTF-8 文字エンコードを使用してポリシーステートメントを構築しま
す。すべての句読点および他のリテラル値を、指定されたとおりに正確に含めます。Resource
および DateLessThan パラメーターの詳細については、「既定ポリシーを使用する署名付き
URL のポリシーステートメントで指定する値 (p. 210)」を参照してください。
{
"Statement":[
{
"Resource":"base URL or stream name",
"Condition":{
"DateLessThan":{
"AWS:EpochTime":ending date and time in Unix time format
and UTC
API Version 2016-09-29
209
Amazon CloudFront 開発者ガイド
既定ポリシーを使用して署名付き URL を作成する
}
}
}
]
}
2.
ポリシーステートメントからすべての空白文字(タブと改行文字を含む)を削除します。アプリ
ケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。
既定ポリシーを使用する署名付き URL のポリシーステートメントで指定する値
既定ポリシーのポリシーステートメントを作成する場合、以下の値を指定します。
リソース
指定する値は、ウェブディストリビューションまたは RTMP ディストリビューションのどちらの
署名付き URL を作成しているかによって異なります。
Note
Resource の日付形式は 1 つだけ指定できます。
ウェブディストリビューション
クエリ文字列(ある場合)が含まれるベース URL。ただし、CloudFront の
Expires、Signature、および Key-Pair-Id パラメーターが除外されます。次に例を示し
ます。
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
次の点に注意してください。
• プロトコル – 値は http://、https://、または http*:// で始まっている必要がありま
す。
• クエリ文字列パラメーター – クエリ文字列パラメーターがない場合は、疑問符を省略しま
す。
• 代替ドメイン名 – URL で代替ドメイン名(CNAME)を指定する場合は、ウェブページま
たはアプリケーション内のオブジェクトを参照するときに代替ドメイン名を指定する必要
があります。オブジェクトの Amazon S3 URL を指定しないでください。
RTMP ディストリビューション
ストリーム名のみを含めます。たとえば、ストリーミングビデオの完全 URL が次のような
URL であったとします。
rtmp://s5c39gqb8ow64r.cloudfront.net/videos/cfx/st/mp3_name.mp3
この場合、Resource には次の値を使用します。
videos/mp3_name
mp3: や mp4: などのプレフィックスを含めないでください。また、使用するプレーヤーに
よっては、Resource の値からファイル拡張子を省略することが必要になる場合がありま
す。たとえば、sydney-vacation.flv の代わりに sydney-vacation を使用することが
必要になる場合があります。
DateLessThan
URL の有効期限切れ日時。Unix 時間形式(秒単位)および協定世界時(UTC)で指定します。た
とえば、UTC の 2013 年 1 月 1 日午前 10 時 00 分は、Unix 時間形式の 1357034400 に変換され
ます。
この値は、署名付き URL 内の Expires クエリ文字列パラメーターの値と一致する必要がありま
す。値を引用符で囲まないでください。
API Version 2016-09-29
210
Amazon CloudFront 開発者ガイド
既定ポリシーを使用して署名付き URL を作成する
詳細については、「CloudFront が署名付き URL 内の有効期限切れ日時を確認するタイミン
グ (p. 206)」を参照してください。
既定ポリシーを使用する署名付き URL のポリシーステートメントの例
署名付き URL 内の既定ポリシーの以下のポリシーステートメントの例を使用すると、
ユーザーは、UTC の 2013 年 1 月 1 日午前 10 時 00 分までオブジェクト http://
d111111abcdef8.cloudfront.net/horizon.jpg にアクセスできます。
{
"Statement":[
{
"Resource":"http://d111111abcdef8.cloudfront.net/horizon.jpg?
size=large&license=yes",
"Condition":{
"DateLessThan":{
"AWS:EpochTime":1357034400
}
}
}
]
}
既定ポリシーを使用する署名付き URL の署名の作成
署名付き URL の Signature パラメーターの値を作成するには、「既定ポリシーを使用する署名付き
URL のポリシーステートメントの作成 (p. 209)」で作成したポリシーステートメントをハッシュ化
して署名します。この手順には 2 つのバージョンがあります。該当する手順を実行してください。
• オプション 1: 既定ポリシーを使用して、ウェブディストリビューションまたは RTMP ディストリ
ビューション(Adobe Flash Player を使用しない)の署名を作成する (p. 211)
• オプション 2: 既定ポリシーを使用して RTMP ディストリビューションの署名を作成する(Adobe
Flash Player) (p. 212)
ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例について
は、以下の各資料を参照してください。
• Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う (p. 240)
• 署名付き URL の署名を作成するためのコード例 (p. 241)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
オプション 1: 既定ポリシーを使用して、ウェブディストリビューションまたは RTMP ディス
トリビューション(Adobe Flash Player を使用しない)の署名を作成する
1.
「既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには (p. 209)」
の手順で作成したポリシーステートメントを、SHA-1 ハッシュ関数と RSA を使用してハッシュ
化し、署名します。空白を含まないバージョンのポリシーステートメントを使用します。
ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関
連付けられたプライベートキーを使用します。
Note
ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言
語およびプラットフォームによって異なります。サンプルコードについては、「署名付
き URL の署名を作成するためのコード例 (p. 241)」を参照してください。
API Version 2016-09-29
211
Amazon CloudFront 開発者ガイド
既定ポリシーを使用して署名付き URL を作成する
2.
ハッシュ化および署名された文字列から、空白文字(タブや改行文字を含む)を削除します。
3.
MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細につい
ては、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet
Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。
4.
URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文
字を示します。
5.
無効な文字(置換元)
有効な文字(置換先)
+
-(ハイフン)
=
_(下線)
/
~(チルダ)
結果の値を署名付き URL の &Signature= の後に付加し、「既定ポリシーを使用して署名付き
URL を作成するには (p. 207)」に戻って、署名付き URL の各パートの連結を終了します。
オプション 2: 既定ポリシーを使用して RTMP ディストリビューションの署名を作成する
(Adobe Flash Player)
1.
「既定ポリシーを使用する署名付き URL のポリシーステートメントを作成するには (p. 209)」
の手順で作成した RSA ポリシーステートメントを、SHA-1 ハッシュ関数と RSA を使用してハッ
シュ化し、署名します。空白を含まないバージョンのポリシーステートメントを使用します。
ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関
連付けられたプライベートキーを使用します。
Note
ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言
語およびプラットフォームによって異なります。サンプルコードについては、「署名付
き URL の署名を作成するためのコード例 (p. 241)」を参照してください。
2.
ハッシュ化および署名された文字列から、空白文字(タブや改行文字を含む)を削除します。
Adobe Flash Player を使用しており、ストリーム名がウェブページから渡される場合は、引き続
きステップ 3 に進みます。
Adobe Flash Player を使用しており、ストリーム名がウェブページから渡されない場合は、こ
の手順の残りをスキップします。たとえば、ストリーム名を Adobe Flash .swf ファイル内から
フェッチする独自のプレーヤーを作成した場合は、この手順の残りをスキップします。
3.
MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細につい
ては、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet
Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。
4.
URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文
字を示します。
5.
無効な文字(置換元)
有効な文字(置換先)
+
-(ハイフン)
=
_(下線)
/
~(チルダ)
Adobe Flash Player の一部のバージョンでは、?、=、および & を URL エンコードすることが要
求されます。使用している Adobe Flash Player のバージョンがこの文字の置換を要求するかどう
かについては、Adobe ウェブサイトを参照してください。
API Version 2016-09-29
212
Amazon CloudFront 開発者ガイド
既定ポリシーを使用して署名付き URL を作成する
使用している Flash のバージョンがこれらの文字の URL エンコードを要求しない場合は、このス
テップをスキップしてステップ 6 に進んでください。
使用している Flash のバージョンがこれらの文字の URL エンコードを要求する場合は、次の表に
示されたとおりに文字を置き換えます。(= については、前のステップですでに置き換えられて
います)。
6.
無効な文字(置換元)
URL エンコード(置換先)
?
%3F
&
%26
結果の値を署名付き URL の &Signature= の後に付加し、「既定ポリシーを使用して署名付き
URL を作成するには (p. 207)」に戻って、署名付き URL の各パートの連結を終了します。
API Version 2016-09-29
213
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
カスタムポリシーを使用して署名付き URL を作成
する
トピック
• カスタムポリシーを使用する署名付き URL のポリシーステートメントの作成 (p. 216)
• カスタムポリシーを使用する署名付き URL のポリシーステートメントの例 (p. 219)
• カスタムポリシーを使用する署名付き URL の署名の作成 (p. 221)
カスタムポリシーを使用して署名付き URL を作成するには、以下の手順を実行します。
カスタムポリシーを使用して署名付き URL を作成するには
1.
.NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデ
フォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換し
ます。詳細については、「CloudFront プライベートキーの形式を変更する(.NET および Java の
み) (p. 199)」を参照してください。
2.
以下の値を指定の順序で連結し、(タブと改行文字を含めて)パート間の空白文字を削除しま
す。アプリケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があり
ます。すべての値は文字列型です。各パートの番号(
す。
)は以下の 2 つの例の番号に対応しま
########## URL
ベース URL は、署名付き URL を使用しなかった場合にオブジェクトへのアクセスに使用
する CloudFront URL であり、独自のクエリ文字列パラメーターを含みます(ある場合)。
ウェブディストリビューション用の URL 形式の詳細については、「CloudFront オブジェク
トの URL の形式 (p. 117)」を参照してください。
以下の例は、ウェブディストリビューションで指定する値を示しています。
• 以下の 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
• FLV – sydney-vacation
API Version 2016-09-29
214
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
• FLV – sydney-vacation.flv
Note
.flv ファイルの場合、.flv ファイル名拡張子を含めるかどうかは、使用するプレー
ヤーによって決まります。MP3 オーディオファイルまたは H.264/MPEG-4 ビデオ
ファイルを供給するには、ファイル名の先頭にプレフィックス mp3: または mp4: を
追加することが必要になる場合があります。メディアプレーヤーによっては、プレ
フィックスを自動で追加するように構成できます。メディアプレーヤーがファイル拡
張子のないファイル名の指定を要求する場合もあります(例: sydney-vacation.mp4
ではなく sydney-vacation)。
?
? は、クエリ文字列パラメーターがベース URL の後に続いていることを示します。独自のク
エリ文字列パラメーターがない場合も ? を含めます。
#################&
この値はオプションです。独自のクエリ文字列パラメーター、たとえば次のクエリ文字列パ
ラメーターを追加すると仮定します。
color=red&size=medium
この場合、? (
を参照)の後、かつ Policy パラメーターの前にこのパラメーターを追
加します。特定のまれな状況では、Key-Pair-Id の後にクエリ文字列パラメーターを配置
する必要があります。
Important
パラメーターに Policy、Signature、または Key-Pair-Id という名前を付ける
ことはできません。
独自のパラメーターを追加する場合は、最後のパラメーターを含め、各パラメーターの後に
& を付加します。
Policy=############ base64 ##########
空白文字が削除され、base64 エンコードされた、JSON 形式のポリシーステートメント。詳
細については、「カスタムポリシーを使用する署名付き URL のポリシーステートメントの作
成 (p. 216)」を参照してください。
ポリシーステートメントは、署名付き URL でユーザーに与えられるアクセス権限を制御し
ます。これには、オブジェクトの URL(ウェブディストリビューションの場合)またはスト
リーム名(RTMP ディストリビューションの場合)、有効期限の日時、URL が有効になるオ
プション日時、およびオブジェクトへのアクセスが許可されるオプションの IP アドレスや
IP アドレス範囲が含まれます。
Signature= ##############################
ハッシュ化され、署名された base64 エンコードバージョンの JSON ポリシーステー
トメント。詳細については、「カスタムポリシーを使用する署名付き URL の署名の作
成 (p. 221)」を参照してください。
&Key-Pair-Id=############################## CloudFront #### ID
アクティブな CloudFront キーペアの ID(APKA9ONS7QCOWEXAMPLE な
ど)。CloudFront キーペア ID は、署名付き URL の検証に使用するパブリックキーを
CloudFront に指示します。CloudFront は、署名内の情報をポリシーステートメント内の情報
と比較して、URL が改ざんされていないことを確認します。
API Version 2016-09-29
215
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
CloudFront 署名付き URL に含めるキーペア ID は、いずれかの信頼された署名者の有効な
キーペア ID である必要があります。
• ウェブディストリビューション – キーペアは、該当のキャッシュ動作に対するいずれかの
信頼された署名者の AWS アカウントに関連付けられる必要があります。
• RTMP ディストリビューション – キーペアは、ディストリビューションに対するいずれか
の信頼された署名者の AWS アカウントに関連付けられる必要があります。
詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な
AWS アカウントの指定 (p. 196)」を参照してください。
署名付き URL をプログラムで生成しており、CloudFront キーペアを更新している間にキー
ペアを無効にした場合、いずれかの信頼された署名者の新しい有効なキーペアを使用するよ
うにアプリケーションを更新する必要があります。署名付き URL を手動で生成している場
合は、新しい署名付き URL を作成する必要があります。キーペアの更新の詳細については、
「CloudFront キーペアを更新する (p. 202)」を参照してください。
ウェブディストリビューションの署名付き 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
Id=APKA9ONS7QCOWEXAMPLE
&Key-Pair-
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
Id=APKA9ONS7QCOWEXAMPLE
&Key-Pair-
カスタムポリシーを使用する署名付き URL のポリシーステー
トメントの作成
カスタムポリシーのポリシーステートメントを作成するには、以下の手順を実行します。さまざまな
方法でオブジェクトへのアクセスを制御するポリシーステートメントのいくつかの例については、
「カスタムポリシーを使用する署名付き URL のポリシーステートメントの例 (p. 219)」を参照して
ください。
API Version 2016-09-29
216
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
カスタムポリシーを使用する署名付き URL のポリシーステートメントを作成するには
1.
以下の JSON 形式を使用してポリシーステートメントを構築します。詳細については、「カスタ
ムポリシーを使用する署名付き URL のポリシーステートメントで指定する値 (p. 218)」を参照
してください。
{
"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 の値については、「カ
スタムポリシーを使用する署名付き URL のポリシーステートメントで指定する値 (p. 218)」
を参照してください。
2.
ポリシーステートメントからすべての空白文字(タブと改行文字を含む)を削除します。アプリ
ケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。
3.
MIME base64 エンコーディングを使用してポリシーステートメントを Base64 エンコードし
ます。詳細については、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One:
Format of Internet Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参
照してください。
4.
URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文
字を示します。
無効な文字(置換元)
有効な文字(置換先)
+
-(ハイフン)
=
_(下線)
/
~(チルダ)
5.
結果の値を署名付き URL の Policy= の後に付加します。
6.
ポリシーステートメントのハッシュ化、署名、および base64 エンコードを行って、署名付き
URL の署名を作成します。詳細については、「カスタムポリシーを使用する署名付き URL の署
名の作成 (p. 221)」を参照してください。
API Version 2016-09-29
217
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
カスタムポリシーを使用する署名付き URL のポリシーステートメントで指定
する値
カスタムポリシーのポリシーステートメントを作成する場合、以下の値を指定します。
リソース
指定する値は、ウェブディストリビューションまたは RTMP ディストリビューションの署名付き
URL を作成しているかどうかによって異なります。
Note
Resource の日付形式は 1 つだけ指定できます。
ウェブディストリビューション(オプション、ただし推奨)
クエリ文字列(ある場合)が含まれるベース URL。ただし、CloudFront の
Policy、Signature、および Key-Pair-Id パラメーターが除外されます。次に例を示し
ます。
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
Caution
ウェブディストリビューションで Resource パラメーターを省略した場合、ユーザー
は、署名付き URL の作成に使用するキーペアに関連付けられたあらゆるディストリ
ビューションに関連付けられるすべてのオブジェクトにアクセスできます。
次の点に注意してください。
• プロトコル – 値は http://、https://、または * で始まっている必要があります。
• クエリ文字列パラメーター – クエリ文字列パラメーターがない場合は、疑問符を省略しま
す。
• ワイルドカード – 0 個以上の文字に一致するワイルドカード文字(*)、または 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/cfx/st/mp3_name.mp3
この場合、Resource には次の値を使用します。
API Version 2016-09-29
218
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
videos/mp3_name
mp3: や mp4: などのプレフィックスを含めないでください。また、使用するプレーヤーに
よっては、Resource の値からファイル拡張子を省略することが必要になる場合がありま
す。たとえば、sydney-vacation.flv の代わりに sydney-vacation を使用することが
必要になる場合があります。
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. 206)」を参照してください。
DateGreaterThan(オプション)
オプションの URL 開始日時。Unix 時間形式(秒単位)および協定世界時(UTC)で指定しま
す。ユーザーは指定された日時よりも前にオブジェクトにアクセスすることを許可されません。
値を引用符で囲まないでください。
IpAddress(オプション)
GET リクエストを実行するクライアントの IP アドレス。次の点に注意してください。
• オブジェクトへのアクセスをすべての IP アドレスに許可するには、IpAddress パラメーター
を省略します。
• IP アドレスまたは IP アドレス範囲を 1 つ指定できます。たとえば、2 つの別々の範囲のどちら
かにクライアントの IP アドレスが入っている場合にアクセスを許可するようなポリシーを設定
することはできません。
• 1 つの IP アドレスからのアクセスを許可するには、以下のように指定します。
"IPv4 IP ####/32"
• IP アドレス範囲は標準の IPv4 CIDR 形式(192.0.2.0/24 など)で指定する必要がありま
す。詳細については、RFC 4632、クラスレスインタードメインルーティング (CIDR): インター
ネットアドレスの割り当てと集約計画 (http://tools.ietf.org/html/rfc4632) を参照してください。
Important
IPv6 フォーマットの IP アドレス (例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334) は
サポートされていません。
IpAddress を含むカスタムポリシーを使用する場合、ディストリビューションで IPv6 は有効
にしません。一部のコンテンツへのアクセスを IP アドレスによって制限し、他のコンテンツ
で IPv6 リクエストをサポートする場合、2 つのディストリビューションを作成します。詳細
については、トピック「ウェブディストリビューションを作成または更新する場合に指定する
値 (p. 67)」の「IPv6 を有効にする (p. 84)」を参照してください。
カスタムポリシーを使用する署名付き URL のポリシーステー
トメントの例
以下のポリシーステートメントの例は、特定のオブジェクト、ディレクトリ内のすべてのオブジェク
ト、またはキーペア ID に関連付けられたすべてのオブジェクトへのアクセスを制御する方法を示し
ています。また、この例は、個々の IP アドレスまたは IP アドレス範囲からのアクセスを制御する方
API Version 2016-09-29
219
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
法、および指定された日時以降にユーザーが署名付き URL を使用することを禁止する方法も示してい
ます。
この例のいずれかをコピーして貼り付ける場合は、すべての空白文字を削除し(タブと改行文字を含
む)、適用可能な値を独自の値で置き換えて、右中かっこ(})の後に改行文字を含めます。
詳細については、「カスタムポリシーを使用する署名付き URL のポリシーステートメントで指定する
値 (p. 218)」を参照してください。
トピック
• ポリシーステートメントの例: IP アドレス範囲から 1 つのオブジェクトにアクセスする (p. 220)
• ポリシーステートメントの例: IP アドレス範囲からディレクトリ内のすべてのオブジェクトにアク
セスする (p. 220)
• ポリシーステートメントの例: キーペア ID に関連付けられたすべてのオブジェクトに 1 つの IP ア
ドレスからアクセスする (p. 221)
ポリシーステートメントの例: 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"},
"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}
}
}
]
}
API Version 2016-09-29
220
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
このポリシーを使用する各署名付き 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
署名付き URL にはキーペア ID も含まれます。キーペア ID は、ベース URL に指定されたディストリ
ビューション(d111111abcdef8.cloudfront.net)内の信頼された署名者に関連付けられる必要があり
ます。
カスタムポリシーを使用する署名付き URL の署名の作成
カスタムポリシーを使用する署名付き URL の署名は、ハッシュ化、署名、および base64 エンコー
ドが行われたバージョンのポリシーステートメントです。カスタムポリシーの署名を作成するには、
該当する手順を実行します。選択するバージョンは、ディストリビューションの種類(ウェブまたは
RTMP)によって決まります。また、RTMP ディストリビューションの場合は、使用するメディアプ
レーヤー(Adobe Flash Player または別のメディアプレーヤー)によって決まります。
• オプション 1: カスタムポリシーを使用して、ウェブディストリビューションまたは RTMP ディス
トリビューション(Adobe Flash Player を使用しない)の署名を作成する (p. 222)
• オプション 2: カスタムポリシーを使用して RTMP ディストリビューションの署名を作成する
(Adobe Flash Player) (p. 222)
ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例について
は、以下の各資料を参照してください。
• Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う (p. 240)
• 署名付き URL の署名を作成するためのコード例 (p. 241)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
API Version 2016-09-29
221
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
オプション 1: カスタムポリシーを使用して、ウェブディストリビューションまたは RTMP
ディストリビューション(Adobe Flash Player を使用しない)の署名を作成する
1.
「カスタムポリシーを使用する署名付き URL のポリシーステートメントを作成するに
は (p. 217)」の手順で作成した JSON ポリシーステートメントを、SHA-1 ハッシュ関数と RSA
を使用してハッシュ化し、署名します。空白文字が含まれていないが、まだ base64 エンコード
されていないバージョンのポリシーステートメントを使用します。
ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関
連付けられたプライベートキーを使用します。
Note
ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言
語およびプラットフォームによって異なります。サンプルコードについては、「署名付
き URL の署名を作成するためのコード例 (p. 241)」を参照してください。
2.
ハッシュ化および署名された文字列から、空白文字(タブや改行文字を含む)を削除します。
3.
MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細につい
ては、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet
Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。
4.
URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文
字を示します。
5.
無効な文字(置換元)
有効な文字(置換先)
+
-(ハイフン)
=
_(下線)
/
~(チルダ)
結果の値を署名付き URL の &Signature= の後に付加し、「カスタムポリシーを使用して署名付き
URL を作成するには (p. 214)」に戻って、署名付き URL の各パートの連結を終了します。
オプション 2: カスタムポリシーを使用して RTMP ディストリビューションの署名を作成する
(Adobe Flash Player)
1.
「カスタムポリシーを使用する署名付き URL のポリシーステートメントを作成するに
は (p. 217)」の手順で作成した JSON ポリシーステートメントを、SHA-1 ハッシュ関数と RSA
を使用してハッシュ化し、署名します。空白文字が含まれていないが、まだ base64 エンコード
されていないバージョンのポリシーステートメントを使用します。
ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関
連付けられたプライベートキーを使用します。
Note
ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言
語およびプラットフォームによって異なります。サンプルコードについては、「署名付
き URL の署名を作成するためのコード例 (p. 241)」を参照してください。
2.
ハッシュ化および署名された文字列から、空白文字(タブや改行文字を含む)を削除します。
ストリーム名がウェブページから渡される場合は、引き続きステップ 3 に進みます。
ストリーム名がウェブページから渡されない場合は、この手順の残りをスキップします。たとえ
ば、ストリーム名を Adobe Flash .swf ファイル内からフェッチする独自のプレーヤーを作成した
場合は、この手順の残りをスキップします。
API Version 2016-09-29
222
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用して署名付き URL を作成する
3.
4.
5.
MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細につい
ては、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet
Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。
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. 214)」に戻って、署名付き URL の各パートの連結を終了します。
API Version 2016-09-29
223
Amazon CloudFront 開発者ガイド
署名付き Cookie の使用
署名付き Cookie の使用
CloudFront 署名付き Cookie によって、現在の URL を変更したくない場合や、複数の制限付きファイ
ル(ウェブサイトの購読者の領域にあるすべてのファイルなど)へのアクセスを提供する場合に、コ
ンテンツにアクセスできるユーザーを制御できます。このトピックでは、署名付き Cookie を使用す
る際の考慮事項と、既定ポリシーとカスタムポリシーを使用するように署名付き Cookie を設定する
方法について説明します。
トピック
• 署名付き Cookie の既定ポリシーとカスタムポリシーの選択 (p. 224)
• 署名付き Cookie の仕組み (p. 224)
• 署名付き Cookie の悪用の防止 (p. 225)
• CloudFront が署名付き Cookie 内の有効期限切れ日時を確認するタイミング (p. 226)
• サンプルコードおよびサードパーティツール (p. 226)
• 既定ポリシーを使用した署名付き Cookie の設定 (p. 226)
• カスタムポリシーを使用した署名付き Cookie の設定 (p. 231)
署名付き Cookie の既定ポリシーとカスタムポリ
シーの選択
署名付き Cookie を作成する場合、Cookie の有効期間など、署名付き Cookie で制限を指定する
JSON 形式のポリシーステートメントを作成します。既定ポリシーまたはカスタムポリシーを使用で
きます。次の表では、既定ポリシーとカスタムポリシーを比較しています。
説明
既定ポリシー
カスタムポリシー
ポリシーステートメントを複数のオブジェクト用に再
利用できる。ポリシーステートメントを再利用するに
は、Resource オブジェクトでワイルドカード文字を
使用する必要があります。詳細については、「署名付
き Cookie のカスタムポリシーのポリシーステートメ
ントで指定する値 (p. 235)」を参照してください。
いいえ
はい
ユーザーがコンテンツへのアクセスを開始できる日時
を指定できる
いいえ
はい(オプション)
ユーザーがコンテンツにアクセスできなくなる日時を
指定できる
はい
はい
コンテンツにアクセスできるユーザーの IP アドレス
または IP アドレス範囲を指定できる
いいえ
はい(オプション)
既定ポリシーを使用して署名付き Cookie を作成する方法については、「既定ポリシーを使用した署
名付き Cookie の設定 (p. 226)」を参照してください。
カスタムポリシーを使用して署名付き Cookie を作成する方法については、「カスタムポリシーを使
用した署名付き Cookie の設定 (p. 231)」を参照してください。
署名付き Cookie の仕組み
ここでは、署名付き Cookie 用に CloudFront を設定する方法と、ユーザーが署名付き Cookie を含む
リクエストを送信した場合の CloudFront の応答の概要を示します。
API Version 2016-09-29
224
Amazon CloudFront 開発者ガイド
署名付き Cookie の悪用の防止
1.
CloudFront ディストリビューションで、1 件以上の信頼された署名者を指定します。これは、署
名付き URL および署名付き Cookie の作成権限が与えられる AWS アカウントです。
詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な AWS
アカウントの指定 (p. 196)」を参照してください。
2.
ユーザーがコンテンツにアクセスできるかどうかを判断し、アクセスできる場合は、3 つの SetCookie ヘッダーをビューアに送信するアプリケーションを開発します(各 Set-Cookie ヘッ
ダーには名前と値のペアを 1 つだけ含めることができ、CloudFront 署名付き Cookie では 3 つ
の名前と値のペアが必要です)。ビューアがプライベートコンテンツをリクエストする前に、
ビューアに Set-Cookie ヘッダーを送信する必要があります。Cookie の有効期限を短く設定
した場合、ユーザーがアクセスを続行できるように、以降のリクエストに対してさらに 3 つの
Set-Cookie ヘッダーを送信することもできます。
通常、CloudFront ディストリビューションには少なくとも 2 つのキャッシュ動作があります。認
証を必要としないものと、認証を必要とするものです。サイトのセキュリティで保護された部分
のエラーページには、ログインページへのリダイレクタまたはリンクが含まれます。
Cookie に基づいてオブジェクトをキャッシュするようにディストリビューションを設定している
場合、CloudFront は署名付き Cookie の属性に基づいて個別のオブジェクトをキャッシュしませ
ん。
3.
ユーザーがウェブサイトにサインインし、コンテンツに対して支払いをするか、またはその他の
アクセスの要件を満たします。
4.
アプリケーションは、レスポンスで Set-Cookie ヘッダーを返し、ビューアは名前と値のペアを
格納します。
5.
ユーザーがオブジェクトを要求します。
ユーザーのブラウザまたはその他のビューアは、ステップ 4 の名前と値のペアを取得し、リクエ
ストの Cookie ヘッダーに追加します。これが署名付き Cookie です。
6.
CloudFront はパブリックキーを使用して、署名付き Cookie の署名を検証し、Cookie が改ざんさ
れていないことを確認します。署名が無効である場合、リクエストは拒否されます。
Cookie の署名が有効である場合、CloudFront は Cookie のポリシーステートメントを参照して
(または既定ポリシーを使用している場合はポリシーステートメントを作成して)、リクエス
トがまだ有効であることを確認します。たとえば、Cookie の開始日時と終了日時を指定した場
合、CloudFront は、アクセスが許可されている期間にユーザーがコンテンツへのアクセスを試み
ていることを確認します。
リクエストがポリシーステートメントの要件を満たしている場合、CloudFront は制限されてい
ないコンテンツの場合と同様にコンテンツを供給します。つまり、オブジェクトがエッジキャッ
シュにすでに存在するかどうかを確認し、必要に応じてリクエストをオリジンに転送して、オブ
ジェクトをユーザーに返します。
署名付き Cookie の悪用の防止
Set-Cookie ヘッダーで Domain パラメーターを指定する場合、同一ルートドメイン名を使
用するユーザーによる潜在的なアクセスを制限できる、最も厳密な値を指定します。たとえ
ば、apex.example.com は、特に example.com を制御しない場合は、example.com よりも優先され
ます。これによって、ユーザーが nadir.example.com のコンテンツにアクセスすることを防止できま
す。
この種類の攻撃を防ぐには、以下の作業を行います。
• Set-Cookie ヘッダーでセッション Cookie が作成されるように、Expires および Max-Age
Cookie 属性を除外します。セッション Cookie は、ユーザーがブラウザを閉じたときに自動的に削
除されるため、ユーザーがコンテンツに不正アクセスする可能性が低くなります。
API Version 2016-09-29
225
Amazon CloudFront 開発者ガイド
CloudFront が署名付き Cookie 内の有
効期限切れ日時を確認するタイミング
• ビューアがリクエストに Cookie を含める場合に Cookie が暗号化されるように、Secure 属性を含
めます。
• 可能な場合、カスタムポリシーを使用してビューアの IP アドレスを含めます。
• CloudFront-Expires 属性では、ユーザーがコンテンツにアクセスできるようにする期間に基づ
いて、最短で適切な有効期限の時刻を指定します。
CloudFront が署名付き Cookie 内の有効期限切れ日
時を確認するタイミング
署名付き Cookie がまだ有効であるかどうかを確認するために、CloudFront は HTTP リクエスト時
に、Cookie の有効期限切れ日時を確認します。有効期限切れ時刻の直前にクライアントが大きなオ
ブジェクトのダウンロードを開始した場合、ダウンロード中に有効期限切れ時刻が経過してもダウン
ロードは完了します。TCP 接続が中断し、有効期限切れ時刻が経過した後にクライアントがダウン
ロードを再開した場合、ダウンロードは失敗します。
クライアントが、オブジェクトを断片的に取得するレンジ GET を使用した場合、有効期限切れ
時刻が経過した後に実行された GET リクエストは失敗します。レンジ GET の詳細については、
「CloudFront がオブジェクトの部分的リクエスト(レンジ GET)を処理する方法 (p. 154)」を参照し
てください。
サンプルコードおよびサードパーティツール
プライベートコンテンツ用のサンプルコードは、署名付き URL の署名を作成する方法のみを示してい
ます。ただし、署名付き Cookie の署名を作成するプロセスは非常によく似ており、サンプルコード
の多くの部分は関連しています。詳細については、次のトピックを参照してください。
• Perl を使用して URL 署名を作成する (p. 241)
• PHP を使用して URL 署名を作成する (p. 243)
• C# と .NET Framework を使用して URL 署名を作成する (p. 245)
• Java を使用して URL 署名を作成する (p. 251)
署名付き URL を作成するその他のサンプルコードは、Amazon CloudFront のサンプルコード & ライ
ブラリ ページで取得できます。
署名付き URL の作成を含め、プライベートコンテンツをサポートするサードパーティツールの詳細に
ついては、「プライベートコンテンツの設定ツールとコード例 (p. 395)」を参照してください。
既定ポリシーを使用した署名付き Cookie の設定
トピック
• 既定ポリシーを使用する署名付き Cookie の署名の作成 (p. 229)
既定ポリシーを使用して署名付き Cookie を設定するには、以下の手順を実行します。
既定ポリシーを使用して署名付き Cookie を設定するには
1.
2.
.NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデ
フォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換し
ます。詳細については、「CloudFront プライベートキーの形式を変更する(.NET および Java の
み) (p. 199)」を参照してください。
承認されたビューアに 3 つの Set-Cookie ヘッダーを送信するアプリケーションをプログラム
します。各 Set-Cookie ヘッダーには名前と値のペアを 1 つだけ含めることができ、CloudFront
署名付き Cookie では 3 つの名前と値のペアが必要であるため、3 つの Set-Cookie ヘッダーが
API Version 2016-09-29
226
Amazon CloudFront 開発者ガイド
既定ポリシーを使用した署名付き Cookie の設定
必要です。名前と値のペアは、CloudFront-Expires、CloudFront-Key-Pair-Id、および
CloudFront-Signature です。アクセスを制御するオブジェクトに対してユーザーが最初のリ
クエストを行う前に、値がビューアに存在している必要があります。
Note
一般的に、Expires 属性と Max-Age 属性を除外することをお勧めします。これらの属
性を除外すると、ユーザーがブラウザを閉じたときに、ブラウザで Cookie が削除される
ため、ユーザーがコンテンツに不正アクセスする可能性が低くなります。詳細について
は、「署名付き Cookie の悪用の防止 (p. 225)」を参照してください。
Cookie の属性の名前では、大文字と小文字が区別されます。
改行は、属性を判読しやすくするためにのみ含まれています。
Set-Cookie:
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly;
CloudFront-Expires=date and time in Unix time format (in seconds) and
Coordinated Universal Time (UTC)
Set-Cookie:
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly;
CloudFront-Signature=hashed and signed version of the policy statement
Set-Cookie:
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly;
CloudFront-Key-Pair-Id=active CloudFront key pair Id for the key pair that
you are using to generate the signature
(オプション)Domain
リクエストされたオブジェクトのドメイン名。Domain 属性を指定しない場合、デフォルト
値は URL のドメイン名で、指定されたドメイン名にのみ適用され、サブドメインには適用
されません。Domain 属性を指定する場合、サブドメインにも適用されます。ドメイン名の
先頭のドット(たとえば、Domain=.example.com)はオプションです。さらに、Domain
属性を指定する場合は、URL のドメイン名と Domain 属性の値が一致している必要がありま
す。
CloudFront がディストリビューションに割り当てたドメイン名
(d111111abcdef8.cloudfront.net など)を指定することはできますが、*.cloudfront.net をド
メイン名として指定することはできません。
URL で代替ドメイン名(example.com など)を使用する場合は、Domain 属性を指定する
かどうかにかかわらず、代替ドメイン名をディストリビューションに追加する必要がありま
す。詳細については、トピック「ウェブディストリビューションを作成または更新する場合
に指定する値 (p. 67)」の「代替ドメイン名(CNAME) (p. 81)」を参照してください。
(オプション)Path
リクエストされたオブジェクトのパス。Path 属性を指定しない場合、デフォルト値は URL
のパスです。
API Version 2016-09-29
227
Amazon CloudFront 開発者ガイド
既定ポリシーを使用した署名付き Cookie の設定
安全性
リクエストを送信する前に、ビューアが Cookie を暗号化することを要求します。Cookie の
属性を中間者攻撃から保護するために、HTTPS 接続で Set-Cookie ヘッダーを送信するこ
とをお勧めします。
HttpOnly
ビューアが HTTP または HTTPS リクエストでのみ Cookie を送信することを要求します。
CloudFront-Expires
有効期限切れ日時を Unix 時間形式(秒単位)および協定世界時(UTC)で指定します。たと
えば、UTC の 2015 年 3 月 16 日午前 10 時 00 分は、UNIX 時間形式の 1426500000 に変換
されます。UTC の詳細については、「RFC 3339、インターネットでの日付と時間: タイムス
タンプ」(http://tools.ietf.org/html/rfc3339)を参照してください。
CloudFront-Signature
ハッシュ化され、署名された base64 エンコードバージョンの JSON ポリシーステートメン
ト。詳細については、「既定ポリシーを使用する署名付き Cookie の署名の作成 (p. 229)」
を参照してください。
CloudFront-Key-Pair-Id
アクティブな CloudFront キーペアの ID(APKA9ONS7QCOWEXAMPLE な
ど)。CloudFront キーペア ID は、署名付き Cookie の検証に使用するパブリックキーを
CloudFront に指示します。CloudFront は、署名内の情報をポリシーステートメント内の情報
と比較して、URL が改ざんされていないことを確認します。
CloudFront 署名付き Cookie に含めるキーペア ID は、該当のキャッシュ動作に対するいずれ
かの信頼された署名者の AWS アカウントに関連付けられる必要があります。
詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な
AWS アカウントの指定 (p. 196)」を参照してください。
CloudFront キーペアを更新している間にキーペアを無効にした場合、いずれかの信頼された
署名者の新しい有効なキーペアを使用するようにアプリケーションを更新する必要がありま
す。キーペアの更新の詳細については、「CloudFront キーペアを更新する (p. 202)」を参照
してください。
オブジェクトの URL のディストリビューションに関連付けられたドメイン名を使用する場合の、1 つ
の署名付き Cookie の Set-Cookie ヘッダーの例
Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure;
HttpOnly; CloudFront-Expires=1426500000
Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure;
HttpOnly; CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_
Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure;
HttpOnly; CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE
オブジェクトの URL に代替ドメイン名 example.org を使用している場合の、1 つの署名付き Cookie
の Set-Cookie ヘッダーの例:
Set-Cookie: Domain=example.org; Path=/images/*; Secure; HttpOnly; CloudFrontExpires=1426500000
Set-Cookie: Domain=example.org; Path=/images/*; Secure; HttpOnly; CloudFrontSignature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_
Set-Cookie: Domain=example.org; Path=/images/*; Secure; HttpOnly; CloudFrontKey-Pair-Id=APKA9ONS7QCOWEXAMPLE
URL で代替ドメイン名(example.com など)を使用する場合は、Domain 属性を指定するかどうか
にかかわらず、代替ドメイン名をディストリビューションに追加する必要があります。詳細について
API Version 2016-09-29
228
Amazon CloudFront 開発者ガイド
既定ポリシーを使用した署名付き Cookie の設定
は、トピック「ウェブディストリビューションを作成または更新する場合に指定する値 (p. 67)」の
「代替ドメイン名(CNAME) (p. 81)」を参照してください。
既定ポリシーを使用する署名付き Cookie の署名の作成
既定ポリシーを使用する署名付き Cookie の署名を作成するには、以下のタスクを実行します。
1.
ポリシーステートメントを作成します。「既定ポリシーを使用する署名付き Cookie のポリシー
ステートメントの作成 (p. 229)」を参照してください。
2.
ポリシーステートメントに署名して、署名を作成します。「既定ポリシーを使用する署名付き
Cookie の署名を作成するためのポリシーステートメントの署名 (p. 230)」を参照してくださ
い。
既定ポリシーを使用する署名付き Cookie のポリシーステートメントの作成
既定ポリシーを使用する署名付き Cookie を設定した場合、CloudFront-Signature 属性は、ポリ
シーステートメントのハッシュ化および署名されたバージョンです。カスタムポリシーを使用する署
名付き Cookie とは異なり、既定ポリシーを使用する署名付き Cookie では、Set-Cookie ヘッダーに
ポリシーステートメントを含めません。ポリシーステートメントを作成するには、以下の手順を実行
します。
既定ポリシーを使用する署名付き Cookie のポリシーステートメントを作成するには
1.
以下の JSON 形式および UTF-8 文字エンコードを使用してポリシーステートメントを構築しま
す。すべての句読点および他のリテラル値を、指定されたとおりに正確に含めます。Resource
および DateLessThan パラメーターの詳細については、「署名付き Cookie の既定ポリシーのポ
リシーステートメントで指定する値 (p. 229)」を参照してください。
{
"Statement":[
{
"Resource":"base URL or stream name",
"Condition":{
"DateLessThan":{
"AWS:EpochTime":ending date and time in Unix time format
and UTC
}
}
}
]
}
2.
ポリシーステートメントからすべての空白文字(タブと改行文字を含む)を削除します。アプリ
ケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。
署名付き Cookie の既定ポリシーのポリシーステートメントで指定する値
既定ポリシーのポリシーステートメントを作成する場合、以下の値を指定します。
リソース
クエリ文字列(存在する場合)を含むベース URL。以下に例を示します。
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
Resource の日付形式は 1 つだけ指定できます。
次の点に注意してください。
API Version 2016-09-29
229
Amazon CloudFront 開発者ガイド
既定ポリシーを使用した署名付き Cookie の設定
• プロトコル – 値は http://、https://、または http*:// で始まっている必要があります。
• クエリ文字列パラメーター – クエリ文字列パラメーターがない場合は、疑問符を省略します。
• 代替ドメイン名 – URL で代替ドメイン名(CNAME)を指定する場合は、ウェブページまたは
アプリケーション内のオブジェクトを参照するときに代替ドメイン名を指定する必要がありま
す。オブジェクトの Amazon S3 URL を指定しないでください。
DateLessThan
URL の有効期限切れ日時。Unix 時間形式(秒単位)および協定世界時(UTC)で指定します。値
を引用符で囲まないでください。
たとえば、UTC の 2015 年 3 月 16 日午前 10 時 00 分は、UNIX 時間形式の 1426500000 に変換
されます。
この値は、Set-Cookie ヘッダーの CloudFront-Expires 属性の値と一致する必要がありま
す。値を引用符で囲まないでください。
詳細については、「CloudFront が署名付き Cookie 内の有効期限切れ日時を確認するタイミン
グ (p. 226)」を参照してください。
既定ポリシーのポリシーステートメントの例
署名付き Cookie 内で以下のポリシーステートメントの例を使用すると、ユーザーは、UTC の 2015
年 3 月 16 日午前 10 時 00 分までオブジェクト http://d111111abcdef8.cloudfront.net/
horizon.jpg にアクセスできます。
{
"Statement":[
{
"Resource":"http://d111111abcdef8.cloudfront.net/horizon.jpg?
size=large&license=yes",
"Condition":{
"DateLessThan":{
"AWS:EpochTime":1426500000
}
}
}
]
}
既定ポリシーを使用する署名付き Cookie の署名を作成するためのポリシース
テートメントの署名
Set-Cookie ヘッダーの CloudFront-Signature 属性の値を作成するには、「既定ポリシーを使
用する署名付き Cookie のポリシーステートメントを作成するには (p. 229)」で作成したポリシース
テートメントをハッシュ化して署名します。
ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例について
は、以下のトピックを参照してください。
• Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う (p. 240)
• 署名付き URL の署名を作成するためのコード例 (p. 241)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
既定ポリシーを使用して署名付き Cookie の署名を作成するには
1.
「既定ポリシーを使用する署名付き Cookie のポリシーステートメントを作成するに
は (p. 229)」の手順で作成したポリシーステートメントを、SHA-1 ハッシュ関数と RSA を使用
API Version 2016-09-29
230
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
してハッシュ化し、署名します。空白を含まないバージョンのポリシーステートメントを使用し
ます。
ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関
連付けられたプライベートキーを使用します。
Note
ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言
語およびプラットフォームによって異なります。サンプルコードについては、「署名付
き URL の署名を作成するためのコード例 (p. 241)」を参照してください。
2.
ハッシュ化および署名された文字列から、空白文字(タブや改行文字を含む)を削除します。
3.
MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細につい
ては、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet
Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。
4.
URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文
字を示します。
5.
無効な文字(置換元)
有効な文字(置換先)
+
-(ハイフン)
=
_(下線)
/
~(チルダ)
結果の値を、CloudFront-Signature の名前と値のペアの Set-Cookie ヘッダーに含め
ます。次に、「既定ポリシーを使用して署名付き Cookie を設定するには (p. 226)」に戻
り、CloudFront-Key-Pair-Id の Set-Cookie ヘッダーを追加します。
カスタムポリシーを使用した署名付き Cookie の設
定
トピック
• カスタムポリシーを使用する署名付き Cookie のポリシーステートメントの作成 (p. 234)
• カスタムポリシーを使用する署名付き Cookie のポリシーステートメントの例 (p. 236)
• カスタムポリシーを使用する署名付き Cookie の署名の作成 (p. 238)
カスタムポリシーを使用する署名付き Cookie を設定するには、以下の手順を実行します。
カスタムポリシーを使用して署名付き Cookie を設定するには
1.
.NET または Java を使用して署名付き URL を作成しており、キーペアのプライベートキーをデ
フォルトの .pem 形式から .NET または Java 対応の形式に変更していない場合は、それを変換し
ます。詳細については、「CloudFront プライベートキーの形式を変更する(.NET および Java の
み) (p. 199)」を参照してください。
2.
承認されたビューアに 3 つの Set-Cookie ヘッダーを送信するアプリケーションをプログラム
します。各 Set-Cookie ヘッダーには名前と値のペアを 1 つだけ含めることができ、CloudFront
署名付き Cookie では 3 つの名前と値のペアが必要であるため、3 つの Set-Cookie ヘッダー
が必要です。名前と値のペアは、CloudFront-Policy、CloudFront-Key-Pair-Id、および
CloudFront-Signature です。アクセスを制御するオブジェクトに対してユーザーが最初のリ
クエストを行う前に、値がビューアに存在している必要があります。
API Version 2016-09-29
231
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
Note
一般的に、Expires 属性と Max-Age 属性を除外することをお勧めします。これによ
り、ユーザーがブラウザを閉じたときに、ブラウザで Cookie が削除されるため、ユー
ザーがコンテンツに不正アクセスする可能性が低くなります。詳細については、「署名
付き Cookie の悪用の防止 (p. 225)」を参照してください。
Cookie の属性の名前では、大文字と小文字が区別されます。
改行は、属性を判読しやすくするためにのみ含まれています。
Set-Cookie:
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly;
CloudFront-Policy=base64 encoded version of the policy statement
Set-Cookie:
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly;
CloudFront-Signature=hashed and signed version of the policy statement
Set-Cookie:
Domain=optional domain name;
Path=/optional directory path;
Secure;
HttpOnly;
CloudFront-Key-Pair-Id=active CloudFront key pair Id for the key pair that
you are using to generate the signature
(オプション)Domain
リクエストされたオブジェクトのドメイン名。Domain 属性を指定しない場合、デフォルト
値は URL のドメイン名で、指定されたドメイン名にのみ適用され、サブドメインには適用
されません。Domain 属性を指定する場合、サブドメインにも適用されます。ドメイン名の
先頭のドット(たとえば、Domain=.example.com)はオプションです。さらに、Domain
属性を指定する場合は、URL のドメイン名と Domain 属性の値が一致している必要がありま
す。
CloudFront がディストリビューションに割り当てたドメイン名
(d111111abcdef8.cloudfront.net など)を指定することはできますが、*.cloudfront.net をド
メイン名として指定することはできません。
URL で代替ドメイン名(example.com など)を使用する場合は、Domain 属性を指定する
かどうかにかかわらず、代替ドメイン名をディストリビューションに追加する必要がありま
す。詳細については、トピック「ウェブディストリビューションを作成または更新する場合
に指定する値 (p. 67)」の「代替ドメイン名(CNAME) (p. 81)」を参照してください。
(オプション)Path
リクエストされたオブジェクトのパス。Path 属性を指定しない場合、デフォルト値は URL
のパスです。
安全性
リクエストを送信する前に、ビューアが Cookie を暗号化することを要求します。Cookie の
属性を中間者攻撃から保護するために、HTTPS 接続で Set-Cookie ヘッダーを送信するこ
とをお勧めします。
API Version 2016-09-29
232
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
HttpOnly
ビューアが HTTP または HTTPS リクエストでのみ Cookie を送信することを要求します。
CloudFront-Policy
空白文字が削除され、base64 エンコードされた、JSON 形式のポリシーステートメント。
詳細については、「カスタムポリシーのポリシーステートメントの作成」を参照してくださ
い。
ポリシーステートメントは、署名付き Cookie でユーザーに与えられるアクセス権限を制御し
ます。これには、ユーザーがアクセスできるオブジェクト、有効期限の日時、URL が有効に
なるオプション日時、およびオブジェクトへのアクセスが許可されるオプションの IP アドレ
スや IP アドレス範囲が含まれます。
CloudFront-Signature
ハッシュ化され、署名された base64 エンコードバージョンの JSON ポリシーステート
メント。詳細については、「カスタムポリシーを使用する署名付き Cookie の署名の作
成 (p. 238)」を参照してください。
CloudFront-Key-Pair-Id
アクティブな CloudFront キーペアの ID(APKA9ONS7QCOWEXAMPLE な
ど)。CloudFront キーペア ID は、署名付き Cookie の検証に使用するパブリックキーを
CloudFront に指示します。CloudFront は、署名内の情報をポリシーステートメント内の情報
と比較して、URL が改ざんされていないことを確認します。
CloudFront 署名付き Cookie に含めるキーペア ID は、該当のキャッシュ動作に対するいずれ
かの信頼された署名者の AWS アカウントに関連付けられる必要があります。
詳細については、「署名付き URL と署名付き Cookie(信頼された署名者)の作成が可能な
AWS アカウントの指定 (p. 196)」を参照してください。
CloudFront キーペアを更新している間にキーペアを無効にした場合、いずれかの信頼された
署名者の新しい有効なキーペアを使用するようにアプリケーションを更新する必要がありま
す。キーペアの更新の詳細については、「CloudFront キーペアを更新する (p. 202)」を参照
してください。
オブジェクトの URL のディストリビューションに関連付けられたドメイン名を使用する場合の、1 つ
の署名付き Cookie の Set-Cookie ヘッダーの例
Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly;
CloudFrontPolicy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L
Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly;
CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_
Set-Cookie: Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly;
CloudFront-Key-Pair-Id=APKA9ONS7QCOWEXAMPLE
オブジェクトの URL に代替ドメイン名 example.org を使用している場合の、1 つの署名付き Cookie
の Set-Cookie ヘッダーの例:
Set-Cookie: Domain=example.org; Path=/; Secure; HttpOnly; CloudFrontPolicy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L
Set-Cookie: Domain=example.org; Path=/; Secure; HttpOnly; CloudFrontSignature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_
Set-Cookie: Domain=example.org; Path=/; Secure; HttpOnly; CloudFront-KeyPair-Id=APKA9ONS7QCOWEXAMPLE
URL で代替ドメイン名(example.com など)を使用する場合は、Domain 属性を指定するかどうか
にかかわらず、代替ドメイン名をディストリビューションに追加する必要があります。詳細について
API Version 2016-09-29
233
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
は、トピック「ウェブディストリビューションを作成または更新する場合に指定する値 (p. 67)」の
「代替ドメイン名(CNAME) (p. 81)」を参照してください。
カスタムポリシーを使用する署名付き Cookie のポリシース
テートメントの作成
カスタムポリシーのポリシーステートメントを作成するには、以下の手順を実行します。さまざま
な方法でオブジェクトへのアクセスを制御するポリシーステートメントのいくつかの例については、
「カスタムポリシーを使用する署名付き Cookie のポリシーステートメントの例 (p. 236)」を参照し
てください。
カスタムポリシーを使用する署名付き Cookie のポリシーステートメントを作成するには
1.
以下の JSON 形式を使用してポリシーステートメントを構築します。
{
"Statement": [
{
"Resource":"URL 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 の値については、「署
名付き Cookie のカスタムポリシーのポリシーステートメントで指定する値 (p. 235)」を参照
してください。
2.
ポリシーステートメントからすべての空白文字(タブと改行文字を含む)を削除します。アプリ
ケーションコード内の文字列にエスケープ文字を含めることが必要になる場合があります。
3.
MIME base64 エンコーディングを使用してポリシーステートメントを Base64 エンコードし
ます。詳細については、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One:
Format of Internet Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参
照してください。
4.
URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文
字を示します。
無効な文字(置換元)
有効な文字(置換先)
+
-(ハイフン)
=
_(下線)
/
~(チルダ)
API Version 2016-09-29
234
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
5.
結果の値を、Set-Cookie ヘッダーの CloudFront-Policy= の後に含めます。
6.
ポリシーステートメントのハッシュ化、署名、および base64 エンコードを行っ
て、CloudFront-Signature 用に Set-Cookie ヘッダーの署名を作成します。詳細について
は、「カスタムポリシーを使用する署名付き Cookie の署名の作成 (p. 238)」を参照してくださ
い。
署名付き Cookie のカスタムポリシーのポリシーステートメントで指定する値
カスタムポリシーのポリシーステートメントを作成する場合、以下の値を指定します。
リソース
クエリ文字列(存在する場合)を含むベース URL。
http://d111111abcdef8.cloudfront.net/images/horizon.jpg?
size=large&license=yes
Caution
Resource パラメーターを省略した場合、ユーザーは、署名付き URL の作成に使用する
キーペアに関連付けられたあらゆるディストリビューションに関連付けられるすべてのオ
ブジェクトにアクセスできます。
Resource の日付形式は 1 つだけ指定できます。
次の点に注意してください。
• プロトコル – 値は http://、https://、または http*:// で始まっている必要があります。
• クエリ文字列パラメーター – クエリ文字列パラメーターがない場合は、疑問符を省略します。
• ワイルドカード – 0 個以上の文字に一致するワイルドカード文字 (*)、または 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 を指定しないでください。
DateLessThan
URL の有効期限切れ日時。Unix 時間形式(秒単位)および協定世界時(UTC)で指定します。値
を引用符で囲まないでください。
たとえば、UTC の 2015 年 3 月 16 日午前 10 時 00 分は、UNIX 時間形式の 1426500000 に変換
されます。
詳細については、「CloudFront が署名付き Cookie 内の有効期限切れ日時を確認するタイミン
グ (p. 226)」を参照してください。
API Version 2016-09-29
235
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
DateGreaterThan(オプション)
オプションの URL 開始日時。Unix 時間形式(秒単位)および協定世界時(UTC)で指定しま
す。ユーザーは指定された日時よりも前にオブジェクトにアクセスすることを許可されません。
値を引用符で囲まないでください。
IpAddress(オプション)
GET リクエストを実行するクライアントの IP アドレス。次の点に注意してください。
• オブジェクトへのアクセスをすべての IP アドレスに許可するには、IpAddress パラメーター
を省略します。
• IP アドレスまたは IP アドレス範囲を 1 つ指定できます。たとえば、2 つの別々の範囲のどちら
かにクライアントの IP アドレスが入っている場合にアクセスを許可するようなポリシーを設定
することはできません。
• 1 つの IP アドレスからのアクセスを許可するには、以下のように指定します。
"IPv4 IP ####/32"
• IP アドレス範囲は標準の IPv4 CIDR 形式(192.0.2.0/24 など)で指定する必要がありま
す。詳細については、「RFC 4632、クラスレスインタードメインルーティング(CIDR): イン
ターネットアドレスの割り当てと集約計画」(http://tools.ietf.org/html/rfc4632)を参照してく
ださい。
Important
IPv6 フォーマットの IP アドレス (例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334) は
サポートされていません。
IpAddress を含むカスタムポリシーを使用する場合、ディストリビューションで IPv6 は有効
にしません。一部のコンテンツへのアクセスを IP アドレスによって制限し、他のコンテンツ
で IPv6 リクエストをサポートする場合、2 つのディストリビューションを作成します。詳細
については、トピック「ウェブディストリビューションを作成または更新する場合に指定する
値 (p. 67)」の「IPv6 を有効にする (p. 84)」を参照してください。
カスタムポリシーを使用する署名付き Cookie のポリシース
テートメントの例
以下のポリシーステートメントの例は、特定のオブジェクト、ディレクトリ内のすべてのオブジェク
ト、またはキーペア ID に関連付けられたすべてのオブジェクトへのアクセスを制御する方法を示し
ています。また、この例は、個々の IP アドレスまたは IP アドレス範囲からのアクセスを制御する方
法、および指定された日時以降にユーザーが署名付き Cookie を使用することを禁止する方法も示し
ています。
この例のいずれかをコピーして貼り付ける場合は、すべての空白文字を削除し(タブと改行文字を含
む)、適用可能な値を独自の値で置き換えて、右中かっこ(})の後に改行文字を含めます。
詳細については、「署名付き Cookie のカスタムポリシーのポリシーステートメントで指定する
値 (p. 235)」を参照してください。
トピック
• ポリシーステートメントの例: IP アドレス範囲から 1 つのオブジェクトにアクセスする (p. 237)
• ポリシーステートメントの例: IP アドレス範囲からディレクトリ内のすべてのオブジェクトにアク
セスする (p. 237)
• ポリシーステートメントの例: キーペア ID に関連付けられたすべてのオブジェクトに 1 つの IP ア
ドレスからアクセスする (p. 237)
API Version 2016-09-29
236
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
ポリシーステートメントの例: IP アドレス範囲から 1 つのオブジェクトにアク
セスする
次の署名付き Cookie 内のカスタムポリシーの例は、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"},
"DateLessThan":{"AWS:EpochTime":1357034400}
}
}
]
}
ポリシーステートメントの例: IP アドレス範囲からディレクトリ内のすべての
オブジェクトにアクセスする
以下のカスタムポリシーの例では、Resource パラメーターの * ワイルドカード文字が示すとお
り、training ディレクトリ内のあらゆるオブジェクトを対象とする署名付き Cookie を作成できま
す。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}
}
}
]
}
このポリシーを使用する各署名付き Cookie には、たとえば次のように、特定のオブジェクトを識別
するベース URL が含まれます。
http://d111111abcdef8.cloudfront.net/training/orientation.pdf
ポリシーステートメントの例: キーペア ID に関連付けられたすべてのオブ
ジェクトに 1 つの IP アドレスからアクセスする
以下のカスタムポリシーの例では、Resource パラメーターの * ワイルドカード文字が示すとお
り、あらゆるディストリビューションに関連付けられたあらゆるオブジェクトを対象とする署名付
き Cookie を設定できます。ユーザーは 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": [
API Version 2016-09-29
237
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
{
"Resource":"http://*",
"Condition":{
"IpAddress":{"AWS:SourceIp":"192.0.2.10/32"},
"DateGreaterThan":{"AWS:EpochTime":1357034400},
"DateLessThan":{"AWS:EpochTime":1357120800}
}
}
]
}
このポリシーを含める各署名付き Cookie には、たとえば次のように、特定の CloudFront ディストリ
ビューション内の特定のオブジェクトを識別するベース URL が含まれます。
http://d111111abcdef8.cloudfront.net/training/orientation.pdf
署名付き Cookie にはキーペア ID も含まれます。キーペア ID は、ベース URL に指定されたディスト
リビューション(d111111abcdef8.cloudfront.net)内の信頼された署名者に関連付けられる必要があ
ります。
カスタムポリシーを使用する署名付き Cookie の署名の作成
カスタムポリシーを使用する署名付き Cookie の署名は、ハッシュ化、署名、および base64 エンコー
ドが行われたバージョンのポリシーステートメントです。
ポリシーステートメントのハッシュ化、署名、およびエンコードを行う方法の詳細および例について
は、以下の各資料を参照してください。
• Linux コマンドおよび OpenSSL を使用して Base64 エンコードおよび暗号化を行う (p. 240)
• 署名付き URL の署名を作成するためのコード例 (p. 241)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
カスタムポリシーを使用して署名付き Cookie の署名を作成するには
1.
「カスタムポリシーを使用する署名付き URL のポリシーステートメントを作成するに
は (p. 217)」の手順で作成した JSON ポリシーステートメントを、SHA-1 ハッシュ関数と RSA
を使用してハッシュ化し、署名します。空白文字が含まれていないが、まだ base64 エンコード
されていないバージョンのポリシーステートメントを使用します。
ハッシュ関数で必要とされるプライベートキーについては、該当する有効な信頼済み署名者に関
連付けられたプライベートキーを使用します。
Note
2.
3.
4.
ポリシーステートメントをハッシュ化および署名するための方法は、プログラミング言
語およびプラットフォームによって異なります。サンプルコードについては、「署名付
き URL の署名を作成するためのコード例 (p. 241)」を参照してください。
ハッシュ化および署名された文字列から、空白文字(タブや改行文字を含む)を削除します。
MIME base64 エンコーディングを使用して文字列を Base64 エンコードします。詳細につい
ては、『RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet
Message Bodies』の「Section 6.8, Base64 Content-Transfer-Encoding」を参照してください。
URL クエリ文字列内の無効な文字を有効な文字で置き換えます。次の表に無効な文字と有効な文
字を示します。
無効な文字(置換元)
有効な文字(置換先)
+
-(ハイフン)
API Version 2016-09-29
238
Amazon CloudFront 開発者ガイド
カスタムポリシーを使用した署名付き Cookie の設定
5.
無効な文字(置換元)
有効な文字(置換先)
=
_(下線)
/
~(チルダ)
結果の値を、CloudFront-Signature= の名前と値のペアの Set-Cookie ヘッダーに含
めて、「カスタムポリシーを使用して署名付き Cookie を設定するには (p. 231)」に戻
り、CloudFront-Key-Pair-Id の Set-Cookie ヘッダーを追加します。
API Version 2016-09-29
239
Amazon CloudFront 開発者ガイド
Linux コマンドおよび OpenSSL を使用し
て Base64 エンコードおよび暗号化を行う
Linux コマンドおよび OpenSSL を使用して
Base64 エンコードおよび暗号化を行う
次の Linux コマンドラインのコマンドおよび OpenSSL を使用して、ポリシーステートメントをハッ
シュ化して署名します。次に、署名を base64 エンコードし、URL クエリ文字列パラメーターでの無
効な文字を有効な文字置き換えます。
OpenSSL の詳細については、http://www.openssl.org を参照してください。
cat policy |
openssl base64 |
tr -d "\n" |
openssl sha1 -sign private-key.pem |
tr -- '+=/' '-_~'
各パラメーターの意味は次のとおりです。
cat が policy ファイルを読み取ります。
tr -d "\n"cat が追加した改行文字を削除します。
OpenSSL は、SHA-1 を使用してファイルをハッシュ化し、RSA とプライベートキーファイル
private-key.pem を使用してファイルに署名します。
す。
OpenSSL は、ハッシュ化および署名されたポリシーステートメントを base64 エンコードしま
tr は、URL クエリ文字列パラメーターの無効な文字を有効な文字で置き換えます。
いくつかのプログラミング言語での署名の作成方法を示すコード例については、「署名付き URL の署
名を作成するためのコード例 (p. 241)」を参照してください。
API Version 2016-09-29
240
Amazon CloudFront 開発者ガイド
署名付き URL の署名を作成するためのコード例
署名付き URL の署名を作成するためのコード例
このセクションには、署名付き URL の署名の作成方法を示す、ダウンロード可能なアプリケーション
の例が含まれます。例は、Perl、PHP、C#、および Java で使用できます。任意の例を使用して、署
名付き URL を作成できます。Perl スクリプトは Linux/Mac プラットフォームで実行されます。PHP
の例は、PHP が実行されているあらゆるサーバーで動作します。C# の例では、.NET Framework が
使用されます。
Ruby on Rails で Cookie を使用する方法の例については、「Amazon CloudFront リソー
ス (p. 393)」トピックの「プライベートコンテンツの設定ツールとコード例 (p. 395)」を参照して
ください。
署名付き URL と署名付き Cookie のコード例は、さまざまなプログラミング言語で用意されてい
ます。「sample app ### cloudfront signed URLs」または「sample app ### cloudfront
signed cookies」でインターネット検索を実行してください。
トピック
• Perl を使用して URL 署名を作成する (p. 241)
• PHP を使用して URL 署名を作成する (p. 243)
• C# と .NET Framework を使用して URL 署名を作成する (p. 245)
• Java を使用して URL 署名を作成する (p. 251)
Perl を使用して URL 署名を作成する
Perl スクリプトでは、コマンドライン引数に CloudFront URL、署名者のプライベートキーへのパス、
キー ID、および URL の有効期限切れ日付を指定することで、プライベートコンテンツの署名を作成
します。このツールでは、署名付き URL のデコードを行うこともできます。ツール cfsign.pl を取
得するには、「Amazon CloudFront 署名付き URL のヘルパーツール」にアクセスしてください。
Note
URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するための
プロセスの 1 パートにすぎません。プロセス全体の詳細については、「署名付き URL の使
用 (p. 204)」を参照してください。
次の例は、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~68tsZteOFnZKGwTf2a
JlbKhXkK5SSiVqcG9pieCRV3xTEPtc29OzeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP
API Version 2016-09-29
241
Amazon CloudFront 開発者ガイド
Perl を使用して URL 署名を作成する
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~68tsZteOFnZKGwTf2aJlbKhXkK5SSiVqcG9pieCRV3xTEPtc29O
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~68tsZteOFnZKGwTf2aJlbKhXkK
5SSiVqcG9pieCRV3xTEPtc29OzeXlsDvRycOM2WK0cXzcyYZhpl9tv2796ihHiCTAwIHQ8yP17Af4nWt
OLIZHoH6wkR3tU1cQHs8R1d-g-SlZGjNBXr~J2MbaJzm8i6EXAMPLE_&Key-Pair-Id=PK12345
EXAMPLE
コマンドラインスイッチおよびこのツールの各種機能の詳細については、Perl ソースコード内のコメ
ントを参照してください。
以下の資料も参照してください。
• PHP を使用して URL 署名を作成する (p. 243)
• C# と .NET Framework を使用して URL 署名を作成する (p. 245)
API Version 2016-09-29
242
Amazon CloudFront 開発者ガイド
PHP を使用して URL 署名を作成する
• Java を使用して URL 署名を作成する (p. 251)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
PHP を使用して URL 署名を作成する
PHP を実行するすべてのウェブサーバーは、PHP デモコードを使用して、CloudFront のプライ
ベート RTMP ディストリビューション用のポリシーステートメントと署名を作成できます。例
は、CloudFront ストリーミングを使用してビデオストリームを再生する署名付き URL リンクが含ま
れた、機能するウェブページを作成します。例を取得するには、PHP におけるビデオストリーミング
用の署名コードをダウンロードしてください。
AWS SDK for PHP の UrlSigner クラスを使用しても、署名済み URL を作成できます。詳細につい
ては、『AWS SDK for PHP API Reference』の「UrlSigner クラス」を参照してください。
Note
URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するための
プロセスの 1 パートにすぎません。プロセス全体の詳細については、「署名付き URL の使
用 (p. 204)」を参照してください。
以下のコードセグメントでは、関数 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 2016-09-29
243
Amazon CloudFront 開発者ガイド
PHP を使用して URL 署名を作成する
以下のコードでは、署名の作成に必要な既定ポリシーステートメントを構築します。既定ポリシーの
詳細については、「既定ポリシーを使用して署名付き URL を作成する (p. 207)」を参照してくださ
い。
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 .
'","Condition":{"DateLessThan":{"AWS:EpochTime":'. $expires . '}}}]}';
// sign the canned policy
$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. 214)」を参照
してください。
Example PHP におけるカスタム署名関数
function get_custom_policy_stream_name($video_path, $private_key_filename,
$key_pair_id, $policy) {
// sign the policy
$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_signature, $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 用のオープンソースツールキット」を参照し
てください。
以下の資料も参照してください。
• Perl を使用して URL 署名を作成する (p. 241)
• C# と .NET Framework を使用して URL 署名を作成する (p. 245)
• Java を使用して URL 署名を作成する (p. 251)
API Version 2016-09-29
244
Amazon CloudFront 開発者ガイド
C# と .NET Framework を使用して URL 署名を作成する
• プライベートコンテンツの設定ツールとコード例 (p. 395)
C# と .NET Framework を使用して URL 署名を作成
する
このセクションの C# の例では、既定およびカスタムのポリシーステートメントを使用して
CloudFront プライベートディストリビューションの署名を作成する方法を示すサンプルアプリケー
ションを実装します。サンプルには、.NET アプリケーションで役に立つ可能性がある AWS .NET
SDK に基づくユーティリティ関数が含まれています。
AWS SDK for .NET を使用しても、署名済み URL と署名済み Cookie を作成できます。『AWS SDK
for .NET API Reference』の以下のトピックを参照してください。
• 署名付き URL – Amazon.CloudFront > AmazonCloudFrontUrlSigner
• 署名付き Cookie – Amazon.CloudFront > AmazonCloudFrontCookieSigner
Note
URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するための
プロセスの 1 パートにすぎません。プロセス全体の詳細については、「署名付き URL の使
用 (p. 204)」を参照してください。
コードをダウンロードするには、C# による署名コードにアクセスしてください。
AWS アカウント/セキュリティで提供される RSA キーを .NET Framework で使用するには、AWS で
提供される .pem ファイルを、NET Framework が使用する XML 形式に変換する必要があります。
変換後、RSA プライベートキーファイルの形式は以下のようになります。
API Version 2016-09-29
245
Amazon CloudFront 開発者ガイド
C# と .NET Framework を使用して URL 署名を作成する
Example XML .NET Framework 形式の RSA プライベートキー
<RSAKeyValue>
<Modulus>
wO5IvYCP5UcoCKDo1dcspoMehWBZcyfs9QEzGi6Oe5y+ewGr1oW+vB2GPB
ANBiVPcUHTFWhwaIBd3oglmF0lGQljP/jOfmXHUK2kUUnLnJp+oOBL2NiuFtqcW6h/
L5lIpD8Yq+NRHg
Ty4zDsyr2880MvXv88yEFURCkqEXAMPLE=
</Modulus>
<Exponent>AQAB</Exponent>
<P>
5bmKDaTz
npENGVqz4Cea8XPH+sxt
+2VaAwYnsarVUoSBeVt8WLloVuZGG9IZYmH5KteXEu7fZveYd9UEXAMPLE==
</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==</
InverseQ>
<D>
Bc7mp7XYHynuPZxChjWNJZIq+A73gm0ASDv6At7F8Vi9r0xUlQe/
v0AQS3ycN8QlyR4XMbzMLYk
3yjxFDXo4ZKQtOGzLGteCU2srANiLv26/
imXA8FVidZftTAtLviWQZBVPTeYIA69ATUYPEq0a5u5wjGy
UOij9OWyuEXAMPLE=
</D>
</RSAKeyValue>
以下の C# コードは、以下の手順を実行して、既定ポリシーを使用する署名付き URL を作成します。
• ポリシーステートメントを作成する。
• SHA1 を使用してポリシーステートメントをハッシュ化し、使用している AWS アカウントまたは
指定した信頼済み AWS アカウントの RSA およびプライベートキーを使用して、ハッシュ化された
ポリシーステートメントに署名する。
• ハッシュ化および署名されたポリシーステートメントを base64 エンコードし、特殊文字を置き換
えて文字列を URL リクエストパラメーターとして使用できるようにする。
• 適用可能な値を連結する。
完全な実装については、「C# における署名コード」の例を参照してください。
API Version 2016-09-29
246
public static string CreateCannedPrivateURL(string urlString,
string durationUnits, string durationNumber, string pathToPolicyStmnt,
string pathToPrivateKey,
string privateKeyId)
Amazon CloudFront
開発者ガイド
{
C# と .NET Framework を使用して URL 署名を作成する
// args[] 0-thisMethod, 1-resourceUrl, 2-seconds-minutes-hours-days
// to expiration, 3-numberOfPreviousUnits, 4-pathToPolicyStmnt,
// 5-pathToPrivateKey,
6-PrivateKeyId
Example
C# における既定ポリシーの署名方法
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.
xmlPrivateKey.Load(pathToPrivateKey);
// Format the RSACryptoServiceProvider providerRSA and
// create the signature.
providerRSA.FromXmlString(xmlPrivateKey.InnerXml);
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;
}
}
API Version 2016-09-29
247
Amazon CloudFront 開発者ガイド
C# と .NET Framework を使用して URL 署名を作成する
以下の C# コードは、以下の手順を実行して、カスタムポリシーを使用する署名付き URL を作成しま
す。
• ポリシーステートメントを作成する。
• ポリシーステートメントを Base64 エンコードし、特殊文字を置き換えて文字列を URL リクエスト
パラメーターとして使用できるようにする。
• SHA1 を使用してポリシーステートメントをハッシュ化し、使用している AWS アカウントまたは
指定した信頼済み AWS アカウントの RSA およびプライベートキーを使用して、ハッシュ化された
ポリシーステートメントを暗号化する。
• ハッシュ化されたポリシーステートメントを base64 エンコードし、特殊文字を置き換えて文字列
を URL リクエストパラメーターとして使用できるようにする。
• 適用可能な値を連結する。
完全な実装については、「C# における署名コード」の例を参照してください。
API Version 2016-09-29
248
startIntervalFromNow,
string ipaddress, string pathToPolicyStmnt, string pathToPrivateKey,
string PrivateKeyId)
Amazon CloudFront 開発者ガイド
// args[] C#
0-thisMethod,
1-resourceUrl,
と .NET Framework
を使用して URL2-seconds-minutes-hours-days
署名を作成する
// to expiration, 3-numberOfPreviousUnits, 4-starttimeFromNow,
// 5-ip_address, 6-pathToPolicyStmt, 7-pathToPrivateKey, 8-privateKeyId
{
Example C# におけるカスタムポリシーの署名方法
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.
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 2016-09-29
249
strPolicy = strPolicy.Replace("IP_ADDRESS", ipAddress);
strPolicy = strPolicy.Replace("EXPIRES", endTimestamp.ToString());
return strPolicy;
}
}
Amazon CloudFront 開発者ガイド
C# と .NET Framework を使用して URL 署名を作成する
public static TimeSpan GetDuration(string units, string numUnits)
{
Example 署名生成のためのユーティリティメソッド
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":
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();
}
API Version 2016-09-29
250
Amazon CloudFront 開発者ガイド
Java を使用して URL 署名を作成する
以下の資料も参照してください。
• Perl を使用して URL 署名を作成する (p. 241)
• PHP を使用して URL 署名を作成する (p. 243)
• Java を使用して URL 署名を作成する (p. 251)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
Java を使用して URL 署名を作成する
Amazon S3 および CloudFront 向けのオープンソース Java ツールキットでは、Java における
CloudFront 開発に関するコードの例および情報が提供されます。プライベートディストリビューショ
ンの詳細については、「プログラマーガイド: コードサンプル」の「プライベートディストリビュー
ション」を参照してください。
AWS SDK for Java の CloudFrontUrlSigner クラスを使用しても、署名済み URL を作成できま
す。詳細については、『AWS SDK for Java API Reference』の「UrlSigner クラス」を参照してくだ
さい。
Note
URL 署名の作成は、署名付き URL を使用してプライベートコンテンツを供給するための
プロセスの 1 パートにすぎません。プロセス全体の詳細については、「署名付き URL の使
用 (p. 204)」を参照してください。
以下のメソッドは、Amazon S3 および CloudFront 向けの Java オープンソースツールキットから取得
したものです。プライベートキーを使用するには、プライベートキーを PEM 形式から、Java 実装用
の DER 形式に変換する必要があります。
API Version 2016-09-29
251
Amazon CloudFront 開発者ガイド
// Signed URLs for a Java
private
distribution
を使用して
URL 署名を作成する
// Note that Java only supports SSL certificates in DER format,
// so you will need to convert your PEM-formatted file to DER format.
//
To doJava
this,
you can use openssl:
Example
のポリシーおよび署名暗号化メソッド
// 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 distributionDomain = "a1b2c3d4e5f6g7.cloudfront.net";
String privateKeyFilePath = "/path/to/rsa-private-key.der";
String s3ObjectKey = "s3/object/key.txt";
String 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, can 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,
// Access control policy
policy
);
System.out.println(signedUrl);
API Version 2016-09-29
252
Amazon CloudFront 開発者ガイド
Java を使用して URL 署名を作成する
以下の資料も参照してください。
• Perl を使用して URL 署名を作成する (p. 241)
• PHP を使用して URL 署名を作成する (p. 243)
• C# と .NET Framework を使用して URL 署名を作成する (p. 245)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
API Version 2016-09-29
253
Amazon CloudFront 開発者ガイド
CloudFront で HTTPS を使用する
ウェブディストリビューションでは、オブジェクトのリクエストでビューアが HTTPS を使用す
るように CloudFront を設定して、CloudFront とビューアとの通信で接続を暗号化できます。ま
た、オリジンからオブジェクトを取得する際に CloudFront が HTTPS を使用するように設定する
と、CloudFront とオリジンとの通信で接続が暗号化されます。
ビューアとの通信とオリジンとの通信の両方で HTTPS が必要であるよう CloudFront を設定した
場合、CloudFront がオブジェクトのリクエストを受け取ると、次のようになります。オリジンが
Amazon S3 バケットまたは HTTP/S サーバーなどのカスタムオリジンのどちらであるかに関係なく、
プロセスは基本的に同じように機能します。
1.
ビューアが HTTPS リクエストを CloudFront に送信します。ここで、ビューアと CloudFront 間
で何らかの SSL/TLS ネゴシエーションが実行されます。最終的に、ビューアはリクエストを暗号
化形式で送信します。
2.
オブジェクトが CloudFront エッジキャッシュに存在する場合、CloudFront は応答を暗号化して
ビューアに返し、ビューアはオブジェクトの暗号化を解除します。
3.
オブジェクトが CloudFront キャッシュに存在しない場合、CloudFront はオリジンとの SSL/TLS
ネゴシエーションを実行し、ネゴシエーションが完了すると、オリジンにリクエストを暗号化形
式で転送します。
4.
オリジンはリクエストの暗号化を解除した後、要求されたオブジェクトを暗号化して CloudFront
に返します。
5.
CloudFront は応答の暗号化を解除した後に、オブジェクトを再度暗号化してビューアに転送しま
す。また、CloudFront はオブジェクトをエッジキャッシュに保存します。これで、同じオブジェ
クトが次に要求されたときに、キャッシュ内のオブジェクトを使用できます。
6.
ビューアは応答の暗号化を解除します。
ビューアと CloudFront との間、また CloudFront とオリジンとの間で HTTPS を要求する方法につい
ては、次のトピックを参照してください。
トピック
• ビューアと CloudFront との通信で HTTPS を必須にする (p. 255)
• CloudFront とカスタムオリジンとの間の通信に HTTPS を必須にする (p. 256)
API Version 2016-09-29
254
Amazon CloudFront 開発者ガイド
ビューアと CloudFront との通信で HTTPS を必須にする
• CloudFront と Amazon S3 オリジンとの間の通信に HTTPS を必須にする (p. 258)
• 代替ドメイン名と HTTPS の使用 (p. 259)
• サポートされているプロトコルと暗号 (p. 271)
• HTTPS 接続料金 (p. 273)
ビューアと CloudFront との通信で HTTPS を必
須にする
CloudFront ディストリビューション内で 1 つ以上のキャッシュ動作を設定して、ビューアと
CloudFront との通信で HTTPS を必須にできます。また、1 つ以上のキャッシュ動作で HTTP と
HTTPS の両方を許可するように構成して、CloudFront における一部のオブジェクトで HTTPS を必須
にすることもできます。設定手順はオブジェクト URL 内で使用しているドメイン名によって異なりま
す。
• CloudFront がディストリビューションに割り当てたドメイン名を使用している場合
(d111111abcdef8.cloudfront.net など)、1 つ以上のキャッシュ動作の [Viewer Protocol Policy] 設定
を変更して、HTTPS 通信を必須にします。この設定で、CloudFront は SSL/TLS 証明書を提供しま
す。
CloudFront コンソールを使用して [Viewer Protocol Policy] の値を変更するには、このセクションで
後述する手順を参照してください。
CloudFront API を使用して ViewerProtocolPolicy 要素の値を変更する方法について
は、Amazon CloudFront API リファレンス の PUT Distribution Config を参照してください。
• 独自のドメイン名 (example.com など) を使用している場合、CloudFront のいくつかの設定を変更
する必要があります。また、AWS Certificate Manager (ACM) が提供する SSL/TLS 証明書を使用す
るか、サードパーティー認証機関からの証明書を ACM または IAM 証明書ストアにインポートする
か、自己署名した証明書を作成しインポートする必要があります。詳細については、「代替ドメイ
ン名と HTTPS の使用 (p. 259)」を参照してください。
Note
ビューアが CloudFront から取得するオブジェクトに関して、CloudFront がそのオブジェク
トをオリジンから取得した段階で暗号化されていることを保証するには、CloudFront とオ
リジンとの間で必ず HTTPS を使用します。最近になって CloudFront とオリジンとの間で
HTTP から HTTPS に変更した場合、CloudFront エッジロケーションのオブジェクトを無効に
することをお勧めします。CloudFront は、ビューアが使用しているプロトコル (HTTP または
HTTPS) について、CloudFront がオブジェクトを取得するのに使用したプロトコルと一致す
るかどうかに関係なく、オブジェクトをビューアに返します。ディストリビューション内の
オブジェクトの削除または置き換えの詳細については、「ディストリビューション内のオブ
ジェクトの追加、削除、または置換 (p. 135)」を参照してください。
1 つ以上のキャッシュ動作でビューワーと CloudFront との間で HTTPS を必須にするには、次の手順
を実行します。
ビューアと CloudFront との間で HTTPS が必須になるよう CloudFront を設定する
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
CloudFront コンソールの上部のペインで、更新するディストリビューションの ID を選択しま
す。
3.
[Behaviors] タブで、更新するキャッシュ動作を選択した後、[Edit] を選択します。
API Version 2016-09-29
255
Amazon CloudFront 開発者ガイド
CloudFront とカスタムオリジンと
の間の通信に HTTPS を必須にする
4.
[Viewer Protocol Policy] として次のいずれかの値を指定します。
Redirect HTTP to HTTPS
ビューアは両方のプロトコルを使用できます。HTTP GET および HEAD リクエストは自動的
に HTTPS リクエストにリダイレクトされます。CloudFront は新しい HTTPS URL ととも
に HTTP ステータスコード 301 (Moved Permanently) を返します。ビューアはこの HTTPS
URL を使用して CloudFront にリクエストを再送信します。
Important
CloudFront が、HTTP から HTPS に DELETE、OPTIONS、PATCH、POST、または
PUT リクエストをリダイレクトしません。HTTPS にリダイレクトするようにキャッ
シュ動作を設定した場合、CloudFront は HTTP ステータスコード 403 (Forbidden)
を使用してそのキャッシュ動作の HTTP DELETE、OPTIONS、PATCH、POST、また
は PUT リクエストに応答します。
HTTPS リクエストにリダイレクトされる HTTP リクエストをビューアが作成する
と、CloudFront は両方のリクエストに課金します。HTTP リクエストの場合、リクエストの
料金と、CloudFront がビューアに返すヘッダーの料金のみが課金されます。HTTPS リクエ
ストの場合、リクエストの料金と、オリジンが返すヘッダーとオブジェクトの料金が課金さ
れます。
HTTPS Only
ビューアは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。ビュー
アが HTTPS リクエストではなく HTTP リクエストを送信した場合、CloudFront は HTTP ス
テータスコード 403 (Forbidden) を返し、オブジェクトは返しません。
5.
[Yes, Edit] を選択します。
6.
ビューアと CloudFront との間で HTTPS を必須にする追加のキャッシュ動作ごとに、ステップ 3
から 5 を繰り返します。
7.
本番環境で更新された情報を使用する前に、次を確認してください。
• ビューアに HTTPS の使用が必要とされるリクエストにのみ、各キャッシュ動作のパスパター
ンが適用されている。
• CloudFront が評価する順番にキャッシュ動作がリストされている。詳細については、「パスパ
ターン (p. 74)」を参照してください。
• キャッシュ動作は、リクエストを正しいオリジンにルーティングします。
CloudFront とカスタムオリジンとの間の通信に
HTTPS を必須にする
Amazon S3 バケットをオリジンとして使用している場合、CloudFront と Amazon S3 オリジンとの間
の通信に HTTPS を必須にする (p. 258)を参照してください。
CloudFront とカスタムオリジンとの間の通信で HTTPS を必須にすることを希望し、オブジェクトの
URL (例: https://d111111abcdef8.cloudfront.net/logo.jpg) のディストリビューションで CloudFront が
割り当てたドメイン名を使用している場合、次の手順に従ってディストリビューション内の該当する
オリジンで [Origin Protocol Policy] 設定を変更し、カスタムオリジンサーバーに SSL/TLS 証明書をイ
ンストールします。
CloudFront 設定を変更する
次の手順では、Elastic Load Balancing ロードバランサー、Amazon EC2 インスタンス、または他の
カスタムオリジンとの通信で HTTPS を使用するために CloudFront を設定する方法について説明しま
API Version 2016-09-29
256
Amazon CloudFront 開発者ガイド
カスタムオリジンサーバーに SSL/
TLS 証明書をインストールする
す。CloudFront API を使用してウェブディストリビューションを更新する方法については、Amazon
CloudFront API リファレンス の「PUT Distribution Config」を参照してください。
CloudFront とカスタムオリジンとの間の通信で HTTPS を必須にするよう CloudFront を設定
する
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
CloudFront コンソールの上部のペインで、更新するディストリビューションの ID を選択しま
す。
3.
[Origins] タブで、更新するオリジンを選択し、[Edit] を選択します。
4.
次の設定を更新します。
オリジンプロトコルポリシー
ディストリビューションの該当するオリジンで、[Origin Protocol Policy] を変更します。
• [HTTPS Only] – CloudFront は HTTPS のみを使ってカスタムオリジンと通信します。
• [Match Viewer] – CloudFront は、ビューアのリクエストのプロトコルに応じて HTTP また
は HTTPS を使用し、カスタムオリジンと通信します。たとえば、[Origin Protocol Policy]
の [Match Viewer] を選択し、ビューアで HTTPS を使用して CloudFront からオブジェクト
をリクエストする場合は、CloudFront でも HTTPS を使用してリクエストをオリジンに転
送します。
[Viewer Protocol Policy] で [Redirect HTTP to HTTPS] または [HTTPS Only] を指定する場
合は、[Match Viewer] のみを選択します。
ビューアが HTTP と HTTPS の両方のプロトコルを使用してリクエストを行った場合
も、CloudFront がオブジェクトをキャッシュするのは 1 回だけです。
オリジン SSL プロトコル
ディストリビューションの該当するオリジンで [Origin SSL Protocols] を選択します。SSLv3
プロトコルの安全性が低いため、オリジンが TLSv1 以降をサポートしていない場合にのみ
SSLv3 を選択することをお勧めします。
5.
[Yes, Edit] を選択します。
6.
CloudFront とカスタムオリジンとの間で HTTPS を必須にする追加のオリジンごとに、ステップ
3 から 5 を繰り返します。
7.
本番環境で更新された情報を使用する前に、次を確認してください。
• ビューアに HTTPS の使用が必要とされるリクエストにのみ、各キャッシュ動作のパスパター
ンが適用されている。
• CloudFront が評価する順番にキャッシュ動作がリストされている。詳細については、「パスパ
ターン (p. 74)」を参照してください。
• キャッシュ動作は、[Origin Protocol Policy] を変更したオリジンへのルーティングリクエストで
す。
カスタムオリジンサーバーに SSL/TLS 証明書をイ
ンストールする
SSL/TLS 証明書は、カスタムオリジンの次のソースから使用できます。
• オリジンが Elastic Load Balancing ロードバランサーの場合、AWS Certificate Manager (ACM) が提
供する証明書を使用できます。信頼されたサードパーティー認証機関が署名して ACM にインポー
トされた証明書を使用することもできます。
• ELB ロードバランサー以外のオリジンの場合、信頼されたサードパーティー認証機関
(Comodo、DigiCert、Symantec など) によって署名された証明書を使用する必要があります。
API Version 2016-09-29
257
Amazon CloudFront 開発者ガイド
CloudFront と Amazon S3 オリジン
との間の通信に HTTPS を必須にする
CloudFront が HTTPS を使用してオリジンと通信するとき、CloudFront は証明書が信頼された認証
機関によって発行されたものであることを確認します。CloudFront は Mozilla と同じ認証機関をサ
ポートします。現在のリストについては、「Mozilla に付属する CA 証明書一覧」を参照してくださ
い。CloudFront とオリジンとの間の HTTPS 通信に自己署名証明書を使用することはできません。
Caution
失効した証明書、無効な証明書、または自己署名証明書をオリジンサーバーが返した
り、間違った順番の証明書チェーンを返したりした場合、CloudFront は TCP 接続を中断
し、HTTP ステータスコード 502 (Bad Gateway) を返して、X-Cache ヘッダーを Error
from cloudfront に設定します。
証明書のドメイン名の 1 つは、次の値の 1 つまたは両方と一致する必要があります。
• ディストリビューションの該当するオリジンの [Origin Domain Name] に指定した値。
• Host ヘッダーがオリジンに転送されるように CloudFront を設定した場合は、Host ヘッダーの
値。ヘッダーのオリジン転送の詳細については、「リクエストヘッダーに基づいてオブジェクトを
キャッシュするように CloudFront を設定する (p. 128)」を参照してください。
CloudFront と Amazon S3 オリジンとの間の通信
に HTTPS を必須にする
オリジンが Amazon S3 バケットの場合、CloudFront はビューアがリクエストを送信するのに使った
プロトコルを必ず使用して S3 にリクエストを送信します。オリジンプロトコルポリシー(Amazon
EC2 および他のカスタムオリジンのみ) (p. 72) 設定のデフォルト設定は [Match Viewer] で、変更で
きません。
CloudFront と Amazon S3 との間の通信で HTTPS を必須にする場合、[Viewer Protocol Policy] の値を
[Redirect HTTP to HTTPS] または [HTTPS Only] に変更する必要があります。このセクションで後述
する手順では、CloudFront コンソールを使用して [Viewer Protocol Policy] を変更する方法について説
明します。CloudFront API を使用してウェブディストリビューションの ViewerProtocolPolicy 要
素を更新することについては、Amazon CloudFront API リファレンス の PUT Distribution Config を参
照してください。
オリジンが Amazon S3 バケットで HTTPS を使用する場合、以下の点に注意してください。
• Amazon S3 バケットがウェブサイトエンドポイントとして構成されている場合、オリジンとの通信
に HTTPS を使用するように CloudFront を構成することはできません。Amazon S3 はその構成で
HTTPS 接続をサポートしていないためです。
• Amazon S3 は SSL/TLS 証明書を提供するため、その必要はありません。
CloudFront と Amazon S3 オリジンとの間の通信で HTTPS を必須にするよう CloudFront を
設定する
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
CloudFront コンソールの上部のペインで、更新するディストリビューションの ID を選択しま
す。
[Behaviors] タブで、更新するキャッシュ動作を選択した後、[Edit] を選択します。
[Viewer Protocol Policy] として次のいずれかの値を指定します。
3.
4.
Redirect HTTP to HTTPS
ビューアは両方のプロトコルを使用できますが、HTTP リクエストは自動的に HTTPS リク
エストにリダイレクトされます。CloudFront は新しい HTTPS URL とともに HTTP ステー
API Version 2016-09-29
258
Amazon CloudFront 開発者ガイド
代替ドメイン名と HTTPS の使用
タスコード 301 (Moved Permanently) を返します。ビューアはこの HTTPS URL を使用して
CloudFront にリクエストを再送信します。
Important
CloudFront が、HTTP から HTPS に DELETE、OPTIONS、PATCH、POST、または
PUT リクエストをリダイレクトしません。HTTPS にリダイレクトするようにキャッ
シュ動作を設定した場合、CloudFront は HTTP ステータスコード 403 (Forbidden)
を使用してそのキャッシュ動作の HTTP DELETE、OPTIONS、PATCH、POST、また
は PUT リクエストに応答します。
HTTPS リクエストにリダイレクトされる HTTP リクエストをビューアが作成する
と、CloudFront は両方のリクエストに課金します。HTTP リクエストの場合、リクエストの
料金と、CloudFront がビューアに返すヘッダーの料金のみが課金されます。HTTPS リクエ
ストの場合、リクエストの料金と、オリジンが返すヘッダーとオブジェクトの料金が課金さ
れます。
HTTPS Only
ビューアは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。ビュー
アが HTTPS リクエストではなく HTTP リクエストを送信した場合、CloudFront は HTTP ス
テータスコード 403 (Forbidden) を返し、オブジェクトは返しません。
5.
[Yes, Edit] を選択します。
6.
ビューアと CloudFront、および CloudFront と S3 との間で HTTPS を必須にする追加のキャッ
シュ動作ごとに、ステップ 3 から 5 を繰り返します。
7.
本番環境で更新された情報を使用する前に、次を確認してください。
• ビューアに HTTPS の使用が必要とされるリクエストにのみ、各キャッシュ動作のパスパター
ンが適用されている。
• CloudFront が評価する順番にキャッシュ動作がリストされている。詳細については、「パスパ
ターン (p. 74)」を参照してください。
• キャッシュ動作は、リクエストを正しいオリジンにルーティングします。
代替ドメイン名と HTTPS の使用
デフォルトでは、URL に CloudFront ディストリビューションドメイン名を使用して、コンテンツ
を HTTPS 経由でビューアに配信できます(例: https://d111111abcdef8.cloudfront.net/
image.jpg)。詳細については、「ビューアと CloudFront との通信で HTTPS を必須にす
る (p. 255)」を参照してください。
ビューアで HTTPS を使用し、オブジェクトの URL で独自ドメイン名を使用する場合(たとえ
ば、https://www.example.com/image.jpg)、このトピックで説明するいくつかの追加ステップ
を実行する必要があります。
Important
証明書をディストリビューションに追加すると、CloudFront はそのすべてのエッジロケー
ションに証明書を直ちに伝達します。また、新しいエッジロケーションが使用可能になる
と、CloudFront は証明書をそのエッジロケーションにも伝達します。CloudFront が証明書を
伝達するエッジロケーションを制限することはできません。
トピック
• CloudFront で HTTPS リクエストを供給する方法の選択 (p. 260)
• CloudFront で SSL/TLS の証明書を使用するための要件 (p. 261)
API Version 2016-09-29
259
Amazon CloudFront 開発者ガイド
CloudFront で HTTPS リクエストを供給する方法の選択
• CloudFront で SSL/TLS 証明書を使用することの制限 (ビューアと CloudFront との間でのみ
HTTPS) (p. 264)
• 代替ドメイン名と HTTPS の設定 (p. 265)
• SSL/TLS 証明書内のパブリックキーのサイズの確認 (p. 268)
• SSL/TLS 証明書の制限の引き上げ (p. 268)
• SSL/TLS 証明書の更新 (p. 269)
• 独自 SSL/TLS 証明書からデフォルトの CloudFront 証明書に戻す (p. 270)
• 独自 SSL/TLS 証明書を専用 IP アドレスから SNI に切り替える (p. 271)
CloudFront で HTTPS リクエストを供給する方法の
選択
ビューアに HTTPS とオブジェクトの代替ドメイン名を使用させる場合、CloudFront サーバーが
HTTPS リクエストを供給する方法を選択する必要があります。代替ドメイン名を使用するように
CloudFront を構成すると、CloudFront は、各エッジロケーションの専用 IP アドレスを使用する
か、Server Name Indication(SNI)を使用して、HTTPS リクエストを供給できます。このセクショ
ンでは各オプションの仕組みについて説明します。
専用 IP アドレスを使用した HTTPS リクエストの供給(すべ
てのクライアントで動作)
専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成した場
合、CloudFront は代替ドメイン名を各 CloudFront エッジロケーションの専用 IP アドレスと関連付け
ます。ビューアがコンテンツに HTTPS リクエストを送信すると、次のようになります。
1. DNS は、該当するエッジロケーション内のディストリビューションの IP アドレスにリクエストを
ルーティングします。
2. CloudFront は IP アドレスを使用してディストリビューションを特定し、どの SSL/TLS 証明書を
ビューアに返すかを決定します。
3. ビューアと CloudFront は SSL/TLS 証明書を使って SSL/TLS ネゴシエーションを実行します。
4. CloudFront はリクエストされたコンテンツをビューアに返します。
この方法は、ユーザーが使用するブラウザやその他のビューアを問わず、あらゆる HTTPS リクエス
トで機能します。
Important
専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成した場
合、追加の月額料金が発生します。課金は、ディストリビューションに SSL/TLS 証明書を
関連付けて、ディストリビューションを有効にした時点から開始されます。CloudFront の料
金の詳細については、「Amazon CloudFront 料金表」を参照してください。また、Using the
Same Certificate for Multiple CloudFront Distributions (p. 264) も参照してください。
SNI を使用した HTTPS リクエストの供給(ほとんどのクライ
アントで動作)
Server Name Indication(SNI)を使用して HTTPS リクエストを供給するように CloudFront を構成
した場合、CloudFront は各エッジロケーションの IP アドレスに代替ドメイン名を関連付けますが、
その IP アドレスはお客様のディストリビューション専用ではありません。ビューアがコンテンツに
API Version 2016-09-29
260
Amazon CloudFront 開発者ガイド
CloudFront で SSL/TLS の証明書を使用するための要件
対して HTTPS リクエストを送信すると、DNS は、該当するエッジロケーションの IP アドレスに
リクエストをルーティングします。ただし、IP アドレスがディストリビューション専用ではないた
め、CloudFront は、リクエストがどのドメイン用かを IP アドレスに基づいて決定することはできま
せん。
SSL/TLS ネゴシエーションは、HTTPS 接続を確立する処理の非常に早い段階で実行されます。リ
クエストがどのドメイン向けかすぐに決定できない場合、CloudFront は接続を中断します。専用 IP
アドレスを使用するのは、ドメインとリクエストを関連付ける 1 つの方法です。他には SNI があり
ます。これは、ほとんどの最新ブラウザでサポートされている TLS プロトコルを拡張したもので
す。SNI をサポートするビューアがコンテンツに対して HTTPS リクエストを送信すると、次のよう
になります。
1. ビューアはリクエスト URL から自動的にドメイン名を取得し、リクエストヘッダーのフィールド
に追加します。
2. CloudFront は、リクエストを受け取ると、リクエストヘッダーのドメイン名を見つけて、該当する
SSL/TLS 証明書を使ってリクエストに応答します。
3. ビューアと CloudFront は、SSL/TLS ネゴシエーションを実行します。
4. CloudFront はリクエストされたコンテンツをビューアに返します。
現在 SNI をサポートするブラウザの一覧については、Wikipedia の Server Name Indication の項目を
参照してください。
SNI を使用したくても、ユーザーのブラウザの一部が SNI をサポートしていない場合は、選択肢がい
くつかあります。
• SNI ではなく専用 IP アドレスを使用して HTTPS リクエストを供給するように CloudFront を構成
します。
• 独自証明書の代わりに CloudFront SSL/TLS 証明書を使用します。この場合、オブジェクトの
URL でディストリビューションの CloudFront ドメイン名を使用する必要があります(たとえ
ば、https://d111111abcdef8.cloudfront.net/logo.png)。
デフォルト CloudFront 証明書を使用する場合、ビューアは SSL プロトコル TLSv1 以降をサポート
する必要があります。CloudFront はデフォルトの CloudFront 証明書では SSLv3 をサポートしませ
ん。
また、CloudFront で使用する SSL/TLS 証明書を独自証明書からデフォルトの CloudFront 証明書に
変更する必要もあります。
• ディストリビューションを使用してコンテンツを配信したことがない場合は、単に構成を変更で
きます。詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、および
更新を行う (p. 52)」を参照してください。
• ディストリビューションを使用してコンテンツを配信したことがある場合は、新しい CloudFront
ディストリビューションを作成し、コンテンツが使用できない時間を減らすかゼロにするため
に、オブジェクトの URL を変更する必要があります。詳細については、「独自 SSL/TLS 証明書
からデフォルトの CloudFront 証明書に戻す (p. 270)」を参照してください。
• ユーザーが使用するブラウザを管理できる場合は、SNI をサポートするブラウザにアップグレード
してもらいます。
• HTTPS の代わりに HTTP を使用します。
CloudFront で SSL/TLS の証明書を使用するための
要件
SSL/TLS の証明書に関する次の要件は、例外を除き、ビューアと CloudFront との間で HTTPS を使用
するための証明書、および CloudFront とオリジンとの間で HTTPS を使用するための証明書の両方に
適用されます。
API Version 2016-09-29
261
Amazon CloudFront 開発者ガイド
CloudFront で SSL/TLS の証明書を使用するための要件
証明書の発行元
証明書発行者の要件は、ビューアと CloudFront、または CloudFront とオリジンとの間で HTTPS
を必須にするかどうかで異なります。
• ビューアと CloudFront との間の HTTPS – 信頼された認証機関 (Comodo、DigiCert、Symantec
など)、AWS Certificate Manager (ACM) が提供する証明書、または自己署名証明書を使用でき
ます。
• CloudFront とカスタムドメインとの間の HTTPS – オリジンが ELB ロードバランサーでない場
合、証明書は信頼された認証機関 (Comodo、DigiCert、Symantec など) によって発行される必
要があります。オリジンが ELB ロードバランサーの場合、ACM が提供する証明書を使用する
こともできます。
Important
CloudFront が HTTPS を使用してオリジンと通信するとき、CloudFront は証明書が
信頼された認証機関によって発行されたものであることを確認します。CloudFront は
Mozilla と同じ認証機関をサポートします。現在のリストについては、「Mozilla に付属
する CA 証明書一覧」を参照してください。CloudFront とオリジンとの間の HTTPS 通
信に自己署名証明書を使用することはできません。
SSL/TLS 証明書の取得とインストール方法については、使用している HTTP サーバーソフト
ウェアのドキュメントおよび認証機関のドキュメントを参照してください。ACM の詳細につい
ては、AWS Certificate Manager ユーザーガイドを参照してください。
AWS Certificate Manager: 証明書をリクエストする AWS リージョン
ビューアと CloudFront との間で HTTPS を必須にするには、証明書をリクエストまたはインポー
トする前に AWS リージョンを 米国東部(バージニア北部) に変更する必要があります。
CloudFront とオリジンとの間で HTTPS を必須にする場合、オリジンとして ELB ロードバラン
サーを使用しているなら、任意のリージョンで証明書をリクエストまたはインポートできます。
証明書の形式
公開証明書は X.509 PEM 形式で作成されている必要があります。これは、ACM を使用する場合
のデフォルトの形式です。
中間証明書
サードパーティーの認証機関を使用している場合、.pem ファイルには、ドメインの証明書の署名
者である認証機関の証明書から始めて、証明書チェーン内のすべての中間証明書を含めます。通
常は、適切なチェーン順で中間証明書とルート証明書を並べたファイルが CA のウェブサイトに
用意されています。
Important
ルート証明書、信頼パス内に存在しない中間証明書、CA の公開キー証明書は含めないで
ください。
例を示します。
-----BEGIN CERTIFICATE----Intermediate certificate 2
-----END CERTIFICATE---------BEGIN CERTIFICATE----Intermediate certificate 1
-----END CERTIFICATE-----
キーのタイプ
CloudFront は RSA パブリック/プライベートキーペアのみをサポートします。
プライベートキー
サードパーティー認証機関の証明書を使用している場合、以下の点に注意してください。
API Version 2016-09-29
262
Amazon CloudFront 開発者ガイド
CloudFront で SSL/TLS の証明書を使用するための要件
• プライベートキーが証明書のパブリックキーと一致している。
• プライベートキーは、PEM 形式の RSA プライベートキーでもなければなりません。PEM 形
式の PEM ヘッダーは BEGIN RSA PRIVATE KEY で、フッターは END RSA PRIVATE KEY で
す。
• プライベートキーはパスワードで暗号化できません。
ACM が証明書を提供した場合、ACM はプライベートキーをリリースしません。プライベート
キーは、ACM に統合された AWS サービスで使用するために ACM に格納されます。
アクセス許可
SSL/TLS 証明書の使用とインポートを行うための許可が必要です。これには、証明書をコンテン
ツ配信ネットワーク (CDN) にインポートするための、証明書発行元の認証機関からの許可が含ま
れます。
ACM を使用している場合は、IAM アクセス許可を使用して証明書へのアクセスを制限することを
お勧めします。詳細については、AWS Certificate Manager ユーザーガイド のアクセス権限とポ
リシーを参照してください。
パブリックキーのサイズ
証明書を ACM にインポートする場合は、パブリックキーの長さが 1024 ビットまたは 2048 ビッ
トである必要があります。
証明書を IAM 証明書ストアにアップロードする場合、パブリックキーの最大サイズは 2048 ビッ
トです。
ACM が提供する証明書のパブリックキーの詳細については、AWS Certificate Manager ユーザー
ガイド の ACM 証明書のプロパティを参照してください。
パブリックキーのサイズを確認する方法については、「SSL/TLS 証明書内のパブリックキーのサ
イズの確認 (p. 268)」を参照してください。
サポートされている証明書のタイプ
CloudFront はすべての種類の証明書をサポートします。たとえば、ドメイン検証済み証明書、拡
張検証(EV)証明書、高保証証明書、ワイルドカード証明書(*.example.com)、サブジェク
ト代替名(SAN)証明書(example.com および example.net)などをサポートします。
証明書の有効期限切れと更新
サードパーティー認証機関から取得した証明書を使用している場合、ACM にインポートする、ま
たは IAM 証明書ストアにアップロードする SSL/TLS 証明書の有効期限をモニタリングして更新
する責任があります。
ACM が提供する証明書を使用している場合、ACM は証明書の更新を管理します。詳細について
は、『AWS Certificate Manager ユーザーガイド』にある「管理された更新」を参照してくださ
い。
CloudFront ディストリビューションと証明書のドメイン名
カスタムオリジンを使用する場合、オリジンの SSL/TLS 証明書の共通名フィールドにドメイン
名が含まれ、さらにサブジェクト代替名フィールドにもドメイン名がいくつか含まれることが
あります。(CloudFront は証明書ドメイン名にワイルドカード文字を使用できます)。証明書
のドメイン名のうち 1 つは、オリジンドメイン名に指定したドメイン名と一致する必要があり
ます。ドメイン名が一致しない場合、CloudFront は、ビューアに HTTP ステータスコード 502
(Bad Gateway) を返します。
SSL プロトコルの最低バージョン
専用 IP アドレスを使用している場合、ビューアと CloudFront との間の接続に最小 SSL プロトコ
ルバージョン (SSLv3 または TLSv1) を選択できます。詳細については、トピック「ウェブディ
ストリビューションを作成または更新する場合に指定する値 (p. 67)」の「SSL プロトコルの最低
バージョン (p. 83)」を参照してください。
API Version 2016-09-29
263
Amazon CloudFront 開発者ガイド
CloudFront で SSL/TLS 証明書を使用することの
制限 (ビューアと CloudFront との間でのみ HTTPS)
CloudFront で SSL/TLS 証明書を使用することの制
限 (ビューアと CloudFront との間でのみ HTTPS)
CloudFront での SSL/TLS 証明書の使用に関して以下の制限があります。これらの制限は、AWS
Certificate Manager (ACM) を使ってプロビジョニングした SSL/TLS 証明書、またはビューアと
CloudFront との間の HTTPS 通信のために ACM にインポートした、または IAM 証明書ストアにアッ
プロードした SSL/TLS 証明書にのみ適用されます。
CloudFront ディストリビューションあたりの証明書の最大数
各 CloudFront ディストリビューションに関連付けることができる SSL/TLS 証明書は最大 1 個で
す。
ACM にインポート可能な、または IAM 証明書ストアにアップロード可能な証明書の最大数
サードパーティー認証機関から SSL/TLS 証明書を取得した場合、次のいずれかの場所に証明書を
格納する必要があります。
• AWS Certificate Manager – ACM 証明書の数に関する現在の制限については、AWS Certificate
Manager ユーザーガイド の制限を参照してください。一覧表示されている制限は、ACM を使
用してプロビジョニングした証明書や ACM にインポートした証明書を含む合計です。
• IAM 証明書ストア – AWS アカウントの IAM 証明書ストアにアップロードできる証明書の数の
現在の制限については、IAM ユーザーガイド の IAM エンティティとオブジェクトに関する制
限を参照してください。制限の引き上げを要求するには、「IAM 制限の増加を要求する」を参
照してください。
AWS アカウントごとの証明書の最大数 (専用 IP アドレスのみ)
専用 IP アドレスを使用して HTTPS リクエストを供給する場合は、以下の点に注意してくださ
い。
• デフォルトの場合、CloudFront では 1 つの AWS アカウントで 2 つの証明書を使用する許可が
与えられます。1 つは日常的に使用する証明書で、もう 1 つは複数のディストリビューション
で証明書を更新する必要がある場合の証明書です。
• この機能をすでに使用しており、AWS アカウントで使用できる独自 SSL/TLS 証明書の数を
増やす必要がある場合は、サポートセンターにアクセスし、サポートケースを作成してくだ
さい。使用するためのアクセス許可が必要な証明書の数と状況をリクエストに記載してくださ
い。AWS は可能な限り速やかにお客様のアカウントを更新します。
異なる AWS アカウントで作成された CloudFront ディストリビューションに同じ証明書を使用する
サードパーティーの認証機関を使用しており、異なる AWS アカウントを使用して作成した複数
の CloudFront ディストリビューションで同じ証明書を使用する場合、AWS アカウントごとに証
明書を ACM にインポートするか、IAM 証明書ストアにアップロードする必要があります。
ACM が提供する証明書を使用している場合、別の AWS アカウントで作成された証明書を
CloudFront が使用するように設定することはできません。
CloudFront と他の AWS サービスで同じ証明書を使用する (IAM 証明書ストアのみ)
信頼された認証機関 (Comodo、DigiCert、Symantec など) から証明書を購入し、CloudFront や他
の AWS サービスで同じ証明書を使用する場合、以下の点に注意してください。
• IAM 証明書ストアに証明書をアップロードする場合、CloudFront 用および他のサービス用に証
明書を 2 度アップロードする必要があります。CloudFront で IAM 証明書ストアに証明書をアッ
プロードする方法の詳細については、代替ドメイン名と HTTPS の設定 (p. 265) を参照してく
ださい。
• ACM に証明書をインポートする場合、1 度インポートするだけで複数の AWS サービスで使用
できます。
ACM が提供した証明書を使用している場合、証明書は ACM に格納されています。
複数の CloudFront ディストリビューションでの同じ証明書の使用
HTTPS リクエストに対応するために使用している一部またはすべての CloudFront ディストリ
ビューションで同じ証明書を使用できます。次の点に注意してください。
• 専用 IP アドレスを使用したリクエストの処理と SNI を使用したリクエストの処理の両方に同
じ証明書を使用できます。
API Version 2016-09-29
264
Amazon CloudFront 開発者ガイド
代替ドメイン名と HTTPS の設定
• 各ディストリビューションに 1 個のみ証明書を関連付けることができます。
• 各ディストリビューションには、証明書の共通名フィールドまたはサブジェクト代替名フィー
ルドにも表示される 1 つ以上の代替ドメイン名を含める必要があります。
• 専用 IP アドレスを使用して HTTPS リクエストを処理し、同じ AWS アカウントを使用してす
べてのディストリビューションを作成した場合、すべてのディストリビューションで同じ証明
書を使用することによりコストを大幅に削減できます。CloudFront はディストリビューション
ごとではなく、証明書ごとに課金します。
たとえば、同じ AWS アカウントを使用して 3 つのディストリビューションを作成し、3 つの
ディストリビューションすべてに対して同じ証明書を使用するとします。専用 IP アドレスの使
用に対する 1 つの料金のみが発生します。
ただし、専用 IP アドレスを使用して HTTPS リクエストを処理していて、同じ証明書を使用し
て異なる AWS アカウントに CloudFront ディストリビューションを作成している場合、専用 IP
アドレスを使用する料金が各アカウントに発生しきます。たとえば、3 つの異なる AWS アカ
ウントを使用して 3 つのディストリビューションを作成し、3 つのすべてのディストリビュー
ションに同じ証明書を使用する場合、専用 IP アドレスを使用するための料金全額が各アカウン
トに課金されます。
代替ドメイン名と HTTPS の設定
オブジェクトの URL で代替ドメイン名を使用し、ビューアと CloudFront との間で HTTPS を使用す
るには、該当する手順を実行します。
トピック
• 3 つ以上の SSL/TLS 証明書を使用する許可をリクエストする (p. 265)
• SSL/TLS の証明書を取得する (p. 265)
• SSL/TLS 証明書をインポートする (p. 266)
• CloudFront ディストリビューションを更新する (p. 266)
3 つ以上の SSL/TLS 証明書を使用する許可をリクエストする
ディストリビューションに 3 つ以上の SSL/TLS 証明書を永続的に関連付けるための許可が必要な場
合は、以下の手順を実行します。
CloudFront ディストリビューションに 3 つ以上の証明書を使用するための許可をリクエスト
する
1.
サポートセンターにアクセスし、サポートケースを作成してください。
2.
使用するためのアクセス権限が必要な証明書の数と状況をリクエストに記載してください。AWS
は可能な限り速やかにお客様のアカウントを更新します。
3.
次の手順に進みます。
SSL/TLS の証明書を取得する
SSL/TLS 証明書を取得します (まだ取得していない場合)。詳細については、該当するドキュメントを
参照してください。
• AWS Certificate Manager (ACM) が提供する証明書を使用するには、AWS Certificate Manager
ユーザーガイド を参照してください。その後、CloudFront ディストリビューションを更新す
る (p. 266)に進みます。
• サードパーティー認証機関から証明書を取得するには、認証機関から提供されたドキュメントを参
照してください。証明書を取得した後、次の手順に進んでください。
API Version 2016-09-29
265
Amazon CloudFront 開発者ガイド
代替ドメイン名と HTTPS の設定
• 自己署名証明書を作成するには、証明書の作成と署名に使用するアプリケーションに関するドキュ
メントを参照してください。その後、次の手順に進みます。
SSL/TLS 証明書をインポートする
サードパーティー認証機関から証明書を取得した場合、証明書を ACM にインポートするか、IAM 証
明書ストアにアップロードします。
ACM
ACM では、ACM コンソールを使用するか、プログラムによって証明書をインポートできま
す。ACM への証明書のインポートに関する詳細については、AWS Certificate Manager ユーザー
ガイド の Importing Certificates into AWS Certificate Manager を参照してください。
IAM 証明書ストア
次の AWS CLI コマンドを使用して、SSL/TLS 証明書を IAM 証明書ストアにアップロードしま
す。
aws iam upload-server-certificate --server-certificatename CertificateName --certificate-body file://public_key_certificate_file
--private-key file://privatekey.pem --certificate-chain
file://certificate_chain_file --path /cloudfront/path/
次の点に注意してください。
• AWS アカウント – IAM 証明書ストアに証明書をアップロードするときには、CloudFront ディ
ストリビューションを作成するために使用した AWS アカウントと同じアカウントを使用する
必要があります。
• --path パラメーター – 証明書を IAM にアップロードする場合、-path パラメーター(証明書
のパス)の値が /cloudfront/ で始まる必要があります(/cloudfront/production/、/
cloudfront/test/ など)。パスは / で終わる必要があります。
• 既存の証明書 – --server-certificate-name と --path パラメーターには、既存の証明書
に関連付けられている値とは異なる値を指定する必要があります。
• CloudFront コンソールの使用 – CloudFront コンソールを使用してディストリビューション
の作成または更新を行う場合、AWS CLI の --server-certificate-name パラメーター
に指定する値が CloudFront コンソールの [SSL Certificate] リストに表示される値になります
(myServerCertificate など)。
• CloudFront API の使用 – CloudFront API を使用してディストリビューションの作成
または更新を行う場合、AWS CLI から返される英数文字列を書き留めておきます
(AS1A2M3P4L5E67SIIXR3J など)。これは、IAMCertificateId エレメントに指定する値
です。CLI から返される IAM ARN は必要ありません。
AWS CLI の詳細については、AWS Command Line Interface ユーザーガイド と AWS Command
Line Interface Reference を参照してください。
CloudFront ディストリビューションを更新する
ディストリビューションの設定を更新するには、以下の手順を実行します。
代替ドメイン名用に CloudFront ディストリビューションを構成する
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
更新するディストリビューションの ID を選択します。
3.
[General] タブで、[Edit] を選択します。
4.
以下の値を更新します。
API Version 2016-09-29
266
Amazon CloudFront 開発者ガイド
代替ドメイン名と HTTPS の設定
代替ドメイン名(CNAME)
該当する代替ドメイン名を追加します。ドメイン名をコンマで区切るか、新しい行にドメイ
ン名を 1 つずつ入力します。
SSL 証明書 (ウェブディストリビューションのみ)
[Custom SSL Certificate] を選択して、リストから証明書を選択します。
IAM 証明書ストアに証明書をアップロードする場合で、それがリストに表示されない場合
は、SSL/TLS 証明書をインポートする (p. 266) の手順を確認して、証明書が正しくアップ
ロードされたことを確認します。
Important
SSL/TLS 証明書を CloudFront ディストリビューションに関連付けたら、すべての
ディストリビューションから証明書を削除して、ディストリビューションのステータ
スが [Deployed] に変わるまで、証明書を ACM または IAM 証明書ストアから削除し
ないでください。
サポートされるクライアント (ウェブディストリビューションのみ)
適用可能なオプションを選択します。
• [All Clients]: CloudFront が専用の IP アドレスを使用して HTTPS コンテンツを供給し
ます。このオプションを選択した場合、有効になっているディストリビューションに
SSL/TLS 証明書を関連付けると、追加料金がかかります。詳細については、「Amazon
CloudFront 料金表」を参照してください。
• [Only Clients that Support Server Name Indication (SNI)]: 古いブラウザなど SNI をサポー
トしないクライアントは、別の方法を使用してコンテンツにアクセスする必要がありま
す。
詳細については、「CloudFront で HTTPS リクエストを供給する方法の選択 (p. 260)」を参
照してください。
5.
[Yes, Edit] を選択します。
6.
ビューアと CloudFront との間で HTTPS が必須になるよう CloudFront を設定する
a.
[Behaviors] タブで、更新するキャッシュ動作を選択して、[Edit] を選択します。
b.
[Viewer Protocol Policy] として次のいずれかの値を指定します。
Redirect HTTP to HTTPS
ビューアは両方のプロトコルを使用できますが、HTTP リクエストは自動的に HTTPS
リクエストにリダイレクトされます。CloudFront は新しい HTTPS URL とともに HTTP
ステータスコード 301 (Moved Permanently) を返します。ビューアはこの HTTPS URL
を使用して CloudFront にリクエストを再送信します。
Important
CloudFront が、HTTP から HTPS に DELETE、OPTIONS、PATCH、POST、
または PUT リクエストをリダイレクトしません。HTTPS にリダイレク
トするようにキャッシュ動作を設定した場合、CloudFront は HTTP ス
テータスコード 403 (Forbidden) を使用してそのキャッシュ動作の HTTP
DELETE、OPTIONS、PATCH、POST、または PUT リクエストに応答します。
HTTPS リクエストにリダイレクトされる HTTP リクエストをビューアが作成する
と、CloudFront は両方のリクエストに課金します。HTTP リクエストの場合、リクエス
トの料金と、CloudFront がビューアに返すヘッダーの料金のみが課金されます。HTTPS
リクエストの場合、リクエストの料金と、オリジンが返すヘッダーとオブジェクトの料
金が課金されます。
API Version 2016-09-29
267
Amazon CloudFront 開発者ガイド
SSL/TLS 証明書内のパブリックキーのサイズの確認
c.
d.
7.
HTTPS Only
ビューアは、HTTPS を使用している場合にのみ、コンテンツにアクセスできます。
ビューアが HTTPS リクエストではなく HTTP リクエストを送信した場合、CloudFront
は HTTP ステータスコード 403 (Forbidden) を返し、オブジェクトは返しません。
[Yes, Edit] を選択します。
ビューアと CloudFront との間で HTTPS を必須にする追加のキャッシュ動作ごとに、ステッ
プ a から c を繰り返します。
本番環境で更新された情報を使用する前に、次を確認してください。
• ビューアに HTTPS の使用が必要とされるリクエストにのみ、各キャッシュ動作のパスパター
ンが適用されている。
• CloudFront が評価する順番にキャッシュ動作がリストされている。詳細については、「パスパ
ターン (p. 74)」を参照してください。
• キャッシュ動作は、リクエストを正しいオリジンにルーティングします。
SSL/TLS 証明書内のパブリックキーのサイズの確認
CloudFront 代替ドメイン名と HTTPS を使用する場合、SSL/TLS 証明書内のパブリックキーのサイズ
が 2048 ビットを超えることはできません。(これはパブリックキー内の文字数ではありません)。
パブリックキーのサイズを確認するには、次の OpenSSL コマンドを実行できます。
openssl x509 -in path and filename of SSL/TLS certificate -text -noout
各パラメーターの意味は次のとおりです。
• -in: SSL/TLS 証明書のパスとファイル名を指定します。
• -text: OpenSSL において、パブリックキーの長さがビット単位で表示されます。
• -noout: OpenSSL において、パブリックキーが非表示になります。
出力例:
Public-Key: (2048 bit)
SSL/TLS 証明書の制限の引き上げ
AWS Certificate Manager にインポートしたり、AWS Identity and Access Management にアップロー
ドしたりできる SSL/TLS 証明書の数には制限があります。専用 IP アドレスを使用して HTTPS リク
エストを処理するよう CloudFront を設定するときに AWS アカウントで使用できる SSL/TLS 証明書
の数にも制限があります。ただし、これらの制限数を増やすようにリクエストできます。詳細につい
ては、次のドキュメントを参照してください。
ACM にインポート可能な証明書
ACM にインポートできる証明書の数の制限については、『アマゾン ウェブ サービス全般のリファレ
ンス』の「ACM の制限」を参照してください。
制限の引き上げをリクエストするには、AWS サポートセンターでサポートケースを作成してくださ
い。AWS リージョンを米国東部 (バージニア北部) に変更し、フォームに入力してください。
IAM にアップロード可能な証明書
IAM にアップロードできる証明書の数の制限については、『アマゾン ウェブ サービス全般のリファレ
ンス』の「IAM の制限」を参照してください。
API Version 2016-09-29
268
Amazon CloudFront 開発者ガイド
SSL/TLS 証明書の更新
制限の引き上げをリクエストするには、AWS サポートセンターでサポートケースを作成してくださ
い。[Limit] で、[Server Certificate Limit] を選択し、適切な値を指定します。
専用 IP アドレスを使用して HTTPS リクエストを処理するよ
う CloudFront を設定するときに AWS アカウントで使用可能
な証明書
専用 IP アドレスを使用して HTTPS リクエストを処理するときに各 AWS アカウントに使用で
きる SSL 証明書の数の制限については、『アマゾン ウェブ サービス全般のリファレンス』の
「CloudFront の制限」を参照してください。
制限の引き上げをリクエストするには、AWS サポートセンターでサポートケースを作成してくださ
い。[Limit] で、[Server Certificate Limit] を選択し、適切な値を指定します。
SSL/TLS 証明書の更新
AWS Certificate Manager が提供する証明書を使用する場合、SSL/TLS 証明書を更新する必要はあり
ません。ACM によって、証明書の更新が行われます。詳細については、『AWS Certificate Manager
ユーザーガイド』にある「管理された更新」を参照してください。
Note
ACM では、サードパーティー認証機関から入手して ACM にインポートした証明書の更新を
管理しません。
サードパーティー認証機関を利用しており、証明書を ACM にインポートするか、IAM 証明書ストア
にアップロードした場合、たとえば有効期限切れの日付が近づいているため、証明書を交換する必要
が生じることがあります。
Important
専用 IP アドレスを使用して HTTPS リクエストを処理するよう CloudFront を設定した場合、
証明書をローテーションしている間、追加の証明書に対して案分された追加料金がかかる可
能性があります。ディストリビューションの更新を迅速に行って、追加料金を最低限にする
ことをお勧めします。
証明書をローテーションするには、以下の手順を実行します。ビューアは、プロセスが完了した後だ
けでなく、証明書を更新している間もコンテンツにアクセスし続けることができます。
SSL/TLS 証明書をローテーションするには
1.
SSL/TLS 証明書の制限の引き上げ (p. 268)、追加の SSL 証明書を使用するためにアクセス権限
が必要かどうかを調べます。その場合、アクセス権限をリクエストし、ステップ 2 を続ける前に
アクセス権限が付与されるまで待ってください。
2.
新しい証明書を ACM にインポートするか、IAM にアップロードします。詳細については、
『Amazon CloudFront 開発者ガイド』の「SSL/TLS 証明書をインポートする」を参照してくださ
い。
3.
ディストリビューションを一度に 1 つずつ、新しい証明書を使用できるように更新します。詳細
については、『Amazon CloudFront 開発者ガイド』の「CloudFront ディストリビューションの一
覧表示、詳細表示、および更新を行う」を参照してください。
4.
(オプション) すべての CloudFront ディストリビューションの更新が完了したら、古い証明書を
ACM または IAM から削除することもできます。
API Version 2016-09-29
269
Amazon CloudFront 開発者ガイド
独自 SSL/TLS 証明書からデフォ
ルトの CloudFront 証明書に戻す
Caution
すべてのディストリビューションから SSL/TLS 証明書を削除し、更新されたディストリ
ビューションのステータスが [Deployed] に変わるまで、SSL/TLS 証明書を削除しない
でください。
独自 SSL/TLS 証明書からデフォルトの CloudFront
証明書に戻す
ビューアと CloudFront との間で HTTPS を使用するよう設定し、CloudFront でカスタム SSL/TLS 証
明書を使用するように設定した場合、デフォルトの CloudFront SSL/TLS 証明書を使用するように設
定を変更できます。プロセスは、コンテンツの配信にディストリビューションを使用しているかどう
かによって異なります。
• ディストリビューションを使用してコンテンツを配信したことがない場合は、単に構成を変更でき
ます。詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、および更新
を行う (p. 52)」を参照してください。
• ディストリビューションを使用してコンテンツを配信したことがある場合は、新しい CloudFront
ディストリビューションを作成し、コンテンツが使用できない時間を減らすかゼロにするために、
オブジェクトの URL を変更する必要があります。そのためには、以下の手順を実行します。
デフォルトの CloudFront 証明書に戻すには
1.
新しい CloudFront ディストリビューションを希望する構成で作成します。[SSL Certificate] に
は、[Default CloudFront Certificate (*.cloudfront.net)] を選択します。
詳細については、「ウェブディストリビューションを作成するためのタスクリスト (p. 62)」を参
照してください。
2.
CloudFront を使用して配信しているオブジェクトの場合は、アプリケーションの URL
を更新して、CloudFront が新しいディストリビューションに割り当てたドメイン名を使
用します。たとえば、https://www.example.com/images/logo.png を https://
d111111abcdef8.cloudfront.net/images/logo.png に変更します。
3.
独自 SSL/TLS 証明書に関連付けられているディストリビューションを削除するか、ディストリ
ビューションを更新して [SSL Certificate] の値を [Default CloudFront Certificate (*.cloudfront.net)]
に変更します。詳細については、「CloudFront ディストリビューションの一覧表示、詳細表示、
および更新を行う (p. 52)」を参照してください。
Important
このステップが完了するまで、AWS は独自 SSL/TLS 証明書を使用する料金を課金し続
けます。
4.
(オプション) カスタム SSL/TLS 証明書を削除します。
a.
AWS CLI コマンド list-server-certificates を実行して、削除する証明書の証明書
ID を取得します。詳細については、AWS Command Line Interface Reference の list-servercertificates を参照してください。
b.
AWS CLI コマンド delete-signing-certificate を実行して、証明書を削除します。詳
細については、「AWS Command Line Interface Reference」の「delete-signing-certificate」
を参照してください。
API Version 2016-09-29
270
Amazon CloudFront 開発者ガイド
独自 SSL/TLS 証明書を専用 IP ア
ドレスから SNI に切り替える
独自 SSL/TLS 証明書を専用 IP アドレスから SNI に
切り替える
専用 IP アドレスでカスタム SSL/TLS 証明書を使用するよう CloudFront を設定した場合、SNI でカス
タム SSL/TLS 証明書を使用するように切り替えて、専用 IP アドレスに関連付けられた請求が発生し
ないようにできます。以下の手順でその方法を説明します。
Important
CloudFront の構成をこのように更新しても、SNI をサポートするビューアは影響を受けませ
ん。これらのビューアは、変更の前も後も、変更が CloudFront エッジロケーションに伝達さ
れている間も、同じようにコンテンツにアクセスできます。SNI をサポートしていないビュー
アは、変更後、コンテンツにアクセスできなくなります。詳細については、「CloudFront で
HTTPS リクエストを供給する方法の選択 (p. 260)」を参照してください。
独自 SSL/TLS 証明書を専用 IP アドレスから SNI に切り替えるには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
表示または更新するディストリビューションの ID を選択します。
3.
[Distribution Settings] を選択します。
4.
[General] タブで、[Edit] を選択します。
5.
[Custom SSL Client Support] の設定を [Only Clients that Support Server Name Indication (SNI)] に
変更します。
6.
[Yes, Edit] を選択します。
サポートされているプロトコルと暗号
ビューアと CloudFront、また CloudFront とオリジンとの間の HTTPS 通信で CloudFront がサポート
するプロトコルと暗号化の情報については、該当するトピックを参照してください。
トピック
• サポートされるプロトコル (p. 271)
• サポートされる暗号化 (p. 272)
サポートされるプロトコル
ビューアが HTTPS を必ず使用して CloudFront と通信するかどうか、またカスタムオリジンと通信す
る際に CloudFront が HTTPS を使用するかどうか選択できます。HTTPS を必須にする場合、ビュー
ア、CloudFront、およびオリジンが通信に使用するプロトコルを選択できます。
ビューアと CloudFront との間のプロトコル
ビューアと CloudFront との間で HTTPS を必須にするかどうかを選択する場合、ビューアプロト
コルポリシー (p. 75) で該当する値を指定します。
ビューアと CloudFront の通信で TLSv1.0 以降を使用するか、より安全性の低い SSLv3 プロトコ
ルを使用するかを選択するには、SSL プロトコルの最低バージョン (p. 83) で該当する値を指定し
ます。
API Version 2016-09-29
271
Amazon CloudFront 開発者ガイド
サポートされる暗号化
Important
CloudFront は、SSLv3 および TLSv1.0、1.1、1.2 を使用したビューアリクエストのみを
サポートします。
CloudFront とオリジンとの間のプロトコル
CloudFront とオリジンとの間で HTTPS を必須にするかどうかを選択する場合、オリジンプロト
コルポリシー(Amazon EC2 および他のカスタムオリジンのみ) (p. 72) で該当する値を指定しま
す。
CloudFront とオリジンが通信で使用する SSL/TLS プロトコルを選択するには、オリジン SSL プ
ロトコル (Amazon EC2 および他のカスタムオリジンのみ) (p. 72) で該当する値を指定します。
サポートされる暗号化
ビューアは次の暗号化を使用して、HTTPS リクエストを CloudFront に送信できます。RC4-MD5 を
除き、SSL プロトコルの最低バージョン (p. 83) の値として SSLv3 または TLSv1.0S を選択したかに
かかわらず、すべての暗号がサポートされます。ビューアは、CloudFront との HTTPS 接続を確立
するために、これらの暗号のうち少なくとも 1 つをサポートする必要があります。AWS Certificate
Manager で SSL/TLS 証明書を使用する場合、ビューアは *-RSA-* 暗号化のいずれかをサポートして
いる必要があります。CloudFront では、ビューアがサポートする複数の暗号化について、次の順序で
暗号が選択されます。
OpenSSL の暗号
名
RFC の暗号名
ECDHE-RSAAES128- GCMSHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-RSAAES128-SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ECDHE-RSAAES128-SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
ECDHE-RSAAES256- GCMSHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
ECDHE-RSAAES256-SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
ECDHE-RSAAES256-SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
AES128-GCMSHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
AES256-GCMSHA384
TLS_RSA_WITH_AES_256_GCM_SHA384
AES128-SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
AES256-SHA
TLS_RSA_WITH_AES_256_CBC_SHA
AES128-SHA
TLS_RSA_WITH_AES_128_CBC_SHA
DES-CBC3-SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
API Version 2016-09-29
272
Amazon CloudFront 開発者ガイド
HTTPS 接続料金
OpenSSL の暗号
名
RFC の暗号名
RC4-MD5(SSL
TLS_RSA_WITH_RC4_128_MD5 (SSL プロトコルの最低バージョン (p. 83) の
プロトコルの最低 値が SSLv3 の場合のみサポート)
バージョン (p. 83)
の値が SSLv3 の
場合のみサポー
ト)
CloudFront は、以下の暗号を使用して、HTTPS リクエストをオリジンサーバーに転送しま
す。CloudFront がオリジンに対する HTTPS 接続を確立するには、オリジンサーバーがこれらの暗号
のうち少なくとも 1 つをサポートしている必要があります。
OpenSSL の暗号
名
RFC の暗号名
ECDHE-RSAAES128-SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ECDHE-RSAAES256-SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
AES256-SHA
TLS_RSA_WITH_AES_256_CBC_SHA
AES128-SHA
TLS_RSA_WITH_AES_128_CBC_SHA
DES-CBC3-SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
RC4-MD5
TLS_RSA_WITH_RC4_128_MD5
(SSL プロトコル
の最低バージョ
ン (p. 83) の値が
SSLv3 の場合の
みサポート)
(SSL プロトコルの最低バージョン (p. 83) の値が SSLv3 の場合のみサポート)
HTTPS 接続料金
HTTPS リクエストに対する追加料金が常に発生します。詳細については、「Amazon CloudFront 料
金表」を参照してください。
API Version 2016-09-29
273
Amazon CloudFront 開発者ガイド
認証
CloudFront に対する認証とアクセ
スコントロール
AWS Identity and Access Management (IAM) では、ウェブディストリビューションの作成や無効化
など、CloudFront リソースでオペレーションを実行するには、承認された AWS ユーザーであること
の認証が求められます。CloudFront コンソールを使用している場合は、AWS ユーザー名およびパス
ワードを指定して、自分の ID を認証します。プログラムで CloudFront にアクセスする場合、アプリ
ケーションはアクセスキーを使用するかリクエストに署名して ID を認証します。
ID が認証されると、オペレーションを実行し、リソースにアクセスする権限がユーザーにあることが
IAM によって確認され、AWS へのアクセスが制御されます。アカウント管理者である場合、IAM を
使用して、アカウントに関連付けられたリソースへの他のユーザーのアクセスを制御できます。
この章では、AWS Identity and Access Management (IAM) および CloudFront を使ってリソースを保
護する方法について説明します。
トピック
• 認証 (p. 274)
• アクセスコントロール (p. 276)
認証
AWS には、次のタイプのアイデンティティでアクセスできます。
• AWS アカウントのルートユーザー – AWS にサインアップするときは、AWS アカウントに関連付
けられた E メールアドレスとパスワードを指定します。これらは ルート認証情報であり、これらの
情報を使用すると、すべての AWS リソースへの完全なアクセスが可能になります。
Important
セキュリティ上の理由から、AWS アカウントへの完全なアクセス権限を持つ管理者ユー
ザー (IAM ユーザー) を作成するためにのみ、ルート認証情報を使用することをお勧めし
ます。その後、この管理者ユーザーを使用して、制限されたアクセス権限を持つ他の IAM
API Version 2016-09-29
274
Amazon CloudFront 開発者ガイド
認証
ユーザーとロールを作成できます。詳細については、『IAM ユーザーガイド』の「IAM の
ベストプラクティス」および「管理者のユーザーおよびグループの作成」を参照してくだ
さい。
• IAM ユーザー – IAM ユーザーは、特定のカスタム権限 (たとえば、CloudFront で ウェブディストリ
ビューション を作成するアクセス権限) を持つ AWS アカウント内のアイデンティティです。IAM
のユーザー名とパスワードを使用して、AWS マネジメントコンソール、AWS ディスカッション
フォーラム、AWS Support Center などのセキュリティ保護された AWS ウェブページにサインイン
できます。
ユーザー名とパスワードに加えて、各ユーザーのアクセスキーを生成することもできます。いくつ
かの SDK の 1 つまたは AWS Command Line Interface (CLI) を使ってプログラムで AWS サービス
にアクセスするときに、これらのキーを使用します。SDK と CLI ツールでは、アクセスキーを使用
してリクエストが暗号で署名されます。AWS ツールを使用しない場合は、リクエストを自分で署名
する必要があります。CloudFront サポート対象 では、署名バージョン 4 がサポートされています。
これは、インバウンド API リクエストを認証するためのプロトコルです。リクエストの認証の詳細
については、『AWS General Reference』の「署名バージョン 4 の署名プロセス」を参照してくだ
さい。
• IAM ロール – IAM ロールは、特定のアクセス権限を持ち、アカウントで作成できるもう 1 つの IAM
アイデンティティです。これは IAM ユーザーに似ていますが、特定のユーザーに関連付けられてい
ません。IAM ロールでは、AWS サービスおよびリソースにアクセスするために使用できる一時的な
アクセスキーを取得することができます。IAM ロールと一時的な認証情報は、次の状況で役立ちま
す。
• フェデレーティッドユーザーアクセス – IAM ユーザーを作成するのではなく、AWS Directory
Service、エンタープライズユーザーディレクトリ、またはウェブアイデンティティプロバイダー
の既存のユーザーアイデンティティを使用することもできます。このようなユーザーはフェデ
レーティッドユーザーと呼ばれます。AWS では、アイデンティティプロバイダーを通じてアク
セスがリクエストされたときに、フェデレーティッドユーザーにロールを割り当てます。フェデ
レーティッドユーザーの詳細については、『IAM ユーザーガイド』の「フェデレーティッドユー
ザーとロール」を参照してください。
• クロスアカウントアクセス – アカウントで IAM ロールを使って、お客様のアカウントのリソース
へのアクセス権を別の AWS アカウントに付与できます。この例については、『IAM ユーザーガ
イド』の「チュートリアル: AWS アカウント間の IAM ロールを使用したアクセスの委任」を参照
してください。
• AWS サービスアカウント – アカウントで IAM ロールを使って、お客様のアカウントのリソース
にアクセスする AWS サービスのアクセス権限を付与できます。たとえば、Amazon Redshift が
お客様に代わって Amazon S3 バケットにアクセスし、バケットに保存されたデータを Amazon
Redshift クラスターにロードすることを許可するロールを作成できます。 詳細については、
『IAM ユーザーガイド』の「AWS ユーザーにアクセス権限を委任するロールの作成」を参照して
ください。
• Amazon EC2 で実行されるアプリケーション – インスタンスで実行し、AWS API リクエストを
作成するアプリケーションで使用されるアクセスキーを EC2 インスタンス内に保存する代わり
に、IAM ロールを使用して、これらのアプリケーション用の一時認証情報を管理できます。AWS
ロールを EC2 インスタンスに割り当て、そのすべてのアプリケーションで使用できるようにする
には、インスタンスにアタッチされたインスタンスプロファイルを作成できます。インスタンス
プロファイルにはロールが含まれ、EC2 インスタンスで実行されるプログラムは一時認証情報を
API Version 2016-09-29
275
Amazon CloudFront 開発者ガイド
アクセスコントロール
取得することができます。詳細については、『IAM ユーザーガイド』の「Amazon EC2 上のアプ
リケーションに対するロールの使用」を参照してください。
アクセスコントロール
CloudFront リソースを作成、更新、削除、またはリストするには、オペレーションを実行する権限
と、対応するリソースにアクセスする権限が必要です。また、プログラムでオペレーションを実行す
るには、有効なアクセスキーが必要です。
以下のセクションでは、CloudFront のアクセス権限を管理する方法について説明します。
• CloudFront リソースへのアクセス権限の管理の概要 (p. 276)
• CloudFront でアイデンティティベースのポリシー (IAM ポリシー) を使用する (p. 279)
• CloudFront API のアクセス権限: アクション、リソース、条件リファレンス (p. 284)
CloudFront リソースへのアクセス権限の管理の概
要
すべての AWS リソースは AWS アカウントによって所有され、となり、リソースの作成またはアク
セスは、アクセス権限のポリシーによって管理されます。
Note
アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。管理者の詳
細については、『&guide-iam-user;』ガイドの「IAM ベストプラクティス」を参照してくださ
い。
アクセス権限を付与するときは、アクセス権限を取得するユーザー、アクセス権限を取得する対象の
リソース、およびアクセス権限を取得して実行するアクションを決定します。
トピック
• CloudFront リソース用の ARN (p. 276)
• リソース所有権について (p. 277)
• リソースへのアクセスの管理 (p. 277)
• ポリシー要素の指定 : リソース、アクション、効果、プリンシパル (p. 278)
• ポリシーでの条件の指定 (p. 279)
CloudFront リソース用の ARN
すべての CloudFront リソース (ウェブおよび RTMP ディストリビューション、無効化、オリジンアク
セスアイデンティティ) で、Amazon Resource Name (ARN) に対して同じ形式が使用されます。
arn:aws:cloudfront::optional-account-id:*
CloudFront には、これらの各タイプのリソースで使用できる API アクションが用意されています。
詳細については、『Amazon CloudFront API リファレンス』を参照してください。各アクションを使
用するアクセス権限を付与または拒否するために指定するアクションおよび ARN のリストについて
は、「CloudFront API のアクセス権限: アクション、リソース、条件リファレンス (p. 284)」を参照
してください。
API Version 2016-09-29
276
Amazon CloudFront 開発者ガイド
リソース所有権について
リソース所有権について
AWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所
有します。具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエン
ティティ (ルートアカウント、IAM ユーザー、または IAM ロール) の AWS アカウントです。
以下の例では、このしくみを示しています。
• AWS アカウントの root アカウントの認証情報を使用してウェブディストリビューションを作成す
る場合、AWS アカウントはディストリビューションの所有者です。
• AWS アカウントに IAM ユーザーを作成し、ウェブディストリビューションを作成するためのアク
セス権限をそのユーザーに付与した場合、そのユーザーはウェブディストリビューションを作成で
きます。ユーザーを作成した AWS アカウントはディストリビューションを所有します。
• AWS アカウントに、ウェブディストリビューションを作成するためのアクセス権限を持つ IAM
ロールを作成する場合は、ロールを引き受けることのできるいずれのユーザーもウェブディストリ
ビューションを作成できます。ロールが属する AWS アカウントはディストリビューションを所有
します。
リソースへのアクセスの管理
アクセス権限のポリシーでは、誰が何にアクセスできるかを指定します。このセクションで
は、CloudFront のアクセス権限のポリシーを作成するために使用可能なオプションについて説明しま
す。IAM ポリシー構文の全般的な詳細および説明については、『IAM ユーザーガイド』の「AWS IAM
ポリシーリファレンス」を参照してください。
IAM アイデンティティにアタッチされたポリシーはアイデンティティベースのポリシー (IAM ポ
リシー) と呼ばれ、リソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれま
す。CloudFront では、アイデンティティベースのポリシー (IAM ポリシー) のみサポートされます。
トピック
• アイデンティティベースのポリシー (IAM ポリシー) (p. 277)
• リソースベースのポリシー (p. 278)
アイデンティティベースのポリシー (IAM ポリシー)
ポリシーを IAM アイデンティティにアタッチできます。たとえば、次の操作を実行できます。
• アカウントのユーザーまたはグループにアクセス権限ポリシーをアタッチする – アカウント管理
者は、特定のユーザーに関連付けられるアクセス権限ポリシーを使用して、そのユーザーにウェブ
ディストリビューションの作成を許可するアクセス権限を付与することができます。
• ロールにアクセス権限ポリシーをアタッチする (クロスアカウントアクセス権限を付与する) – 別の
AWS アカウントで作成されたユーザーに、CloudFront アクションを実行するアクセス権限を付与
できます。そのためには、IAM ロールにアクセス権限ポリシーをアタッチし、他のアカウントの
ユーザーがそのロールを引き受けられるようにします。次の例では、2 つの AWS アカウント (アカ
ウントA およびアカウント B) に対するこのしくみを説明します。
1. アカウント A の管理者は、IAM ロールを作成して、アカウント A が所有するリソースを作成ま
たはアクセスする権限を付与するアクセス権限ポリシーをロールにアタッチします。
2. アカウント A の管理者は、ロールに信頼ポリシーをアタッチします。信頼ポリシーは、ロールを
引き受けることのできるプリンシパルとしてアカウント B を識別します。
3. 次に、アカウント B の管理者は、ロールを引き受けるアクセス権限をアカウント B のユーザーま
たはグループに委任できます。これにより、アカウント B のユーザーはアカウント A でリソース
を作成したり、リソースにアクセスしたりできます。
API Version 2016-09-29
277
Amazon CloudFront 開発者ガイド
ポリシー要素の指定 : リソース、
アクション、効果、プリンシパル
別の AWS アカウントのユーザーにアクセス権限を委任する方法については、『IAM ユーザーガイ
ド』の「アクセス管理」を参照してください。
次のポリシー例では、ユーザーが CreateDistribution アクションを実行し、AWS アカウントの
ウェブディストリビューションをプログラムで作成できるようにします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateDistribution"
],
"Resource":"*"
}
]
}
CloudFront コンソールを使ってオペレーションを実行するために必要なアクセス権限の詳細につい
ては、「CloudFront コンソールを使用するために必要なアクセス権限 (p. 280)」を参照してくださ
い。CloudFront のアイデンティティへのポリシーのアタッチの詳細については、「CloudFront でア
イデンティティベースのポリシー (IAM ポリシー) を使用する (p. 279)」を参照してください。ユー
ザー、グループ、ロール、アクセス権限の詳細については、IAM ユーザーガイド の「アイデンティ
ティ (ユーザー、グループ、ロール)」を参照してください。
リソースベースのポリシー
Amazon S3 などの他のサービスでは、リソースへのアクセス権限ポリシーのアタッチがサポートされ
ています。たとえば、ポリシーを S3 バケットにアタッチして、そのバケットに対するアクセス権限
を管理できます。CloudFront では、リソースへのポリシーのアタッチはサポートされません。 ポリシー要素の指定 : リソース、アクション、効
果、プリンシパル
CloudFront には、各 CloudFront リソース (「CloudFront リソース用の ARN (p. 276)」を参照) で使
用できる API アクション (『Amazon CloudFront API リファレンス)』を参照) が含まれています。こ
れらのアクションの一部またはすべてを実行するアクセス権限を、ユーザーまたはフェデレーティッ
ドユーザーに付与できます。
以下は、基本的なポリシーの要素です。
• リソース – Amazon Resource Name (ARN) を使用して、ポリシーを適用するリソースを識別しま
す。詳細については、「CloudFront リソース用の ARN (p. 276)」を参照してください。
• アクション – アクションのキーワードを使用して、許可または拒否するリソースオペレーションを
識別します。たとえば、指定された Effect に応じて、cloudfront:CreateDistribution アク
セス権限は CloudFront CreateDistribution アクションを実行するユーザー権限をユーザーに許
可または拒否します。
• 効果 – ユーザーが指定されたリソースでアクションの実行を試みた場合の、許可または拒否の効果
を指定します。アクションへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否
されます。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセスが
許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。
• プリンシパル – アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされて
いるユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、権限 (リソース
API Version 2016-09-29
278
Amazon CloudFront 開発者ガイド
ポリシーでの条件の指定
ベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他の
エンティティを指定します。CloudFront では、リソースベースのポリシーはサポートされていませ
ん。
IAM ポリシー構文の詳細および説明については、『IAM ユーザーガイド』の「AWS IAM ポリシーリ
ファレンス」を参照してください。
すべての CloudFront API オペレーションとそれらが適用されるリソースのリストについては、
「CloudFront API のアクセス権限: アクション、リソース、条件リファレンス (p. 284)」を参照して
ください。
ポリシーでの条件の指定
アクセス権限を付与するとき、IAM ポリシー言語を使用して、いつポリシーが有効になるかを指定
できます。たとえば、特定の日付の後にのみ適用されるポリシーが必要になる場合があります。ポリ
シー言語での条件の指定の詳細については、『IAM ユーザーガイド』の「条件」を参照してくださ
い。
条件を表すには、あらかじめ定義された条件キーを使用します。CloudFront に固有の条件キーはあり
ません。ただし、AWS 全体の条件キーがあり、必要に応じて使用できます。AWS 全体を対象とする
すべてのキーのリストについては、『IAM ユーザーガイド』の「条件に利用可能なキー」を参照して
ください。
CloudFront でアイデンティティベースのポリシー
(IAM ポリシー) を使用する
このトピックでは、アカウント管理者が IAM ID (ユーザー、グループ、ロール) にアクセス権限ポリ
シーをアタッチし、それによって CloudFront リソースでオペレーションを実行するアクセス権限を付
与する方法を示す ID ベースのポリシーの例を示します。
Important
初めに、CloudFront リソースへのアクセスを管理するための基本概念とオプションについて
説明する概要トピックをお読みになることをお勧めします。詳細については、「CloudFront
リソースへのアクセス権限の管理の概要 (p. 276)」を参照してください。
トピック
• CloudFront コンソールを使用するために必要なアクセス権限 (p. 280)
• CloudFront での AWS 管理 (事前定義) ポリシー (p. 281)
• お客様が管理するポリシーの例 (p. 282)
以下に示しているのは、アクセス権限ポリシーです。Sid (ステートメント ID) はオプションです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAllCloudFrontPermissions",
"Effect": "Allow",
"Action": ["cloudfront:*"],
"Resource": "*"
API Version 2016-09-29
279
Amazon CloudFront 開発者ガイド
CloudFront コンソールを使用
するために必要なアクセス権限
}
]
}
ポリシーでは、すべての CloudFront オペレーションを実行するアクセス権限を付与します。これ
は、プログラムで CloudFront にアクセスするために十分なアクセス権限です。コンソールを使用し
て CloudFront にアクセスする場合は、「CloudFront コンソールを使用するために必要なアクセス権
限 (p. 280)」を参照してください。
各アクションを使用するアクセス権限を付与または拒否するために指定するアクションおよび ARN
のリストについては、「CloudFront API のアクセス権限: アクション、リソース、条件リファレン
ス (p. 284)」を参照してください。
CloudFront コンソールを使用するために必要なアク
セス権限
CloudFront コンソールへのフルアクセスを許可するには、次のアクセス権限ポリシーでアクセス権限
を付与します。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:*",
"cloudwatch:DescribeAlarms",
"cloudwatch:PutMetricAlarm",
"cloudwatch:GetMetricStatistics",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets",
"s3:PutBucketPolicy"
],
"Resource":"arn:aws:s3:::*"
}
]
}
アクセス権限が必要な理由は次のとおりです。
acm:ListCertificates
CloudFront コンソールを使用してウェブディストリビューションを作成および更新してい
て、ビューアと CloudFront 間、または CloudFront とオリジン間で HTTPS を要求するように
CloudFront を設定する必要があるときに、ACM 証明書のリストを表示できます。
API Version 2016-09-29
280
Amazon CloudFront 開発者ガイド
CloudFront での AWS 管理 (事前定義) ポリシー
CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。
cloudfront:*
すべての CloudFront アクションを実行できます。
cloudwatch:DescribeAlarms および cloudwatch:PutMetricAlarm
CloudFront コンソールで CloudWatch アラームを作成および表示できます。
「sns:ListSubscriptionsByTopic」および「sns:ListTopics」も参照してください。
CloudFront コンソールを使用していない場合、これらのアクセス権限は必要ありません。
cloudwatch:GetMetricStatistics
CloudFront コンソールで、CloudFront が CloudWatch メトリクスをレンダリングします。
CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。
elasticloadbalancing:DescribeLoadBalancers
ウェブディストリビューションを作成および更新するときに、使用できるオリジンのリスト
で、Elastic Load Balancing ロードバランサーのリストを表示できます。
CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。
iam:ListServerCertificates
CloudFront コンソールを使用してウェブディストリビューションを作成および更新してい
て、ビューワーと CloudFront 間、または CloudFront とオリジン間で HTTPS を要求するよう
CloudFront を設定するときに、IAM 証明書ストアで証明書のリストを表示できます。
CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。
s3:ListAllMyBuckets
ウェブおよび RTMP ディストリビューションを作成および更新するときに、次のオペレーション
を実行できます。
• 使用できるオリジンのリストで S3 バケットのリストを表示する
• アクセスログを保存できる S3 バケットのリストを表示する
CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。
S3:PutBucketPolicy
S3 バケットへのアクセスを制限するディストリビューションを作成または更新するときに、ユー
ザーがバケットポリシーを更新して、CloudFront オリジンのアクセス ID へのアクセス権を付与
できます。詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コン
テンツへのアクセスを制限する (p. 190)」を参照してください。
CloudFront コンソールを使用していない場合、このアクセス権限は必要ありません。
sns:ListSubscriptionsByTopic および sns:ListTopics
CloudFront コンソールの CloudWatch アラームを作成するときに、通知の SNS トピックを選択
できます。
CloudFront コンソールを使用していない場合、これらのアクセス権限は必要ありません。
waf:GetWebACL および waf:ListWebACLs
CloudFront コンソールで AWS WAF ウェブ ACL のリストを表示できます。
CloudFront コンソールを使用していない場合、これらのアクセス権限は必要ありません。
CloudFront での AWS 管理 (事前定義) ポリシー
AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的
ユースケースに対応します。これらの AWS 管理ポリシーは、一般的ユースケースに必要なアクセス
権限を付与することで、どの権限が必要なのかをユーザーが調査する必要をなくすことができます。
詳細については、『IAM ユーザーガイド』の「AWS 管理ポリシー」を参照してください。CloudFront
で、IAM は 2 つの管理ポリシーを提供します。
• CloudFrontFullAccess – CloudFront リソースへのフルアクセスを付与します。
API Version 2016-09-29
281
Amazon CloudFront 開発者ガイド
お客様が管理するポリシーの例
Important
CloudFront でアクセスログを作成および保存するには、追加のアクセス許可を付与する必
要があります。詳細については、「ロギングの設定およびログファイルへのアクセスに必
要なアクセス許可 (p. 291)」を参照してください。
• CloudFrontReadOnlyAccess – CloudFront リソースへの読み取り専用アクセスを付与します。
Note
IAM コンソールにサインインし、特定のポリシーを検索することで、これらのアクセス権限
ポリシーを確認することができます。独自のカスタム IAM ポリシーを作成して、CloudFront
API オペレーションにアクセス権限を付与することもできます。これらのカスタムポリシー
は、それらのアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。
お客様が管理するポリシーの例
独自のカスタム IAM ポリシーを作成して、CloudFront API アクションにアクセス権限を付与すること
もできます。これらのカスタムポリシーは、指定されたアクセス権限が必要な IAM ユーザーまたはグ
ループにアタッチできます。これらのポリシーは、CloudFront API、AWS SDK、または AWS CLI を
使用しているときに機能します。次の例では、いくつかの一般的ユースケースのアクセス権限を示し
ます。CloudFront へのフルアクセスをユーザーに許可するポリシーについては、「CloudFront コン
ソールを使用するために必要なアクセス権限 (p. 280)」を参照してください。
例
• 例 1: すべてのウェブディストリビューションへの読み取りアクセスを許可する (p. 282)
• 例 2: ウェブディストリビューションの作成、更新、および削除を許可する (p. 283)
• 例 3: 無効化の作成と一覧表示を許可する (p. 284)
例 1: すべてのウェブディストリビューションへの読み取りア
クセスを許可する
次のアクセス権限ポリシーでは、CloudFront コンソールですべてのウェブディストリビューションを
表示するユーザーアクセス権限を付与します。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:GetDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudfront:ListCloudFrontOriginAccessIdentities",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
API Version 2016-09-29
282
Amazon CloudFront 開発者ガイド
お客様が管理するポリシーの例
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
}
]
}
例 2: ウェブディストリビューションの作成、更新、および削
除を許可する
次のアクセス権限ポリシーでは、ユーザーが CloudFront コンソールを使用して、ウェブディストリ
ビューションを作成、更新、削除できるようにします。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:CreateDistribution",
"cloudfront:DeleteDistribution",
"cloudfront:GetDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudfront:UpdateDistribution",
"cloudfront:ListCloudFrontOriginAccessIdentities",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets",
"s3:PutBucketPolicy"
],
"Resource":"arn:aws:s3:::*"
}
]
}
cloudfront:ListCloudFrontOriginAccessIdentities アクセス権限では、ユーザーが既存の
オリジンアクセスアイデンティティに、Amazon S3バケットのオブジェクトにアクセスする権限を自
動的に付与するようにできます。また、ユーザーがオリジンアクセスアイデンティティを作成できる
ようにする場合は、cloudfront:CreateCloudFrontOriginAccessIdentity アクセス権限も許
可する必要があります。
API Version 2016-09-29
283
Amazon CloudFront 開発者ガイド
CloudFront API のアクセス権限リファレンス
例 3: 無効化の作成と一覧表示を許可する
次のアクセス権限ポリシーでは、ユーザーが無効化を作成し、一覧表示できるようにします。これに
は CloudFront ディストリビューションへの読み取りアクセスが含まれます。これは、最初にディスト
リビューション用の設定を表示して、無効化を作成および表示するためです。
{
"Version": "2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"acm:ListCertificates",
"cloudfront:GetDistribution",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudfront:ListCloudFrontOriginAccessIdentities",
"cloudfront:CreateInvalidation",
"cloudfront:GetInvalidation",
"cloudfront:ListInvalidations",
"elasticloadbalancing:DescribeLoadBalancers",
"iam:ListServerCertificates",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"waf:GetWebACL",
"waf:ListWebACLs"
],
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
}
]
}
CloudFront API のアクセス権限: アクション、リ
ソース、条件リファレンス
アクセスコントロール (p. 276) をセットアップし、IAM アイデンティティにアタッチできるアクセ
ス権限ポリシー (アイデンティティベースのポリシー) を作成するときは、以下のリストをリファレン
スとして使用できます。このは、各 CloudFront API オペレーション、アクションを実行するためのア
クセス権限を付与できる対応するアクション、およびアクセス権限を付与できる AWS リソースを示
しています。ポリシーの Action フィールドでアクションを指定し、ポリシーの Resource フィール
ドでリソースの値を指定します。
CloudFront ポリシーで AWS 全体の条件キーを使用して、条件を表現することができます。AWS 全体
を対象とするすべてのキーのリストについては、IAM ユーザーガイド の「利用可能なキー」を参照し
てください。
トピック
API Version 2016-09-29
284
Amazon CloudFront 開発者ガイド
ウェブディストリビューションで
アクションに必要なアクセス権限
• ウェブディストリビューションでアクションに必要なアクセス権限 (p. 285)
•
•
•
•
RTMP ディストリビューションでアクションに必要なアクセス権限 (p. 286)
無効化でアクションに必要なアクセス権限 (p. 287)
オリジンアクセスアイデンティティに必要なアクセス権限 (p. 287)
タグに対するアクションで必要なアクセス権限 (p. 288)
ウェブディストリビューションでアクションに必要
なアクセス権限
POST Distribution (CreateDistribution)
必要なアクセス権限 (API アクション):
• cloudfront:CreateDistribution
• acm:ListCertificates (CloudFront コンソールのみ)
• アクセスログを保存するように CloudFront を設定する場合のみ:
• s3:GetBucketAcl
• s3:PutBucketAcl
• バケットの S3 ACL は FULL_CONTROL を付与する必要があります
リソース:
• CloudFront: *
• ACM: *
• Amazon S3: アクセスログを保存するように CloudFront を設定する場合、指定したバケットへ
のアクセスをオプションで制限できます。
タグ付きの POST ディストリビューション (CreateDistributionWithTags)
必要なアクセス権限 (API アクション):
• cloudfront:CreateDistribution、cloudfront:TagResource
• acm:ListCertificates (CloudFront コンソールのみ)
• アクセスログを保存するように CloudFront を設定する場合のみ:
• s3:GetBucketAcl
• s3:PutBucketAcl
• バケットの S3 ACL は FULL_CONTROL を付与する必要があります
リソース:
• CloudFront: *
• ACM: *
• Amazon S3: アクセスログを保存するように CloudFront を設定する場合、指定したバケットへ
のアクセスをオプションで制限できます。
GET Distribution (GetDistribution)
必要なアクセス許可 (API アクション:)
cloudfront:GetDistribution、acm:ListCertificates (CloudFront コンソールのみ)
リソース: *
GET Distribution Config (GetDistributionConfig)
必要なアクセス許可 (API アクション:)
cloudfront:GetDistributionConfig、acm:ListCertificates (CloudFront コンソールの
み)
リソース: *
GET Distribution List (ListDistributions)
必要なアクセス権限 (API アクション): cloudfront:ListDistributions
API Version 2016-09-29
285
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションで
アクションに必要なアクセス権限
リソース: *
PUT Distribution Config (UpdateDistribution)
必要なアクセス権限 (API アクション):
• cloudfront:UpdateDistribution
• acm:ListCertificates (CloudFront コンソールのみ)
• アクセスログを保存するように CloudFront を設定する場合のみ:
• s3:GetBucketAcl
• s3:PutBucketAcl
• バケットの S3 ACL は FULL_CONTROL を付与する必要があります
リソース:
• CloudFront: *
• ACM: *
• Amazon S3: アクセスログを保存するように CloudFront を設定する場合、指定したバケットへ
のアクセスをオプションで制限できます。
DELETE Distribution (DeleteDistribution)
必要なアクセス権限 (API アクション): cloudfront:DeleteDistribution
リソース: *
RTMP ディストリビューションでアクションに必要
なアクセス権限
POST Streaming Distribution (CreateStreamingDistribution)
必要なアクセス権限 (API アクション): cloudfront:CreateStreamingDistribution
アクセスログを保存するように CloudFront を設定する場合のみ:
• s3:GetBucketAcl
• s3:PutBucketAcl
• バケットの S3 ACL は FULL_CONTROL を付与する必要があります
リソース: *
アクセスログを保存するように CloudFront を設定する場合、指定したバケットへのアクセスをオ
プションで制限できます。
タグ付きの POST ストリーミングディストリビューション (CreateStreamingDistributionWithTags)
必要なアクセス権限 (API アクション): cloudfront:CreateStreamingDistribution,
cloudfront:TagResource
アクセスログを保存するように CloudFront を設定する場合のみ:
• s3:GetBucketAcl
• s3:PutBucketAcl
• バケットの S3 ACL は FULL_CONTROL を付与する必要があります
リソース: *
アクセスログを保存するように CloudFront を設定する場合、指定したバケットへのアクセスをオ
プションで制限できます。
GET Streaming Distribution (GetStreamingDistribution)
必要なアクセス権限 (API アクション): cloudfront:GetStreamingDistribution
リソース: *
API Version 2016-09-29
286
Amazon CloudFront 開発者ガイド
無効化でアクションに必要なアクセス権限
GET Streaming Distribution Config (GetStreamingDistributionConfig)
必要なアクセス権限 (API アクション): cloudfront:GetStreamingDistributionConfig
リソース: *
GET Streaming Distribution List (ListStreamingDistributions)
必要なアクセス権限 (API アクション): cloudfront:ListStreamingDistributions
リソース: *
PUT Streaming Distribution Config (UpdateStreamingDistribution)
必要なアクセス権限 (API アクション): cloudfront:UpdateStreamingDistribution
アクセスログを保存するように CloudFront を設定する場合のみ:
• s3:GetBucketAcl
• s3:PutBucketAcl
• バケットの S3 ACL は FULL_CONTROL を付与する必要があります
リソース: *
アクセスログを保存するように CloudFront を設定する場合、指定したバケットへのアクセスをオ
プションで制限できます。
DELETE Streaming Distribution (DeleteStreamingDistribution)
必要なアクセス権限 (API アクション): cloudfront:DeleteDistribution
リソース: *
無効化でアクションに必要なアクセス権限
POST Invalidation (CreateInvalidation)
必要なアクセス権限 (API アクション): cloudfront:CreateInvalidation
リソース: *
GET Invalidation (GetInvalidation)
必要なアクセス権限 (API アクション): cloudfront:GetInvalidation
リソース: *
GET Invalidation List (ListInvalidations)
必要なアクセス権限 (API アクション): cloudfront:ListInvalidations
リソース: *
オリジンアクセスアイデンティティに必要なアクセ
ス権限
POST Origin Access Identity (CreateCloudFrontOriginAccessIdentity)
必要なアクセス権限 (API アクション):
cloudfront:CreateCloudFrontOriginAccessIdentity
リソース: *
GET Origin Access Identity (GetCloudFrontOriginAccessIdentity)
必要なアクセス権限 (API アクション): cloudfront:GetCloudFrontOriginAccessIdentity
リソース: *
API Version 2016-09-29
287
Amazon CloudFront 開発者ガイド
タグに対するアクションで必要なアクセス権限
GET Origin Access Identity Config (GetCloudFrontOriginAccessIdentityConfig)
必要なアクセス権限 (API アクション):
cloudfront:GetCloudFrontOriginAccessIdentityConfig
リソース: *
GET Origin Access Identity List (ListCloudFrontOriginAccessIdentities)
必要なアクセス権限 (API アクション): cloudfront:ListDistributions
リソース: *
PUT Origin Access Identity Config (UpdateCloudFrontOriginAccessIdentity)
必要なアクセス権限 (API アクション):
cloudfront:UpdateCloudFrontOriginAccessIdentity
リソース: *
DELETE Origin Access Identity (DeleteCloudFrontOriginAccessIdentity)
必要なアクセス権限 (API アクション):
cloudfront:DeleteCloudFrontOriginAccessIdentity
リソース: *
タグに対するアクションで必要なアクセス権限
POST タグリソース
必要なアクセス権限 (API アクション): cloudfront:TagResource
リソース: *
http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/tags-untag-resource.htmlPOST
タグ解除リソース
必要なアクセス権限 (API アクション): cloudfront:UntagResource
リソース: *
GET タグ
必要なアクセス権限 (API アクション): cloudfront:ListTagsForResource
リソース: *
API Version 2016-09-29
288
Amazon CloudFront 開発者ガイド
ログ記録のしくみ
アクセスログ
CloudFront が受信するすべてのユーザーリクエストに関する詳細情報を含めたログファイルが作成さ
れるように CloudFront を設定できます。これらのアクセスログは、ウェブディストリビューション
と RTMP ディストリビューションの両方で使用できます。ログ記録を有効にする場合、CloudFront で
ファイルを保存する Amazon S3 バケットも指定できます。
トピック
• ログ記録のしくみ (p. 289)
• アクセスログ用の Amazon S3 バケットの選択 (p. 290)
• ロギングの設定およびログファイルへのアクセスに必要なアクセス許可 (p. 291)
• ファイル名の形式 (p. 291)
• ログファイル配信のタイミング (p. 292)
• アクセスログの分析 (p. 292)
• ログ記録設定の編集 (p. 292)
• Amazon S3 バケットからのログファイルの削除 (p. 293)
• ログファイル形式 (p. 293)
• アクセスログの料金 (p. 302)
ログ記録のしくみ
次の図は、オブジェクトのリクエストに関する情報が CloudFront によってログ記録されるしくみを示
しています。
API Version 2016-09-29
289
Amazon CloudFront 開発者ガイド
アクセスログ用の Amazon S3 バケットの選択
オブジェクトのリクエストに関する情報が CloudFront によってログ記録されるしくみ
この図には、2 つのウェブサイト(A、B)と、対応する 2 つの CloudFront ディストリビュー
ションが示されています。ユーザーは、ディストリビューションに関連付けられている URL
を使用してオブジェクトをリクエストします。
CloudFront は、各リクエストを適切なエッジロケーションにルーティングします。
CloudFront は、各リクエストに関するデータを、そのディストリビューション専用のログ
ファイルに書き込みます。この例では、ディストリビューション A に関連するリクエストに
ついての情報がディストリビューション A 専用のログファイルに、ディストリビューション
B に関連するリクエストについての情報がディストリビューション B 専用のログファイルに
書き込まれます。
ログ記録を有効にした際に指定した Amazon S3 バケットに、ディストリビューションのロ
グファイルが CloudFront によって定期的に保存されます。後続のリクエストに関する情報
は、CloudFront によってディストリビューションの新しいログファイルに保存されます。
ログファイルには、1 つのリクエストの詳細が 1 エントリとして記録されます。ログファイル形式の
詳細については、「ログファイル形式 (p. 293)」を参照してください。
アクセスログ用の Amazon S3 バケットの選択
ディストリビューションのログ記録を有効にする際には、CloudFront でログファイルを保存する
Amazon S3 バケットを指定します。オリジンとして Amazon S3 を使用する場合は、同じバケットを
ログファイルに使用しないことをお勧めします。別々のバケットを使用する方が、メンテナンスが容
易になります。
複数のディストリビューションのログファイルを同じバケットに保存することもできます。ログ記録
を有効にする際には、ファイル名のプレフィックスをオプションで指定できます。これにより、どの
ログファイルがどのディストリビューションに関連しているか追跡できます。
一定の時間、お客様のコンテンツに対してユーザーアクセスがない場合、その時間のログファイルを
受け取ることはありません。
API Version 2016-09-29
290
Amazon CloudFront 開発者ガイド
ロギングの設定およびログファイル
へのアクセスに必要なアクセス許可
ロギングの設定およびログファイルへのアクセス
に必要なアクセス許可
AWS アカウントには、ログファイル用に指定するバケットに対して、次のアクセス許可が必要です。
• バケットの S3 アクセスコントロールリスト (ACL) は FULL_CONTROL を付与する必要があります。
バケット所有者のアカウントには、デフォルトでこの権限があります。権限がない場合、バケット
所有者はバケットの ACL を更新する必要があります。
• s3:GetBucketAcl
• s3:PutBucketAcl
ディストリビューションを作成または更新してロギングを有効にすると、CloudFront はこれらのアク
セス許可を使用してバケットの ACL を更新し、awsdatafeeds アカウントに FULL_CONTROL のアクセ
ス許可を付与します。awsdatafeeds アカウントはログファイルをバケットに書き込みます。アカウン
トに必要なアクセス許可がない場合、ディストリビューションの作成または更新は失敗します。
Note
awsdatafeeds アカウントのアクセス許可を削除するためにバケットの ACL を更新した場
合、CloudFront は S3 バケットにログを保存できなくなります。
バケットの ACL に加えて、各ログファイルの ACL があります。バケット所有者にはログファイルに
対する FULL_CONTROL アクセス権限があり、ディストリビューション所有者(バケット所有者と異な
る場合)にはアクセス権限がありません。awsdatafeeds アカウントには読み取りアクセス権限と書き
込みアクセス権限があります。
ログ記録を無効にした場合、CloudFront はバケットまたはログファイルの ACL を削除しません。こ
れはお客様自身で行うことができます。
ファイル名の形式
CloudFront が Amazon S3 バケットに保存する各ログファイルの名前には、次のファイル名形式が使
用されます。
bucket-name.s3.amazonaws.com/optional-prefix/distributionID.YYYY-MM-DD-HH.unique-ID.gz
日付と時刻は協定世界時 (UTC) です。
たとえば、バケット名が mylogs、プレフィックスが myprefix/、ディストリビューション ID が
EMLARXS9EXAMPLE であれば、ファイル名は次のようになります。
mylogs.s3.amazonaws.com/myprefix/EMLARXS9EXAMPLE.2014-11-14-20.RT4KCN4SGK9.gz
ディストリビューションのログ記録を有効にする際には、ファイル名のプレフィックスをオプション
で指定できます。これにより、どのログファイルがどのディストリビューションに関連しているか追
跡できます。ログファイルのプレフィックスの値を指定した場合、プレフィックスに / が含まれてい
なければ、CloudFront によって自動的に追加されます。値に / が含まれている場合、CloudFront によ
る追加は行われません。
ファイル名の末尾にある .gz は、CloudFront によってログファイルが gzip で圧縮されたことを示して
います。
API Version 2016-09-29
291
Amazon CloudFront 開発者ガイド
ログファイル配信のタイミング
ログファイル配信のタイミング
CloudFront は、ディストリビューションのアクセスログを 1 時間に最大で数回配信します。一般的
に、ログファイルには、一定期間内に CloudFront が受信したリクエストに関する情報が含まれていま
す。CloudFront は通常、その期間のログファイルを、ログに書き込まれたイベントの発生から 1 時間
以内に Amazon S3 バケットに配信します。ただし、ある期間のログファイルエントリの一部または
すべてが、最大で 24 時間遅れることもあります。ログエントリが遅れた場合、CloudFront はこれら
をログファイルに保存します。そのファイル名には、ファイルが配信された日時ではなく、リクエス
トが発生した期間の日時が含められます。
CloudFront は、ログファイルを作成する場合、ログファイルに対応する期間中にオブジェクトについ
てリクエストを受信したすべてのエッジロケーションから、ディストリビューションの情報を集約し
ます。
CloudFront は、ディストリビューションに関連付けられているオブジェクトに対して CloudFront が
受信したリクエストの数によって、1 つの期間に対して複数のファイルを保存することもできます。
CloudFront は、ロギングが有効化し 4 時間後ほどから確実にアクセスログを書き出し始めます。 この
時間以前にも少しのアクセスログを取得できる場合もあります。
Note
期間中にオブジェクトに対してユーザーによるリクエストがなければ、その期間のログファ
イルは配信されません。
アクセスログの分析
1 時間で複数のアクセスログが配信される可能性があるため、特定の期間に対して受信したすべての
ログファイルをまとめて 1 つのファイルにしておくことをお勧めします。これにより、その期間の
データをより素早く正確に分析することができます。
Important
ログは、すべてのリクエストを完全に課金するためのものではなく、コンテンツに対するリ
クエストの本質を把握するものとして使用することをお勧めします。CloudFront はベストエ
フォートベースでアクセスログを提供します。特定のリクエストのログエントリが、リクエ
ストが実際に処理されてからかなり後に配信されることも、(まれに)一切配信されないこ
ともあります。ログエントリがアクセスログに含められなかった場合、アクセスログ内のエ
ントリ数は、AWS の利用状況レポートおよび請求レポートに表示される利用状況と一致しま
せん。
アクセスログの分析に使用可能なツールについての推奨事項を含め、CloudFront アクセスログの詳細
については、「CloudFront ログ作成の使用 (p. 394)」を参照してください。
ログ記録設定の編集
ログ記録の有効化および無効化、ログを保存する Amazon S3 バケットの変更、ログファイルのプレ
フィックスの変更は、CloudFront コンソールまたは CloudFront API を使用して行うことができます。
ログ作成設定の変更は 12 時間以内に有効になります。
詳細については、次のトピックを参照してください。
• CloudFront コンソールを使用したウェブディストリビューションまたは RTMP ディストリビュー
ションの更新:「CloudFront ディストリビューションの一覧表示、詳細表示、および更新を行
う (p. 52)」
API Version 2016-09-29
292
Amazon CloudFront 開発者ガイド
Amazon S3 バケットからのログファイルの削除
• CloudFront API を使用したウェブディストリビューションの更新:『Amazon CloudFront API リファ
レンス』の「PUT Distribution Config」
• CloudFront API を使用した RTMP ディストリビューションの更新:『Amazon CloudFront API リ
ファレンス』の「PUT Streaming Distribution Config」
CloudFront API を使用してウェブディストリビューションのアクセスログ設定を変更するに
は、2009-04-02 以降のバージョンの API を使用する必要があります。CloudFront API を使用して
RTMP ディストリビューションのアクセスログ設定を変更するには、2009-05-01 以降のバージョンの
API を使用する必要があります。
Amazon S3 バケットからのログファイルの削除
CloudFront では、Amazon S3 バケットからの自動的なログファイル削除は行われません。Amazon
S3 バケットからログファイルを削除する方法については、次のトピックを参照してください。
• Amazon S3 コンソールを使用する場合:『Amazon Simple Storage Service コンソールユーザーガイ
ド』の「オブジェクトの削除」
• REST API を使用する場合:『Amazon Simple Storage Service API Reference』の「DELETE オブ
ジェクト」
• SOAP API を使用する場合:『Amazon Simple Storage Service API Reference』の「DeleteObject」
ログファイル形式
トピック
• ウェブディストリビューションのログファイル形式 (p. 294)
• RTMP ディストリビューションのログファイル形式 (p. 300)
ログファイルには、1 つのユーザーリクエストの詳細が 1 エントリとして記録されます。ウェブディ
ストリビューションと RTMP ディストリビューションのログファイルは同一ではありませんが、これ
らには、次に示す同じ特性があります。
• 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
<
API Version 2016-09-29
293
Amazon CloudFront 開発者ガイド
ウェブディストリビューションのログファイル形式
URL エンコード 文字
された値
%3E
>
%2522
"
%23
#
%25
%
%7B
{
%7D
}
%7C
|
%255C
\
%5E
^
%7E
~
%5B
[
%5D
]
%60
`
%27
'
%2520
スペース
ウェブディストリビューションのログファイル形式
ウェブディストリビューションのログファイルには以下のフィールドがこの順序で含まれます。
フィールド
番号
フィールド名
説明
1
date
イベントが発生した日付。yyyy-mm-dd 形式です(2015-06-30
など)。日付と時刻は協定世界時(UTC)です。
2
time
CloudFront サーバーがリクエストへの対応を完了した時刻
(UTC)(01:42:39 など)。
3
x-edgelocation
リクエストを処理したエッジロケーション。各エッジロケーショ
ンは、3 文字コードと、割り当てられた任意の数字で識別されます
(例: DFW3)。通常、この 3 文字コードは、エッジロケーション
の近くにある空港の、国際航空運送協会の空港コードに対応しま
す。(これらの略語は今後変更される可能性があります。)エッジ
ロケーションの一覧については、Amazon CloudFront の詳細情報
ページ(http://aws.amazon.com/cloudfront)を参照してください。
4
sc-bytes
CloudFront がリクエスト(ヘッダーを含む)に応答してビューア
に渡したデータの総バイト数(1045619 など)。
5
c-ip
リクエスト元のビューアの IP アドレス (192.0.2.183 または
2001:0db8:85a3:0000:0000:8a2e:0370:7334 など)。ビュー
アが HTTP プロキシまたはロードバランサーを使用してリクエス
API Version 2016-09-29
294
Amazon CloudFront 開発者ガイド
ウェブディストリビューションのログファイル形式
フィールド
番号
フィールド名
説明
トを送った場合、c-ip の値はプロキシまたはロードバランサーの
IP アドレスです。フィールド 20 で X-Forwarded-For も確認し
てください。
6
cs-method
DELETE、GET、HEAD、OPTIONS、PATCH、POST、PUT のいずれか
の HTTP アクセス方式。
7
cs(Host)
CloudFront ディストリビューションのドメイン名
(d111111abcdef8.cloudfront.net など)。
8
cs-uri-stem
パスおよびオブジェクトを識別する URI の部分(/images/
daily-ad.jpg など)。
9
sc-status
次のいずれかの値になります。
• HTTP ステータスコード(例: 200)。HTTP ステータスコードの
リストについては、RFC 2616「ハイパーテキスト転送プロトコ
ル - HTTP 1.1」のセクション 10「ステータスコードの定義」を
参照してください。詳細については、「CloudFront がオリジン
からの HTTP 4xx および 5xx ステータスコードを処理してキャッ
シュに保持する方法 (p. 182)」を参照してください。
• 000。CloudFront がリクエストに応答する前に、ビューアが接続
をクローズしたこと(ブラウザタブを閉じたなど)を示します。
10
cs(Referer)
リクエスト元のドメインの名前。一般的なリファラーとして、検
索エンジン、オブジェクトに直接リンクされた他のウェブサイト、
ユーザー自身のウェブサイトなどがあります。
11
cs(UserAgent)
リクエスト内の User-Agent ヘッダーの値。User-Agent ヘッ
ダーでリクエスト元(リクエスト元のデバイスとブラウザーのタイ
プなど)が識別されます。リクエスト元が検索エンジンの場合は、
どの検索エンジンかも識別されます。詳細については、「ユーザー
エージェントヘッダー (p. 178)」を参照してください。
12
cs-uri-query
URI のクエリ文字列の部分(ある場合)。URI にクエリ文字列が含
まれないとき、cs-uri-query の値はハイフン(-)です。
詳細については、「クエリ文字列パラメーターに基づいてキャッ
シュするように CloudFront を設定する (p. 123)」を参照してくだ
さい。
13
cs(Cookie)
名前値のペアおよび関連属性を含む、リクエスト内の Cookie ヘッ
ダー。Cookie のログ作成を有効にした場合、CloudFront は、
お客様がどの Cookie をオリジンに転送するように選択したか
(none、all、または Cookie 名のホワイトリスト)に関係なく、す
べての要求内の Cookie をログに記録します。リクエストに Cookie
ヘッダーが含まれないとき、cs(Cookie) の値はハイフン(-)で
す。
Cookie の詳細については、「Cookie に基づいてオブジェクトを
キャッシュするように CloudFront を設定する (p. 126)」を参照し
てください。
API Version 2016-09-29
295
Amazon CloudFront 開発者ガイド
ウェブディストリビューションのログファイル形式
フィールド
番号
フィールド名
説明
14
x-edgeresult-type
最後のバイトがエッジロケーションから渡されたとき、CloudFront
がどのようにレスポンスを分類したかです。場合によって結果
タイプは、CloudFront がレスポンスを送る準備ができたとき
と、CloudFront がレスポンスを送り終わったときとで、変わるこ
とがあります。たとえば、HTTP ストリーミングで、CloudFront が
エッジキャッシュ内にセグメントを見つけたとします。x-edgeresponse-result-type の値(CloudFront がリクエストに応答
し始める直前の結果タイプ)は Hit です。しかし、CloudFront が
セグメント全体を返す前にユーザーがビューアを閉じた場合、xedge-result-type の値(最終的な結果タイプ)は Error に変
わります。
以下に示しているのは、可能な値です。
• Hit – CloudFront がオブジェクトをエッジキャッシュからビュー
アに渡しました。
オリジンからのレスポンスに Cache-Control: no-cache ヘッ
ダーが含まれていても CloudFront が結果タイプを Hit と分類す
る状況の詳細については、「同じオブジェクト(トラフィックス
パイク)の同時リクエスト (p. 178)」を参照してください。
• RefreshHit – CloudFront はエッジキャッシュ内にオブジェク
トを見つけましたが、その有効期限が切れていたので、最新バー
ジョンを取得するために、CloudFront はオリジンに問い合わせ
て、キャッシャ内にそのオブジェクトの最新バージョンがあるか
どうかを確認しました。
• Miss – エッジキャッシュ内のオブジェクトがリクエストに対し
て適切ではなかったため、CloudFront はリクエストをオリジン
サーバーに転送して結果をビューアに返しました。
• LimitExceeded – CloudFront の制限を超えたために、リクエス
トが拒否されました。
• CapacityExceeded – CloudFront エッジサーバーが一時的にリ
クエストに応答できなかったため、CloudFront から HTTP 503
ステータスコード (Service Unavailable) が返されました。
• Error – 通常、これは、リクエストが結果的にクライアントエ
ラー(sc-status が 4xx)またはサーバーエラー(sc-status
が 5xx)になったことを意味します。
sc-status が 403 であって、お客様のコンテンツのディストリ
ビューションを地理的に制限するように CloudFront を設定して
いる場合、制限されている地理的な場所からリクエストが送られ
た可能性があります。地域制限の詳細については、「コンテンツ
の地理的ディストリビューションの制限 (p. 90)」を参照してく
ださい。
x-edge-result-type の値が Error であり、x-edgeresponse-result-type の値が Error でない場合、ダウン
ロードが完了する前にクライアントが切断されました。
15
x-edgerequest-id
要求を一意に識別する暗号化された文字列。
API Version 2016-09-29
296
Amazon CloudFront 開発者ガイド
ウェブディストリビューションのログファイル形式
フィールド
番号
フィールド名
説明
16
x-hostheader
ビューアによってこのリクエストの Host ヘッダーに追加された
値。これはリクエストのドメイン名です。
• http://d111111abcdef8.cloudfront.net/logo.png のよ
うな CloudFront のドメイン名をオブジェクト URLs にお使いの
場合は、x-host-header のフィールドにはこのドメイン名が含
まれます。
• http://example.com/logo.png のような代替ドメイン名をオブジェ
クト URLs にお使いの場合は、x-host-header のフィールドに
は example.com のようにこの代替ドメイン名が含まれます。
代替ドメイン名を使用するには、その名前をお客様のディストリ
ビューションに追加する必要があります。詳細については、「代
替ドメイン名(CNAME)を使用する (p. 53)」を参照してくださ
い。
代替ドメイン名を使っている場合には、フィールド 7 の
cs(Host) で、ユーザーのディストリビューションに関連するド
メイン名を確認します。
17
cs-protocol
ビューアによってリクエストに指定されたプロトコル(http また
は https)。
18
cs-bytes
ビューアによってリクエストに組み込まれたデータのバイト数(ク
ライアントからサーバーへの送信時のバイト数。ヘッダーを含
む)。
19
time-taken
サーバーで測定した、CloudFront エッジサーバーがビューアのリ
クエストを受け取ってから CloudFront がレスポンスの最終バイト
をエッジサーバーの出力キューに書き込むまでの秒数 (0.002 など
1000 分の 1 秒単位)。ビューアから見た場合、オブジェクト全体を
取得するのにかかる合計時間は、ネットワークの遅延と TCP バッ
ファリングにより、この値よりも長くなります。
20
x-forwardedfor
ビューアがリクエストを送るのに HTTP プロキシやロードバラン
サーを使った場合、フィールド 5 の c-ip の値は、プロキシある
いはロードバランサーの IP アドレスとなります。 その場合、xforwarded-for はリクエスト元のビューアの IP アドレスです。
ビューアが HTTP プロキシまたはロードバランサーを使用しな
かった場合、x-forwarded-for の値はハイフン(-)です。
Note
X-Forwarded-For ヘッダーには、必要に応じて
IPv4 アドレス (192.0.2.44 など) および IPv6 アドレス
(2001:0db8:85a3:0000:0000:8a2e:0370:7334 など) が含ま
れます。
API Version 2016-09-29
297
Amazon CloudFront 開発者ガイド
ウェブディストリビューションのログファイル形式
フィールド
番号
フィールド名
説明
21
ssl-protocol
フィールド 17 のcs-protocol が https の場合、SSL は、リクエ
ストと回答の送受信についてクライアントと CloudFront が交渉し
たプロトコルになります。 cs-protocol が http の場合、sslprotocol の値はハイフン(-)です。
以下に示しているのは、可能な値です。
• SSLv3
• TLSv1
• TLSv1.1
• TLSv1.2
22
ssl-cipher
フィールド 17 のcs-protocol が https の場合、SSL は、リクエ
ストと回答の暗号化についてクライアントと CloudFront が交渉し
た暗号になります。 cs-protocol が http の場合、ssl-cipher
の値はハイフン(-)です。
以下に示しているのは、可能な値です。
• ECDHE-RSA-AES128-GCM-SHA256
• ECDHE-RSA-AES128-SHA256
• ECDHE-RSA-AES128-SHA
• ECDHE-RSA-AES256-GCM-SHA384
• ECDHE-RSA-AES256-SHA384
• ECDHE-RSA-AES256-SHA
• AES128-GCM-SHA256
• AES256-GCM-SHA384
• AES128-SHA256
• AES256-SHA
• AES128-SHA
• DES-CBC3-SHA
• RC4-MD5
API Version 2016-09-29
298
Amazon CloudFront 開発者ガイド
ウェブディストリビューションのログファイル形式
フィールド
番号
フィールド名
説明
23
x-edgeresponseresult-type
CloudFront がレスポンスをビューアに返す直前に行った分類で
す。フィールド 14 で x-edge-result-type も確認してくださ
い。
以下に示しているのは、可能な値です。
• Hit – CloudFront がオブジェクトをエッジキャッシュからビュー
アに渡しました。
• RefreshHit – CloudFront はエッジキャッシュ内にオブ
ジェクトを見つけましたが、その有効期限が切れていたの
で、CloudFront はオリジンに問い合わせて、キャッシャ内にそ
のオブジェクトの最新バージョンがあるかどうかを確認しまし
た。
• Miss – エッジキャッシュ内のオブジェクトがリクエストに対し
て適切ではなかったため、CloudFront はリクエストをオリジン
サーバーに転送して結果をビューアに返しました。
• LimitExceeded – CloudFront の制限を超えたために、リクエス
トが拒否されました。
• CapacityExceeded – オブジェクトを渡すように要求され
たときにエッジロケーションに十分な容量がなかったため
に、CloudFront が 503 エラーを返しました。
• Error – 通常、これは、リクエストが結果的にクライアントエ
ラー(sc-status が 4xx)またはサーバーエラー(sc-status
が 5xx)になったことを意味します。
sc-status が 403 であって、お客様のコンテンツのディストリ
ビューションを地理的に制限するように CloudFront を設定して
いる場合、制限されている地理的な場所からリクエストが送られ
た可能性があります。地域制限の詳細については、「コンテンツ
の地理的ディストリビューションの制限 (p. 90)」を参照してく
ださい。
x-edge-result-type の値が Error であり、x-edgeresponse-result-type の値が Error でない場合、ダウン
ロードが完了する前にクライアントが切断されました。
24
cs-protocolversion
ビューワーがリクエストで指定した HTTP バージョン。指定でき
る値には、HTTP/0.9、HTTP/1.0、HTTP/1.1、および HTTP/2.0
などがあります。
Note
URL およびクエリ文字列内の疑問符(?)はログに含まれません。
ウェブディストリビューションのログファイルの例を以下に示します。
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uristem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edgeresult-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken
x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type csprotocol-version
API Version 2016-09-29
299
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションのログファイル形式
2014-05-23 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(compatible;
%20MSIE%205.0b1;%20Mac_PowerPC) - zip=98101 RefreshHit
MRVMF7KydIvxMWfJIglgwHQwZsbG2IhRJ07sn9AkKUFSHS9EXAMPLE==
d111111abcdef8.cloudfront.net http - 0.001 - - - RefreshHit HTTP/1.1
2014-05-23 01:13:12 LAX1 2390282 192.0.2.202 GET
d111111abcdef8.cloudfront.net /soundtrack/happy.mp3 304
www.unknownsingers.com Mozilla/4.0%20(compatible;%20MSIE%207.0;
%20Windows%20NT%205.1) a=b&c=d zip=50158 Hit xGN7KWpVEmB9Dp7ctcVFQC4EnrcOcEKS3QyAez--06dV7TEXAMPLE== d111111abcdef8.cloudfront.net http - 0.002 - - Hit HTTP/1.1
RTMP ディストリビューションのログファイル形式
RTMP アクセスログの各レコードは再生イベントを表します(接続、再生、一時停止、停止、切断な
ど)。結果として、CloudFront は、ビューアがビデオを視聴するたびに複数のログレコードを生成し
ます。同じストリーム ID に由来するログレコードを関連付けるには、x-sid フィールドを使用しま
す。
Note
一部のフィールドはすべてのイベントで値を持ち、一部のフィールドは
Play、Stop、Pause、Unpause、Seek イベントのみで値を持ちます。通常、ログファイルで
フィールドの値がハイフン(-)である場合、そのフィールドは該当するイベントと無関係で
す。
以下の表に、イベントのタイプに関係なく、RTMP ディストリビューションのログファイルの各レ
コードに表示されるフィールドを示します。これらのフィールドは、表に示された順序でログに表示
されます。
フィールド番
号
フィールド名
説明
1
date
イベントが発生した日付。yyyy-mm-dd 形式です(例:
2014-05-23)。日付と時刻は協定世界時(UTC)です。
2
time
サーバーがリクエストを受け付けた時刻(UTC)(例:
01:42:39)。
3
x-edgelocation
再生イベントが発生したエッジロケーション。各エッジロケーショ
ンは、3 文字コードと、割り当てられた任意の数字で識別されます
(例: DFW3)。通常、この 3 文字コードは、エッジロケーション
の近くにある空港の、国際航空運送協会の空港コードに対応しま
す。(これらの略語は今後変更される可能性があります。)エッジ
ロケーションの一覧については、Amazon CloudFront の詳細情報
ページ(http://aws.amazon.com/cloudfront)を参照してください。
4
c-ip
クライアントの IP(例: 192.0.2.183)。
5
x-event
イベントタイプ。接続、切断、再生、停止、一時停止、再開、また
はシークイベントのいずれかです。
6
sc-bytes
イベントの時間までにサーバーからクライアントに送信されたバイ
ト数の合計。
7
x-cf-status
イベントのステータスを示すコード。現在、このフィールドの唯
一の値は "OK" です。今後の新しい機能によって新しいステータス
コードが必要になる可能性があります。
API Version 2016-09-29
300
Amazon CloudFront 開発者ガイド
RTMP ディストリビューションのログファイル形式
フィールド番
号
フィールド名
説明
8
x-cf-client-id
クライアントを区別するために使用できる Opaque 型の文字列識別
子。.
この値は接続ごとに一意です。
9
cs-uri-stem
アプリケーションおよびアプリケーションインスタン
スを含む、URI のステム部分。これは、FMS 接続文
字列と呼ばれることもあります。たとえば、rtmp://
shqshne4jdp4b6.cloudfront.net/cfx/st と指定します。
10
cs-uri-query
接続文字列に含まれる URI のクエリ文字列部分。
11
c-referrer
リファラーの URI。
12
x-page-url
SWF のリンク元ページの URL。
13
c-user-agent
リクエスト内の User-Agent ヘッダーの値。User-Agent ヘッ
ダーは、リクエストを送信したデバイスのタイプを識別します。詳
細については、「ユーザーエージェントヘッダー (p. 178)」を参照
してください。
以下のフィールドは通常、Play、Stop、Pause、Unpause、Seek イベントのみで値を持ちます。その
他のイベントの場合、フィールドの値は単一のハイフン(-)になります。これらのフィールドは、前
の表で示したフィールドの後に、ここに示した順番でログに表示されます。
フィールド
説明
x-sname
ストリーム名。
x-sname-query
ストリームのクエリ文字列(ある場合)。
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-cfclient-id cs-uri-stem cs-uri-query c-referrer x-page-url c-user-agent xsname x-sname-query 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.longtailvideo.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://
API Version 2016-09-29
301
Amazon CloudFront 開発者ガイド
アクセスログの料金
www.longtailvideo.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.longtailvideo.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.longtailvideo.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.longtailvideo.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.longtailvideo.com/support/jw-player-setup-wizard?example=204
LNX
%2010,0,32,18
-
アクセスログの料金
アクセスログの作成は、CloudFront のオプション機能です。アクセスログの作成を有効にしても追加
料金はかかりません。ただし、Amazon S3 でのファイルの保存とアクセスについて通常の Amazon
S3 料金が発生します(ファイルの削除はいつでもできます)。CloudFront の料金の詳細について
は、「CloudFront レポート (p. 16)」を参照してください。
API Version 2016-09-29
302
Amazon CloudFront 開発者ガイド
ディストリビューションのメトリックスの表示
CloudWatch を使用した CloudFront
アクティビティの監視
Amazon CloudFront を Amazon CloudWatch メトリクスと統合して、ウェブサイトまたはアプリケー
ションを監視することができます。CloudFront では現在、6 種類のメトリクスを無料で提供してお
り、これらのメトリクスは CloudWatch の制限にカウントされません。メトリクスを表示する際に
は、過去 2 週間以内で 1 分間以上の期間を指定できます。
ディストリビューションのメトリックスの表示
ディストリビューションのメトリクスを CloudWatch コンソールに表示するには
1.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
2.
3.
ナビゲーションペインで、[Monitoring and Alarms] をクリックします。
[CloudFront Metrics and Alarms From CloudWatch] ペインで、次の値を指定します。
From と To
CloudWatch メトリクスを表示する日時の範囲を選択します。
詳細度
データポイントの間隔(1 分間に 1 個、1 時間に 1 個など)を指定します。選択した期間
は、利用可能な詳細度に影響することに注意してください。たとえば、2 週間のデータを表
示することを選択した場合、最も細かい詳細度は 1 時間です。24 時間のデータを表示するこ
とを選択した場合、最も細かい詳細度は 1 分です。
4.
Web Distribution
メトリクスを表示する対象のディストリビューションを選択します。
指定した設定に基づいてグラフを更新するには、[Update Graph] をクリックします。
通知の受信
CloudFront メトリクスに基づいて Amazon Simple Notification Service (Amazon SNS) 通知を
受信するには
1.
[CloudFront Metrics and Alarms From CloudWatch] ページで、既存のアラームのリストを展開し
て、作成しようとするアラームが既に存在していないことを確認します。
API Version 2016-09-29
303
Amazon CloudFront 開発者ガイド
CSV 形式でのデータのダウンロード
2.
[Create Alarm] をクリックします。
3.
[Create Alarm] ダイアログボックスで、以下の値を指定します。
メトリクス
アラームを作成する対象のメトリクスを選択します。
配信
アラームを作成する対象の CloudFront ディストリビューションを選択します。
アラーム名
アラームの名前を入力します。
通知の送信先
このメトリクスのステータスによってアラームがトリガーされた場合に、通知を送信する対
象の既存の Amazon SNS トピックを選択します。
Whenever metric operator value
CloudWatch がアラームをトリガーして指定されたメールリストに通知を送信する条件を指
定します。たとえば、5xx エラー率が 1% を超えたときに通知を受信するには、次のように
指定します。
Whenever Average of 5xxErrorRate > 1
value の値を指定する際には、次の点に注意します。
• 区切り文字を使用せず、整数のみを入力します。たとえば、1,000 を指定する場合は、
「1000」と入力します。
• 4xx、5xx、および合計エラー発生率の場合、指定する値はパーセンテージです。
• リクエスト、ダウンロードされたバイト数、アップロードされたバイト数の場合、指定す
る値は特定の単位(1000000000 バイトなど)です。
For at least x consecutive periods of time period
メトリクスが基準を満たした、指定した長さの期間が連続して何回続いたとき
に、CloudWatch から通知を送信するかを指定します。値を選択する際には、一時的な問題
についても頻繁に通知が生成されるような値と、重要な問題に関する通知の生成が遅れるよ
うな値との間で、適切なバランスを見つける必要があります。
4.
新しい Amazon SNS トピックを作成した場合、[Create] をクリックすると、新しいトピックに関
する情報が Amazon SNS からメールで届きます。メールの指示に従います。
CSV 形式でのデータのダウンロード
CloudWatch メトリクスレポートは CSV 形式でダウンロードできます。このセクションでは、レポー
トをダウンロードする方法と、レポートの値について説明します。
CloudWatch メトリクスレポートを CSV 形式でダウンロードするには
1.
CloudWatch メトリクスレポートを表示しているときに、[CSV] をクリックします。
2.
[Opening file name] ダイアログボックスで、ファイルを開くか保存するかを選択します。
レポートに関する情報
レポートの先頭数行には次の情報が含まれます。
バージョン
CloudFront レポート機能のバージョン。
レポート
レポートの名前。
API Version 2016-09-29
304
Amazon CloudFront 開発者ガイド
CloudWatch メトリクスレポートのデータ
DistributionID
レポートを実行した対象のディストリビューションの ID。
StartDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。
EndDateUTC
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。
GeneratedTimeUTC
協定世界時 (UTC) によるレポートを実行した日時。
詳細度
レポート内の各行の期間(ONE_MINUTE など)。
CloudWatch メトリクスレポートのデータ
レポートには次の値が含まれています。
DistributionID
レポートを実行した対象のディストリビューションの ID。
FriendlyName
ディストリビューションの代替ドメイン名(CNAME)(存在する場合)。ディストリビューショ
ンに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含
まれます。
TimeBucket
協定世界時 (UTC) によるデータに該当する時間または日付。
リクエスト
すべての HTTP ステータスコード(200、404 など)およびすべてのメソッド
(GET、HEAD、POST など)のリクエストの総数が表示されます
BytesDownloaded
期間中に指定したディストリビューションについてビューアがダウンロードしたバイト数。
BytesUploaded
期間中に指定したディストリビューションについてビューアがオリジンにアップロードしたバイ
ト数。
TotalErrorRatePct
期間中に指定したディストリビューションについて、HTTP ステータスコードが 4xx または 5xx
エラーであったリクエスト。
4xxErrorRatePct
期間中に指定したディストリビューションについて、HTTP ステータスコードが 4xx エラーで
あったリクエスト。
5xxErrorRatePct
期間中に指定したディストリビューションについて、HTTP ステータスコードが 5xx エラーで
あったリクエスト。
Amazon CloudFront Metrics
The AWS/CloudFront namespace includes the following metrics.
Note
Only one statistic, Average or Sum, is applicable for each metric. However, all statistics are
available through the console, API, and AWS Command Line Interface. In the following table,
each metric specifies the statistic that is applicable to that metric.
API Version 2016-09-29
305
Amazon CloudFront 開発者ガイド
Dimensions for CloudFront Metrics
Metric
Description
Requests
The number of requests for all HTTP methods and for
both HTTP and HTTPS requests.
Valid Statistics: Sum
Units: Count
BytesDownloaded
The number of bytes downloaded by viewers for GET,
HEAD, and OPTIONS requests.
Valid Statistics: Sum
Units: Bytes
BytesUploaded
The number of bytes uploaded to your origin with
CloudFront using POST and PUT requests.
Valid Statistics: Sum
Units: Bytes
TotalErrorRate
The percentage of all requests for which the HTTP
status code is 4xx or 5xx.
Valid Statistics: Average
Units: Percent
4xxErrorRate
The percentage of all requests for which the HTTP
status code is 4xx.
Valid Statistics: Average
Units: Percent
5xxErrorRate
The percentage of all requests for which the HTTP
status code is 5xx.
Valid Statistics: Average
Units: Percent
Dimensions for CloudFront Metrics
CloudFront metrics use the CloudFront namespace and provide metrics for two dimensions:
Dimension
Description
DistributionId
The CloudFront ID of the distribution for which you
want to display metrics.
Region
The region for which you want to display metrics. This
value must be Global. The Region dimension is
different from the region in which CloudFront metrics
are stored, which is 米国東部(バージニア北部).
API Version 2016-09-29
306
Amazon CloudFront 開発者ガイド
CloudTrail ログファイル内の CloudFront 情報
AWS CloudTrail を使用して
CloudFront API に送信されたリクエ
ストをキャプチャする
CloudFront は、IAM ユーザーも含めて、ご利用の AWS アカウントにより CloudFront API に送信され
るあらゆるリクエストに関する情報をキャプチャする AWS サービスである CloudTrail と統合されて
います。CloudTrail はこのようなリクエストのログファイルを定期的に指定の Amazon S3 バケットに
保存します。CloudTrail は、CloudFront コンソール、CloudFront API、AWS SDK、CloudFront CLI、
別のサービス(例: AWS CloudFormation)など、何を利用してリクエストが作成されたかを問わず、
すべてのリクエストに関する情報をキャプチャします。
CloudTrail ログファイルの情報を使用して、CloudFront に対して実行されたリクエストの種類、リク
エストの実行元 IP アドレス、実行者、実行日時などを判断できます。CloudTrail の詳細(設定して有
効にする方法など)については、『AWS CloudTrail User Guide』を参照してください。
Note
CloudFront はグローバルサービスです。CloudFront ログの CloudTrail リクエストを表示す
るには、既存の証跡を更新してグローバル サービスを含める必要があります。詳細について
は、AWS CloudTrail User Guide の「Updating a Trail」と「About Global Service Events」を
参照してください。
トピック
• CloudTrail ログファイル内の CloudFront 情報 (p. 307)
• CloudFront ログファイルエントリの概要 (p. 308)
CloudTrail ログファイル内の CloudFront 情報
CloudTrail を有効にすると、CloudTrail がサポートするあらゆる AWS サービスに対して実行される
あらゆるリクエストが CloudTrail によってキャプチャされます(サポートされるサービスの一覧は、
『AWS CloudTrail User Guide』の「サポートされるサービス」をご覧ください)。ログファイルは
サービス別に整理も並べ替えもされていません。各ログファイルは複数のサービスのレコードを含む
可能性があります。新しいログファイルを作成する時期は、CloudTrail によって決定されます。
Note
CloudTrail はすべての CloudFront API アクションをサポートします。
API Version 2016-09-29
307
Amazon CloudFront 開発者ガイド
CloudFront ログファイルエントリの概要
各ログファイルエントリには、リクエストの実行者に関する情報が含まれます。ログファイルの
ユーザー ID 情報は、リクエストが、ルートまたは IAM ユーザーの認証情報を使用して送信された
か、ロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して送信され
たか、あるいは別の AWS サービスによって送信されたかを確認するのに役立ちます。詳細について
は、AWS CloudTrail User Guide の「userIdentity 要素」を参照してください。
ログファイルは、任意の期間、保存できます。また、Amazon S3 ライフサイクルのルールを定義し
て、自動的にログファイルをアーカイブまたは削除することもできます。
デフォルトでは Amazon S3 のサーバー側の暗号化(SSE)を使用して、ログファイルが暗号化され
ます。
ログファイルの配信時にすぐにアクションを実行する場合、新しいログファイルの配信時に
CloudTrail により Amazon SNS 通知を発行することを選択できます。詳細については、『AWS
CloudTrail User Guide』の「Amazon SNS 通知の設定」を参照してください。
また、複数の AWS リージョンと複数の AWS アカウントのログファイルを 1 つの Amazon SNS バ
ケットに集約することもできます。詳細については、『AWS CloudTrail User Guide』の「CloudTrail
ログファイルの単一の Amazon S3 バケットへの集約」を参照してください。
CloudFront ログファイルエントリの概要
JSON 形式の各 CloudTrail ログファイルには、1 つ以上のログエントリを含めることができます。各
ログエントリは任意の送信元からの単一のリクエストを表し、パラメーターやアクションの日時な
ど、リクエストされたアクションに関する情報を含みます。ログエントリは、特定の順序で生成され
るわけではなく、API 呼び出しのスタックトレース順に並んではいません。
eventName 要素は、発生したアクションと、そのアクションを実行するときに使用された API バー
ジョンを特定します。たとえば、以下の eventName 値は、ウェブディストリビューションが更新さ
れ、そのアクションを実行するときに 2014-01-31 という API バージョンが使用されたことを示して
います。
UpdateDistribution2014_01_31
以下の例は、5 つのアクションを表す CloudTrail ログエントリを示しています。
• ウェブディストリビューション設定の更新。eventName の値は UpdateDistribution です。
• 現在のアカウントに関連付けられているウェブディストリビューションの一覧取得。eventName の
値は ListDistributions です。
• 特定のウェブディストリビューションの設定の取得。eventName の値は GetDistribution で
す。
• 無効化バッチリクエストの作成。eventName の値は CreateInvalidation です。
• 現在のアカウントに関連付けられているオリジンアクセス ID の一覧取得。eventName の値は
ListCloudFrontOriginAccessIdentities です。
{
"Records": [{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:00:32Z",
API Version 2016-09-29
308
Amazon CloudFront 開発者ガイド
CloudFront ログファイルエントリの概要
"eventName": "UpdateDistribution2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"id": "EDFDVBD6EXAMPLE",
"ifMatch": "E9LHASXEXAMPLE",
"distributionConfig": {
"restrictions": {
"geoRestriction": {
"quantity": 0,
"restrictionType": "none"
}
},
"customErrorResponses": {
"quantity": 0
},
"defaultRootObject": "index.html",
"aliases": {
"quantity": 1,
"items": ["example.com"]
},
"logging": {
"bucket": "",
"enabled": false,
"prefix": "",
"includeCookies": false
},
"viewerCertificate": {
"iAMCertificateId": "A1B2C3D4E5F6G7EXAMPLE",
"sSLSupportMethod": "sni-only"
},
"callerReference": "2014-05-06 64832",
"defaultCacheBehavior": {
"targetOriginId": "Images",
"allowedMethods": {
"items": ["GET",
"HEAD"],
"quantity": 2
},
"forwardedValues": {
"cookies": {
"forward": "none"
},
"queryString": false
},
"minTTL": 300,
"trustedSigners": {
"enabled": false,
"quantity": 0
},
"viewerProtocolPolicy": "redirect-to-https",
"smoothStreaming": false
},
"origins": {
"items": [{
"customOriginConfig": {
"hTTPSPort": 443,
"originProtocolPolicy": "http-only",
"hTTPPort": 80
API Version 2016-09-29
309
Amazon CloudFront 開発者ガイド
CloudFront ログファイルエントリの概要
},
"domainName": "myawsbucket.s3-website-useast-1.amazonaws.com",
"id": "Web page origin"
},
{
"customOriginConfig": {
"hTTPSPort": 443,
"originProtocolPolicy": "http-only",
"hTTPPort": 80
},
"domainName": "myotherawsbucket.s3-website-uswest-2.amazonaws.com",
"id": "Images"
}],
"quantity": 2
},
"enabled": true,
"cacheBehaviors": {
"allowedMethods": {
"items": ["GET",
"HEAD"],
"quantity": 2
},
"trustedSigners": {
"enabled": false,
"quantity": 0
},
"targetOriginId": "Web page origin",
"smoothStreaming": false,
"viewerProtocolPolicy": "redirect-to-https",
"minTTL": 300,
"forwardedValues": {
"cookies": {
"forward": "none"
},
"queryString": false
},
"pathPattern": "*.html"
}],
"quantity": 1
},
"priceClass": "PriceClass_All",
"comment": "Added an origin and a cache behavior"
}
},
"responseElements": {
"eTag": "E2QWRUHEXAMPLE",
"distribution": {
"domainName": "d111111abcdef8.cloudfront.net",
"status": "InProgress",
"distributionConfig": {
distributionConfig response omitted
},
"id": "EDFDVBD6EXAMPLE",
"lastModifiedTime": "May 6, 2014 6:00:32 PM",
"activeTrustedSigners": {
"quantity": 0,
"enabled": false
API Version 2016-09-29
310
Amazon CloudFront 開発者ガイド
CloudFront ログファイルエントリの概要
},
"inProgressInvalidationBatches": 0
}
},
"requestID": "4e6b66f9-d548-11e3-a8a9-73e33example",
"eventID": "5ab02562-0fc5-43d0-b7b6-90293example"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:01:35Z",
"eventName": "ListDistributions2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": null,
"responseElements": null,
"requestID": "52de9f97-d548-11e3-8fb9-4dad0example",
"eventID": "eb91f423-6dd3-4bb0-a148-3cdfbexample"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:01:59Z",
"eventName": "GetDistribution2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"id": "EDFDVBD6EXAMPLE"
},
"responseElements": null,
"requestID": "497b3622-d548-11e3-8fb9-4dad0example",
"eventID": "c32289c7-005a-46f7-9801-cba41example"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:02:27Z",
"eventName": "CreateInvalidation2014_01_31",
API Version 2016-09-29
311
Amazon CloudFront 開発者ガイド
CloudFront ログファイルエントリの概要
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": {
"invalidationBatch": {
"callerReference": "2014-05-06 64947",
"paths": {
"quantity": 3,
"items": ["/images/new.jpg",
"/images/logo.jpg",
"/images/banner.jpg"]
}
},
"distributionId": "EDFDVBD6EXAMPLE"
},
"responseElements": {
"invalidation": {
"createTime": "May 6, 2014 6:02:27 PM",
"invalidationBatch": {
"callerReference": "2014-05-06 64947",
"paths": {
"quantity": 3,
"items": ["/images/banner.jpg",
"/images/logo.jpg",
"/images/new.jpg"]
}
},
"status": "InProgress",
"id": "ISRZ85EXAMPLE"
},
"location": "https://cloudfront.amazonaws.com/2014-01-31/
distribution/EDFDVBD6EXAMPLE/invalidation/ISRZ85EXAMPLE"
},
"requestID": "4e200613-d548-11e3-a8a9-73e33example",
"eventID": "191ebb93-66b7-4517-a741-92b0eexample"
},
{
"eventVersion": "1.01",
"userIdentity": {
"type": "IAMUser",
"principalId": "A1B2C3D4E5F6G7EXAMPLE",
"arn": "arn:aws:iam::111122223333:user/smithj",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "smithj"
},
"eventTime": "2014-05-06T18:03:08Z",
"eventName": "ListCloudFrontOriginAccessIdentities2014_01_31",
"sourceIPAddress": "192.0.2.17",
"userAgent": "aws-sdk-ruby/1.39.0 ruby/1.9.3 x86_64-linux",
"requestParameters": null,
"responseElements": null,
"requestID": "42ca4299-d548-11e3-8fb9-4dad0example",
"eventID": "7aeb434f-eb55-4e2a-82d8-417d5example"
}]
}
API Version 2016-09-29
312
Amazon CloudFront 開発者ガイド
Amazon CloudFront ディストリ
ビューションのタグ付け
タグは、AWS リソースを特定し、整理するのに使用できる単語または語句です。各リソースには複
数のタグを追加でき、各タグにはユーザーが定義したキーと値が含まれています。たとえば、キーが
"domain" で値が "example.com" というタグを付けることができます。追加したタグに基づいて、リ
ソースを検索したりフィルタリングしたりできます。
CloudFront ディストリビューションまたは AWS リソース (Amazon EC2 インスタンスや Amazon S3
バケットなど) にタグを適用してタグをアクティブ化すると、アクティブなタグごとに使用量とコス
トを集計したコスト配分レポートが CSV (カンマ区切り値) ファイルとして生成されます。自社のカ
テゴリ(たとえばコストセンター、アプリケーション名、所有者)を表すタグを適用すると、複数の
サービスにわたってコストを分類することができます。タグを使ったコスト配分の詳細については、
『AWS Billing and Cost Management ユーザーガイド』の「コスト配分タグの使用」を参照してくだ
さい。
ディストリビューションに追加できるタグの数の現在の制限については、「制限 (p. 391)」を参照し
てください。制限の引き上げをリクエストするには、AWS サポートセンターでサポートケースを作
成してください。
次の点に注意してください。
• タグウェブおよび RTMP ディストリビューションをタグ付けできますが、オリジンアクセスアイデ
ンティティや無効化をタグ付けすることはできません。
• タグエディターとリソースグループは、現在のところ CloudFront でサポートされていません。
CloudFront API、AWS CLI、SDK、AWS Tools for Windows PowerShell を使用することで、リソース
にタグを適用することもできます。詳細については、次のドキュメントを参照してください。
• CloudFront API – 『Amazon CloudFront API リファレンス』の「タグに対するアクション」を参照
• AWS CLI – 『AWS Command Line Interface Reference』の「cloudfront」を参照
• SDK – AWS ドキュメントページの該当する SDK ドキュメントを参照
• Tools for Windows PowerShell – 『AWS Tools for Windows PowerShell Reference』の「Amazon
CloudFront」を参照
トピック
• タグの制限 (p. 314)
API Version 2016-09-29
313
Amazon CloudFront 開発者ガイド
タグの制限
• ディストリビューションに対するタグの追加、編集、削除 (p. 314)
タグの制限
タグには以下のような基本制限があります。
• リソースあたりのタグの最大数は 10 です。
• キーの最大長は 128 文字 – (Unicode) です。
• 値の最大長は 256 文字 – (Unicode) です。
• キーと値の有効な値 – a~z、A~Z、0~9、スペース、特殊文字 _ . : / = + - および @
• タグのキーと値は大文字と小文字が区別されます。
• aws: をキーのプレフィックスとしてを使用しないでください。AWS 用に予約済みです。
ディストリビューションに対するタグの追加、編
集、削除
次の手順では、CloudFront コンソールでディストリビューションにタグを追加、編集、削除する方法
について説明します。
ディストリビューションにタグを追加、編集、または削除するには
1.
2.
AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にあ
る、CloudFront コンソールを開きます。
更新するディストリビューションの ID を選択します。
3.
4.
[Tags] タブを選択します。
[Add or edit tags] を選択します。
5.
タグの追加または編集ページで、次の操作を実行できます。
6.
タグの追加
タグのキーと、オプションで値を入力します。
タグの編集
キー、値、または両方を変更します。タグの値を削除することもできますが、キーが必要で
す。
タグの削除
値フィールドの右側で [X] を選択します。
[Save] を選択します。
API Version 2016-09-29
314
Amazon CloudFront 開発者ガイド
ウェブディストリビューション
内のファイルを表示できません。
トラブルシューティング
トピック
• ウェブディストリビューション内のファイルを表示できません。 (p. 315)
• RTMP ディストリビューション内のファイルを表示できません。 (p. 317)
• エラーメッセージ「Certificate: <certificate-id> is being used by CloudFront.」が表示されま
す。 (p. 317)
ウェブディストリビューション内のファイルを表
示できません。
CloudFront ウェブディストリビューション内のファイルを表示できない場合の一般的な解決方法を以
下のトピックで説明します。
CloudFront と Amazon S3 の両方にサインアップし
ましたか?
Amazon CloudFront を Amazon S3 オリジンで使うには、CloudFront と Amazon S3 の両方にそれぞ
れサインアップする必要があります。CloudFront と Amazon S3 のサインアップについて詳しくは、
「CloudFront の使用開始 (p. 39)」をご覧ください。
Amazon S3 バケットとオブジェクトの許可設定は
正しいですか?
CloudFront を Amazon S3 オリジンで使う場合、コンテンツのオリジナルバージョンは Amazon S3
バケットに保存されます。Amazon S3 で CloudFront を使う最も簡単な方法は、Amazon S3 ですべて
のオブジェクトをパブリックに読めるようにすることです。そのためには、Amazon S3 にアップロー
ドするオブジェクトすべてに対し、パブリックの読み出し権限を明示的に有効にする必要があります
コンテンツをパブリックに読み出せない場合は、CloudFront オリジンアクセスアイデンティティを
作成して CloudFront がコンテンツにアクセスできるようにする必要があります。CloudFront オリジ
API Version 2016-09-29
315
Amazon CloudFront 開発者ガイド
代替ドメイン名(CNAME)
が正しく構成されていますか?
ンアクセスアイデンティティの詳細については、「オリジンアクセスアイデンティティを使用して
Amazon S3 コンテンツへのアクセスを制限する (p. 190)」を参照してください。
オブジェクトのプロパティとバケットのプロパティはそれぞれ独立しています。権限は 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. 53)」を参照してくださ
い。
参照している CloudFront ディストリビューション
の URL は正しいですか?
参照している URL が、Amazon S3 バケットやカスタムオリジンではなく、CloudFront ディストリ
ビューションのドメイン名(または CNAME)を使用していることを確認してください。
カスタムオリジンに関するトラブルシューティング
でサポートをお求めですか?
カスタムオリジンのトラブルシューティングで AWS のサポートが必要な場合、お客様のリクエス
トの X-Amz-Cf-Id ヘッダーエントリの調査が必要になることがあります。現在ヘッダーエント
API Version 2016-09-29
316
Amazon CloudFront 開発者ガイド
RTMP ディストリビューション
内のファイルを表示できません。
リのログを記録していない場合は、将来に備えて記録することをお勧めします。詳細については、
「Amazon EC2 と他のカスタムオリジンの使用に関する要件および推奨事項 (p. 89)」を参照してくだ
さい。
RTMP ディストリビューション内のファイルを表
示できません。
RTMP ディストリビューション内のファイルを表示できない場合、URL と再生クライアントは正
しく構成されていますか。RTMP ディストリビューションでは、HTTP ではなく RTMP プロトコル
を使い、さらに再生クライアントの設定を少し変更する必要があります。RTMP ディストリビュー
ションの作成の詳細については、「RTMP を使用するストリーミングメディアファイルのタスクリス
ト (p. 105)」を参照してください。
エラーメッセージ「Certificate: <certificate-id> is
being used by CloudFront.」が表示されます。
問題: IAM 証明書ストアから SSL 証明書を削除しようとすると、メッセージ「Certificate: <certificateid> is being used by CloudFront.」を受け取ります。
解決方法: 各 CloudFront ウェブディストリビューションは、デフォルトの CloudFront 証明書または
独自 SSL 証明書のいずれかと関連付けられている必要があります。SSL 証明書を削除する前に、SSL
証明書を更新するか(現行の独自 SSL 証明書を別の独自 SSL 証明書に置き換える)、または使用す
る証明書を独自 SSL 証明書からデフォルトの CloudFront 証明書に戻す必要があります。該当するセ
クションに示されている手順を実行します。
• SSL/TLS 証明書の更新 (p. 269)
• 独自 SSL/TLS 証明書からデフォルトの CloudFront 証明書に戻す (p. 270)
API Version 2016-09-29
317
Amazon CloudFront 開発者ガイド
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 2016-09-29
318
Amazon CloudFront 開発者ガイド
ライブストリーミング
CloudFront ストリーミングチュー
トリアル
以下のチュートリアルでは、CloudFront を使用して、ライブストリーミング、地理的ブロッキング、
および RTMP ストリーミングを行う方法について説明します。
ライブストリーミング
• CloudFront および Adobe Media Server 5.0 を使用したライブ HTTP ストリーミング (p. 319)
• Amazon CloudFront と IIS Media Services 4.1 を使用したライブスムーズストリーミング (p. 339)
• Wowza Streaming Engine 4.2 を使用したライブ HTTP ストリーミング (p. 350)
• CloudFront および任意の HTTP オリジンを使用したライブ HTTP ストリーミング (p. 360)
オンデマンドストリーミング
• Unified Streaming を使用したオンデマンドメディアストリーミング (p. 362)
RTMP ストリーミング
• CloudFront および Adobe Flash Player を使用したオンデマンドビデオストリーミング (p. 376)
• CloudFront、および Adobe Flash 向け Flowplayer を使用したオンデマンドビデオストリーミン
グ (p. 381)
• CloudFront および JW Player を使用したオンデマンドビデオストリーミング (p. 386)
CloudFront および Adobe Media Server 5.0 を使
用したライブ HTTP ストリーミング
トピック
• 概要 (p. 320)
API Version 2016-09-29
319
Amazon CloudFront 開発者ガイド
概要
• ライブストリーミングの構成ステップ (p. 321)
• Amazon Web Services アカウントを作成する (p. 321)
• Amazon EC2 キーペアを作成する (p. 322)
• Adobe Media Server をサブスクライブする (p. 322)
• ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 323)
• Adobe Media Server が実行されていることを確認する (p. 325)
• ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップす
る (p. 325)
• ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Strobe Media
Playback を埋め込む (p. 329)
• ライブストリーミング用の AWS CloudFormation スタックと Amazon EBS ボリュームを削除す
る (p. 331)
• よくある質問 (p. 331)
• その他のドキュメント (p. 337)
Amazon Web Services ライブストリーミングでは、Adobe Media Server バージョン 5.0 を使用し
て、ライブ演奏、オンラインセミナー、およびその他のイベントをストリーミングできます。この
チュートリアルでは、Adobe Media Server 5.0 を使用したライブストリーミングの構成プロセスにつ
いて説明します。
概要
Adobe Media Server 5.0 は、次の 2 つの HTTP ストリーミング形式をサポートします。
• HLS(HTTP Live Streaming)。iOS デバイスでサポートされます
• HDS (HTTP Dynamic Streaming)。Flash アプリケーションでサポートされます(Strobe Media
Playback を含む)
Note
このチュートリアルの以前のバージョンでは、Flash Media Playback プレーヤーを使って
HDS ストリーミングを設定する方法について説明していましたが、Adobe がそのプレーヤー
のサポートを停止しました。そこで、機能面で Flash Media Playback に似たオープンソース
のメディアプレーヤーである Strobe Media Playback を使用するようにチュートリアルを更新
しました。
ここでは、Adobe Media Server と CloudFront を連携させて、イベントをリアルタイムでストリーミ
ングする方法について説明します。
1.
このチュートリアルで説明されているとおりに、AWS CloudFormation を使用して、Adobe
Media Server 5.0 を実行する Amazon EC2 インスタンスを準備し、CloudFront ディストリビュー
ションを作成します。
2.
デジタルビデオカメラ(ラップトップコンピューターのビデオカメラなど)を使用してイベント
をキャプチャします。
3.
イベントの場所でエンコーダ(例: Adobe Flash Media Live Encoder)を使用し、生のビデオ
フィードを圧縮して、Adobe Media Server に送信します。(Flash Media Live Encoder は、無料
でダウンロードでき、Windows および Mac OS で利用可能です)。
4.
Adobe Media Server は、ビデオストリームを一連の小さなファイルに分割します。このサーバー
は CloudFront ディストリビューションのオリジンです。
5.
ユーザーに提供している、イベントを表示するための CloudFront URL にユーザーがアクセスす
ると、CloudFront は、ユーザーの HTTP リクエストを、(レイテンシーに関して)最寄りのエッ
ジロケーションにルーティングします。
API Version 2016-09-29
320
Amazon CloudFront 開発者ガイド
ライブストリーミングの構成ステップ
6.
エッジロケーションは Adobe Media Server にビデオストリームを要求します。
7.
Adobe Media Server は、CloudFront エッジロケーションにビデオストリームを小さいファイル単
位で返します。
8.
CloudFront エッジロケーションはビデオストリームを、リクエストの実行元のビューアに供給し
ます。また、このライブストリームの以降のリクエストに対する応答を高速化するために、これ
らの小さいファイルをキャッシュします。
このチュートリアルでは、CloudFront を、Amazon EC2 インスタンスで実行される Adobe Media
Server と統合する方法の概要について説明します。Adobe Media Server の詳細、およびライブスト
リーミングで使用する AWS サービスの詳細については、以下のドキュメントを参照してください。
• このチュートリアルで説明されていない Adobe Media Server オプションの詳細については、「そ
の他のドキュメント (p. 337)」を参照してください。
• 使用可能な 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. 331)」を参照してください。
ライブストリーミングの構成ステップ
Amazon Web Services(AWS)を使用したライブストリーミングをセットアップするには、Adobe
Flash Player のシステム要件を参照してください。次に、以下の各セクションの手順を実行します。
1.
Amazon Web Services アカウントを作成する (p. 321)
2.
Amazon EC2 キーペアを作成する (p. 322)
3.
Adobe Media Server をサブスクライブする (p. 322)
4.
ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 323)
5.
Adobe Media Server が実行されていることを確認する (p. 325)
6.
ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップす
る (p. 325)
7.
ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Strobe Media
Playback を埋め込む (p. 329)
8.
ライブストリーミング用の AWS CloudFormation スタックと Amazon EBS ボリュームを削除す
る (p. 331)
Amazon Web Services アカウントを作成する
すでに AWS アカウントをお持ちの場合は、この手順をスキップして「Amazon EC2 キーペアを作成
する (p. 322)」に進んでください。まだ AWS アカウントをお持ちでない場合は、次に説明する手順
に従ってアカウントを作成してください。
Note
アカウントを作成すると、そのアカウントで AWS のすべてのサービスへのサインアップが自
動的に行われます。料金が発生するのは、お客様が使用したサービスの分のみです。
API Version 2016-09-29
321
Amazon CloudFront 開発者ガイド
Amazon EC2 キーペアを作成する
AWS アカウントを作成するには
1.
http://aws.amazon.com にアクセスし、[Create an AWS Account] をクリックします。
2.
画面上の指示に従ってください。
サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入
力することが求められます。
次の手順: Amazon EC2 キーペアを作成する (p. 322)
Amazon EC2 キーペアを作成する
ライブストリーミングを構成する Amazon EC2 リージョンに Amazon EC2 キーペアがすでにある場
合は、この手順をスキップして「Adobe Media Server をサブスクライブする (p. 322)」に進んでく
ださい。そのリージョンにキーペアがない場合は、以下の手順を実行します。
キーペアとは、パスワードに似たセキュリティ認証情報です。このプロセスの後でライブストリーミ
ング用の AWS CloudFormation スタックを作成するときにキーペアを指定します。ライブストリーミ
ングを構成した後、キーペアを使用して Amazon EC2 インスタンスへのセキュアな接続を行います。
Amazon EC2 キーペアを作成するには
1.
AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ に
ある Amazon EC2 コンソールを開きます。
2.
[Region] リストで、キーペアの作成先のリージョンをクリックします。
このプロセスの後で作成する、ライブストリーミング用の AWS CloudFormation スタックが含ま
れるリージョンと同じリージョンにキーペアを作成する必要があります。キーペアと、ライブス
トリーミング用のスタックは、ストリーミングを実行するユーザーの最寄りのリージョンに作成
することをお勧めします。
3.
[Navigation] ペインで、[Key Pairs] をクリックします。
4.
[Key Pairs] ペインで、[Create Key Pair] をクリックします。
5.
[Create Key Pair] ダイアログボックスにキーペアの名前を入力し、その名前を書き留めます。こ
の値は、後のライブストリーミングのセットアッププロセスで、AWS CloudFormation ライブス
トリーミングスタックを作成するときに入力します。
6.
[Create] をクリックします。
7.
[Opening <key_pair_name>.pem] ダイアログボックスで、.pem ファイルをコンピューターの安全
な場所に保存します。
Important
プライベートキーのダウンロードと保存を行う必要があるのは、この機会のみです。
8.
[Close] をクリックし、[Create Key Pair] ダイアログボックスを閉じます。
次の手順: Adobe Media Server をサブスクライブする (p. 322)
Adobe Media Server をサブスクライブする
以下の手順を実行し、Amazon Web Services 向けの Adobe Media Server を AWS Marketplace 経由で
サブスクライブします。
API Version 2016-09-29
322
Amazon CloudFront 開発者ガイド
ライブストリーミング用の AWS
CloudFormation スタックを作成する
Important
Adobe Media Server に AWS アカウントをサブスクライブできるのは 1 度のみです。AWS ア
カウントが既に Adobe Media Server サブスクリプションを持つ場合は、そのサブスクリプ
ションを使用してライブストリーミングを設定します。
Amazon Web Services 向けの Adobe Media Server 5 を注文するには
1.
AWS Marketplace ウェブサイトの Adobe Media Server 5 Extended のページに移動します。
2.
製品情報を確認し、[Continue] をクリックします。
3.
[Launch on EC2: Adobe Media Server 5 Extended] ページで、[Manual Launch with EC2 Console,
APIs or CLI] タブをクリックします。
4.
[Pricing Details] セクションで、ライブストリーミング用の Amazon EC2 インスタンスを作成す
るリージョンを選択します。該当する価格情報を確認します。
Important
5.
このページのボタンを使用して Adobe Media Server を起動しないでください。次の手
順では、Amazon EC2 インスタンスを起動し、Adobe Media Server をインストールする
AWS CloudFormation スタックを作成します。
[Accept Terms] をクリックして、毎月のサブスクリプションにサインアップします。
次の手順: ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 323)
ライブストリーミング用の 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 スタックと Amazon EBS ボリュームを削除する (p. 331)」を参照してくだ
さい。
AWS CloudFormation の詳細については、「AWS CloudFormation ドキュメント」を参照してくださ
い。
ライブストリーミング用の AWS CloudFormation スタックを作成するには
1.
[Create Stack] ウィザードを開始するには、以下の Amazon EC2 リージョンの 1 つをクリックし
ます。
• 米国東部(バージニア北部) でスタックを作成する
• 米国西部 (オレゴン) でスタックを作成する
API Version 2016-09-29
323
Amazon CloudFront 開発者ガイド
ライブストリーミング用の AWS
CloudFormation スタックを作成する
• 米国西部 (北カリフォルニア) でスタックを作成する
• 欧州 (アイルランド) でスタックを作成する
• アジアパシフィック (シンガポール) でスタックを作成する
• アジアパシフィック (東京) でスタックを作成する
• アジアパシフィック (シドニー) でスタックを作成する
• 南米 (サンパウロ) でスタックを作成する
ウィザードが開始され、該当する URL が [Provide an S3 URL to template] フィールドに自動的に
表示されます。
Note
ユーザーが、独自のドメインでホストされる Flash ベースのプレーヤーを使用してライ
ブストリーミングを視聴するようにするには、「独自のドメインでホストされている
Flash ベースのストリームの crossdomain.xml を更新するにはどのようにすればよいです
か? (p. 333)」を参照してください。
2.
AWS マネジメントコンソール にまだサインインしておらず、サインインを求められた場合は、
サインインしてください。
3.
(オプション)[Stack Name] を変更します。スタック名にスペースを含めることはできません。
また、スタック名は AWS アカウント内で一意である必要があります。
[Template] オプションまたは [Provide an S3 URL to template] のアドレスは変更しないでくださ
い。
4.
[Next Step] をクリックします。
5.
[Specify Parameters] ページで、[AMSAdminPassword] に AMS 管理コンソールのパスワード(最
小 8 文字)を入力します。
6.
[AMSAdminUserName] にユーザー名を入力します。Amazon EC2 の Adobe Media Server イン
スタンスを作成した後、この値と先のステップで入力したパスワードを使用して AMS 管理コン
ソールにログインします。
7.
[InstanceType] に、Adobe Media Server インスタンスの料金を決定するインスタンスタイプ
を入力します。Amazon EC2 インスタンスタイプの詳細については、「Linux インスタンス用
Amazon EC2 ユーザーガイド」で、使用可能なインスタンスタイプを参照してください。
価格の詳細については、AWS Marketplace ウェブサイトの Adobe Media Server 5 Extended の
ページを参照してください。
8.
[KeyPair] に、ステップ 1 で選択したリージョンと同じリージョンの Amazon EC2 キーペアの名
前を入力します。キーペアは、サインインに現在使用しているアカウントに関連付けられている
必要があります。「Amazon EC2 キーペアを作成する (p. 322)」の手順を実行したときにキー
ペアを作成した場合は、そのキーペアの名前を入力します。
9.
[StreamName] にライブストリームのショートネーム(スペースなし)を入力します。
10. [Next Step] をクリックします。
11. (オプション)[Add Tags] ページで、タグを 1 つ以上追加します。
12. (オプション)SNS 通知の構成、スタックの作成を待機する時間の指定、スタックの作成が失
敗した場合に変更をロールバックするかどうかの選択、スタックポリシーの入力を行うには、
[Advanced] をクリックし、必要に応じて設定を調整します。
13. [Next Step] をクリックします。
14. スタックの設定を確認します。設定が適切であることを確認したら、[Create] をクリックしま
す。AWS CloudFormation によってスタックが作成されます。
スタックの作成には数分かかる場合があります。スタックの作成状況を追跡するには、スタック
を選択し、下部のフレームにある [Events] タブをクリックします。AWS CloudFormation がス
タックを作成できない場合、[Events] タブにエラーメッセージが表示されます。
API Version 2016-09-29
324
Amazon CloudFront 開発者ガイド
Adobe Media Server が実行されていることを確認する
スタックの準備が整うと、上部のフレームにあるスタックのステータスが
[CREATE_COMPLETE] に変わります。
スタックが作成されたら、[Outputs] タブをクリックします。このタブには、スタックの作成に関
する出力が表示されます。これらの値は、このプロセスの後で Adobe Flash Media Live Encoder
をセットアップするときに使用します。
次の手順: Adobe Media Server が実行されていることを確認する (p. 325)
Adobe Media Server が実行されていることを確認
する
AWS CloudFormation がスタックを作成したら、以下の手順を実行し、AWS CloudFormation を使用
して準備した Amazon Amazon EC2 インスタンスで Adobe Media Server が実行されていることを確
認します。
Adobe Media Server が実行されていることを確認するには
1.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
2.
上部のペインで、「ライブストリーミング用の AWS CloudFormation スタックを作成す
る (p. 323)」で作成したスタックを選択します。
3.
下部のペインで、[Outputs] タブをクリックします。
4.
[AMSServer] キーの値をクリックします。これは、「ライブストリーミング用の AWS
CloudFormation スタックを作成する (p. 323)」の手順を実行したときに準備した Amazon EC2
インスタンスへの URL です。
5.
Adobe Media Server のページが表示され、コンテンツのストリーミングが開始されます。これ
は、Adobe Media Server が実行されていることを示します。
ストリーミングが開始しない場合は、「概要 (p. 320)」に戻り、初めの 4 つのタスクで指定し
た値が正しいことを確認します。
値がすべて正しいにもかかわらず、ストリーミングが依然として開始されない場合は、「スト
リーミングが開始しない場合に Amazon EC2 インスタンスのトラブルシューティングを行う方法
を教えてください。 (p. 337)」を参照してください。
次の手順: ライブストリームを発行するように Adobe Flash Media Live Encoder をセットアップす
る (p. 325)
ライブストリームを発行するように 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)をセットアップする方法を示しています。
API Version 2016-09-29
325
Amazon CloudFront 開発者ガイド
ライブストリームを発行するように Adobe
Flash Media Live Encoder をセットアップする
Note
Flash Media Live Encoder の Windows バージョンでは、AAC オーディオ形式がサポートされ
ません。AAC のサポートを追加するために、Adobe は、MainConcept AAC エンコーダを購
入することを推奨しています。
Flash Media Live Encoder のライブストリーミング設定を指定するには
1.
ライブストリームのブロードキャストに使用するコンピューターにサインインします。
2.
ウェブブラウザを開いて、[Adobe Flash Media Live Encoder] ページに移動します。
3.
Flash Media Live Encoder をダウンロードしてインストールします。
Note
Flash Media Live Encoder は無料ですが、これをダウンロードするには、Adobe アカウ
ント(無料)が必要です。
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.
Flash Media Live Encoder を実行します。
8.
[Encoding Options] タブの [Preset] で、[High Bandwidth (800 Kbps) – H.264] を選択します。
9.
[Encoding Options] タブの [Audio] チェックボックスの下にある [Format] で、[AAC] を選択しま
す。
API Version 2016-09-29
326
Amazon CloudFront 開発者ガイド
ライブストリームを発行するように Adobe
Flash Media Live Encoder をセットアップする
10. [Encoding Options] タブの [Video] セクションで、[Format] リストの右にあるレンチアイコンをク
リックし、[Advanced Encoder Settings] ダイアログボックスを開きます。
11. [Advanced Encoder Settings] ダイアログボックスの [Keyframe Frequency] で、[4 Seconds] を選
択します。
applications/livepkgr/events/_definst_/liveevent/Event.xml ファイルに指定され
た <FragmentDuration> エレメントの値の倍数を使用することもできます。<FragmentDuration>
のデフォルト値は 4000 ミリ秒(4 秒)です。
API Version 2016-09-29
327
Amazon CloudFront 開発者ガイド
ライブストリームを発行するように Adobe
Flash Media Live Encoder をセットアップする
12. [OK] をクリックし、設定を保存して、メインページに戻ります。[Preset] リストのオプションが
[Custom] に変わります。
13. AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
14. ライブストリーミング用に作成したスタックのチェックボックスをチェックします。
15. 下部のペインで、[Outputs] タブをクリックします。
16. AMSURL キーの値をコピーします(例: rtmp://ec2-00-11-22-33.uswest-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-liveevent=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 は、再開時に、以前のス
トリームにストリームを付加するのではなく、以前のストリームを削除して新しいスト
リームを開始します。ただし、レコードモードを使用せずにライブストリームを停止し
た場合、ストリームを再開できるようにするには、ライブストリーミングを再構成する
必要があります。
API Version 2016-09-29
328
Amazon CloudFront 開発者ガイド
ウェブアプリケーションに Amazon CloudFront ライブ
HTTP ストリームの Strobe Media Playback を埋め込む
20. [Save to File] のチェックを外します。
21. [Connect] をクリックし、Adobe Media Server インスタンスに接続します。
22. [Start] をクリックし、ライブストリームのエンコードを開始して、ライブストリームを Adobe
Media Server インスタンスの livepkgr アプリケーションに発行します。
次の手順: ウェブアプリケーションに Amazon CloudFront ライブ HTTP ストリームの Strobe Media
Playback を埋め込む (p. 329)
ウェブアプリケーションに Amazon CloudFront ラ
イブ HTTP ストリームの Strobe Media Playback を
埋め込む
以下の手順のいずれかを実行して、ライブストリーム用のウェブページに含める埋め込みコードを取
得します。
• HTTP ストリーム用の Strobe Media Playback を埋め込むには (p. 329)
• CloudFront を使用して Apple デバイスでライブ HLS ストリームを再生するには (p. 330)
HTTP ストリーム用の Strobe Media Playback を埋め込むには
1.
Open Source Media Framework(OSMF)の最新バージョンをダウンロードします。Strobe
Media Playback はこれに含まれています。OSMF は http://sourceforge.net/projects/osmf.adobe/
files/ で入手できます。
2.
ステップ 1 でダウンロードしたファイルを解凍します。
API Version 2016-09-29
329
Amazon CloudFront 開発者ガイド
ウェブアプリケーションに Amazon CloudFront ライブ
HTTP ストリームの Strobe Media Playback を埋め込む
3.
ダウンロードしたファイルを解凍した場所で、StrobeMediaPlayback.swf を探し、それをライブ
ストリーミングユーザーがアクセスできる場所(Amazon S3 バケットなど)にコピーします。
4.
StrobeMediaPlayback.swf にアクセスするのに必要なアクセス権限をユーザーが保持しているこ
とを確認します。
5.
Strobe Media Playback を使用したライブストリームの表示をユーザーに許可するよう
に、crossdomain.xml ファイルのアクセス権限を変更します。詳細については、「独自のドメイ
ンでホストされている Flash ベースのストリームの crossdomain.xml を更新するにはどのように
すればよいですか? (p. 333)」を参照してください。
6.
ダウンロードしたファイルを解凍した場所で、setup.html を探し、それをウェブブラウザで開き
ます。
7.
[Change Your Flash Vars] ページで、[Embed Parameters] セクションの [Source] フィールドに
StrobeMediaPlayback.swf のフル URL を入力します。これはステップ 3 でコピーしたファイルで
す。以下に例を示します。
https://myawsbucket.s3.amazonaws.com/LiveStreaming/StrobeMediaPlayback.swf
8.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
9.
ライブストリーミング用のスタックを選択します。
10. 下部のペインで、[Outputs] タブをクリックします。
11. 次の例で示しているように、[LiveHDSManifest] キーの値をコピーします。
http://d123.cloudfront.net/hds-live/livepkgr/_definst_/liveevent/
livestream.f4m
12. [Change Your Flash Vars] ページに戻り、[Flash Vars] セクションの [src] フィールドに、ステッ
プ 11 でコピーした値を貼り付けます。
13. [Change Your Flash Vars] ページの下部にある [Preview and Update] をクリックします。
14. 動画を再生して、現在の設定に問題がないことを確認し、必要に応じて設定を更新します。
15. 設定を変更した場合は、[Preview and Update] をもう一度クリックします。
16. ウェブページに Strobe Media Playback を埋め込むには、[Preview Code] ボックスの内容をコ
ピーして、ウェブサイトの HTML コードに貼り付けます。
CloudFront を使用して Apple デバイスでライブ HLS ストリームを再生するには
1.
Apple デバイスを使用したライブストリームの表示をユーザーに許可するよう
に、crossdomain.xml ファイルのアクセス権限を変更します。詳細については、「独自のドメイ
ンでホストされている Flash ベースのストリームの crossdomain.xml を更新するにはどのように
すればよいですか? (p. 333)」を参照してください。
2.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
3.
ライブストリーミング用のスタックを選択します。
4.
下部のペインで、[Outputs] タブをクリックします。
5.
次の例で示しているように、[LiveHLSManifest] キーの値をコピーします。
http://d123.cloudfront.net/hls-live/livepkgr/_definst_/liveevent/
livestream.m3u8.
6.
iOS デバイスを使用してこの URL にアクセスし、HLS ストリーミングが適切に動作することを
確認します。
どのような場合に、この URL を使用して各種 iOS デバイス、QuickTime、および Safari にサービス
を提供するかについては、iOS 開発者ライブラリの「HTTP ライブストリーミング概要」を参照して
ください。
API Version 2016-09-29
330
Amazon CloudFront 開発者ガイド
ライブストリーミング用の AWS CloudFormation
スタックと Amazon EBS ボリュームを削除する
HTTP 経由でライブストリームを発行し、再生する方法については、「Adobe Media Server 5.0.1 開
発者ガイド」の「HTTP 経由でライブストリームの発行および再生を行うための URL」を参照してく
ださい。
次の手順: ライブストリーミング用の AWS CloudFormation スタックと Amazon EBS ボリュームを削
除する (p. 331)
ライブストリーミング用の AWS CloudFormation ス
タックと Amazon EBS ボリュームを削除する
ライブイベントが終了したら、ライブストリーミング用に作成したスタックを削除します。これに
より、ライブストリーミングイベント用に作成した AWS リソースがほとんど削除され、リソースの
AWS 課金のほとんどが停止します。さらに、AWS CloudFormation によって作成され、スタックを削
除したときには削除されない Amazon EBS ボリュームを削除します。これによりリソースの AWS 課
金の残りが停止します。
ライブストリーミング用の AWS CloudFormation スタックと Amazon EBS ボリュームを削除
するには
1.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
2.
ライブストリーミング用に作成した AWS CloudFormation スタックを見つけ、作成日時を書き留
めます。これは、この手順の後で削除する Amazon EBS ボリュームを特定するのに役立ちます。
3.
スタックを選択し、[Delete Stack] をクリックします。
4.
[Yes, Delete] をクリックして確定します。
5.
スタックの削除状況を追跡するには、スタックを選択し、下部のフレームにある [Events] タブを
クリックします。
6.
Amazon EC2 コンソールに移動します。
7.
ナビゲーションペインの [Volumes] をクリックします。
8.
AWS CloudFormation スタックが作成したボリュームを選択し、[Actions]、[Delete Volume] の順
にクリックします。
Amazon EBS ボリュームが複数ある場合は、ステップ 2 で書き留めた日時を使って、AWS
CloudFormation スタックが作成したボリュームを見つけます。
9.
ライブストリーミングをすぐに再使用する予定がない場合は、AWS Marketplace で Adobe Media
Server のサブスクリプションをキャンセルすることができます。サブスクリプションをキャンセ
ルするには、AWS Marketplace のサブスクリプションページに移動して Adobe Media Server の
行を見つけ、[Cancel Subscription] をクリックして画面に表示される指示に従います。
よくある質問
• Adobe Media Server 5.0 が実行されている Amazon EC2 インスタンスに Secure Shell(SSH)を使
用して接続する方法を教えてください。 (p. 332)
• 独自のドメインでホストされている Flash ベースのストリームの crossdomain.xml を更新するには
どのようにすればよいですか? (p. 333)
• CloudFront と Adobe Media Server 5.0 を使用するライブ HTTP ストリーミングの料金を教えてく
ださい。 (p. 334)
• Amazon EC2 インスタンスまたは CloudFront ディストリビューションの CNAME エイリアスをど
のように作成できますか? (p. 334)
• Adobe Media Server Administration Console には、どのように接続することができます
か? (p. 334)
API Version 2016-09-29
331
Amazon CloudFront 開発者ガイド
よくある質問
• ライブイベントを Apple デバイスと Flash Player 対応デバイスの両方にストリーミングできます
か? (p. 335)
• Adobe Media Server 5.0 では、HTML5 がサポートされますか? (p. 336)
• Adobe Media Server のログ作成機能はありますか? (p. 336)
• Adobe Media Server で認証を有効にする方法を教えてください。 (p. 336)
• HDS および HLS 関連のファイルに対するデフォルトのキャッシュ制御設定は何ですか? (p. 336)
• HLS と HDS の違いは何ですか? (p. 336)
• ストリーミングが開始しない場合に Amazon EC2 インスタンスのトラブルシューティングを行う方
法を教えてください。 (p. 337)
• Adobe Flash Media Server 4.5 を使用するライブストリーミングに関するドキュメントはどこにあ
りますか? (p. 337)
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.
b.
c.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール
(https://console.aws.amazon.com/cloudformation/)を開きます。
[Region] リストで、作成した Amazon EC2 インスタンスが含まれているリージョンを選択し
ます。
対象の AWS CloudFormation スタックの行をクリックします。
d.
e.
2.
3.
4.
下部のペインで、[Resources] タブをクリックします。
[Stack Resources] テーブルの左の列で、値が AMSOriginServerSecurityGroup になって
いる行を見つけます。
f. その行の [Physical ID] 列の値を書き留めます。
https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。
5.
6.
ナビゲーションペインで、[Security Groups] をクリックします。
[Security Groups] ページで、ステップ 1f で取得した物理 ID と [Name] 列が一致している行を選
択します。
下部のペインで、[Inbound] タブをクリックします。
[Create a new rule] で、[SSH] を選択します。
7.
8.
[Add Rule] をクリックします。
[Apply Rule Changes] をクリックします。
SSH を使用して、Adobe Media Server 5.0 が実行されている Amazon EC2 インスタンスに接
続するには
1.
https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。
API Version 2016-09-29
332
Amazon CloudFront 開発者ガイド
よくある質問
2.
ナビゲーションペインの [Instances] をクリックします。
3.
適切なインスタンスを右クリックし、[Connect] をクリックします。SSH を使用して Amazon
EC2 インスタンスに接続するための手順が表示されます。
独自のドメインでホストされている Flash ベースのストリーム
の crossdomain.xml を更新するにはどのようにすればよいで
すか?
AWS CloudFormation スタックを作成する前または後で、crossdomain.xml 内の許可を変更するこ
とができます。
• AWS CloudFormation スタックを作成していない場合は、https://s3.amazonaws.com/cloudfrontlive/live-http-streaming-ams-5-0-1-using-cloudfront.txt で、Amazon CloudFront と Adobe Media
Server 5.0 を使用するライブストリーミング用の AWS CloudFormation テンプレートをダウ
ンロードします。テンプレートで、UserData セクションを編集します。このセクションには
crossdomain.xml 設定が含まれます。更新したテンプレートはローカルコンピューターに保存し
ます。次に、更新したテンプレートを使用して、AWS CloudFormation スタックを作成します。
API Version 2016-09-29
333
Amazon CloudFront 開発者ガイド
よくある質問
• AWS CloudFormation スタックをすでに作成している場合は、Amazon EC2 インスタンスで実行さ
れている Adobe Media Server にログインし、クロスドメインポリシーファイル(/mnt/webroot/
crossdomain.xml)内の許可を変更します。
crossdomain.xml ファイルの編集方法については、「Adobe クロスドメインポリシーファイルの仕
様」を参照してください。
CloudFront と Adobe Media Server 5.0 を使用するライブ
HTTP ストリーミングの料金を教えてください。
料金は、使用した 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. 53)」を参照してください。
Adobe Media Server Administration Console には、どのように
接続することができますか?
Adobe Media Server Administration Console に接続するには
1.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
2.
3.
4.
5.
ライブストリーミング用のスタックを選択します。
下部のペインで、[Outputs] タブをクリックします。
AMSAdminConsoleServerAddress キーの値をコピーします。
AMSServerAdminConsole キーの値をクリックします(例: http://ec2-00-11-22-33.uswest-1.compute.amazonaws.com/ams_adminConsole.htm)。
Adobe Media Server Administration Console のログインページの [Server Address] に、ステップ
4 でコピーした AMSAdminConsoleServerAddress キーを貼り付けます。
6.
7.
8.
[Username] と [Password] フィールドに、「ライブストリーミング用の AWS CloudFormation ス
タックを作成する (p. 323)」で指定した値を入力します。
[Login] をクリックします。
Adobe Media Server 5.0 Administration Console の使用方法については、Adobe Media Server に関す
るドキュメントを参照してください。
API Version 2016-09-29
334
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 インスタンスが含まれているリージョンの名前をクリッ
クします。
c.
対象の AWS CloudFormation スタックの行を選択します。
d.
下部のペインで、[Resources] タブをクリックします。
e.
[Stack Resources] テーブルの AMSOriginServerSecurityGroup 行の [Physical ID] 列の値
を書き留めます。
2.
Amazon EC2 コンソールを表示します。
3.
ナビゲーションペインで、[Security Groups] をクリックします。
4.
[Security Groups] ペインで、AWS CloudFormation が Amazon EC2 インスタンス用に作成したセ
キュリティグループを選択します。この名前は、ステップ 1e で書き留めた値です。
5.
下部のペインで、[Inbound] タブをクリックします。
6.
Adobe Media Server Administration Console へのアクセスを完全に無効にするには、以下の手順
を実行します。
7.
a.
[TCP Port (Service)] 列で [1111] を見つけます。
b.
その行の [Action] 列で、[Delete] をクリックします。
c.
[Apply Rule Changes] をクリックします。
選択した IP アドレスへのアクセスを制限するには、以下の手順を実行します。
a.
[TCP Port (Service)] 列で [1111] を見つけて、[Delete] をクリックします。
b.
[Create a new rule] のデフォルト値である [Custom TCP rule] を受け入れます。
c.
[Port range] に「1111」と入力します。
d.
[Source] に、IP アドレスまたは範囲を入力するか、別のセキュリティグループの名前を入力
します。詳細については、[Help] をクリックしてください。
e.
[Add Rule] をクリックします。
f.
追加のルールを作成するには、ステップ b ~ e を繰り返します。
g.
[Apply Rule Changes] をクリックします。
ライブイベントを Apple デバイスと Flash Player 対応デバイ
スの両方にストリーミングできますか?
はい。Adobe Media Server 5.0 では、Flash ベースのデバイスと iOS デバイスの両方にライブスト
リームを同時に配信できます。HTML5 プレーヤーまたは Objective C("ネイティブ")アプリケー
ションを使用すれば、Safari ブラウザへのストリーミングが可能です。Adobe AIR for iOS を使用し
て、iOS でのリッチなビデオ操作を開発することもできます。
API Version 2016-09-29
335
Amazon CloudFront 開発者ガイド
よくある質問
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 が作成したセキュリティ
グループ内で、RTMP ポート 1935(TCP と UDP の両方に使用)へのアクセスを制限できます。ポー
ト 1935 用の新しい TCP および UDP ルールを作成した後に、ポート 1935 用の既存の TCP および
UDP ルールを削除するだけで、すべての IP アドレスへのアクセスが可能になります。
セキュリティグループにルールを追加する方法の簡単な概要については、「Adobe Media Server
Administration Console には、どのように接続することができますか? (p. 334)」を参照してくださ
い。Amazon EC2 セキュリティグループの詳細については、「Linux インスタンス用 Amazon EC2
ユーザーガイド」の「Amazon EC2 セキュリティグループ」を参照してください。
HDS および HLS 関連のファイルに対するデフォルトのキャッ
シュ制御設定は何ですか?
HDS および HLS 関連のファイルに対するデフォルトのキャッシュ制御ヘッダーは、以下の値に設定
されます。
ファイルタイプ
Cache-Control 設定(秒)
.bootstrap
2
HDS フラグメント
60
.f4m
2
.m3u8
2
.ts
60
CloudFront エッジキャッシュサーバーは、これらのキャッシュ制御ヘッダーを優先します。
サーバーで HttpStreamingF4MMaxAge、HttpStreamingBootstrapMaxAge、および
HttpStreamingFragMaxAge パラメーターの値を変更することで、デフォルト設定を変更すること
ができます。詳細については、Adobe ドキュメントの「HTTP ストリーミング構成ファイルリファレ
ンス」を参照してください。
HLS と HDS の違いは何ですか?
HLS は、Apple デバイス用に最適化されたファイルコンテナ形式です。このコンテナは、H.264/AAC
エンコードされたビデオおよびオーディオをサポートし、MPEG-2 トランスポートストリーム(TS)
API Version 2016-09-29
336
Amazon CloudFront 開発者ガイド
その他のドキュメント
に基づきます。iOS(AIR for IOS を含む)に配信するすべてのビデオでこの形式を使用する必要があ
ります。
HDS は、Flash Player で実行されるアプリケーション用に最適化されたファイルコンテナ形式です。
このコンテナも、H.264/AAC エンコードされたビデオおよびオーディオをサポートし、MPEG-4 TS
に基づきます。HDS は AIR for iOS ではサポートされません。
ストリーミングが開始しない場合に Amazon EC2 インスタン
スのトラブルシューティングを行う方法を教えてください。
「Adobe Media Server が実行されていることを確認するには (p. 325)」の手順を実行してもスト
リーミングが開始されない場合は、以下の手順を実行して、Amazon EC2 インスタンスが適切に機能
していることを確認します。
Adobe Media Server 5.0 が実行される Amazon EC2 インスタンスのトラブルシューティング
を行うには
1.
AWS CloudFormation コンソールの上部のペインで、スタックを選択します。
2.
下部のペインで、[Resources] タブをクリックします。
3.
[AMSOriginServer] 行の [Physical ID] 列の値を書き留めます。
4.
Amazon EC2 コンソールに移動します。
5.
[Region] リストで、作成した AWS CloudFormation スタックが含まれているリージョンを選択し
ます。
6.
ナビゲーションペインの [Instances] をクリックします。
7.
[Instance] 列で、ステップ c で書き留めた値を見つけます。
8.
該当する行を選択します。
9.
下部のペインで、[Status Checks] タブの情報を確認し、推奨アクションを実行します。
10. 「Adobe Media Server が実行されていることを確認するには (p. 325)」の手順に戻り、ステッ
プ 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」を
参照してください。
その他のドキュメント
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 の技術概要
API Version 2016-09-29
337
Amazon CloudFront 開発者ガイド
その他のドキュメント
Amazon Web Services ドキュメント
• Amazon Elastic Compute Cloud ドキュメント
• AWS CloudFormation ドキュメント
API Version 2016-09-29
338
Amazon CloudFront 開発者ガイド
Amazon CloudFront と IIS Media Services 4.1
を使用したライブスムーズストリーミング
Amazon CloudFront と IIS Media Services 4.1 を
使用したライブスムーズストリーミング
トピック
• アマゾン ウェブ サービスを使用したライブスムーズストリーミングの概要 (p. 339)
• アマゾン ウェブ サービスアカウントの作成 (p. 340)
• Amazon EC2 キーペアを作成する (p. 341)
• ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する (p. 341)
• Amazon EC2 Windows Server インスタンスの実行確認 (p. 344)
• Windows パスワードの取得 (p. 345)
• ライブストリームの暗号化 (p. 346)
• ライブスムーズストリームの表示 (p. 346)
• AWS CloudFormation のライブスムーズストリーミングスタックの削除 (p. 347)
• よくある質問 (p. 347)
• その他のドキュメント (p. 349)
アマゾン ウェブ サービスを使用したライブスムー
ズストリーミングの概要
スムーズストリーミングは、アダプティブストリーミングテクノロジの Microsoft 実装であり、標
準の HTTP を使用し、ウェブに基づいてメディアコンテンツ配信をする形式のストリーミングで
す。IIS Media Services の拡張であるスムーズストリーミングを使用すると、Microsoft Silverlight
など、スムーズストリーミングクライアントにライブイベントのアダプティブストリーミングが
できます。CloudFront を使用するようにスムーズストリーミングを構成すると、CloudFront のグ
ローバル HTTP ネットワークのスケールメリットを得ることができるほか、ビューアがネットワー
クのエッジノードにレイテンシーベースでルーティングされることでメリットを得ることができま
す。CloudFront の詳細については、CloudFront 製品ページを参照してください。
スムーズストリーミングコンテンツは、CloudFront エッジサーバーでのキャッシュが可能な一連の
MPEG-4(MP4)フラグメントとしてクライアントに配信されます。スムーズストリーミング対応の
クライアントは、特別なヒューリスティクスを使用して現在のネットワークおよびローカル PC の条
件を動的に監視し、クライアントが受信するスムーズストリーミングプレゼンテーションのビデオ品
質をシームレスに切り替えます。クライアントがフラグメントを再生している間に、ネットワークの
条件が変化(帯域幅が減少するなど)したり、ビデオ処理が、クライアントで実行されている他のア
プリケーションの影響を受けたりする場合があります。クライアントは、変化する条件に応じて異な
るビットレートでエンコードされたストリームから次のフラグメントが送信されるように直ちに要求
できます。これにより、クライアントはメディアを途切れさせたり、バッファ処理したり、フリーズ
したりすることなく再生できます。その結果、ユーザーはストリームの中断がない最高の再生品質を
体験できます。
ライブブロードキャストをスムーズストリーミング形式にエンコードするには、Microsoft Expression
Encoder 4 Pro を使用します。エンコードされたスムーズストリームを供給するには、Windows
IIS Media Services を実行する Amazon EC2 Amazon マシンイメージ(AMI)を使用できま
す。CloudFront はライブビデオコンテンツとライブオーディオコンテンツをキャッシュし、ビューア
は CloudFront エッジサーバーに接続し、Microsoft Silverlight など、スムーズストリーミング対応のク
ライアントを使用してストリームを再生します。このチュートリアルでは、セットアッププロセス全
体を手順を追って説明します。
API Version 2016-09-29
339
Amazon CloudFront 開発者ガイド
アマゾン ウェブ サービスアカウントの作成
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. 349)」を参照
してください。
アマゾン ウェブ サービス(AWS)を使用したライブスムーズストリーミングをセットアップするに
は、「スムーズストリーミングのデプロイガイド」で IIS スムーズストリーミングのシステム要件を
参照してください。次に、以下の各セクションの手順を実行します。
1.
アマゾン ウェブ サービスアカウントの作成 (p. 340)
2.
Amazon EC2 キーペアを作成する (p. 341)
3.
ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する (p. 341)
4.
Amazon EC2 Windows Server インスタンスの実行確認 (p. 344)
5.
Windows パスワードの取得 (p. 345)
6.
ライブストリームの暗号化 (p. 346)
7.
ライブスムーズストリームの表示 (p. 346)
8.
AWS CloudFormation のライブスムーズストリーミングスタックの削除 (p. 347)
よくある質問については、「よくある質問 (p. 347)」を参照してください。
他の Microsoft ドキュメントおよび AWS ドキュメントへのリンクについては、「その他のドキュメン
ト (p. 349)」を参照してください。
アマゾン ウェブ サービスアカウントの作成
すでに AWS アカウントをお持ちの場合は、この手順をスキップして「Amazon EC2 キーペアを作成
する (p. 341)」に進んでください。まだ AWS アカウントをお持ちでない場合は、次に説明する手順
に従ってアカウントを作成してください。
Note
アカウントを作成すると、そのアカウントで AWS のすべてのサービスへのサインアップが自
動的に行われます。料金が発生するのは、お客様が使用したサービスの分のみです。
AWS アカウントを作成するには
1.
http://aws.amazon.com にアクセスし、[”Create an AWS Account”]をクリックします。
2.
画面上の指示に従ってください。
API Version 2016-09-29
340
Amazon CloudFront 開発者ガイド
Amazon EC2 キーペアを作成する
サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入
力することが求められます。
次の手順: Amazon EC2 キーペアを作成する (p. 341)
Amazon EC2 キーペアを作成する
ライブスムーズストリーミングを構成する Amazon EC2 リージョンに Amazon EC2 キーペアがすで
にある場合は、この手順をスキップして「ライブスムーズストリーミング用の AWS CloudFormation
スタックを作成する (p. 341)」に進んでください。そのリージョンにキーペアがない場合は、以下の
手順を実行します。
キーペアとは、パスワードに似たセキュリティ認証情報です。このプロセスの後でライブストリーミ
ング用の AWS CloudFormation スタックを作成するときにキーペアを指定します。ライブストリーミ
ングを構成した後、キーペアを使用して Amazon EC2 Windows Server インスタンスのパスワードを
取り込みます。
Amazon EC2 キーペアを作成するには
1.
AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ に
ある Amazon EC2 コンソールを開きます。
2.
[Region] リストで、キーペアの作成先のリージョンをクリックします。
このプロセスの後でライブストリーミング用の AWS CloudFormation スタックを作成するリー
ジョンと同じリージョンにキーペアを作成する必要があります。キーペアと、ライブストリーミ
ング用のスタックは、ライブイベントの場所の最寄りのリージョンに作成することをお勧めしま
す。
3.
4.
5.
7.
[Navigation] ペインで、[Key Pairs] をクリックします。
[Key Pairs] ペインで、[Create Key Pair] をクリックします。
[Create Key Pair] ダイアログボックスにキーペアの名前を入力し、その名前を書き留めます。こ
の値は、後のライブストリーミングのセットアッププロセスで、AWS CloudFormation ライブス
トリーミングスタックを作成するときに入力します。
[Create] をクリックすると、[Opening <key_pair_name>.pem] ダイアログボックスが表示されま
す。
.pem ファイルをコンピューターの安全な場所に保存します。
8.
[Close] をクリックし、[Create Key Pair] ダイアログボックスを閉じます。
6.
次の手順: ライブスムーズストリーミング用の AWS CloudFormation スタックを作成する (p. 341)
ライブスムーズストリーミング用の AWS
CloudFormation スタックを作成する
以下の手順では、AWS CloudFormation テンプレートを使用し、Amazon EC2 インスタンスを含め、
ライブスムーズストリーミングで必要とされる AWS リソースを起動するスタックを作成します。
Important
Amazon EC2 インスタンスをデプロイする AWS CloudFormation スタックを作成した時点
から、Amazon EC2 インスタンスに対する時間単位の料金が発生します。ライブビデオの
ストリーミングに Amazon EC2 インスタンスを使用しているかどうかに関係なく、AWS
CloudFormation スタックを削除するまで、この料金がかかります。詳細については、
「Amazon Elastic Compute Cloud(Amazon EC2)」の詳細ページの「料金表」を参照し
てください。ライブイベントが終了したら、ライブスムーズストリーミング用に作成した
API Version 2016-09-29
341
Amazon CloudFront 開発者ガイド
ライブスムーズストリーミング用の AWS
CloudFormation スタックを作成する
スタックを削除します。これにより、ライブストリーミングイベント用に作成した AWS
リソースが削除され、このリソースの AWS 料金が停止します。詳細については、「AWS
CloudFormation のライブスムーズストリーミングスタックの削除 (p. 347)」を参照してくだ
さい。
ライブストリーミング用の AWS CloudFormation スタックを作成するには
1.
以下のリストから、スタックの作成先の Amazon EC2 リージョンをクリックします。[Create
Stack] ウィザードが開始され、リージョン固有の値が [Provide a Template URL] フィールドに自
動的に入力されます。
米国東部(バージニア北部)
米国西部 (オレゴン)
米国西部 (北カリフォルニア)
欧州 (アイルランド)
アジアパシフィック (シンガポール)
アジアパシフィック (東京)
南米 (サンパウロ)
2.
AWS マネジメントコンソール にまだサインインしておらず、サインインを求められた場合は、
サインインしてください。
3.
オプション: [Create Stack] ウィザードで、[Stack Name] フィールドの値を変更します。スタック
名にスペースを含めることはできません。また、スタック名は AWS アカウント内で一意である
必要があります。
API Version 2016-09-29
342
Amazon CloudFront 開発者ガイド
ライブスムーズストリーミング用の AWS
CloudFormation スタックを作成する
4.
[Stack Template Source] オプションまたは [Provide a Template URL] の値を変更しないでくださ
い。
5.
オプション: SNS 通知の構成、スタックの作成を待機する時間の指定、およびスタックの作成が
失敗した場合に変更をロールバックするかどうかの選択を行うには、[Show Advanced Options]
チェックボックスをオンにして、該当の値を指定します。
6.
[Continue] をクリックします。
7.
[Specify Parameters] ページの [KeyPair] フィールドに、ライブストリーミング用のスタックを作
成するリージョン内の Amazon EC2 キーペアの名前を入力します。キーペアは、ログオンに現在
使用しているアカウントに関連付けられている必要があります。「Amazon EC2 キーペアを作成
する (p. 341)」の手順を実行したときにキーペアを作成した場合は、そのキーペアの名前を入力
します。
8.
[InstanceType] フィールドにインスタンスタイプを入力し、[Continue] をクリックします。デ
フォルト値は m1.xlarge です。
インスタンスタイプによって、Windows Server を実行する Amazon EC2 インスタンスの料金表
が決まります。料金表に関する情報を含め、Windows 用の Amazon EC2 インスタンスタイプの
詳細については、「Microsoft Windows Server および SQL Server を実行する Amazon EC2」を
参照してください。
9.
スタックの設定を確認します。設定が適切であることを確認したら、[Create Stack] をクリックし
ます。
スタックが作成されるまで数分かかる場合があります。スタックの作成状況を追跡するには、ス
タックを選択し、下部のフレームにある [Events] タブをクリックします。AWS CloudFormation
がスタックを作成できない場合、[Events] タブにエラーメッセージが表示されます。
スタックの準備が整うと、上部のフレームにあるスタックのステータスが
[CREATE_COMPLETE] に変わります。
API Version 2016-09-29
343
Amazon CloudFront 開発者ガイド
Amazon EC2 Windows Server インスタンスの実行確認
スタックが作成されたら、[Outputs] タブをクリックします。このタブには、スタックの作成に関
する出力が表示されます。これらの値は、このプロセスの後で Microsoft Expression Encoder を
セットアップするときに使用します。
次の手順: Amazon EC2 Windows Server インスタンスの実行確認 (p. 344)
Amazon EC2 Windows Server インスタンスの実行
確認
AWS CloudFormation がスタックを作成したら、以下の手順を実行し、AWS CloudFormation を使用
して準備した Amazon EC2 インスタンスで Windows IIS Media Services ウェブサービスが実行され
ていることを確認します。
API Version 2016-09-29
344
Amazon CloudFront 開発者ガイド
Windows パスワードの取得
Windows Server が実行されていることを確認するには
1.
2.
3.
4.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
上部のペインで、「ライブスムーズストリーミング用の AWS CloudFormation スタックを作成す
る (p. 341)」で作成したスタックを選択します。
下部のペインで、[Outputs] タブをクリックします。
SmoothStreamingServer キーの値をクリックします(例: http://ec2-00-11-22-33.uswest-1.compute.amazonaws.com)。
Windows IIS Server バナースクリーンが表示され、Windows Server が実行されていることが示さ
れます。
次の手順: Windows パスワードの取得 (p. 345)
Windows パスワードの取得
Windows Server 2008 R2 および IIS Media Services が実行されている Amazon EC2 インスタンスに
接続するには、以下の手順を使用して Windows Server の Administrator アカウントの初期パスワード
を取得する必要があります。パスワードの取得は Amazon EC2 インスタンスごとに 1 回だけです。こ
の手順が終了すると、Windows Server コンピューターと同じように、Amazon EC2 インスタンスを
使用できます。
Windows が実行されている Amazon EC2 インスタンスへの接続の詳細については、「Amazon EC2
Windows インスタンスの使用開始」を参照してください。
Important
Amazon EC2 では、Windows Server からパスワードを取得するまで 30 分ほどかかる場合が
あります。
Amazon EC2 インスタンス用の Windows パスワードを取得するには
1.
2.
3.
4.
5.
6.
7.
8.
9.
「Amazon EC2 キーペアを作成する (p. 341)」で作成した Amazon EC2 プライベートキーファ
イル(.pem file)にアクセスできることを確認します。
AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ に
ある Amazon EC2 コンソールを開きます。
[Region] リストで、作成したライブスムーズストリーミング用の Amazon EC2 インスタンスが含
まれているリージョンを選択します。
[Navigation] ペインの [Instances] をクリックします。
[My Instances] ペインで、[Name] 列の値が [LiveSmoothStreaming] になっているインスタンスを
右クリックし、[Get Windows Password] をクリックします。
[Retrieve Default Windows Administrator Password] ページで、[Browse] をクリックし、.pem
ファイルを保存したコンピューターの場所を参照します。
.pem ファイルを選択すると、ファイルの内容がウィンドウに表示されます。
[Decrypt Password] をクリックします。
パスワードをメモします。このパスワードは、Amazon EC2 インスタンスに接続するために必要
です。
10. オプション。ただし、推奨: 起動した Windows Server インスタンスにログインし、デフォルトの
Windows Server アカウントのパスワードを変更します。ユーザー名は Administrator です。
別のユーザーアカウントを作成し、管理者グループにそのアカウントを追加することもできま
す。これは、管理者パスワードを忘れた場合や、管理者アカウントで問題が発生した場合の安全
策です。
API Version 2016-09-29
345
Amazon CloudFront 開発者ガイド
ライブストリームの暗号化
Note
ポート 3389 を使用するサーバーにアクセスできるように Windows Server の Amazon EC2
セキュリティグループ設定を更新する方法については、「Windows Server へのアクセスを有
効にするにはどのようにすればよいですか? (p. 348)」を参照してください。管理者アカウ
ントを使用してインスタンスにログオンする方法については、「Windows IIS Media Services
を実行している Amazon EC2 インスタンスに安全に接続するにはどのようにすればよいです
か? (p. 348)」を参照してください。
次の手順: ライブストリームの暗号化 (p. 346)
ライブストリームの暗号化
これで、Windows Server および Windows IIS Media Services を実行している Amazon EC2 インスタ
ンスで、ライブストリームをライブスムーズストリーミングパブリッシュポイントに発行する準備が
できました。Microsoft は Expression Encoder 4 Pro の販売を中止しました。ライブスムーズストリー
ミング用にビデオをエンコードするために使用できるサードパーティーのエンコードツールを提供し
ている Microsoft パートナーのリストについては、Microsoft ウェブサイトで、「IIS Media Services」
ページの「パートナー」セクションを参照してください。
次の手順: ライブスムーズストリームの表示 (p. 346)
ライブスムーズストリームの表示
CloudFront を使用してライブスムーズストリームを表示するには、以下の手順を使用します。独自の
ウェブページに Microsoft Silverlight プレーヤーのコードを埋め込むこともできます。
1.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
2.
ライブストリーミング用のスタックを選択します。
3.
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 は、http://d123.cloudfront.net/LiveSmoothStream.isml/
manifest(format=m3u8-aapl).m3u8 のようになります。
どのような場合に、この URL を使用して各種 iOS デバイス、QuickTime、および Safari にサー
ビスを提供するかについては、iOS 開発者ライブラリの「HTTP ライブストリーミング概要」を
参照してください。
次の手順: AWS CloudFormation のライブスムーズストリーミングスタックの削除 (p. 347)
API Version 2016-09-29
346
Amazon CloudFront 開発者ガイド
AWS CloudFormation のライブス
ムーズストリーミングスタックの削除
AWS CloudFormation のライブスムーズストリーミ
ングスタックの削除
ライブイベントが終了したら、ライブスムーズストリーミング用に作成したスタックを削除します。
これにより、ライブイベント用に作成した AWS リソースが削除され、そのリソースの AWS 料金が
停止します。
ライブストリーミング用の AWS CloudFormation スタックを削除するには
1.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
2.
スタックのチェックボックスをオンにして、[Delete Stack] をクリックします。
3.
[Yes, Delete] をクリックして確定します。
4.
スタックの削除状況を追跡するには、スタックのチェックボックスをオンにして、下部のフレー
ムにある [Events] タブをクリックします。
よくある質問
• CloudFront を使用したライブスムーズストリーミングの料金はいくらですか? (p. 347)
• ライブストリーミングビデオをスムーズストリーミングクライアントと Apple デバイスの両方に配
信できますか? (p. 347)
• Amazon EC2 インスタンスまたは CloudFront ディストリビューションの CNAME エイリアスをど
のようにセットアップできますか? (p. 348)
• Windows Server へのアクセスを有効にするにはどのようにすればよいですか? (p. 348)
• Windows IIS Media Services を実行している Amazon EC2 インスタンスに安全に接続するにはどの
ようにすればよいですか? (p. 348)
• ライブスムーズストリーミングのコンテンツに対する他のドメインからのアクセスを制限するには
どのようにすればよいですか? (p. 349)
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)が表示されます。
API Version 2016-09-29
347
Amazon CloudFront 開発者ガイド
よくある質問
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. 53)」を参照してください。
Windows Server へのアクセスを有効にするにはどのようにす
ればよいですか?
選択された IP 経由で Windows Server のポート 3389 にアクセスできるようにする
デフォルトでは、Windows Server インスタンスの Amazon EC2 セキュリティグループではポート
3389 が有効になっていません。このポートは、Windows Server を管理するために使用するポートで
す。Windows Server インスタンスにログオンする場合は、以下の手順を使用して、ポート 3389 経由
のアクセスを有効にします。
1.
AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ に
ある Amazon EC2 コンソールを開きます。
2.
[Region] リストで、AWS CloudFormation を使用して Amazon EC2 インスタンスを作成した
Amazon EC2 リージョンをクリックします。
3.
[Navigation] ペインで、[Security Groups] をクリックします。
4.
[Security Groups] ペインで、「ライブスムーズストリーミング用の AWS CloudFormation スタッ
クを作成する (p. 341)」で作成した AWS CloudFormation スタックの名前で [Name] 列の値が始
まっている行をクリックします。
5.
下部のペインで、[Inbound] タブをクリックします。
6.
Windows Server へのアクセスを有効にして、サーバーにアクセスできるクライアント IP アドレ
スを指定するには、以下の手順を実行します。
a.
[Create a new rule] リストで、デフォルト値の [Custom TCP rule] を変更しないでください。
b.
[Port range] フィールドに「3389」と入力します。
c.
[Source] フィールドに、IP アドレスまたは範囲を入力するか、別のセキュリティグループの
名前を入力します。詳細については、[Help] をクリックしてください。
d.
[Add Rule] をクリックします。
e.
追加のルールを作成するには、ステップ a ~ d を繰り返します。
f.
[Apply Rule Changes] をクリックします。
Windows IIS Media Services を実行している Amazon EC2 イ
ンスタンスに安全に接続するにはどのようにすればよいです
か?
Windows Server インスタンスに接続するには、Administrator アカウントの初期パスワードを取得
し、そのパスワードを Windows リモートデスクトップで使用する必要があります。また、作成した
API Version 2016-09-29
348
Amazon CloudFront 開発者ガイド
その他のドキュメント
プライベートキーファイルの中身も必要です(例: <keypairname.pem>.pem)。詳細については、
「Amazon EC2 Windows インスタンスの使用開始」を参照してください。
ライブスムーズストリーミングのコンテンツに対する他のドメ
インからのアクセスを制限するにはどのようにすればよいです
か?
Microsoft Silverlight では、クロスドメイン接続がサポートされます。これにより、Silverlight プレー
ヤーは、スムーズストリーミングのコンテンツの配信元のドメイン以外の場所からコンテンツにアク
セスできます。Silverlight のセキュリティポリシーシステムでは、ClientAccessPolicy.xml とい
う Silverlight ポリシーファイルをターゲットドメインからダウンロードする必要があります。これに
より、ネットワーク接続が許可され、ターゲットドメインのネットワークリソースにアクセスするこ
とができます。デフォルトのポリシーファイルは、Amazon EC2 で実行されている Windows Server
のデフォルトウェブサイトのルートにすでに含まれています。クロスドメインアクセスを制限するに
は、Windows Server にログオンし、ClientAccessPolicy.xml ファイルを更新します。
その他のドキュメント
Microsoft のドキュメント
• IIS スムーズストリーミングのデプロイガイド
• IIS Media Services 4.1 のリリースノート
• IIS スムーズストリーミング管理 REST サービス
• IIS 7 で認証を構成する
• Microsoft Expression Encoder ブログ
• 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 2016-09-29
349
Amazon CloudFront 開発者ガイド
Wowza Streaming Engine 4.2
によるライブストリーミング
Wowza Streaming Engine 4.2 を使用したライブ
HTTP ストリーミング
Wowza Streaming Engine 4.2 を使用して、CloudFront を使用したグローバル配信のためのライブス
トリーミングセッションを作成できます。Wowza Streaming Engine 4.2 は、以下の HTTP ベースのス
トリーミングプロトコルをサポートします。
• HLS(HTTP ライブストリーミング)
• HDS(HTTP ダイナミックストリーミング)
• スムーズストリーミング
• MPEG DASH
ユーザーが上記のいずれかのプロトコルを使用してビデオのストリーミングを実行すると、ビデオは
小さなチャンクに区切られ、パフォーマンスとスケーラビリティを向上させるために CloudFront ネッ
トワークにキャッシュされます。
このチュートリアルでは、CloudFront を、Amazon EC2 インスタンスで実行される Wowza
Streaming Engine 4.2 と統合する方法について説明します。Amazon EC2 インスタンスの管理および
セキュリティ保護を行う方法については、「Amazon EC2 ドキュメント」を参照してください。この
チュートリアルで説明されていない Wowza Streaming Engine オプションの詳細については、Wowza
のマニュアルを参照してください。
トピック
• アマゾン ウェブ サービスアカウントの作成 (p. 350)
• Amazon EC2 キーペアを作成する (p. 351)
• Wowza Streaming Engine 4.2 のライセンスを取得する (p. 351)
• AWS Marketplace で Wowza Streaming Engine 4.2 をサブスクライブする (p. 351)
• ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 352)
• Wowza Streaming Engine 4.2 が実行されていることを確認する (p. 354)
• ライブストリームを公開するエンコーダーをセットアップする (p. 354)
• ウェブアプリケーションを使用してライブストリームを再生する (p. 356)
• ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 357)
• よくある質問 (p. 357)
• その他のドキュメント (p. 359)
アマゾン ウェブ サービスアカウントの作成
すでに AWS アカウントをお持ちの場合は、この手順をスキップして「Amazon EC2 キーペアを作成
する (p. 351)」に進んでください。まだ AWS アカウントをお持ちでない場合は、次に説明する手順
に従ってアカウントを作成してください。
AWS アカウントを作成するには
1.
https://aws.amazon.com/ を開き、[AWS アカウントの作成] を選択します。
2.
オンラインの手順に従います。
サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入
力することが求められます。
API Version 2016-09-29
350
Amazon CloudFront 開発者ガイド
Amazon EC2 キーペアを作成する
次の手順: Amazon EC2 キーペアを作成する (p. 351)
Amazon EC2 キーペアを作成する
ライブストリーミングを構成する Amazon EC2 リージョンに Amazon EC2 キーペアがすでにある場
合は、この手順をスキップして「Wowza Streaming Engine 4.2 のライセンスを取得する (p. 351)」
に進んでください。そのリージョンにキーペアがない場合は、以下の手順を実行します。
キーペアとは、パスワードに似たセキュリティ認証情報で、AWS リージョンに固有なものです。一
連の手順の後半で、ライブストリーミング用の AWS CloudFormation スタックを作成するときにキー
ペアを指定する必要があります。ライブストリーミングを構成した後、キーペアを使用して Amazon
EC2 インスタンスへのセキュアな接続を行います。
Amazon EC2 キーペアを作成するには
1.
AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ に
ある Amazon EC2 コンソールを開きます。
2.
リージョンセレクタで、キーペアの作成先のリージョンを選択します。
このプロセスの後でライブストリーミング用の AWS CloudFormation スタックを作成するリー
ジョンと同じリージョンにキーペアを作成する必要があります。キーペアと、ライブストリーミ
ング用のスタックとは、ライブストリームを公開する場所に最も近いリージョンに作成すること
をお勧めします。
3.
左側のナビゲーションペインで、[Key Pairs] を選択します。
4.
[key pairs] ペインで、[Create Key Pair] を選択します。
5.
[Create Key Pair] ダイアログボックスにキーペアの名前を入力し、その名前を書き留めます。後
で、AWS CloudFormation ライブストリーミングスタックを作成するときに、この名前が必要に
なります。
6.
[Create] を選択し、指示が表示された場合は、.pem ファイルをコンピューターの安全な場所に保
存します。このファイルは再ダウンロードできませんので、ご注意ください。
7.
[Close] を選択し、[Create Key Pair] ダイアログボックスを閉じます。
次の手順: Wowza Streaming Engine 4.2 のライセンスを取得する (p. 351)
Wowza Streaming Engine 4.2 のライセンスを取得
する
ライブストリーミングを構成するには、Wowza Streaming Engine 4.2 のライセンスが必要です。これ
には2つのオプションがあります。
• 既にライセンスを所有している場合は、そのライセンスを使用してライブストリーミングを構成で
きます。次の手順に進みます。
• AWS アカウントを使用してライセンスを購入するには、Wowza ウェブサイトの料金表ページに進
み、目的に適した Wowza Streaming Engine のライセンスを購入します。
次の手順: AWS Marketplace で Wowza Streaming Engine 4.2 をサブスクライブする (p. 351)
AWS Marketplace で Wowza Streaming Engine 4.2
をサブスクライブする
次に、AWS Marketplace で Wowza Streaming Engine 4.2 をサブスクライブします。
API Version 2016-09-29
351
Amazon CloudFront 開発者ガイド
ライブストリーミング用の AWS
CloudFormation スタックを作成する
アマゾン ウェブ サービスで Wowza Streaming Engine を注文するには
1.
Amazon Web Services ページにアクセスし、お客様の Amazon.com アカウントでサインインす
るか、または新しいアカウントを作成します。
2.
自分のライセンスを使用する場合は、https://aws.amazon.com/marketplace/pp/B013FEULQA に
アクセスします。詳細を確認して、[Continue] を選択します。
AWS アカウントを使用してライセンスを購入する場合は、https://aws.amazon.com/marketplace/
pp/B012BW3WB8 にアクセスします。詳細を確認して、[Continue] を選択します。
3.
[Manual Launch] タブを選択します。
4.
料金表の情報を確認して、[Accept Terms] を選択します。
Important
このページのボタンを使用して Wowza を起動しないでください。
次の手順: ライブストリーミング用の AWS CloudFormation スタックを作成する (p. 352)
ライブストリーミング用の AWS CloudFormation ス
タックを作成する
以下の手順では、AWS CloudFormation テンプレートを使用し、Amazon EC2 インスタンスを含め、
ライブストリーミングで必要とされる AWS リソースを起動するスタックを作成します。
Important
Amazon EC2 インスタンスをデプロイする AWS CloudFormation スタックを作成した時点か
ら、そのインスタンスに対する時間単位の料金が発生します。ライブビデオのストリーミン
グに Amazon EC2 インスタンスを使用しているかどうかに関係なく、AWS CloudFormation
スタックを削除するまで、この料金がかかります。ライブイベントが終了したら、ライブ
ストリーミング用に作成したスタックを削除します。これにより、ライブストリーミング
イベント用に作成した AWS リソースが削除され、このリソースの AWS 料金が停止しま
す。詳細については、「ライブストリーミング用の AWS CloudFormation スタックを削除す
る (p. 357)」を参照してください。
ライブストリーミング用の AWS CloudFormation スタックを作成するには
1.
AWS CloudFormation スタックを作成するウィザードを開始するには、以下の該当するリンクを
選択します。
Wowza のライセンスを所有している場合は、AWS CloudFormation で Amazon EC2 インスタン
スを起動する Amazon EC2 リージョンを選択します。
• 米国東部(バージニア北部) でスタックを作成する
• 米国西部 (オレゴン) でスタックを作成する
• 米国西部 (北カリフォルニア) でスタックを作成する
• 欧州 (アイルランド) でスタックを作成する
• 欧州 (フランクフルト) でスタックを作成する
• アジアパシフィック (シンガポール) でスタックを作成する
• アジアパシフィック (シドニー) でスタックを作成する
• アジアパシフィック (東京) でスタックを作成する
API Version 2016-09-29
• 南米 (サンパウロ) でスタックを作成する
352
Amazon CloudFront 開発者ガイド
ライブストリーミング用の AWS
CloudFormation スタックを作成する
Wowza のライセンスを AWS アカウントに変更する場合は、AWS CloudFormation で Amazon
EC2 インスタンスを起動する Amazon EC2 リージョンを選択します。
• 米国東部(バージニア北部) でスタックを作成する
• 米国西部 (オレゴン) でスタックを作成する
• 米国西部 (北カリフォルニア) でスタックを作成する
• 欧州 (アイルランド) でスタックを作成する
• 欧州 (フランクフルト) でスタックを作成する
• アジアパシフィック (シンガポール) でスタックを作成する
• アジアパシフィック (シドニー) でスタックを作成する
• アジアパシフィック (東京) でスタックを作成する
• 南米 (サンパウロ) でスタックを作成する
2.
AWS マネジメントコンソール にまだサインインしておらず、サインインを求められた場合は、
サインインしてください。ウィザードが開始され、指定された URL が [Provide an S3 URL to
template] に自動的に表示されます。
3.
(オプション)[Create a New Stack] ウィザードで、スタック名をライブストリーミングイベン
トに適した名前に変更できます。スタック名にスペースを含めることはできません。また、ス
タック名は AWS アカウント内で一意である必要があります。
[Template] オプションまたは [Provide an S3 URL to template] のアドレスは変更しないでくださ
い。
4.
[Next Step] を選択します。
5.
[Specify Parameters] ページで、[ApplicationName] に Wowza アプリケーションのショートネー
ム(スペースなし)を入力するか、またはデフォルトのままにしておきます。
6.
[InstanceType] にインスタンスタイプを入力します。Wowza インスタンスの料金はインスタン
スタイプによって決まります。Amazon EC2 インスタンスタイプの詳細については、「Available
Instance Types」を参照してください。
料金については、Amazon EC2 料金表を参照してください。
7.
[KeyPair] には、ライブストリーミングスタックを作成するリージョンの Amazon EC2 キーペア
の名前を入力します。キーペアは、ログオンに現在使用しているアカウントに関連付けられて
いる必要があります。「Amazon EC2 キーペアを作成する (p. 351)」の手順を実行したときに
キーペアを作成してあれば、その名前をここに入力します。
8.
[StartupPackageURL] に、Wowza Streaming Engine を必要に合わせて構成するためのスタート
アップパッケージの URL を入力するか、デフォルトのままにしておきます。
9.
[StreamName] に、ライブストリームのショートネーム(スペースなし)を入力するか、または
デフォルトのままにしておきます。
10. [WowzaLicenseKey] フィールドにライセンスキーを入力します。これは、既に所有しているラ
イセンスのキーまたは「Wowza Streaming Engine 4.2 のライセンスを取得する (p. 351)」のト
ピックの手順を実行した時に取得したキーです。
購入済みの AddOn がある場合は、パイプ(|)文字でキー値を区切って、追加のライセンスキー
を含めることができます。
11. [Next Step] を選択します。
12. (オプション)[Options] ページで、使用する予定のタグについてキーと値のペアを追加します。
タグの使用の詳細については、「Adding Tags to Your AWS CloudFormation Stack」を参照して
ください。
13. (オプション)SNS 通知の構成、スタックの作成を待機する時間の指定、スタックの作成が失
敗した場合に変更をロールバックするかどうかの選択、スタックポリシーの入力を行うには、
[Advanced] を選択し、必要に応じて設定を調整します。
14. [Next Step] を選択します。
API Version 2016-09-29
353
Amazon CloudFront 開発者ガイド
Wowza Streaming Engine 4.2 が
実行されていることを確認する
15. スタックの設定を確認し、[Create] を選択します。AWS CloudFormation がスタックを作成しま
す。
スタックの作成には数分かかる場合があります。スタックの作成状況を追跡するには、スタック
を選択し、[Events] タブを選択します。AWS CloudFormation がスタックを作成できない場合、
[Events] タブにエラーメッセージが表示されます。
スタックの準備が整うと、スタックリストにあるスタックのステータスが
[CREATE_COMPLETE] に変わります。
スタックが作成されたら、[Outputs] タブを選択します。このタブには、スタックの作成に関する
出力が表示されます。これら出力される値は、この一連の手順の後半で、エンコーダーをセット
アップするときに使用します。
次の手順: Wowza Streaming Engine 4.2 が実行されていることを確認する (p. 354)
Wowza Streaming Engine 4.2 が実行されているこ
とを確認する
AWS CloudFormation がスタックを作成した後、以下のステップを実行して、AWS CloudFormation
でプロビジョニングした Amazon EC2 インスタンスで Wowza Streaming Engine 4.2 が実行されてい
ることを確認します。
Wowza Streaming Engine 4.2 が実行されていることを確認するには
1.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
2.
リージョンセレクターで、作成した AWS CloudFormation スタックが含まれているリージョンを
選択します。
3.
スタックリストで、「ライブストリーミング用の AWS CloudFormation スタックを作成す
る (p. 352)」で作成したスタックを選択します。
4.
[Outputs] タブを選択します。
5.
[Outputs] タブで、WowzaServerLoginInfo キーの値を取得します。次のステップで、その値をロ
グイン認証情報に使用します。
6.
WowzaEngineManagerURL キーの URL、たとえば http://ec2-xx-xx-xxxxxx.compute-1.amazonaws.com:8088/enginemanager を選択します。ログイン認証情報の入力を
求められたら、ステップ 5 で取得した WowzaServerLoginInfo キーの値を使用します。
Important
この URL は、Wowza Streaming Engine を実行している Amazon EC2 インスタンスへの
接続にポート 8088 を使用します。ファイアウォール設定によっては、Amazon EC2 イン
スタンスに接続できない可能性があります。問題が発生した場合は、ネットワーク管理
者に連絡してください。
次の手順: ライブストリームを公開するエンコーダーをセットアップする (p. 354)
ライブストリームを公開するエンコーダーをセット
アップする
デバイスでキャプチャしたライブストリームは、Wowza Streaming Engine 4.2 に送信する前にエン
コードする必要があります。iOS ベースのデバイス向けの Wowza GoCoder アプリ、または RTMP エ
API Version 2016-09-29
354
Amazon CloudFront 開発者ガイド
ライブストリームを公開するエ
ンコーダーをセットアップする
ンコーディングをサポートする 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.
Wowza チュートリアルの「How to use Wowza GoCoder video broadcasting iOS app with Wowza
Streaming Engine」ページを表示します。
2.
チュートリアルの「Configure Wowza GoCoder App」セクションに書かれている手順を行いま
す。[Host] 設定に以下の値を指定します。
3.
4.
a.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開き
ます。
b.
AWS CloudFormation コンソールで、[Outputs] タブを選択します。
c.
WowzaEngineDomainName キーの値(例: ec2-xx-xx-xxxxxx.compute-1.amazonaws.com)をコピーします。
d.
[Server] に、今コピーした値を貼り付けます。
e.
[Port] に「1935」と入力します。
[Application] 設定に以下の値を指定します。
a.
[Application] に、スタックを作成したときに指定したアプリケーション名(例: livecf)を
入力します。
b.
AWS CloudFormation コンソールの [Outputs] タブで、PublishStreamName キーの値(例:
myStream)をコピーします。
c.
[StreamName] に前のステップでコピーした値を貼り付けます。
他の値を適切に変更します。
RTMP エンコーダー
通常、RTMP エンコーダーは以下の設定値を使用します。
API Version 2016-09-29
355
Amazon CloudFront 開発者ガイド
ウェブアプリケーションを使用
してライブストリームを再生する
Publish URL
これは AWS CloudFormation PublishRTMPURL キーの値です(例: rtmp://ec2-xx-xx-xxxxxx.compute-1.amazonaws.com/livecf)。
Stream Name
これは AWS CloudFormation PublishStreamName キーの値です(例: myStream)。
ログイン認証情報
ログイン認証情報を求められたら、AWS CloudFormation の WowzaServerLoginInfo キーの値
(例: username=wowza、password=i-1234a567)を使用します。
次の手順: ウェブアプリケーションを使用してライブストリームを再生する (p. 356)
ウェブアプリケーションを使用してライブストリー
ムを再生する
Wowza Media Services には、サンプルプレイヤーのウェブページがオンラインで用意されていて、
そのページを使ってお客様の Wowza Streaming Engine ディストリビューションからライブストリー
ムを再生できます。このプレイヤーを使うことで、お客様のストリーミングスタックが正しくセット
アップされているかどうかを確認することができます。同じストリーミングマニフェスト URL を、使
用するストリーミングプロトコルをサポートする他のプレイヤーに使用できます。
該当の手順を実行し、ライブストリーム用のウェブページに含める埋め込みコードを取得します。
Note
「ライブストリームを公開するエンコーダーをセットアップする (p. 354)」の該当する手順
を実行した後、30 分待ってから、以下の手順を行ってストリームを再生します。
• CloudFront の HDS ストリームを Adobe Flash Player で再生するには (p. 356)
• CloudFront の HLS ストリームを Apple デバイスまたは他のデバイスで再生するには (p. 356)
• CloudFront のライブスムーズストリームを再生するには (p. 357)
CloudFront の HDS ストリームを Adobe Flash Player で再生するには
1.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
2.
ライブ HTTP ストリーミング用のスタックを選択します。
3.
AWS CloudFormation コンソールで、[Outputs] タブを選択します。
4.
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)をコピーします。
API Version 2016-09-29
356
Amazon CloudFront 開発者ガイド
ライブストリーミング用の AWS
CloudFormation スタックを削除する
5.
以下のいずれかのアプリケーションを使って、Wowza ウェブサイトの http://www.wowza.com/
docredirect.php?doc=exampleLiveIOSMacOSX_LatestiOS/Mac OS X 用サンプルウェブページに
アクセスし、前述のステップでコピーした URL を [Stream] フィールドに貼り付けて、[Connect]
を選択します。
• Mac OS X Snow Leopard(バージョン 10.6)以降が稼働するコンピューターの Safari ウェブ
ブラウザー
• Mac OS X Snow Leopard(バージョン 10.6)以降が稼働するコンピューターの QuickTime
Player 10.x 以降
• Apple iOS デバイスの Safari ウェブブラウザー
CloudFront のライブスムーズストリームを再生するには
1.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
2.
ライブストリーミング用のスタックを選択します。
3.
4.
AWS CloudFormation コンソールで、[Outputs] タブを選択します。
PlaybackSmoothURL キーの値(例: http://d111111abcdef8.cloudfront.net/livecf/myStream/
Manifest)をコピーします。
5.
Wowza ウェブサイトの Silverlight Player サンプルウェブページにアクセスし、前のステップでコ
ピーした URL を [Stream] フィールドに貼り付けて、[Connect] を選択します。
次の手順: ライブストリーミング用の AWS CloudFormation スタックを削除する (p. 357)
ライブストリーミング用の AWS CloudFormation ス
タックを削除する
ライブイベントが終了したら、ライブストリーミング用に作成したスタックを削除します。これによ
り、ライブストリーミングイベント用に作成した AWS リソースが削除され、このリソースのオンデ
マンド課金が停止します。
ライブストリーミング用の AWS CloudFormation スタックを削除するには
1.
2.
3.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
スタックを作成したリージョンを、画面右上で選択します。
そのスタックを選択してから [Delete Stack] を選択します。
4.
5.
[Yes, Delete] を選択して確定します。
スタックの削除状況を追跡するには、スタックを選択し、[Events] タブを選択します。
よくある質問
• CloudFront と Wowza Streaming Engine 4.2 を使用するライブ HTTP ストリーミングの料金を教え
てください。 (p. 358)
• Wowza Streaming Engine 4.2 が実行されている Amazon EC2 インスタンスに Secure
Shell(SSH)を使用して接続する方法を教えてください。 (p. 358)
• Amazon EC2 インスタンスまたは CloudFront ディストリビューションの CNAME エイリアスをど
のように作成できますか? (p. 358)
• 私のライブイベントを、Flash Player 互換デバイス、Apple デバイス、およびスムーズストリーミ
ングプレイヤーに同時にストリーム配信できますか? (p. 358)
• Wowza Streaming Engine 4.2 では、HTML5 をサポートしていますか? (p. 359)
API Version 2016-09-29
357
Amazon CloudFront 開発者ガイド
よくある質問
• Wowza と CloudFront を使用してライブストリームをプライベートに配信できますか? (p. 359)
CloudFront と Wowza Streaming Engine 4.2 を使用するライブ
HTTP ストリーミングの料金を教えてください。
CloudFront と Wowza Streaming Engine 4.2 を使用するライブ HTTP ストリーミングの料金には、以
下が含まれます。
• Wowza Streaming Engine ソフトウェアとアドオン: 詳細については、Wowza ウェブサイトの
Licenses Built For You ページを参照してください。
• Amazon EC2: 詳細については、「オンデマンドインスタンス価格」表の「Linux」タブを参照して
ください。
• CloudFront: 詳細については、「Amazon CloudFront 料金表」を参照してください。
AWS CloudFormation の使用料はありません。
Wowza Streaming Engine 4.2 が実行されている Amazon EC2
インスタンスに Secure Shell(SSH)を使用して接続する方法
を教えてください。
少しの手順だけで、SSH を使用して Amazon EC2 インスタンスに接続できます。
SSH を使用して、Wowza Streaming Engine 4.2 が実行されている Amazon EC2 インスタン
スに接続するには
1.
2.
https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。
左のナビゲーションで、[Instances] を選択します。
3.
適切なインスタンスを右クリックし、[Connect] を選択します。SSH を使用して Amazon EC2 イ
ンスタンスに接続するための手順が表示されます。ユーザー名は ec2-user です。
Amazon EC2 インスタンスまたは CloudFront ディストリ
ビューションの CNAME エイリアスをどのように作成できま
すか?
Wowza Streaming Engine 4.2 を実行する Amazon EC2 インスタンスには内部および外部の DNS 名が
あります。Amazon EC2 では、この DNS 設定を変更できません。Wowza Streaming Engine が実行さ
れている Amazon EC2 インスタンスに既存のドメイン名をマップする場合は、Amazon Route 53 な
どの DNS サービスプロバイダーを使用します。独自のドメイン名を使用する場合、インスタンスの
IP アドレスを指す A レコードを使用するのではなく、CNAME を使用してインスタンスの外部 DNS
名にマップすることをお勧めします。
独自のドメイン名を CloudFront ディストリビューションにマップするには、「代替ドメイン名
(CNAME)を使用する (p. 53)」を参照してください。
私のライブイベントを、Flash Player 互換デバイス、Apple デ
バイス、およびスムーズストリーミングプレイヤーに同時にス
トリーム配信できますか?
はい、できます。Wowza Streaming Engine 4.2 では、Adobe HTTP Dynamic Streaming(Adobe
HDS)、Apple HTTP Live Streaming(Apple HLS)、および Microsoft スムーズストリーミングの
API Version 2016-09-29
358
Amazon CloudFront 開発者ガイド
その他のドキュメント
フォーマットで同時にライブストリーム配信できます。配信されたストリームはそれぞれ Adobe
Flash Player アプリケーション、Apple iOS デバイス、スムーズストリーミングプレイヤーで再生でき
ます。
Wowza Streaming Engine 4.2 では、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. 186)」を参照してください。
その他のドキュメント
以下の資料は、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 2016-09-29
359
Amazon CloudFront 開発者ガイド
CloudFront および任意の HTTP オリジン
を使用したライブ HTTP ストリーミング
CloudFront および任意の HTTP オリジンを使用
したライブ HTTP ストリーミング
Amazon CloudFront ライブストリーミングでは、HTTP ベースのストリームを出力する Elemental
Live などのライブエンコーダーを使用して、ライブ演奏、オンラインセミナー、およびその他のイベ
ントをストリーミングできます。このチュートリアルでは、ライブストリーミングを設定するプロセ
スを順番に見ていきます。
Note
このチュートリアルでは、ライブエンコーダーをセットアップ済みであることを前提として
います。
トピック
• ライブストリーミング用の新しい CloudFront ディストリビューションの作成 (p. 360)
• ライブストリームを再生するためのウェブプレーヤーの設定 (p. 361)
• (オプション) ライブストリーミング用の AWS CloudFormation スタックの削除 (p. 361)
ライブストリーミング用の新しい CloudFront ディ
ストリビューションの作成
次の手順では、AWS CloudFormation テンプレートを使用して、ライブストリームに使用する新しい
CloudFront ディストリビューションを作成します。
ライブストリーミング用の新しい CloudFront ディストリビューションを作成する方法
1.
Amazon Web Services ページにアクセスし、お客様の Amazon.com アカウントでサインインす
るか、または新しいアカウントを作成します。
2.
新しい CloudFront ディストリビューションを作成するウィザードを開始するには、以下のリンク
を選択します。
ライブ HTTP ストリーミング用の CloudFront ディストリビューションの作成
3.
[Select Template] ページで、[Next] を選択します。
4.
[Specify Details] ページで次の値を入力します。
スタックの名前
ライブストリーミングスタックを示すわかりやすい名前を入力するか、デフォルトの名前を
そのまま使用します。
CustomOriginDNSName
CloudFront がライブフィードを取得するカスタムオリジンの DNS 名を入力します。
CustomOriginHTTPPort
カスタムオリジンと通信するために CloudFront で使用する HTTP TCP ポートを入力しま
す。
DistributionComment
複数のディストリビューションを管理する場合に役立つ、ディストリビューションを識別す
るコメントを入力します。ここで入力した値は、CloudFront コンソールに表示されます。
5.
[Next] を選択します。
6.
(オプション) [Options] ページで、使用する予定のタグについてキーと値のペアを追加します。ま
た、SNS 通知の構成、スタックの作成を待機する時間の指定、スタックの作成が失敗した場合に
変更をロールバックするかどうかの選択、スタックポリシーの入力を行うには、[Advanced] を選
API Version 2016-09-29
360
Amazon CloudFront 開発者ガイド
ライブストリームを再生する
ためのウェブプレーヤーの設定
択し、必要に応じて設定を調整します。詳細については、「AWS CloudFormation スタックオプ
ションの設定」を参照してください。
7.
[Next] を選択します。
8.
スタックの設定を確認し、[Create] を選択します。AWS CloudFormation がスタックを作成しま
す。
スタックの作成には数分かかる場合があります。スタックの作成状況を追跡するには、スタック
を選択し、[Events] タブを選択します。AWS CloudFormation がスタックを作成できない場合、
[Events] タブにエラーメッセージが表示されます。
スタックの準備が整うと、スタックリストにあるスタックのステータスが
[CREATE_COMPLETE] に変わります。
9.
スタックが作成されたら、CloudFront ドメイン名が表示される [Outputs] タブを選択します。
ウェブプレーヤーでライブストリームの再生をセットアップするときに、この値が必要です。
ライブストリームを再生するためのウェブプレー
ヤーの設定
ライブストリームを再生するには、ユーザーがライブストリームの再生に使用するプレーヤーにマ
ニフェスト URL を埋め込みます。たとえば、マニフェストファイルが [myStream/playlist.m3u8] で
CloudFront ディストリビューションが [d111111abcdef8.cloudfront.net] のライブストリームを再生す
るには、次の URL をプレーヤーに埋め込みます。
http://d111111abcdef8.cloudfront.net/myStream/playlist.m3u8
(オプション) ライブストリーミング用の AWS
CloudFormation スタックの削除
ライブイベントが終了したら、ライブストリーミング用に作成したスタックを削除します。これによ
り、ライブストリーミングイベント用に作成した CloudFront ディストリビューションが削除されま
す。
Note
ストリーミングを停止すると、このディストリビューションに関する CloudFront の料金の発
生も停止されます。AWS CloudFormation スタックには料金がかかりません。
ライブストリーミング用の AWS CloudFormation スタックを削除するには
1.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
2.
スタックを作成したリージョンを、画面右上で選択します。
3.
そのスタックを選択してから [Delete Stack] を選択します。
4.
[Yes, Delete] を選択して確定します。
5.
スタックの削除状況を追跡するには、スタックを選択し、[Events] タブを選択します。
API Version 2016-09-29
361
Amazon CloudFront 開発者ガイド
Unified Streaming を使用したオン
デマンドメディアストリーミング
Unified Streaming を使用したオンデマンドメディ
アストリーミング
Amazon CloudFront を使用して HTTP 経由でオンデマンドストリーミングを配信するとき、コン
テンツを複数のビットレートおよび形式にトランスコードし、トランスコードしたコンテンツを
CloudFront を使用して配信できます。または、ユーザーがコンテンツをリクエストすると自動的にト
ランスコードを実行する Unified Streaming を CloudFront で使用することもできます。CloudFront で
Unified Streaming を使用する方法は次のとおりです。
1. AWS CloudFormation スタックを使用して、Unified Streaming Platform を実行している Amazon
EC2 インスタンス、Amazon S3 バケット、CloudFront ディストリビューションなどの必要な AWS
リソースを設定します。
2. MP4 形式のビデオファイルを Amazon S3 バケットにアップロードします。
3. 適切なリンクをウェブサイトまたはウェブアプリケーションに追加します。リンクをクリックする
と、CloudFront URL を使用してコンテンツにアクセスします。独自のドメイン名の DNS リクエス
トを CloudFront にルーティングすることもできます。
4. ユーザーがコンテンツにアクセスすると、リクエストが CloudFront エッジロケーションに転送さ
れます。
5. CloudFront エッジロケーションはリクエストを Unified Streaming Platform に転送します。
6. User-Agent ヘッダーの値に基づいて、Unified Streaming Platform はユーザーのビューアが必要と
する形式を特定し、コンテンツをその形式にトランスコードして、トランスコードしたコンテンツ
を CloudFront に返します。
7. CloudFront はトランスコードしたコンテンツをビューアに返し、ファイルをエッジロケーションで
キャッシュします。次回ユーザーが同じエッジキャッシュから同じ形式のコンテンツをリクエスト
すると、CloudFront は既にキャッシュにあるファイルを使用して応答します。
Unified Streaming Platform は、以下の HTTP ベースの動的ストリーミングプロトコルをサポートして
います。
• Adobe HTTP Dynamic Streaming (Adobe HDS)
• Apple HTTP Live Streaming(Apple HLS)
• Microsoft Smooth Streaming
• MPEG-DASH
このチュートリアルでは、AWS CloudFormation スタックを使用して、メディアファイル用の
Amazon S3 バケット、Unified Streaming メディアサーバーソフトウェアを実行している Amazon
EC2 インスタンス、および CloudFront ディストリビューションを作成します。Unified Streaming を
使用したオンデマンドストリーミングに対応するように AWS リソースを設定する方法は多数ありま
すが、このチュートリアルではそのうちの 1 つのみについて説明します。
Note
Amazon EC2 インスタンスの管理およびセキュリティ保護を行う方法については、「Amazon
EC2 ドキュメント」を参照してください。
サポートされているプラットフォーム、クライアント、コーデック、DRM 形式、およびその他の
Unified Streaming の仕様については、Unified Streaming Platform ファクトシートを参照してくださ
い。Unified Streaming と Amazon Web Services(AWS)に関するその他のドキュメントへのリンク
については、「その他のドキュメント (p. 374)」を参照してください。
トピック
• Amazon Web Services アカウントを作成する (p. 363)
API Version 2016-09-29
362
Amazon CloudFront 開発者ガイド
Amazon Web Services アカウントを作成する
• Amazon EC2 キーペアを作成する (p. 363)
• Unified Streaming のサブスクライブ (p. 364)
• オンデマンドストリーミング用の AWS CloudFormation スタックの作成 (p. 364)
• Unified Streaming サーバーが実行されていることの確認 (p. 367)
• Amazon S3 へのメディアファイルのアップロード (p. 367)
• テストウェブアプリケーションでのオンデマンドストリームの再生 (p. 368)
• オンデマンドストリーミング用の AWS CloudFormation スタックと Amazon S3 バケットの削
除 (p. 371)
• よくある質問 (p. 371)
• その他のドキュメント (p. 374)
Amazon Web Services アカウントを作成する
すでに AWS アカウントをお持ちの場合は、この手順をスキップして「Amazon EC2 キーペアを作成
する (p. 363)」に進んでください。まだ AWS アカウントをお持ちでない場合は、次に説明する手順
に従ってアカウントを作成してください。
Note
アカウントを作成すると、そのアカウントで AWS のすべてのサービスへのサインアップが自
動的に行われます。料金が発生するのは、お客様が使用したサービスの分のみです。
AWS アカウントを作成するには
1.
http://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。
2.
画面上の指示に従ってください。
サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入
力することが求められます。
次の手順: Amazon EC2 キーペアを作成する (p. 363)
Amazon EC2 キーペアを作成する
Unified Streaming 用の AWS CloudFormation を作成する Amazon EC2 リージョンに Amazon
EC2 キーペアが既にある場合は、この手順をスキップして「Unified Streaming のサブスクライ
ブ (p. 364)」に進んでください。そのリージョンにキーペアがない場合は、次の手順を実行して作成
します。
キーペアとは、パスワードに似たセキュリティ認証情報です。このプロセスの後のステップでオンデ
マンドストリーミング用の AWS CloudFormation スタックを作成するときにキーペアを指定します。
オンデマンドストリーミングを設定した後、キーペアを使用して安全に Amazon EC2 インスタンスに
接続します。
Amazon EC2 キーペアを作成するには
1.
AWS マネジメントコンソールにサインインをしたあと、https://console.aws.amazon.com/ec2/ に
ある Amazon EC2 コンソールを開きます。
2.
[Region] リストで、キーペアの作成先のリージョンを選択します。
このプロセスの後のステップでオンデマンドストリーミング用の AWS CloudFormation スタッ
クを作成するリージョンにキーペアを作成する必要があります。ストリーミングを実行するユー
API Version 2016-09-29
363
Amazon CloudFront 開発者ガイド
Unified Streaming のサブスクライブ
ザーに最も近いリージョンにキーペアとオンデマンドストリーミング用のスタックを作成するこ
とを推奨します。
3.
ナビゲーションペインで、[Key Pairs] を選択します。
4.
[Key Pairs] ペインで、[Create Key Pair] を選択します。
5.
[Create Key Pair] ダイアログボックスにキーペアの名前(on-demand-streaming など)を入力
し、その名前を書き留めます。この値は、このプロセスの後のステップでオンデマンドストリー
ミング用の AWS CloudFormation スタックを作成するときに入力します。
6.
[Create] をクリックします。
7.
[Opening <key_pair_name>.pem] ダイアログボックスで、.pem ファイルをコンピューターの安全
な場所に保存します。
Important
プライベートキーのダウンロードと保存を行う必要があるのは、この機会のみです。
8.
[Close] をクリックし、[Create Key Pair] ダイアログボックスを閉じます。
次の手順: Unified Streaming のサブスクライブ (p. 364)
Unified Streaming のサブスクライブ
AWS Marketplace を介して Amazon Web Services で Unified Streaming をサブスクライブするには、
次の手順を実行します。
Important
AWS アカウントで Unified Streaming をサブスクライブできるのは 1 回のみです。AWS アカ
ウントが既に Unified Streaming をサブスクライブしている場合は、そのサブスクリプション
を使用してオンデマンドストリーミングを設定します。
Unified Streaming は無料でサブスクライブできます。発生する料金は 1 時間単位の利用料金とデータ
転送に対する料金のみです。以下の手順の一部として詳細な価格表を確認できます。
Amazon Web Services 用の Unified Streaming を入手するには
1.
AWS Marketplace のウェブサイトの「Unified Streaming(USP)」ページにアクセスします。
2.
製品情報を確認し、[Continue] を選択します。
3.
[Manual Launch with EC2 Console, APIs or CLI] タブをクリックします。
4.
料金表の情報を確認して、[Accept Terms] を選択します。
Important
このページのボタンを使用して Unified Streaming を起動しないでください。次の手順で
は、AWS CloudFormation インスタンスを起動し、Unified Streaming をインストールす
る Amazon EC2 スタックを作成します。
次の手順: オンデマンドストリーミング用の AWS CloudFormation スタックの作成 (p. 364)
オンデマンドストリーミング用の AWS
CloudFormation スタックの作成
AWS CloudFormation テンプレートを使用して、オンデマンドストリーミングに必要な AWS リソー
スを作成するスタックを作成します。これらのリソースには、Amazon EC2 インスタンス、Amazon
API Version 2016-09-29
364
Amazon CloudFront 開発者ガイド
オンデマンドストリーミング用の
AWS CloudFormation スタックの作成
S3 バケット、および CloudFront ディストリビューションが含まれます。必要に応じて、既存のバ
ケットを使用できます。
Important
AWS CloudFormation スタックを作成すると、AWS リソースに対する課金が開始されます。
• Amazon EC2 インスタンスとロードバランサーの 1 時間単位の利用料金と CloudWatch の
月額料金は、リソースを使用してビデオをストリーミングするかどうかに関係なく、AWS
CloudFormation スタックを削除するまで課金されます。
• Amazon S3 と CloudFront の使用料金は、リソースの使用量によって異なります。
AWS CloudFormation スタックが作成するリソースを使用する必要がなくなれば、スタックを
削除してください。これにより、スタックが作成した AWS リソースが削除され、リソースに
対する AWS 料金の課金が停止されます。スタックを削除しても Amazon S3 バケットは削除
されません。バケットにメディアファイルが含まれている可能性があるからです。
AWS リソースの価格設定については、「AWS サービス料金の概要」を参照してください。AWS
CloudFormation スタックを削除する方法については、「オンデマンドストリーミング用の AWS
CloudFormation スタックと Amazon S3 バケットの削除 (p. 371)」を参照してください。AWS
CloudFormation の詳細については、「AWS CloudFormation ドキュメント」を参照してください。
オンデマンドストリーミング用の AWS CloudFormation スタックを作成するには
1.
[Create Stack] ウィザードを開始するには、該当する Amazon EC2 リージョンに対応するリン
クを選択します。Amazon EC2 インスタンスと CloudFront ディストリビューションの作成に加
えて Amazon S3 バケットの作成も AWS CloudFormation が行うかどうかに応じて、1 番目のグ
ループまたは 2 番目のグループのリンクをクリックします。
• 最初のグループのリンクを選択すると、AWS CloudFormation は対応するリージョンに
Amazon EC2 インスタンスと Amazon S3 バケットを作成します。CloudFront ディストリ
ビューションは特定のリージョンに関連付けられていません。
• 2 番目のグループのリンクを選択すると、AWS CloudFormation は Amazon EC2 インスタンス
を作成し、使用する Amazon S3 バケットを指定するように求めます。リージョン間における
データ転送に対して課金されないように、Amazon S3 バケットが既にあるリージョンを選択す
ることを推奨します。
メディアをアップロードおよび格納するための新しい Amazon S3 バケットを含む必要なすべて
のリソースを作成します。
• 米国東部(バージニア北部) でスタックを作成する
• 米国西部 (オレゴン) でスタックを作成する
• 米国西部 (北カリフォルニア) でスタックを作成する
• 欧州 (アイルランド) でスタックを作成する
•
•
•
•
欧州 (フランクフルト) でスタックを作成する
アジアパシフィック (シンガポール) でスタックを作成する
アジアパシフィック (東京) でスタックを作成する
アジアパシフィック (シドニー) でスタックを作成する
• 南米 (サンパウロ) でスタックを作成する
Amazon EC2 インスタンスと CloudFront ディストリビューションを作成します。ただし、メ
ディアをアップロードおよび格納するには既存の Amazon S3 バケットを使用します。
• 米国東部(バージニア北部) でスタックを作成する
API Version 2016-09-29
365
Amazon CloudFront 開発者ガイド
オンデマンドストリーミング用の
AWS CloudFormation スタックの作成
• 米国西部 (オレゴン) でスタックを作成する
• 米国西部 (北カリフォルニア) でスタックを作成する
• 欧州 (アイルランド) でスタックを作成する
• 欧州 (フランクフルト) でスタックを作成する
• アジアパシフィック (シンガポール) でスタックを作成する
• アジアパシフィック (東京) でスタックを作成する
• アジアパシフィック (シドニー) でスタックを作成する
• 南米 (サンパウロ) でスタックを作成する
ウィザードが開始され、該当する URL が [Provide an S3 URL to template] フィールドに自動的に
表示されます。
2.
AWS マネジメントコンソールにまだサインインしていない場合は、サインインを求められたとき
にサインインします。
3.
(オプション)[Stack Name] を変更します。スタック名にスペースを含めることはできません。
また、スタック名は AWS アカウント内で一意である必要があります。
[Template] オプションまたは [Provide an S3 URL to template] のアドレスは変更しないでくださ
い。
4.
[Next] をクリックします。
5.
[Amazon EC2KeyPair] に、ステップ 1 で選択したリージョンと同じリージョンの Amazon EC2
キーペアの名前を入力します。キーペアは、サインインに現在使用しているアカウントに関連付
けられている必要があります。「Amazon EC2 キーペアを作成する (p. 363)」の手順を実行し
たときにキーペアを作成した場合は、そのキーペアの名前を入力します。
6.
ステップ 1 で既存の Amazon S3 バケットを使用するためのリンクを選択した場合は、
[AmazonS3BucketName] フィールドにバケットの名前を入力します。
7.
[InstanceType] にインスタンスタイプを入力します。これにより、Amazon EC2 インスタンスの
価格設定が決定されます。Amazon EC2 インスタンスタイプの詳細については、「Linux インス
タンス用 Amazon EC2 ユーザーガイド」で、使用可能なインスタンスタイプを参照してくださ
い。
価格設定については、AWS Marketplace のウェブサイトの「Unified Streaming(USP)」ページ
を参照してください。
8.
[Next] をクリックします。
9.
(省略可能)[Options] ページで 1 つ以上のタグを追加します。指定したタグは、Amazon EC2
インスタンスと、AWS CloudFormation が作成する Amazon S3 バケットに適用されます。た
だし、タグは AWS CloudFormation が作成する CF; ディストリビューションには適用されませ
ん。AWS CloudFormation では、CloudFront ディストリビューションにタグを追加できません。
10. (オプション)SNS 通知の構成、スタックの作成を待機する時間の指定、スタックの作成が失
敗した場合に変更をロールバックするかどうかの選択、スタックポリシーの入力を行うには、
[Advanced] を選択し、必要に応じて設定を調整します。
11. [Next] をクリックします。
12. スタックの設定を確認します。設定が適切であることを確認したら、[Create] を選択しま
す。AWS CloudFormation によってスタックが作成されます。
スタックの作成には数分かかることがあります。スタックの作成状況を追跡するには、スタック
を選択し、下部のフレームにある [Events] タブを選択します。AWS CloudFormation がスタック
を作成できない場合、[Events] タブにエラーメッセージが表示されます。
スタックの準備が整うと、スタックのステータスが [CREATE_COMPLETE] に変わります。
次の手順: Unified Streaming サーバーが実行されていることの確認 (p. 367)
API Version 2016-09-29
366
Amazon CloudFront 開発者ガイド
Unified Streaming サーバーが実行されていることの確認
Unified Streaming サーバーが実行されていることの
確認
AWS CloudFormation がスタックを作成した後、AWS CloudFormation を使用してプロビジョニング
した Amazon EC2 インスタンスで Unified Streaming が実行されていることを確認します。これを行
うには、次の手順を実行します。
Unified Streaming サーバーが実行されていることを確認するには
1.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
2.
リージョンセレクターで、作成した AWS CloudFormation スタックが含まれているリージョンを
選択します。
3.
スタックリストで、「オンデマンドストリーミング用の AWS CloudFormation スタックの作
成 (p. 364)」で作成したスタックを選択します。
4.
[Outputs] タブをクリックします。
5.
UnifiedServer キーの URL(http://ec2-01-2-34-567.compute-1.amazonaws.com/ など)をコピー
します。
6.
URL をウェブブラウザーのアドレスバーに貼り付け、Enter キーを押します。
7.
Unified Streaming のホームページで、プレイヤーのリンクを選択して、コンピューターまたはデ
バイスで再生されることを確認します。
Unified Streaming のホームページが表示されない場合は、「Unified Streaming を使用したオンデ
マンドメディアストリーミング (p. 362)」に戻り、最初の 4 つのタスクで指定した値が正しい
ことを確認します。
次の手順: Amazon S3 へのメディアファイルのアップロード (p. 367)
Amazon S3 へのメディアファイルのアップロード
AWS CloudFormation スタックで指定した(AWS CloudFormation が作成するように設定し
た)Amazon S3 バケットを使用してメディアコンテンツを格納します。これらのファイルはオープン
に読み取り可能であるため、Unified Streaming サーバーはこれらのファイルを CloudFront を介して
プレイヤーに配信できます。
メディアファイルを Amazon S3 バケットにアップロードするには
1.
「Unified Streaming ファクトシート」を参照して、Unified Streaming がサポートしている形式で
メディアがエンコードされていることを確認します。
2.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
3.
「オンデマンドストリーミング用の AWS CloudFormation スタックの作成 (p. 364)」で作成し
たスタックを選択します。
4.
[Outputs] タブを選択します。
5.
[S3BucketName] キーの値を書き留めます。この Amazon S3 バケットにメディアファイルをアッ
プロードします。
6.
https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。
7.
左側のバケットのリストで、ステップ 5 で書き留めたバケットの名前を選択します。
8.
[Upload] を選択します。
9.
[Upload - Select Files and Folders] ダイアログボックスで、[Add Files] を選択します。
10. アップロードするファイルを選択します。
API Version 2016-09-29
367
Amazon CloudFront 開発者ガイド
テストウェブアプリケーションで
のオンデマンドストリームの再生
11. [Set Details] を選択します。
12. [Set Permissions] を選択します。
13. [Make everything public] を選択し、[Start Upload] を選択します。
次の手順: テストウェブアプリケーションでのオンデマンドストリームの再生 (p. 368)
テストウェブアプリケーションでのオンデマンドス
トリームの再生
オンデマンドストリーミングが正常に動作していることを確認するには、テストウェブアプリケー
ションでストリームを再生します。AWS CloudFormation は、Amazon EC2 インスタンスを作成した
ときに、サンプルビデオファイルと 2 つのサンプルプレイヤーもインストールしました。
• Silverlight – Microsoft Smooth Streaming プロトコルを使用したビデオのストリーミング
• OSMF 2.0 – Adobe HTTP Dynamic Streaming (Adobe HDS) プロトコルを使用した Adobe Flash で
のビデオのストリーミング
次の手順では、複数の異なるプロトコルを使用してオンデマンドストリームを再生する方法について
説明します。
• Microsoft Smooth Streaming プロトコルを使用してビデオを再生するには (p. 368)
• Apple HTTP Live Streaming(HLS)プロトコルを使用してビデオを再生するには (p. 369)
• Adobe HTTP Dynamic Streaming (HDS) プロトコルを使用してビデオを再生するには (p. 369)
• MPEG-DASH プロトコルを使用してビデオを再生するには (p. 370)
Microsoft Smooth Streaming プロトコルを使用してビデオを再生するには
1.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
2.
AWS CloudFormation スタックのリストで、オンデマンド HTTP ストリーミング用のスタックを
選択します。
3.
AWS CloudFormation コンソールの下部のペインで、[Outputs] タブを選択します。
4.
[Outputs] タブの [OriginS3] フィールドの URL をコピーします。これは Unified Streaming サー
バー上の Microsoft Smooth Streaming サンプルウェブページの URL です。
5.
URL をブラウザーに貼り付け、ウェブサイトにアクセスします。
6.
[SmoothManifest] キーの値をコピーし、サンプルウェブページの URL フィールドに貼り付けま
す。次のサンプル URL の media-file-path-excluding-bucket-name-but-includingmedia-file-name は文字テキストであり、次のステップで置き換えることに注意してくださ
い。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/media-file-path-excluding-bucket-name-butincluding-media-file-name/manifest
7.
サンプルウェブページの media-file-path-excluding-bucket-name-but-includingmedia-file-name を、再生する Amazon S3 のビデオの正しいパスに置き換えます。たとえ
ば、メディアファイル名が nasa_msl_launch.mp4 である場合、URL は次のとおりです。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/nasa_msl_launch.mp4/manifest
ビデオが Amazon S3 バケットの space-videos フォルダーにある場合、URL は次のとおりで
す。
API Version 2016-09-29
368
Amazon CloudFront 開発者ガイド
テストウェブアプリケーションで
のオンデマンドストリームの再生
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/space-videos/nasa_msl_launch.mp4/manifest
Apple HTTP Live Streaming(HLS)プロトコルを使用してビデオを再生するには
1.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
2.
AWS CloudFormation スタックのリストで、オンデマンド HTTP ストリーミング用のスタックを
選択します。
3.
AWS CloudFormation コンソールの下部のペインで、[Outputs] タブを選択します。
4.
Apple iOS デバイスで Safari ウェブブラウザーを開くか、Mac OS X Snow Leopard (バージョン
10.6) 以降が稼働するコンピューターで Safari ウェブブラウザーまたは QuickTime Player 10.x を
開きます。
5.
[SmoothManifest] キーの値をコピーし、Safari ブラウザーまたは QuickTime Player の URL
フィールドに貼り付けます。次のサンプル URL の media-file-path-excluding-bucketname-but-including-media-file-name は文字テキストであり、次のステップで置き換える
ことに注意してください。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/media-file-path-excluding-bucket-name-butincluding-media-file-name/manifest
6.
URL フィールドの media-file-path-excluding-bucket-name-but-including-mediafile-name を、再生する Amazon S3 のビデオの正しいパスに置き換えます。たとえば、メディ
アファイル名が nasa_msl_launch.mp4 である場合、URL は次のとおりです。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/nasa_msl_launch.mp4/manifest
ビデオが Amazon S3 バケットの space-videos フォルダーにある場合、URL は次のとおりで
す。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/space-videos/nasa_msl_launch.mp4/manifest
Adobe HTTP Dynamic Streaming (HDS) プロトコルを使用してビデオを再生するには
1.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
2.
AWS CloudFormation スタックのリストで、オンデマンド HTTP ストリーミング用のスタックを
選択します。
3.
AWS CloudFormation コンソールの下部のペインで、[Outputs] タブを選択します。
4.
[Outputs] タブの [OriginS3] フィールドの URL をコピーします。これは Unified Streaming サー
バー上の Flash HTTP Player サンプルウェブページの URL です。
5.
URL をブラウザーに貼り付け、ウェブサイトにアクセスします。
6.
[HDSManifest] キーの値をコピーし、サンプルウェブページの URL フィールドに貼り付けま
す。次のサンプル URL の media-file-path-excluding-bucket-name-but-includingmedia-file-name は文字テキストであり、次のステップで置き換えることに注意してくださ
い。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/media-file-path-excluding-bucket-name-butincluding-media-file-name/manifest
API Version 2016-09-29
369
Amazon CloudFront 開発者ガイド
テストウェブアプリケーションで
のオンデマンドストリームの再生
7.
URL フィールドの media-file-path-excluding-bucket-name-but-including-mediafile-name を、再生する Amazon S3 のビデオの正しいパスに置き換えます。たとえば、メディ
アファイル名が nasa_msl_launch.mp4 である場合、URL は次のとおりです。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/nasa_msl_launch.mp4/manifest
ビデオが Amazon S3 バケットの space-videos フォルダーにある場合、URL は次のとおりで
す。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/space-videos/nasa_msl_launch.mp4/manifest
MPEG-DASH プロトコルを使用してビデオを再生するには
1.
http://dashif.org/reference/players/javascript/index.html を参照します。ここには使用可能なバー
ジョンの MPEG-DASH テストクライアントのリストが表示されます。
2.
最新バージョンの MPEG-DASH クライアントを選択します。
3.
[Reference Client バージョン番号] ページの [Stream] リストで、ストリーミング形式を選択しま
す。
4.
AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation/) を開きま
す。
5.
AWS CloudFormation スタックのリストで、オンデマンド HTTP ストリーミング用のスタックを
選択します。
6.
AWS CloudFormation コンソールの下部のペインで、[Outputs] タブを選択します。
7.
[MPEGDASHManifest] キーの値をコピーし、[Reference Client] ページの [manifest] フィールド
に貼り付けます。次のサンプル URL の media-file-path-excluding-bucket-name-butincluding-media-file-name は文字テキストであり、次のステップで置き換えることに注意
してください。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/media-file-path-excluding-bucket-name-butincluding-media-file-name/manifest
8.
[manifest] フィールドの media-file-path-excluding-bucket-name-but-includingmedia-file-name を、再生する Amazon S3 のビデオの正しいパスに置き換えます。たとえ
ば、メディアファイル名が nasa_msl_launch.mp4 である場合、URL は次のとおりです。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/nasa_msl_launch.mp4/manifest
ビデオが Amazon S3 バケットの space-videos フォルダーにある場合、URL は次のとおりで
す。
http://d111111abcdef8.cloudfront.net/unifiedhttpstreamingunifiedvods3bucket-123abc4/space-videos/nasa_msl_launch.mp4/manifest
次の手順: オンデマンドストリーミング用の AWS CloudFormation スタックと Amazon S3 バケットの
削除 (p. 371)
API Version 2016-09-29
370
Amazon CloudFront 開発者ガイド
オンデマンドストリーミング用の AWS CloudFormation
スタックと Amazon S3 バケットの削除
オンデマンドストリーミング用の AWS
CloudFormation スタックと Amazon S3 バケットの
削除
このオンデマンド HTTP ストリーミングのセットアップを使用する必要がなくなれば、AWS
CloudFormation スタックを削除します。これにより、AWS CloudFormation が作成した AWS リ
ソースのほとんどが削除され、リソースに対する AWS 料金の課金のほとんどが停止されます。さ
らに、メディアファイル用に使用していた Amazon S3 バケットが不要になれば、バケットを手動
で削除します。バケット内のメディアファイルが必要なファイルである可能性があるため、AWS
CloudFormation は自動的にバケットを削除しません。バケットを削除すると、リソースに対する
AWS 料金の課金の残りが停止されます。
オンデマンドストリーミング用の AWS CloudFormation スタックと Amazon S3 バケットを削
除するには
1.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール(https://
console.aws.amazon.com/cloudformation/)を開きます。
2.
オンデマンドストリーミング用に作成した AWS CloudFormation スタックを見つけ、作成日時を
書き留めます。これは、この手順の後で削除する Amazon EBS ボリュームを特定するのに役立ち
ます。
3.
削除するスタックを選択し、[Delete Stack] を選択します。
4.
[Yes, Delete] をクリックして確定します。
5.
スタックの削除状況を追跡するには、スタックを選択し、下部のフレームにある [Events] タブを
選択します。
6.
Amazon S3 コンソールに移動します。
7.
バケットの名前を選択します。
8.
[All Buckets / バケット名] ページで、ファイルを削除します。
9.
[All Buckets] を選択します。
10. バケット名ではなく、バケットの列を選択してください。
11. [Actions] メニューで、[Delete] を選択します。
よくある質問
• CloudFront と Unified Streaming を使用したオンデマンド HTTP ストリーミングの料金を教えてく
ださい。 (p. 371)
• Unified Streaming が実行されている Amazon EC2 インスタンスに Secure Shell(SSH)を使用し
て接続する方法を教えてください。 (p. 372)
• Amazon EC2 インスタンスまたは CloudFront ディストリビューションの CNAME エイリアスをど
のように作成できますか? (p. 373)
• メディアを複数の形式で複数のデバイスに同時にストリーミングできますか? (p. 374)
• コンテンツを保護する方法を教えてください。 (p. 374)
CloudFront と Unified Streaming を使用したオンデマンド
HTTP ストリーミングの料金を教えてください。
CloudFront で Unified Streaming を使用するとき、以下の料金が発生します。
API Version 2016-09-29
371
Amazon CloudFront 開発者ガイド
よくある質問
• Amazon EC2 での Unified Streaming の使用 –「AWS Marketplace での Unified Streaming の使用」
を参照してください。
• CloudFront –「Amazon CloudFront 料金表」を参照してください。
• Amazon S3 –「Amazon Simple Storage Service 料金表」を参照してください。
AWS CloudFormation の使用料はありません。
Unified Streaming が実行されている Amazon EC2 インスタン
スに Secure Shell(SSH)を使用して接続する方法を教えてく
ださい。
Note
デフォルトでは、セキュリティの理由で、Amazon EC2 インスタンスの SSH ポート(ポート
22)は無効になっています。次の手順は、SSH ポートを有効にする方法と、SSH を使用して
Amazon EC2 インスタンスに接続する方法を示しています。
Unified Streaming が実行されている Amazon EC2 インスタンスのポート 22 へのアクセスを
有効にするには
1.
Amazon EC2 インスタンスに関連付けられている Amazon EC2 セキュリティグループの名前を取
得します。
a.
AWS マネジメントコンソールにサインインした後、AWS CloudFormation コンソール
(https://console.aws.amazon.com/cloudformation/)を開きます。
b.
[Region] リストで、作成した Amazon EC2 インスタンスが含まれているリージョンを選択し
ます。
c.
対象の AWS CloudFormation スタックの行をクリックします。
d.
下部のペインで、[Resources] タブを選択します。
e.
[Stack Resources] テーブルの左の列で、値が AMSOriginServerSecurityGroup になって
いる行を見つけます。
f.
その行の [Physical ID] 列の値を書き留めます。
2.
https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。
3.
ナビゲーションペインで、[Security Groups] を選択します。
4.
[Security Groups] ページで、ステップ 1f で取得した物理 ID と [Name] 列が一致している行を選
択します。
5.
下部のペインで、[Inbound] タブを選択します。
6.
[Create a new rule] で、[SSH] を選択します。
7.
[Add Rule] をクリックします。
8.
[Apply Rule Changes] をクリックします。
Unified Streaming が実行されている Amazon EC2 インスタンスに SSH を使用して接続する
には
1.
https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。
2.
ナビゲーションペインで、[Instances] を選択します。
3.
適切なインスタンスを右クリックし、[Connect] を選択します。SSH を使用して Amazon EC2 イ
ンスタンスに接続するための手順が表示されます。ユーザー名は ubuntu です。
API Version 2016-09-29
372
Amazon CloudFront 開発者ガイド
よくある質問
Amazon EC2 インスタンスまたは CloudFront ディストリ
ビューションの CNAME エイリアスをどのように作成できま
すか?
Unified Streaming を実行している Amazon EC2 インスタンスには内部 DNS 名と外部 DNS 名があ
ります。Amazon EC2 では、この DNS 設定を変更できません。Unified Streaming が実行されて
いる Amazon EC2 インスタンスに既存のドメイン名をマップする場合は、Amazon Route 53 など
の DNS サービスプロバイダーを使用します。独自のドメイン名を使用する場合は、ドメイン名を
Amazon EC2 インスタンスの外部 DNS 名にマップする CNAME リソースレコードセットを作成する
ことを推奨します。また、Amazon EC2 インスタンスに Elastic IP アドレスを関連付けている場合に
は、Elastic IP アドレスを指す A レコードを作成できます。
CloudFront ディストリビューションで独自のドメイン名を使用する方法については、「代替ドメイン
名(CNAME)を使用する (p. 53)」を参照してください。
API Version 2016-09-29
373
Amazon CloudFront 開発者ガイド
その他のドキュメント
メディアを複数の形式で複数のデバイスに同時にストリーミン
グできますか?
はい。Unified Streaming では、以下のプロトコルを使用して各種デバイスにコンテンツをストリーミ
ングできます。
• Adobe HTTP Dynamic Streaming (Adobe HDS)
• Apple HTTP Live Streaming(Apple HLS)
• Microsoft Smooth Streaming
• MPEG-DASH
コンテンツを保護する方法を教えてください。
Unified Streaming では、いくつかの DRM、暗号化(AES)、およびトークンベースの保護スキーム
がサポートされています。DRM については、Unified Streaming のウェブサイトの「Unified Origin
(DRM)」を参照してください。個々のテクノロジーに関する具体的なチュートリアルについて
は、Unified Streaming のウェブサイトの以下のページを参照してください。
• Adobe Access
• BuyDRM PlayReady
• EZDRM PlayReady
• AES を使用した HTTP ライブストリーミング
トークンベースのアクセス対策については、Unified Streaming のウェブサイトの以下のページを参照
してください。
• NGINX の HttpSecureLinkModule を使用したビデオプレゼンテーションの保護
• Apache の mod_auth_token を使用したビデオプレゼンテーションの保護
その他のドキュメント
Unified Streaming のドキュメントおよびその他のリソース
Unified Streaming のウェブサイトには多数のリソースが用意されており、Unified Streaming を設定
する方法を説明するチュートリアルをはじめ、詳細なオプションに関するドキュメントも参照できま
す。
• ドキュメント
• チュートリアル
• よくある質問
Amazon Web Services ドキュメント
以下のリンクをクリックすると、このチュートリアルで使用されている AWS サービスのドキュメン
トが表示されます。
• AWS CloudFormation ドキュメント
• Amazon Elastic Compute Cloud ドキュメント
• Amazon Simple Storage Service ドキュメント
API Version 2016-09-29
374
Amazon CloudFront 開発者ガイド
その他のドキュメント
API Version 2016-09-29
375
Amazon CloudFront 開発者ガイド
CloudFront および Adobe Flash Player を使
用したオンデマンドビデオストリーミング
CloudFront および Adobe Flash Player を使用し
たオンデマンドビデオストリーミング
CloudFront を使用してメディアファイルのストリーミングを行う場合、メディアファイルを提供する
とともに、そのメディアファイルをエンドユーザーが再生するためのメディアプレーヤーを提供しま
す。Adobe Flash Player を使用して、CloudFront でメディアファイルのストリーミングを行うには、
以下の各トピックの手順を実行します。
1.
Amazon S3 バケットを作成する (p. 376)
2.
CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 (p. 377)
3.
Adobe Flash Builder を使用して Flash プロジェクトを作成する (p. 378)
4.
メディアファイルと Flash Builder ファイルを Amazon S3 バケットにアップロードす
る (p. 379)
5.
メディアファイルを再生する (p. 380)
このチュートリアルでは、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. 103)」を参照してください。
Amazon S3 バケットを作成する
メディアファイルとメディアプレーヤーファイルは、同じ Amazon S3 バケットまたは別々のバケッ
トにアップロードできます。このチュートリアルでは、メディアファイルと Flash Player メディアプ
レーヤーファイルの両方に対して 1 つのバケットを作成します。これらのファイルは、このプロセス
の後半で Adobe Flash Player ファイルを作成した後にアップロードされます。
Amazon S3 バケットを作成するには
1.
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール(https://
console.aws.amazon.com/s3/)を開きます。
2.
Amazon S3 コンソールで、[Create Bucket] を選択します。
3.
[Create Bucket] ダイアログに、バケット名を入力します。
Important
バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもの
でなければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイ
ド」の「バケットの制約と制限」を参照してください。
4.
バケットのリージョンを選択します。デフォルトでは、Amazon S3 は米国スタンダードリージョ
ンにバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規
制要件に対応するために、最寄りのリージョンを選択してください。
5.
[Create] を選択します。
API Version 2016-09-29
376
Amazon CloudFront 開発者ガイド
CloudFront のウェブディストリビューショ
ンと RTMP ディストリビューションの作成
CloudFront のウェブディストリビューションと
RTMP ディストリビューションの作成
メディアファイルのストリーミングを行うように CloudFront を構成するには、CloudFront RTMP
ディストリビューションが必要です。このチュートリアルでは、Adobe Flash Builder で作成され
る .html ファイルにアクセスするための CloudFront ウェブディストリビューションも作成します。以
下の 2 つの手順を実行します。
CloudFront ウェブディストリビューションを作成するには
1.
https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。
2.
[Create Distribution] を選択します。
3.
[Create Distribution Wizard] の最初のページで、[Web] セクションの [Get Started] を選択します。
4.
ウィザードの 2 番目のページで、[Origin Domain Name] フィールドを選択し、「Amazon
S3 バケットを作成するには (p. 376)」の手順で作成した Amazon S3 バケットを選択しま
す。Amazon S3 バケットが多数ある場合は、バケット名の最初の数文字を入力することでリスト
をフィルタ処理できます。
5.
残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] を選択します。
6.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。(ドメイン名は、選択されたディストリビューションの [General]
タブにも表示されます)。
CloudFront RTMP ディストリビューションを作成するには
1.
CloudFront コンソールで [ Create Distribution] を選択します。
2.
[Create Distribution Wizard] の [RTMP] セクションで、[Get Started] を選択します。
3.
ウィザードの 2 番目のページで、[Origin Domain Name] フィールドを選択し、「Amazon
S3 バケットを作成するには (p. 376)」の手順で作成した Amazon S3 バケットを選択しま
API Version 2016-09-29
377
Amazon CloudFront 開発者ガイド
Adobe Flash Builder を使用し
て Flash プロジェクトを作成する
す。Amazon S3 バケットが多数ある場合は、バケット名の最初の数文字を入力することでリスト
をフィルタ処理できます。
4.
[Create Distribution] ページの残りのフィールドについては、デフォルト値を受け入れて、[Create
Distribution] を選択します。
5.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [General]
タブにも表示されます。
Adobe Flash Builder を使用して Flash プロジェクト
を作成する
Adobe Flash Builder を使用して Flash プロジェクトを自動的に作成できます。このプロジェクトに
は、Adobe Flash を使用してメディアファイルを再生するのに必要なすべてのファイルが含まれま
す。
Adobe Flash Builder を使用して Flash プロジェクトを作成するには
1.
Adobe Flash Builder を開始します。
2.
3.
Flash Builder の [File] メニューで、[New > Flex Project] を選択します。
以下の値を入力します。
• Project name: プロジェクトの名前を入力します(例: [CloudFrontStreaming])。
• Folder: このプロジェクトのファイルの保存場所を指定します。デフォルトの場所を使用しない
場合は、[Use default location] チェックボックスのチェックを外して、別の場所を選択します。
場所を書き留めておきます。この場所をプロセスの後半で使用します。
• Application type: デフォルト値の [Web] を受け入れます。
• Flex SDK version: デフォルト値の [Use default SDK] を受け入れます。
4.
プロジェクトを作成するには、[Finish] を選択します。
Flash Builder がプロジェクトを作成すると、そのプロジェクトの名前の新しいタブが Flash
Builder のユーザーインターフェイスに表示されます。[<project-name>] タブの [Source] ボタンを
選択すると、[Source] ページに数行の XML コードが表示されます。
5.
6.
[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"
minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements here, for example, services and value
objects -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import org.osmf.net.StreamingURLResource; import
org.osmf.net.FMSURL;
API Version 2016-09-29
378
Amazon CloudFront 開発者ガイド
メディアファイルと Flash Builder ファイル
を Amazon S3 バケットにアップロードする
protected function vp_preinitializeHandler(event:FlexEvent): void
{
var myURL:StreamingURLResource = new
StreamingURLResource("rtmp://RTMP-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_preinitializeHandler(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 の場合、「myvacation」とだけ入力します。
8.
変更を保存します。
9.
Flash Builder の [Project] メニューで、[Export Release Build] を選択します。
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.
[Buckets] ペインでバケットを選択し、[Upload] を選択します。
3.
[Upload – Select Files] ページで、[Add Files] を選択し、以下のファイルを追加します。
• メディアファイル
• 「Adobe Flash Builder を使用して Flash プロジェクトを作成するには (p. 378)」の手順を実
行したときに Flash Builder が生成したファイル。bin-release ディレクトリ内のファイルの
みをアップロードします。bin-release/history サブディレクトリのファイルは除外できま
す。
API Version 2016-09-29
379
Amazon CloudFront 開発者ガイド
メディアファイルを再生する
4.
5.
前のステップで追加したファイルにパブリックの読み取り許可を付与します。
a.
[Set Details] を選択します。
b.
c.
[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 2016-09-29
380
Amazon CloudFront 開発者ガイド
CloudFront、および Adobe Flash 向け Flowplayer
を使用したオンデマンドビデオストリーミング
CloudFront、および Adobe Flash 向け Flowplayer
を使用したオンデマンドビデオストリーミング
CloudFront を使用してメディアファイルのストリーミングを行う場合、メディアファイルを提供する
とともに、そのメディアファイルをエンドユーザーが再生するためのメディアプレーヤーを提供しま
す。Adobe Flash 向け Flowplayer メディアプレーヤーを使用して CloudFront でメディアファイルの
ストリーミングを行うには、以下の各トピックの手順を実行します。
1.
メディアファイルと Flowplayer ファイルを Amazon S3 バケットにアップロードする (p. 381)
2.
CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 (p. 382)
3.
HTML ページにビデオを埋め込む (p. 384)
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. 103)」を参照してください。
メディアファイルと 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」ページで入手できます。
2.
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール(https://
console.aws.amazon.com/s3/)を開きます。
3.
Amazon S3 コンソールで、[Create Bucket] を選択します。
4.
[Create Bucket] ダイアログに、バケット名を入力します。
API Version 2016-09-29
381
Amazon CloudFront 開発者ガイド
CloudFront のウェブディストリビューショ
ンと RTMP ディストリビューションの作成
Important
バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもの
でなければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイ
ド」の「バケットの制約と制限」を参照してください。
5.
バケットのリージョンを選択します。デフォルトでは、Amazon S3 は米国スタンダードリージョ
ンにバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規
制要件に対応するために、最寄りのリージョンを選択してください。
6.
[Create] を選択します。
7.
[Buckets] ペインでバケットを選択し、[Upload] を選択します。
8.
[Upload – Select Files] ページで、[Add Files] を選択し、以下のファイルを追加します(ファイル
の Flowplayer バージョン番号が異なる場合があります)。
• flowplayer.controls-3.2.12.swf
• flowplayer-3.2.11.min.js
• flowplayer-3.2.12.swf
• flowplayer.rtmp-3.2.10.swf
• .mp4 形式のメディアファイル
9.
前のステップで追加したファイルにパブリックの読み取り許可を付与します。
a.
[Set Details] を選択します。
b.
[Set Details] ページで、[Set Permissions] を選択します。
c.
[Set Permissions] ページで、[Make everything public] を選択します。
10. [Start Upload] を選択します。
CloudFront のウェブディストリビューションと
RTMP ディストリビューションの作成
メディアファイルのストリーミングを行うように CloudFront を構成するには、Flowplayer ファイル
用の CloudFront ウェブディストリビューションと、メディアファイル用の RTMP ディストリビュー
API Version 2016-09-29
382
Amazon CloudFront 開発者ガイド
CloudFront のウェブディストリビューショ
ンと RTMP ディストリビューションの作成
ションが必要です。以下の 2 つの手順を実行し、ウェブディストリビューションと RTMP ディストリ
ビューションを作成します。
Flowplayer ファイル用の CloudFront ウェブディストリビューションを作成するには
1.
https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。
2.
[Create Distribution] を選択します。
3.
[Create Distribution Wizard] の最初のページで、[Web] セクションの [Get Started] を選択します。
4.
ウィザードの 2 番目のページで、[Origin Domain Name] フィールドを選択し、「メディアファイ
ルと Flowplayer ファイルを Amazon S3 バケットにアップロードするには (p. 381)」の手順で
作成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット
名の最初の数文字を入力することでリストをフィルタ処理できます。
5.
残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] を選択します。
6.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。(ドメイン名は、選択されたディストリビューションの [General]
タブにも表示されます)。
メディアファイル用の CloudFront RTMP ディストリビューションを作成するには
1.
CloudFront コンソールで [ Create Distribution] を選択します。
2.
[Create Distribution Wizard] の [RTMP] セクションで、[Get Started] を選択します。
3.
ウィザードの 2 番目のページで、[Origin Domain Name] フィールドを選択し、「メディアファイ
ルと Flowplayer ファイルを Amazon S3 バケットにアップロードするには (p. 381)」の手順で
作成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット
名の最初の数文字を入力することでリストをフィルタ処理できます。
4.
[Create Distribution] ページの残りのフィールドについては、デフォルト値を受け入れて、[Create
Distribution] を選択します。
5.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。
API Version 2016-09-29
383
Amazon CloudFront 開発者ガイド
HTML ページにビデオを埋め込む
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [General]
タブにも表示されます。
HTML ページにビデオを埋め込む
次のサンプル HTML ファイルは、「CloudFront のウェブディストリビューションと RTMP ディスト
リビューションの作成 (p. 382)」で作成したウェブディストリビューションと RTMP ディストリ
ビューションを使用して、ビデオのストリーミングを行う方法を示しています。このサンプルを使用
してビデオのストリーミングを行うには、以下のステップを実行します。
1.
以下の HTML コードをコピーして、テキストエディターに貼り付けます。
2.
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/flowplayer-3.2.11.min.js"></
script>
<!-- Style section. Specify the attributes of the player
such as height, width, color, and so on.
-->
<style>
a.rtmp {
display:block;
API Version 2016-09-29
384
Amazon CloudFront 開発者ガイド
HTML ページにビデオを埋め込む
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.cloudfront.net.
netConnectionUrl: 'rtmp://RTMP-DISTRIBUTION-DOMAIN-NAME/cfx/st'
}
}
});
</script>
</BODY>
</HTML>
API Version 2016-09-29
385
Amazon CloudFront 開発者ガイド
CloudFront および JW Player を使用し
たオンデマンドビデオストリーミング
CloudFront および JW Player を使用したオンデ
マンドビデオストリーミング
CloudFront を使用してメディアファイルのストリーミングを行う場合、メディアファイルを提供する
とともに、そのメディアファイルをエンドユーザーが再生するためのメディアプレーヤーを提供しま
す。JW Player メディアプレーヤーを使用して CloudFront でメディアファイルのストリーミングを行
うには、以下の各トピックの手順を実行します。
1.
メディアファイルと JW Player ファイルを Amazon S3 バケットにアップロードする (p. 386)
2.
CloudFront のウェブディストリビューションと RTMP ディストリビューションの作成 (p. 387)
3.
ウェブページにビデオを埋め込む (p. 389)
4.
HTML ファイルをアップロードしてビデオを再生する (p. 390)
このチュートリアルは JW Player バージョン 7.3 の無料エディションに基づきます。JW Player の詳
細については、JW Player のウェブサイトを参照してください。
CloudFront を使用してメディアをストリーミングする方法については、「RTMP ディストリビュー
ションの使用 (p. 103)」を参照してください。
メディアファイルと JW Player ファイルを Amazon
S3 バケットにアップロードする
メディアファイルとメディアプレーヤーファイルは、同じ Amazon S3 バケットまたは別々のバケッ
トにアップロードできます。このチュートリアルでは、.mp4 または .flv メディアファイルと、JW
Player メディアプレーヤーファイルを同じバケットにアップロードします。
メディアファイルと JW Player ファイルを Amazon S3 バケットにアップロードするには
1.
JW Player メディアプレーヤーのファイルがまだない場合は、JW Player ウェブサイトの
[Downloads] ページからプレーヤー (JW Player 7) をダウンロードします。次に、.zip ファイルの
内容を展開します。
2.
AWS マネジメントコンソール にサインインし、Amazon S3 コンソール(https://
console.aws.amazon.com/s3/)を開きます。
3.
Amazon S3 コンソールで、[Create Bucket] を選択します。
4.
[Create Bucket] ダイアログに、バケット名を入力します。
Important
バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったもの
でなければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイ
ド」の「バケットの制約と制限」を参照してください。
5.
バケットのリージョンを選択します。デフォルトでは、Amazon S3 は米国スタンダードリージョ
ンにバケットを作成します。レイテンシーを最適化するため、コストを最小化するため、また規
制要件に対応するために、最寄りのリージョンを選択してください。
6.
[Create] を選択します。
7.
[Buckets] ペインでバケットを選択し、[Upload] を選択します。
8.
[Upload – Select Files] ページで、[Add Files] を選択し、以下のファイルを追加します。
• jwplayer.flash.swf
• jwplayer.js
• .mp4 または .flv メディアファイル
API Version 2016-09-29
386
Amazon CloudFront 開発者ガイド
CloudFront のウェブディストリビューショ
ンと RTMP ディストリビューションの作成
9.
前のステップで追加したファイルにパブリックの読み取り許可を付与します。
a.
[Set Details] を選択します。
b.
[Set Details] ページで、[Set Permissions] を選択します。
c.
[Set Permissions] ページで、[Make everything public] を選択します。
10. [Start Upload] を選択します。
CloudFront のウェブディストリビューションと
RTMP ディストリビューションの作成
メディアファイルのストリーミングを行うように CloudFront を構成するには、JW Player ファイル
および HTML ファイル用の CloudFront ウェブディストリビューションと、メディアファイル用の
RTMP ディストリビューションが必要です。以下の 2 つの手順を実行し、ウェブディストリビュー
ションと RTMP ディストリビューションを作成します。
JW Player ファイル用の CloudFront ウェブディストリビューションを作成するには
1.
https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。
2.
[Create Distribution] を選択します。
3.
[Create Distribution Wizard] の最初のページで、[Web] セクションの [Get Started] を選択します。
API Version 2016-09-29
387
Amazon CloudFront 開発者ガイド
CloudFront のウェブディストリビューショ
ンと RTMP ディストリビューションの作成
4.
ウィザードの 2 番目のページで、[Origin Domain Name] フィールドを選択し、「メディアファイ
ルと JW Player ファイルを Amazon S3 バケットにアップロードするには (p. 386)」の手順で作
成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名
の最初の数文字を入力することでリストをフィルタ処理できます。
5.
残りのフィールドについては、デフォルト値を受け入れて、[Create Distribution] を選択します。
6.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [Distribution
Settings] ページにも表示されます。
メディアファイル用の CloudFront RTMP ディストリビューションを作成するには
1.
CloudFront コンソールで [ Create Distribution] を選択します。
2.
[Create Distribution Wizard] の [RTMP] セクションで、[Get Started] を選択します。
3.
ウィザードの 2 番目のページで、[Origin Domain Name] フィールドを選択し、「メディアファイ
ルと JW Player ファイルを Amazon S3 バケットにアップロードするには (p. 386)」の手順で作
成した Amazon S3 バケットを選択します。Amazon S3 バケットが多数ある場合は、バケット名
の最初の数文字を入力することでリストをフィルタ処理できます。
4.
[Create Distribution] ページの残りのフィールドについては、デフォルト値を受け入れて、[Create
Distribution] を選択します。
5.
CloudFront がディストリビューションを作成すると、ディストリビューションの [Status] 列の値
が、[InProgress] から [Deployed] に変わります。この所要時間は 15 分以内となります。
CloudFront によってディストリビューションに割り当てられたドメイン名がディストリビュー
ションの一覧に表示されます。ドメイン名は、選択されたディストリビューションの [Distribution
Settings] ページにも表示されます。
API Version 2016-09-29
388
Amazon CloudFront 開発者ガイド
ウェブページにビデオを埋め込む
ウェブページにビデオを埋め込む
次の例は、「CloudFront のウェブディストリビューションと RTMP ディストリビューションの作
成 (p. 387)」で作成したウェブディストリビューションと RTMP ディストリビューションを使用し
て、ウェブページにビデオを埋め込む方法を示しています。
以下のステップを実行します。
1.
JW Player のウェブサイトにサインインします。JW Player アカウントがない場合は、アカウン
トを作成します。
2.
[Downloads] ページで、このチュートリアルですでにダウンロードしたプレーヤーのライセンス
キーを取得します。
3.
以下の HTML コードをコピーして、テキストエディターに貼り付けます。
4.
HTML ファイル内のコメントを確認し、以下のプレースホルダーを適用可能な値で置き換えま
す。
• WEB-DISTRIBUTION-DOMAIN-NAME
• RTMP-DISTRIBUTION-DOMAIN-NAME
• VIDEO-FILE-NAME
• LICENSE-KEY
5.
.html ファイル名拡張子を付けてファイルを保存します(例: jwplayer-example.html)。
<HTML>
<HEAD>
<TITLE>Amazon CloudFront Streaming with JW Player 7</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.
Replace LICENSE-KEY with your personal license key from JW Player.
-->
<script type='text/javascript' src='WEB-DISTRIBUTION-NAME/jwplayer.js'></
script>
<script type='text/javascript' src='WEB-DISTRIBUTION-NAME/
jwplayer.flash.swf'></script>
<script>jwplayer.key="LICENSE-KEY";</script>
</HEAD>
<BODY>
<H1>This video is streamed by CloudFront and played by JW Player 7.</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. You might need to prepend "mp4:" to
the
name of your video file, for example, mp4:my-vacation.mp4.
API Version 2016-09-29
389
Amazon CloudFront 開発者ガイド
HTML ファイルをアップロードしてビデオを再生する
If the file is in a subdirectory, include the subdirectory name just before
the file name, for example:
"rtmp://RTMP-DISTRIBUTION-DOMAIN-NAME/cfx/st/sample-directory/VIDEO-FILENAME"
-->
<div id="my-video"></div>
<script type="text/javascript">
jwplayer("my-video").setup({
file: "rtmp://RTMP-DISTRIBUTION-DOMAIN-NAME/cfx/st/VIDEO-FILE-NAME",
width: "720",
height: "480",
primary: "flash"
});
</script>
</BODY>
</HTML>
HTML ファイルをアップロードしてビデオを再生す
る
「ウェブページにビデオを埋め込む (p. 389)」で作成した HTML ファイルを使用してビデオを再生
するには、ファイルを Amazon S3 バケットにアップロードし、CloudFront ディストリビューション
の URL を使用します。
HTML ファイルをアップロードしてビデオを再生するには
1.
2.
3.
https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。
バケットを選択し、[Upload] を選択します。
[Upload – Select Files] ページで、[Add Files] を選択し、HTML ファイルを追加します。
4.
前のステップで追加した HTML ファイルにパブリックの読み取り許可を付与します。
a.
b.
[Set Details] を選択します。
[Set Details] ページで、[Set Permissions] を選択します。
5.
c. [Set Permissions] ページで、[Make everything public] を選択します。
[Start Upload] を選択します。
6.
ビデオを再生するには、ウェブブラウザで次の URL を入力します。
http://domain name of your CloudFront web distribution/your HTML file name
API Version 2016-09-29
390
Amazon CloudFront 開発者ガイド
制限
CloudFront のエンティティには、次の制限が適用されます。
エンティティ
制限
ディストリビューションごとのデータ転送レート
40 Gbps
制限引き上げのリクエ
スト
1 秒あたり、ディストリビューションあたりのリクエスト
100,000
制限引き上げのリクエ
スト
AWS アカウントあたりのウェブディストリビューション
200
詳細については、「ウェブディストリビューションの使用 (p. 62)」を参照
してください。
制限引き上げのリクエ
スト
AWS アカウントあたりの RTMP ディストリビューション
100
詳細については、「RTMP ディストリビューションの使用 (p. 103)」を参
照してください。
制限引き上げのリクエ
スト
ディストリビューションあたりの代替ドメイン名(CNAME)
100
詳細については、「代替ドメイン名(CNAME)を使用する (p. 53)」を参
照してください。
制限引き上げのリクエ
スト
ディストリビューションあたりのオリジン
25
制限引き上げのリクエ
スト
ディストリビューションあたりのキャッシュ動作
25
制限引き上げのリクエ
スト
キャッシュ動作あたりのホワイトリスト登録済みヘッダー
10
詳細については、「リクエストヘッダーに基づいてオブジェクトをキャッ
シュするように CloudFront を設定する (p. 128)」を参照してください。
制限引き上げのリクエ
スト
API Version 2016-09-29
391
Amazon CloudFront 開発者ガイド
エンティティ
制限
キャッシュ動作あたりのホワイトリスト登録済み Cookie
10
詳細については、「Cookie に基づいてオブジェクトをキャッシュするよ
うに CloudFront を設定する (p. 126)」を参照してください。
制限引き上げのリクエ
スト
ホワイトリスト cookie 名の総バイト数(CloudFront がすべての cookie を
オリジンに転送するよう設定している場合は適用されない)
512 マイナスホワイト
リスト cookie の数
カスタムヘッダーあり: オリジンに転送するように CloudFront を設定可能
なカスタムヘッダーの最大数
10 個の名前と値のペア
詳細については、「カスタムヘッダーをオリジン(ウェブディストリ
ビューションのみ)へ転送する (p. 132)」を参照してください。
制限引き上げのリクエ
スト
カスタムヘッダーあり: ヘッダー名の最大長
256 文字
カスタムヘッダー: ヘッダー値の最大長
2,048 文字
カスタムヘッダー: 結合されるすべてのヘッダー値および名前の最大長
10,240 文字
専用 IP アドレスを使用して HTTPS リクエストを供給する場合の AWS ア
カウントあたりの SSL 証明書(SNI を使用して HTTPS リクエストを供給
する場合は制限なし)
2
詳細については、「CloudFront で HTTPS を使用する (p. 254)」を参照し
てください。
制限引き上げのリクエ
スト
CloudFront ウェブディストリビューションに関連付けることができる
SSL 証明書
1
CloudFront ウェブまたは RTMP ディストリビューションに追加できるタ
グ
50
ディストリビューションごとにサービスが可能なオブジェクト
無制限
HTTP GET、POST、PUT リクエストの最大ファイルサイズ
20 GB
ヘッダーとクエリ文字列を含むリクエストの最大長
20,480 バイト
URL の最大長
8,192 バイト
ファイル圧縮: CloudFront が圧縮するファイルサイズの範囲
1,000 ~ 10,000,000 バ
イト
詳細については、「圧縮ファイルの供給 (p. 157)」を参照してください。
オブジェクトの無効化: ワイルドカードの無効化を除く、アクティブな無
効化リクエストで許可されるオブジェクトの最大数
3,000
詳細については、「オブジェクトの無効化(ウェブディストリビューショ
ンのみ) (p. 142)」を参照してください。
オブジェクトの無効化: 許可されるアクティブなワイルドカード無効化の
最大数
15
オブジェクトの無効化: 1 つのワイルドカードの無効化で処理できるオブ
ジェクトの最大数
無制限
API Version 2016-09-29
392
Amazon CloudFront 開発者ガイド
Amazon CloudFront の追加ドキュメント
Amazon CloudFront リソース
CloudFront は、使い方は簡単ですが、機能は豊富です。ここに列挙されているリソースは CloudFront
について理解を深めるのに役立ちます。
トピック
• Amazon CloudFront の追加ドキュメント (p. 393)
• サポート情報 (p. 393)
• CloudFront 開発者用ツールと SDK (p. 394)
• CloudFront ログ作成の使用 (p. 394)
• Amazon Web Services Blog によるその他のヒント (p. 394)
• オブジェクトの無効化 (p. 395)
• ストリーミングメディアの配信 (p. 395)
• プライベートコンテンツの設定ツールとコード例 (p. 395)
• コンテンツマネジメントシステムと CloudFront の使用 (p. 396)
Amazon CloudFront の追加ドキュメント
このサービスを利用する際に役立つ関連リソースは以下の通りです。
• 『Amazon CloudFront API リファレンス』– API のアクション、パラメーター、データ型について
詳しく説明します。サービスから返されるエラーのリストもあります。
• 「ドキュメント履歴 (p. 397)」– 現在および以前のリリースの概要です。特に新機能、修正点、既
知の問題、およびドキュメントの改善点に焦点を当てています。
• Amazon Simple Storage Service(S3)の技術文書 – Amazon S3 サービスについて詳しく解説しま
す。初歩的な入門編、サービスの概要、プログラミングリファレンス、API リファレンスといった
内容が含まれています。
• Amazon CloudFront の製品情報 – CloudFront に関する情報の基本となるウェブページで、サービス
の特徴や料金表も掲載されています。
• 利用規約 – 当社の著作権、商標、お客様のアカウント、ライセンス、サイトへのアクセス、および
その他のトピックに関する詳細情報です。
サポート情報
CloudFront はいくつかの形態でサポートを受けることができます。
API Version 2016-09-29
393
Amazon CloudFront 開発者ガイド
CloudFront 開発者用ツールと SDK
• ディスカッションフォーラム – 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 の新機能: カスタムオリジン
• Amazon CloudFront 用のサードパーティ製ツールについての詳細情報 – CloudFront 管理ツールのま
とめ
API Version 2016-09-29
394
Amazon CloudFront 開発者ガイド
オブジェクトの無効化
オブジェクトの無効化
CloudFront から提供される無効化方法に加えて、以下のサードパーティツールを使用してオブジェク
トを無効にすることができます。
Note
これらのツールは、Amazon Web Services とは関係のないサードパーティベンダーが開発し
たものです。これらのツールの使用方法については、各ベンダーのドキュメントを参照する
か、各ベンダーにお問い合わせください。
• 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 を作成するためのウェブフォームも用意されています。
• Bucket Explorer – プライベートコンテンツ用のディストリビューションの構成をサポートします。
CloudFront プライベートコンテンツで Bucket Explorer を使用する方法については、「バケットで
プライベートディストリビューションを作成する方法」を参照してください。
• CloudBerry – プライベートコンテンツ用のディストリビューションの構成、および署名付き URL の
作成をサポートします。
CloudFront プライベートコンテンツで CloudBerry を使用する方法については、「CloudBerry を使
用して CloudFront ストリーミング用のプライベートコンテンツを構成する方法」を参照してくださ
い。
API Version 2016-09-29
395
Amazon CloudFront 開発者ガイド
コンテンツマネジメントシステムと CloudFront の使用
デフォルトのルートオブジェクトの設定については、「CloudBerry S3 Explorer を使用した
CloudFront デフォルトオブジェクトの設定方法」を参照してください。
プライベートコンテンツの詳細については、AWS ブログの投稿「Amazon CloudFront の新機能: プラ
イベートコンテンツ」を参照してください。
署名付き Cookie を使用する方法、オブジェクト URL でドメイン名を使用する方法、および
cloudfront.net ドメイン用の SSL 証明書を使用する方法の例については、Space Vatican ブログの投
稿「CloudFront 署名付き Cookie の使用」を参照してください。これにより、「代替ドメイン名と
HTTPS の使用 (p. 259)」で説明されているように、専用 IP アドレスの費用を発生させたり、SNI の
制限を受けたりすることなく、別のドメイン名と HTTPS を使用することができます。
コンテンツマネジメントシステムと CloudFront
の使用
いくつかの人気の高いコンテンツ管理システムと共に CloudFront を使用することができます。以下の
リンクでその方法がわかります。
Drupal
• Drupal.org – CloudFront のインストール
• DrupalModules.com – CloudFront Drupal モジュール
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 2016-09-29
396
Amazon CloudFront 開発者ガイド
ドキュメント履歴
次の表に、CloudFront の前回のリリース以後に行われた、ドキュメントの重要な変更を示します。
• API バージョン: 2016-11-25
• ドキュメントの最新更新日: 2016 年 11 月 30 日
変更
説明
日付日
新機能
CloudFront とともにエッジロケーションを Lambda@Edge
として Lambda できるようになりました。詳細については、
「CloudFront と Lambda@Edge の使用 (p. 95)」を参照してくだ
さい。
2016 年 11 月
30 日
リージョンエッジキャッシュは、ウェブサーバーとグローバル
エッジロケーションの間のエッジロケーションです。詳細につ
いては、「CloudFront とリージョン別エッジキャッシュとの連
携 (p. 6)」を参照してください。
新機能
サードパーティー証明書をインポートすることにより、ビューア
と CloudFront、および CloudFront と ELB ロードバランサーと
の間でセキュアな通信ができるようになりました。詳細について
は、「CloudFront で HTTPS を使用する (p. 254)」を参照してく
ださい。
2016 年 10 月
13 日
新機能
ウェブまたは RTMP ディストリビューションの作成または更新
で使用するアカウントでは、ディストリビューションのアクセ
スログを有効にするために追加のアクセス許可が必要になりまし
た。詳細については、「ロギングの設定およびログファイルへの
アクセスに必要なアクセス許可 (p. 291)」を参照してください。
2016 年 9 月
19 日
新機能
ビューワーが CloudFront との通信に使用する HTTP バージョン
(HTTP/2 または HTTP/1.1)を選択できるようになりました。
ビューワーは、CloudFront で使用するよう設定した最新バー
ジョンを使用します。HTTP/2 を選択した場合、HTTP/2 をサ
ポートしていないビューワーは自動的に以前のバージョンを使
用します。詳しくは、[サポートされる HTTP バージョン (p. 83)]
フィールドの説明を参照してください。
2016 年 9 月 7
日
新機能
ウェブディストリビューションの場合に、オブジェクトの
キャッシュ条件として CloudFront が使用するクエリ文字列パ
ラメーターを選択できるようになりました。詳細については、
2016 年 8 月 30
日
API Version 2016-09-29
397
Amazon CloudFront 開発者ガイド
変更
説明
日付日
「クエリ文字列パラメーターに基づいてキャッシュするように
CloudFront を設定する (p. 123)」を参照してください。
新機能
コスト配分に広く使用されているタグを、CloudFront のウェブ
ディストリビューションと RTMP ディストリビューションに割
り当てられるようになりました。詳細については、「Amazon
CloudFront ディストリビューションのタグ付け (p. 313)」を参照
してください。
2016 年 8 月 9
日
新機能
これで、新しい AWS Certificate Manager サービスを使用し
2016 年 1 月 21
てプロビジョニングした SSL/TLS 証明書を使用できるように
日
CloudFront を設定できます。CloudFront では、サードパーティ
の認証機関から取得して IAM の証明書ストアにアップロード
した証明書も使用できます。詳細については、「CloudFront で
HTTPS を使用する (p. 254)」を参照してください。CloudFront
API を使用して SSL/TLS 証明書を指定するには、新しい
Certificate と CertificateSource 要素を使用します。有
効な値の詳細については、『Amazon CloudFront API リファレン
ス』の「DistributionConfig 複合型」トピックで、これらの要素を
参照してください。
新機能
ウェブディストリビューション用に、CloudFront とオリジン
サーバー間の通信をさらに強力に保護できるようになりました。
2016 年 1 月 13
日
• CloudFront とオリジンウェブサーバー間で HTTPS のみの接続
を実装 – ビューアが HTTP または HTTPS を使用してリクエス
トを行ったかどうかに関係なく、HTTPS を使用してオリジン
サーバーに接続するように CloudFront を設定できます。
• CloudFront とオリジンウェブサーバー間の TLSv1.1 と
TLSv1.2 のサポート – CloudFront が、CloudFront とオリジン
間の通信で TLSv1.1 および TLSv1.2 の使用をサポートしまし
た。さらに、CloudFront からオリジンとの通信で CloudFront
が使用するプロトコルを選択できます。たとえば、オリジンと
の通信で、TLS より安全性が低い SSLv3 の使用を CloudFront
に許可しないように設定できます。
詳細については、「CloudFront で HTTPS を使用する (p. 254)」
を参照してください。
新機能
ウェブディストリビューションで、CloudFront がオリジンにリ
クエストを転送する際に、カスタムヘッダーを含めるように設定
できるようになりました。カスタムヘッダーには、以下のような
さまざまな用途があります。
• CloudFront がカスタムオリジンに転送したリクエストと、他
のソースから転送されたリクエストとを区別できます。
• 複数の CloudFront で同じオリジンを使用するように設定した
場合は、各ディストリビューションに CloudFront が転送する
リクエストを区別できます。
• カスタム ヘッダーを使用して、カスタムオリジン内のコンテ
ンツへのアクセスを制御できます。
詳細については、「カスタムヘッダーをオリジン(ウェブディス
トリビューションのみ)へ転送する (p. 132)」を参照してくださ
い。
API Version 2016-09-29
398
2015 年 12 月
28 日
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
ウェブディストリビューションでは、CloudFront が Amazon S3
とカスタムオリジンの特定のタイプのファイルを自動的に圧縮す
るように設定できます。その結果、ダウンロードとウェブページ
のレンダリングが迅速になります。サービスしたデータの送料に
対して料金が発生するため、圧縮により CloudFront データの転
送コストも削減されます。詳細については、「圧縮ファイルの供
給 (p. 157)」を参照してください。
2015 年 12 月
17 日
新機能
CloudFront を AWS WAF と統合できるようになりました。これ
は、CloudFront に転送される HTTP リクエストと HTTPS リク
エストをモニタリングして、コンテンツへのアクセスを制御する
ウェブアプリケーションファイアウォールです。クエリ文字列か
らの実行またはクエリ文字列の値をリクエストする IP アドレス
のような、指定した条件に基づいて、CloudFront はリクエスト
されたコンテンツまたは HTTP 403 ステータスコード(禁止)の
リクエストのいずれかに対応します。CloudFront を設定して、
リクエストがブロックされたときにカスタムエラーを返すことも
できます。
2015 年 10 月 6
日
AWS WAF の詳細については、『AWS WAF 開発者ガイド』を
参照してください。AWS WAF ウェブ ACL の ID を CloudFront
ディストリビューションに追加する方法については、「ウェブ
ディストリビューションを作成または更新する場合に指定する
値 (p. 67)」トピックの「AWS WAF ウェブ ACL (p. 81)」を参照
してください。
新機能
ウェブディストリビューションの CloudFront アクセスログに 4
つの新しい列が追加されました。
• x-forwarded-for – リクエスト元のクライアントの IP アド
レス。
• ssl-protocol – クライアントと CloudFront がリクエストと
レスポンスを送るためにネゴシエーションした SSL プロトコ
ル(TLSv1.1 など)。
• ssl-cipher – クライアントと CloudFront がリクエストと
レスポンスを送るためにネゴシエーションした SSL 暗号化
(ECDHE-RSA-AES128-GCM-SHA256 など)。
• x-edge-response-result-type – CloudFront がレスポ
ンスをビューアに返し始める直前に行った分類(Hit、Miss
など)。場合によって、この値は既存のログフィールド xedge-result-type(最後のバイトがエッジロケーションか
ら渡されたとき、CloudFront がどのようにレスポンスを分類
したか)の値と異なることがあります。
アクセスログの詳細については、「アクセスログ (p. 289)」を参
照してください。ウェブディストリビューションのアクセスログ
に表示されるすべてのフィールドのリストについては、「ウェブ
ディストリビューションのログファイル形式 (p. 294)」を参照し
てください。
API Version 2016-09-29
399
2015 年 6 月 30
日
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
最大有効期限(TTL)とデフォルト TTL の設定で、CloudFront
がエッジロケーションでオブジェクトをキャッシュに保持する期
間を指定できるようになりました。オリジンが Cache-Control
max-age、Cache-Control s-maxage、または Expires を
レスポンスのヘッダーに追加しないときにエッジで TTL を設
定するか、ヘッダー値を上書きできます。詳細については、
「CloudFront エッジキャッシュにオブジェクトを保持する時間
の指定(有効期限切れ) (p. 136)」を参照してください。
2015 年 6 月 17
日
新機能
CloudFront エッジキャッシュから有効期限が切れる前にオブ
ジェクトを削除することができる無効化機能で、* ワイルドカー
ド文字がサポートされるようになりました。無効化パスの末尾に
* ワイルドカード文字を追加すると、このパスに一致するすべて
のオブジェクトを削除できます。詳細については、「オブジェク
トの無効化(ウェブディストリビューションのみ) (p. 142)」を
参照してください。
2015 年 5 月 21
日
新機能
CloudFront のこのリリースでは、CloudFront レポートの以下の
機能が向上しています。
2015 年 3 月 25
日
• 新しいデバイスレポートでは、コンテンツを表示するために
ユーザーが使用しているデバイスのタイプを確認できます。
• CloudFront レポートのデータを、カンマ区切り値 (CSV) 形式
でダウンロードできるようになりました。
• CloudFront コンソールで CloudWatch のメトリクスを表示で
き、ディストリビューションのすべてのメトリクスをより簡単
に表示できるようになりました。
• デバイス、ブラウザ、オペレーティングシステムの各レポート
では、ボットやクローラからのリクエスト、カスタムビューア
からのリクエスト、User-Agent ヘッダーの値が空であるリク
エストについて、個別のカテゴリが作成されました。
• 人気オブジェクトレポートでは、各オブジェクトの URL を最
大 500 文字表示できるようになりました。
CloudFront レポートの詳細については、「CloudFront レポー
ト (p. 16)」を参照してください。
新機能
認証のために署名バージョン 4 が必要なリージョンに Amazon
S3 バケットがあり、オリジンアクセスアイデンティティを使
用して Amazon S3 バケットへのアクセスを制限している場
合、PUT リクエストを CloudFront に送信して、バケットにオブ
ジェクトをアップロードできるようになりました。詳細につい
ては、「署名バージョン 4 のみをサポートする Amazon S3 リー
ジョンでのオリジンアクセスアイデンティティの使用 (p. 195)」
を参照してください。
API Version 2016-09-29
400
2015 年 3 月 18
日
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースで、以下の新機能が導入されます。
2015 年 3 月 12
日
• ウェブディストリビューションの場合、署名付き URL の代
わりに、署名付き Cookie を使用して、コンテンツにアクセ
スできるユーザーを制御できます。署名付き Cookie は、現
在の URL を変更したくない場合や、複数の制限付きファイ
ル(ウェブサイトの購読者の領域にあるすべてのファイル
など)へのアクセスを提供する場合に便利です。署名付き
Cookie を使用したプライベートコンテンツの保護について
は、「CloudFront を使用してプライベートコンテンツを供給
する (p. 186)」を参照してください。
• ウェブディストリビューションの場合、ユーザーがコンテンツ
を表示するために使用しているデバイスに基づいて、オブジェ
クトの異なるバージョンをキャッシュするように CloudFront
を設定できます。このリリースでは、デバイスがスマート TV
である場合に、オブジェクトの異なるバージョンのキャッシュ
がサポートされるようになりました。詳細については、「ユー
ザーエージェントヘッダー (p. 178)」を参照してください。
新機能
CloudFront のこのリリースで、以下の新機能が導入されます。
• オリジンへのパスの追加 – ウェブディストリビューショ
ンの場合、オリジンを設定する際に、ドメイン名に加
えてパスを指定できるようになりました。たとえば、
オリジンとして Amazon S3 バケットを使用する場合
は、bucket-name.s3.amazonaws.com だけではなく
bucket-name.s3.amazonaws.com/production と指定で
きます。これにより、単一のバケットを使用して、複数のディ
ストリビューションにコンテンツを提供できます。この機能
は、Amazon S3 オリジンとカスタムオリジンの両方に使用で
きます。CloudFront コンソールでのオリジンパスの指定につ
いては、「オリジンのパス (p. 70)」を参照してください。
2014 年 12 月
15 日
• 上位リファラレポートとビューアレポート – ウェブディスト
リビューションの場合、上位リファラのリストを表示できるよ
うになりました。また、コンテンツにアクセスしているビュー
アに関する情報も表示できます。表示できる情報は、ユーザー
が使用しているブラウザ、ブラウザが実行されているオペレー
ティングシステム、ビューアの場所です。これらのレポー
トの詳細については、「CloudFront トップリファラレポー
ト (p. 24)」および「CloudFront ビューア レポート (p. 31)」を
参照してください。
新機能
ウェブディストリビューションの場合、ユーザーからのリク
エストへの応答時に CloudFront で許可する最低の SSL プロ
トコルバージョン(SSLv3 または TLSv1)を選択できるよう
になりました。指定した最低プロトコルバージョンがサポー
トされないブラウザまたはデバイスをユーザーが使用してい
る場合、CloudFront はユーザーにオブジェクトを提供しま
せん。CloudFront コンソールでの最低 SSL プロトコルバー
ジョンの選択については、「SSL プロトコルの最低バージョ
ン (p. 83)」を参照してください。
API Version 2016-09-29
401
2014 年 10 月
24 日
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースで、以下の新機能が導入されます。
2014 年 10 月
21 日
• キャッシュ統計のグラフ – CloudFront エッジロケーションに
関連する統計のグラフィカル表示を確認できるようになりま
した。過去 60 日間を超える指定期間、次の統計情報を表示で
きます: 合計リクエスト数、合計リクエスト数に対するヒット
数、ミス数、およびエラー数の割合、ビューアに転送された
合計バイト数とキャッシュミスに対して転送された合計バイ
ト数、HTTP ステータスコード(2xx、3xx、4xx、5xx)別の
ビューアリクエスト数、ダウンロードが完了しなかった GET
リクエストの割合。詳細については、「CloudFront キャッ
シュ統計レポート (p. 17)」を参照してください。
• アクセスログの迅速な配信 – CloudFront アクセスログファイ
ルが、1 時間に数回配信されるようになりました。また、これ
らのファイルは、ビューアリクエストから 1 時間以内に使用可
能になります。アクセスログの詳細については、「アクセスロ
グ (p. 289)」を参照してください。
• 人気の高いオブジェクトのレポート – 人気の高いオブジェク
トのレポートには、指定期間内に人気が高かった上位 50 のオ
ブジェクトについて、リクエスト数、キャッシュヒット数、
キャッシュミス数、エラー率などが表示されます。詳細につい
ては、「CloudFront 人気オブジェクトレポート (p. 21)」を参
照してください。
新機能
ウェブディストリビューションの場合、CloudFront を使用し
て、リアルタイムに近い形で 6 つの CloudFront メトリクスを監
視できるようになりました。これにより、使用状況と可用性の傾
向を迅速に把握できます。特定のイベントが発生した場合に通知
を受け取ることができるように、メトリクスに基づくアラームを
設定することもできます。詳細については、「CloudWatch を使
用した CloudFront アクティビティの監視 (p. 303)」を参照して
ください。
2014 年 10 月 9
日
新機能
CloudFront のこのリリースで、以下の新機能が導入されます。
2014 年 9 月 29
日
• ウェブディストリビューションの場合、OPTIONS リクエスト
に対するレスポンスをキャッシュするように CloudFront を設
定できるようになりました。レスポンスは、ウェブサーバー
が用意しているオプションの情報を含み、特定のリソースま
たはサーバー全体に適用することができます。詳細について
は、許可される HTTP メソッド (p. 76) および キャッシュされ
る HTTP メソッド (p. 76) を参照してください。
• ウェブディストリビューションの場合、Cookie のホワイ
トリストをオリジンに転送し、Cookie の値に基づいてオブ
ジェクトをキャッシュするように CloudFront を設定すると
きに、Cookie 名に * および ? ワイルドカードを使用できる
ようになりました。詳細については、「Cookie に基づいて
オブジェクトをキャッシュするように CloudFront を設定す
る (p. 126)」を参照してください。
新機能
HTTPS リクエストをカスタムオリジンサーバーに転送する際に
CloudFront がサポートする暗号の種類が増えました。詳細につ
いては、「暗号化 (p. 171)」を参照してください。
API Version 2016-09-29
402
2014 年 8 月 20
日
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
ウェブディストリビューションの場合、CloudFront
で、CloudFront がヘッダーをオリジンに転送し、ビューアリク
エストのヘッダー値に基づいて指定のオブジェクトの別バージョ
ンをキャッシュするかを選択できます。こうすることで、ユー
ザーが使っているデバイスの種類やビューアの場所、ビューア
で使われている言語など、さまざまな条件に基づいてコンテンツ
の異なるバージョンを提供できます。詳細については、「リクエ
ストヘッダーに基づいてオブジェクトをキャッシュするように
CloudFront を設定する (p. 128)」を参照してください。
2014 年 6 月 26
日
新機能
Amazon CloudFront が AWS CloudTrail と連携して、ご利用の
AWS アカウント(IAM ユーザーも含む)により CloudFront API
に送信されるあらゆるリクエストに関する情報をキャプチャす
るようになりました。CloudFront と CloudTrail を統合すること
で、CloudFront API に対して実行されたリクエストの種類、リ
クエストの実行元 IP アドレス、実行者、実行日時などを判断で
きます。CloudFront で CloudTrail を使用する方法については、
「AWS CloudTrail を使用して CloudFront API に送信されたリク
エストをキャプチャする (p. 307)」を参照してください。
2014 年 5 月 28
日
新機能
このリリースでは、CloudFront がカスタムオリジンに転送する
HTTPS ビューアリクエストについて、CloudFront はオリジン
サーバーの SSL 証明書のドメイン名の 1 つが [Origin Domain
Name] で指定されているドメイン名と一致するかどうかを確認
します。ドメイン名が一致しない場合、CloudFront は、ビュー
アリクエストに対して、リクエストされたオブジェクトではな
く、HTTP ステータスコード 502(不正なゲートウェイ)を返
します。この機能を有効にするには、[Match Viewer] で [Origin
Protocol Policy] を指定する必要があります。詳細については、
「CloudFront で HTTPS を使用する (p. 254)」を参照してくださ
い。
2014 年 5 月 16
日
新機能
CloudFront のこのリリースで、ウェブディストリビューション
の CloudFront アクセスログに新しいフィールドが導入されま
す。time-taken フィールドは、CloudFront エッジサーバーが
ビューアのリクエストを受け取った時間と、CloudFront がレス
ポンスの最終バイトをサーバーの出力キューに書き込んだ時間と
の差(秒数)をサーバー側で測定して示します。ウェブディスト
リビューションの CloudFront アクセスログのファイル形式の詳
細については、「ウェブディストリビューションのログファイル
形式 (p. 294)」を参照してください。
2014 年 4 月 28
日
更新版
「CloudFront および Adobe Media Server 5.0 を使用したライブ
HTTP ストリーミング (p. 319)」で、Adobe Media Server をサブ
スクライブする手順と AWS CloudFormation スタックを作成す
る手順が更新されました。
2014 年 3 月 18
日
新機能
CloudFront のこのリリースで、CloudFront 使用状況レポートの
データのサブセットを含む使用状況グラフが導入されます。詳細
については、「CloudFront 使用状況レポート (p. 26)」を参照し
てください。
2014 年 3 月 13
日
API Version 2016-09-29
403
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースで、以下の新機能が導入されます。
2014 年 3 月 5
日
• ビューアの HTTP リクエストを HTTPS にリダイレクト:
ビューアの HTTP リクエストを HTTPS にリダイレクトするよ
うに CloudFront を構成できるようになりました。詳細につい
ては、「CloudFront で HTTPS を使用する (p. 254)」を参照し
てください。
• 代替ドメイン名による HTTPS リクエストの Server Name
Indication(SNI): オブジェクトの URL にドメイン名を使用し
ている場合、Server Name Indication(SNI)をサポートするブ
ラウザで HTTPS リクエストを処理するよう CloudFront を構
成できるようになりました。詳細については、「代替ドメイン
名と HTTPS の使用 (p. 259)」を参照してください。
新機能
CloudFront のこのリリースで、Microsoft スムーズストリーミン
2014 年 2 月 20
グ形式でエンコードされたメディアファイルの HTTP オンデマン 日
ドストリーミングのサポートが導入されます。詳細については、
「オンデマンドスムーズストリーミングの構成 (p. 93)」を参照し
てください。
新機能
CloudFront のこのリリースで、HTTP 1.1 のサポートが導入され
ます。詳細については、「転送エンコード (p. 181)」を参照して
ください。
2014 年 2 月 7
日
さらに、オンデマンドプログレッシブダウンロード、オンデマン
ド Apple HTTP Live Streaming に関するドキュメントが追加され
ました。詳細については、『Amazon CloudFront 開発者ガイド』
の「オンデマンドプログレッシブダウンロードの構成」および
「オンデマンド Apple HTTP Live Streaming(HLS)の構成」を
参照してください。
新機能
CloudFront のこのリリースで、地域制限が導入されます。特定
の国のユーザーをお客様のコンテンツにアクセスできなくする必
要がある場合、CloudFront ウェブディストリビューションを構
成して次のいずれかの設定を行うことができます。
• ホワイトリストに指定された国のユーザーだけにコンテンツへ
のアクセスを許可します。
• ブラックリストに指定された国のユーザーがコンテンツにアク
セスできないようにします。
詳細については、「コンテンツの地理的ディストリビューション
の制限 (p. 90)」を参照してください。
API Version 2016-09-29
404
2013 年 12 月
18 日
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースで、以下の機能が導入されます。
2013 年 10 月
15 日
• DELETE、OPTIONS、PATCH、POST、PUT の
サポート: CloudFront に送信するリクエストに
DELETE、OPTIONS、PATCH、POST、PUT などの HTTP メソッ
ドを使用できるようになりました。詳細については、「許可さ
れる HTTP メソッド (p. 76)」を参照してください。
CloudFront API を使用して HTTP メソッドを指定する方法
については、『Amazon CloudFront API リファレンス』の
「DistributionConfig Complex タイプ」トピックに記載されて
いる「Method」を参照してください。
• ディストリビューションタイプの名称変更: CloudFront ダウン
ロードディストリビューションはウェブディストリビューショ
ンに、ストリーミングディストリビューションは RTMP ディ
ストリビューションにそれぞれ名称が変更になりました。
• ウェブディストリビューションのアクセスログの新しい
列: CloudFront ウェブディストリビューションのアクセス
ログの各リクエストに 3 つの列 x-host-header、csprotocol、cs-bytes が追加されました。詳細について
は、「ウェブディストリビューションのログファイル形
式 (p. 294)」を参照してください。
新機能
CloudFront のこのリリースで、以下の機能が導入されます。
• カスタムエラーページ:「404, page not found」などデフォル
トの HTTP エラーメッセージの代わりに、お客様のブランド
と独自のコンテンツをエラーページに表示できるようになりま
した。ウェブサーバーを利用できないときに表示される静的な
ページにカスタムエラーページを使うこともできます。詳細に
ついては、「エラーレスポンスのカスタマイズ (p. 149)」を参
照してください。
CloudFront API を使用してカスタムエラーページを指定する
方法については、『Amazon CloudFront API リファレンス』の
「DistributionConfig Complex タイプ」トピックに記載されて
いる「CustomErrorResponses」を参照してください。
• エラーレスポンスの構成可能キャッシュ期間:「エラーキャッ
シュ最短 TTL」と呼ばれることもあります。この機能によ
り、CloudFront が CloudFront エッジロケーションに各エ
ラーをキャッシュしておく時間を指定できます。これまで
CloudFront はすべてのエラー応答を 5 分間キャッシュしてい
ましたが、今後は存続期間を自由に指定して、エラーが起きた
後に CloudFront がオリジンに問い合わせる頻度を制御できる
ようになりました。詳細については、「エラーレスポンスのカ
スタマイズ (p. 149)」を参照してください。
CloudFront API を使用してエラーレスポンスのキャッシュ期間
を指定する方法については、『Amazon CloudFront API リファ
レンス』の「DistributionConfig Complex タイプ」トピックに
記載されている「CustomErrorResponses」を参照してくだ
さい。
API Version 2016-09-29
405
2013 年 9 月 23
日
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront 代替ドメイン名(CNAME)に * ワイルドカードを含
めることが可能になりました(例: *.example.com)。この機能
は、ドメインおよびサブドメイン内のオブジェクトに対するすべ
てのリクエストを、CloudFront ディストリビューションにルー
ティングする場合に役立ちます。詳細については、「代替ドメイ
ン名(CNAME)を使用する (p. 53)」を参照してください。
2013 年 9 月 18
日
更新版
Wowza Media Server 3.6 を使用したライブストリーミング
に関する説明が追加されました。詳細については、「Wowza
Streaming Engine 4.2 を使用したライブ HTTP ストリーミン
グ (p. 350)」を参照してください。
2013 年 9 月 10
日
更新版
Adobe Flash Media Server を使用したライブストリーミングに関
するドキュメントが、Adobe Media Server バージョン 5.0 を使
用したライブストリーミングに関するドキュメントで置き換えら
れました。詳細については、「CloudFront および Adobe Media
Server 5.0 を使用したライブ HTTP ストリーミング (p. 319)」を
参照してください。
2013 年 7 月 31
日
新機能
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. 259)」を参照してください。
また、Amazon Route 53 の同時リリースによって、以下の
CloudFront–関連機能が導入されます。
• CloudFront ディストリビューションへの Amazon Route 53
エイリアス: DNS クエリを CloudFront ディストリビュー
ションの代替ドメイン名にルーティングするエイリアスリ
ソースレコードセットを Amazon Route 53 で作成できるよ
うになりました。この機能は、Zone Apex での代替ドメイ
ン名(example.com)およびサブドメインの代替ドメイン名
(www.example.com)の両方に対して使用できます。詳細に
ついては、「Amazon Route 53 開発者ガイド」の「Routing
Queries to an Amazon CloudFront Distribution」を参照してく
ださい。
API Version 2016-09-29
406
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースで、以下の機能が導入されます。
2012 年 9 月 27
日
• AWS マネジメントコンソール のプライベートコンテンツの
フィールド: 以前は CloudFront API のみを使用して構成または
変更できていたプライベートコンテンツの設定が、AWS マネ
ジメントコンソール で構成または変更できるようになりまし
た。これには、オリジンアクセスアイデンティティおよび信頼
された署名者の設定が含まれます。また、プライベートコンテ
ンツに関するドキュメントが再編成されて明確になりました。
詳細については、「CloudFront を使用してプライベートコン
テンツを供給する (p. 186)」を参照してください。
• AWS マネジメントコンソール の改良: AWS マネジメントコン
ソール のウィザードとダイアログボックスのサイズが変更さ
れ、タブレットコンピューターでの表示が簡素化されました。
他のビューアについても、これらの外観が損なわれることはあ
りません。また、[Create Distribution] ウィザードのページ数が
少なくなり、新しいディストリビューションの作成処理が簡素
化されました。
API Version 2016-09-29
407
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースで、以下の機能が導入されます。
2012 年 9 月 5
日
• ウェブディストリビューションのアクセスログの改良: ウェブ
ディストリビューションの CloudFront アクセスログに以下の
フィールドが含まれるようになりました。
• 名前値のペアおよび属性を含む、ビューアの各リクエストの
Cookie ヘッダー。このフィールドはオプションです。
• リクエストの結果タイプ(Hit、RefreshHit、Miss な
ど)。
• 各リクエストを一意に識別する識別子(CloudFront リクエ
スト ID)。
詳細については、「ウェブディストリビューションのログファ
イル形式 (p. 294)」を参照してください。
CloudFront API を使用してアクセスログに Cookie を含め
る CloudFront ディストリビューションを設定する方法に
ついては、『Amazon CloudFront API リファレンス』の
「DistributionConfig Complex タイプ」トピックに記載されて
いる「IncludeCookies」を参照してください。
• ウェブディストリビューションの Cookie サポート: CloudFront
で Cookie および関連する Cookie 属性をオリジンに転送する
かどうかを選択できるようになりました。転送する場合は、す
べての Cookie を送信するか、または選択した一連の Cookie
のみを送信するかも選択できます。詳細については、「Cookie
に基づいてオブジェクトをキャッシュするように CloudFront
を設定する (p. 126)」を参照してください。
CloudFront API を使用してオリジンに Cookie を転送する
ように CloudFront ディストリビューションを設定する方法
については、『Amazon CloudFront API リファレンス』の
「DistributionConfig Complex タイプ」トピックに記載されて
いる「Cookies」を参照してください。
• ウェブディストリビューションと RTMP ディストリビュー
ションの価格クラス: CloudFront サービスに支払う上限価格に
対応する価格クラスを選択できるようになりました。コスト削
減を優先し、一部の地理的リージョンにおけるレイテンシーの
延長を容認できるのであれば、使用する CloudFront リージョ
ンが限定された価格クラスを選択することもできます。詳細に
ついては、「CloudFront ディストリビューションの価格クラ
スを選択する (p. 58)」を参照してください。
CloudFront API を使用して、CloudFront ウェブディ
ストリビューションの価格クラスを指定する方法につ
いては、『Amazon CloudFront API リファレンス』の
「DistributionConfig Complex タイプ」トピックに記載されて
いる「PriceClass」を参照してください。
CloudFront API を使用して、CloudFront RTMP ディ
ストリビューションの価格クラスを指定する方法につ
いては、『Amazon CloudFront API リファレンス』の
「StreamingDistributionConfig Complex タイプ」トピックに記
載されている「PriceClass」を参照してください。
API Version 2016-09-29
408
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースで、以下の機能が導入されます。
2012 年 6 月 22
日
• CloudFront コンソールを使用して、オブジェクトを無効にで
きるようになりました。詳細については、「オブジェクトの無
効化(ウェブディストリビューションのみ) (p. 142)」を参照
してください。
• タブレットデバイスでの表示が適切にサポートされるように
CloudFront コンソールが更新されました。
新機能
CloudFront のこのリリースで、ウェブディストリビューション
の以下の機能が導入されます。
2012 年 5 月 13
日
• クエリ文字列をオリジンに転送できます。詳細については、
「クエリ文字列パラメーターに基づいてキャッシュするように
CloudFront を設定する (p. 123)」を参照してください。
• 最大 10 個のオリジンを指定できます。詳細については、
「ウェブディストリビューションを作成または更新する場合に
指定する値 (p. 67)」を参照してください。
• パスのパターンを指定できます。詳細については、「ウェブ
ディストリビューションを作成または更新する場合に指定する
値 (p. 67)」を参照してください。
CloudFront API を使用してこれらの値を指定する方法に
ついては、『Amazon CloudFront API リファレンス』の
「DistributionConfig Complex タイプ」を参照してください。
また、CloudFront コンソールが更新されました。詳細について
は、「ウェブディストリビューションを作成するためのタスクリ
スト (p. 62)」および「RTMP を使用するストリーミングメディ
アファイルのタスクリスト (p. 105)」を参照してください。
「Amazon CloudFront 入門ガイド」が「Amazon CloudFront 開
発者ガイド」に統合され、「Amazon CloudFront 開発者ガイド」
が再編成されて使いやすくなりました。
更新版
オブジェクトの操作に関するドキュメントが再編成されて明確に
なりました。改訂版のドキュメントについては「オブジェクトの
使用 (p. 117)」を参照してください。
2012 年 4 月 4
日
新規ドキュメ
ント
Microsoft IIS Media Services バージョン 4.1 を使用したライブス
トリーミングに関するドキュメントが追加されました。詳細につ
いては、「Amazon CloudFront と IIS Media Services 4.1 を使用
したライブスムーズストリーミング (p. 339)」を参照してくださ
い。
2012 年 4 月 1
日
更新版
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. 319)」を参照してく
ださい。
API Version 2016-09-29
409
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
CloudFront のこのリリースでは、ウェブディストリビューショ
ンの最小 TTL 値が引き下げられています。ディストリビュー
ションの作成時に最小 TTL を指定しなかった場合、最小 TTL は
デフォルトで 0 秒に設定されます。詳細については、以下のド
キュメントを参照してください。
2012 年 3 月 15
日
• CloudFront エッジキャッシュにオブジェクトを保持する時間
の指定(有効期限切れ) (p. 136)
• 『Amazon CloudFront API リファレンス』の
「DistributionConfig Complex タイプ」トピックに記載されて
いる「CachingBehaviorエレメント」。
更新版
Adobe Flash Media Server を使用したライブストリーミングに
関するトピックと、地理的ブロッキングに関するトピックが、別
のドキュメントからこのガイドの「CloudFront ストリーミング
チュートリアル (p. 319)」に移動されました。
2012 年 2 月 2
日
新機能
CloudFront のこのリリースでは、AWS マネジメントコンソール 2011 年 4 月 27
でカスタムオリジンを使用してディストリビューションを作成す 日
ることで、ディストリビューションを HTTPS に排他的に制限で
きるほか、デフォルトのルートオブジェクトを指定できます。詳
細については、Amazon CloudFront の製品ページを参照するか、
「Amazon CloudFront 開発者ガイド」の以下のいずれかのトピッ
クを参照してください。
• ウェブディストリビューションを作成するためのタスクリス
ト (p. 62)
• CloudFront で HTTPS を使用する (p. 254)
• デフォルトルートオブジェクトの指定(ウェブディストリ
ビューションのみ) (p. 155)
新機能
CloudFront のこのリリースには、AWS Identity and Access
Management(IAM)との統合が含まれます。詳細については、
「CloudFront に対する認証とアクセスコントロール (p. 274)」を
参照してください。
2011 年 3 月 10
日
新機能
CloudFront のこのリリースには、カスタムオリジンをサポー
トする新しい API が含まれます。詳細については、Amazon
CloudFront の製品ページを参照するか、「Amazon CloudFront
開発者ガイド」の「ウェブディストリビューションを作成するた
めのタスクリスト (p. 62)」を参照してください。
2010 年 11 月 9
日
新機能
CloudFront のこのリリースには、オブジェクトを無効にする
ための新しい API が含まれます。詳細については、Amazon
CloudFront の製品ページを参照するか、「Amazon CloudFront
開発者ガイド」の「オブジェクトの無効化(ウェブディストリ
ビューションのみ) (p. 142)」を参照してください。
2010 年 8 月 31
日
新機能
CloudFront で、デフォルトのルートオブジェクトをディストリ
ビューションに割り当てる機能がサポートされるようになりま
した。詳細については、「デフォルトルートオブジェクトの指定
(ウェブディストリビューションのみ) (p. 155)」を参照してく
ださい。
2010 年 8 月 5
日
API Version 2016-09-29
410
Amazon CloudFront 開発者ガイド
変更
説明
日付日
新機能
HTTP ディストリビューションのアクセスログの作成で、クエリ
文字列パラメーター用のフィールドが含まれるようになりまし
た。詳細については、「ウェブディストリビューションのログ
ファイル形式 (p. 294)」を参照してください。
2010 年 7 月 14
日
新機能
HTTPS を使用するセキュアな接続のサポートが追加されま
した。詳細については、「CloudFront で HTTPS を使用す
る (p. 254)」を参照してください。
2010 年 6 月 7
日
新機能
RTMP コンテンツのログ作成が追加されました。詳細につ
いては、「RTMP ディストリビューションのログファイル形
式 (p. 300)」を参照してください。
2010 年 5 月 13
日
新機能
オブジェクトがエッジサーバーに存在できる最小時間が 24 時間
から 1 時間に短縮されました。ただし、デフォルトは 24 時間の
ままです。詳細については、「CloudFront エッジキャッシュに
オブジェクトを保持する時間の指定(有効期限切れ) (p. 136)」
を参照してください。
2010 年 4 月 13
日
新機能
Real-Time Messaging Protocol(RTMP)経由でプライベート
のストリーミングコンテンツを供給し、コンテンツのダウン
ロードを禁止する機能が追加されました。詳細については、
「CloudFront を使用してプライベートコンテンツを供給す
る (p. 186)」を参照してください。
2010 年 3 月 28
日
新機能
Real-Time Messaging Protocol(RTMP)接続経由でストリーミ
ングコンテンツを配信する機能が追加されました。詳細について
は、「RTMP を使用するストリーミングメディアファイルのタス
クリスト (p. 105)」を参照してください。
2009 年 12 月
15 日
新機能
HTTP 経由で配信されたコンテンツへのアクセスを制限する機能
が追加されました。詳細については、「CloudFront を使用して
プライベートコンテンツを供給する (p. 186)」を参照してくださ
い。
2009 年 11 月
11 日
新規ガイド
API リファレンスに関する資料を独自のガイドに分割しました。
「Amazon CloudFront 開発者ガイド」には、CloudFront の使用
方法に関する一般的な情報が含まれます。「Auto Scaling API リ
ファレンス」には、コントロール API のリクエスト、レスポン
ス、およびエラーに関する詳細情報が含まれます。
2009 年 11 月
11 日
API Version 2016-09-29
411
Amazon CloudFront 開発者ガイド
AWS の用語集
最新の AWS の用語については、『AWS General Reference』の「AWS の用語集」を参照してくださ
い。
API Version 2016-09-29
412