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 • _-.*$/~"'@:+ • &(& として受け渡しされます) オリジン(既存のディストリビューションのみ) 既存のオリジンの [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 • _-.*$/~"' • &(& として受け渡しされます) デフォルトのルートオブジェクトを指定する場合、オブジェクト名のみを指定します(例: 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¶meter2=b というクエリ文字列が含まれており、同 じオブジェクトに対する別のリクエストに parameter2=b¶meter1=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
© Copyright 2024 Paperzz