Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

CloudFront と AWS Media Services によるビデオのライブストリーミング

CloudFront と AWS Media Services を使用して、世界中の視聴者にライブコンテンツを配信するには、このセクションに含まれるガイダンスに従います。

AWS Elemental MediaLive では、ライブビデオストリームがリアルタイムでエンコードされます。Elemental Live のような地上波エンコーダーからのビデオなど、サイズが大きいライブビデオソースの場合は、MediaLive を使用して小さいバージョン ("エンコード") に圧縮してから、視聴者に配信できます。

ライブストリーミングコンテンツの準備と配信には、主に以下の 2 つのオプションがあります。

  • 必要な形式にコンテンツを変換して配信する: AWS Elemental MediaPackage を使用して、ビデオコンテンツを 1 つの形式から複数の形式に変換し、さまざまなタイプのデバイス用にコンテンツをパッケージ化できます。MediaPackage では、最初から再生、一時停止、巻き戻しなどの視聴者向けのビデオ機能を実装できます。また MediaPackage では、デジタル著作権管理 (DRM) 機能を追加することで、不正なコピーからコンテンツを保護することもできます。MediaPackage でフォーマットされたコンテンツを CloudFront を使用して配信する手順については、このトピックの「AWS Elemental MediaPackage でフォーマットされたライブビデオのストリーミング」を参照してください。

  • スケーラブルなオリジンを使用してコンテンツを保存して配信する: エンコーダーによって視聴者のすべてのデバイスに必要な形式でコンテンツがすでに出力されている場合は、AWS Elemental MediaStore コンテナのような高スケーラブルなオリジンを使用してコンテンツを配信できます。CloudFront を使用して、MediaStore コンテナに保存されているコンテンツを配信する手順については、このトピックの「AWS Elemental MediaStore をオリジンとしたビデオの配信」を参照してください。

これらのオプションのいずれかを使用してオリジンを設定したら、CloudFront を使用して、視聴者にライブストリーミングビデオを配信できます。

ヒント

AWS クラウドサービスによるビデオライブストリーミングワークフローを実装するときのベストプラクティスの詳細については、「ライブストリーミングビデオ」を参照してください。

可用性の高いリアルタイムの視聴エクスペリエンスを実現するサービスを自動的にデプロイする AWS ソリューションについて、情報を入手することもできます。このソリューションを自動的にデプロイする手順については、「ライブストリーミングの自動デプロイ」を参照してください。

AWS Elemental MediaStore をオリジンとしたビデオの配信

AWS Elemental MediaStore コンテナにビデオを保存している場合は、CloudFront ディストリビューションを作成して、コンテンツを配信できます。

開始するには、CloudFront に MediaStore コンテナへのアクセス許可を付与します。次に、CloudFront ディストリビューションを作成し、MediaStore と連動するように設定します。

  1. Allowing Amazon CloudFront to Access Your MediaStore Container」の手順に従ってから、こちらのステップに戻ってディストリビューションを作成します。

  2. 次の設定でディストリビューションを作成します。

    オリジンドメイン名

    MediaStore コンテナに割り当てられたデータエンドポイントです。ドロップダウンリストから、ライブビデオ用の MediaStore コンテナを選択します。MediaStore オリジンの形式は Container-OriginEndpointURL です。たとえば、mymediastore.data.mediastore.us-east-1.amazonaws.com です。詳細については、「オリジンドメイン名」を参照してください。

    オリジンのパス

    オブジェクトが保存されている MediaStore コンテナのフォルダ構造です。詳細については、「オリジンのパス」を参照してください。

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

    CloudFront がリクエストをオリジンに転送するときにカスタムヘッダーを含める場合は、ヘッダー名と値を追加します。

    オブジェクトキャッシュ

    使用するトランスコーダーがキャッシュコントロールをすべてのオブジェクトに指定できない場合、[Customize] (カスタマイズ) を選択します。トランスコーダーがキャッシュコントロールをすべてのオブジェクトに指定できる場合、[Origin Cache Headers] (オリジンのキャッシュヘッダー) を選択します。

    最小 TTL、最大 TTL、およびデフォルト TTL

    キャッシュのニーズとセグメントの継続期間に応じて設定します。

    Error Caching Minimum TTL (エラーキャッシュ最小 TTL)

    古いコンテンツを提供しないように 5 秒以下に設定します。

    その他の設定については、他の技術的要件またはビジネスのニーズに基づいて特定の値を設定できます。ウェブディストリビューションのすべてのオプションのリストおよびその設定に関する情報については、「ディストリビューションを作成または更新する場合に指定する値」を参照してください。

  3. ディストリビューションを作成し、それがプロビジョニングされた後、キャッシュ動作を編集して、オリジンの Cross-Origin Resource Sharing (CORS) をセットアップします。

    1. ディストリビューションを選択してから [Distribution Settings] (ディストリビューションの設定) を選択します。

    2. [Behaviors] (動作) を選択し、オリジンを選択してから [Edit] (編集) を選択します。

    3. [Cache Based on Selected Request Headers] (選択したリクエストヘッダーに基づいたキャッシュ) で [Whitelist] (ホワイトリスト) を選択してから、[Whitelist Headers] (ホワイトリストのヘッダー) で [Origin] (オリジン) を選択します。

    CORS の詳細については、「リクエストヘッダーに基づくコンテンツのキャッシュ」の「Cross-Origin Resource Sharing (CORS) 設定を優先するように CloudFront を設定する」を参照してください。

  4. アプリケーション (メディアプレーヤーなど) でリンクする場合、CloudFront を使って配信する他のオブジェクトと同じ形式でメディアファイルの名前を指定します。

AWS Elemental MediaPackage でフォーマットされたライブビデオのストリーミング

AWS Elemental MediaPackage を使用してライブストリームを視聴用にフォーマットする場合は、CloudFront ディストリビューションを作成し、キャッシュ動作を設定して、ライブストリームを配信できます。このトピックでは、MediaPackage を使用してライブビデオ用のチャネルエンドポイントをすでに作成していることを前提としています。

CloudFront でビデオをストリーミングするには、そのチャネルのウェブディストリビューションを作成してから、そのディストリビューションのオリジンとして各 MediaPackage エンドポイントを追加します。オリジンごとに、ビデオコンテンツを正しくルーティングするようにキャッシュ動作を設定する必要があります。

以下の手順に従ってください:

ステップ 1: ライブビデオの CloudFront ディストリビューションを作成して設定する

以下の手順を実行して、MediaPackage で作成したライブビデオチャネルの CloudFront ディストリビューションを設定します。

ライブビデオチャネルのウェブディストリビューションを作成するには

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/cloudfront/ にある、CloudFront コンソールを開きます。

  2. [Create Distribution] を選択します。

  3. [Select a delivery method ] ページで、[Web] セクションの [Get Started] を選択します。

  4. 以下のようなディストリビューション用の設定を選択します。

    オリジンドメイン名

    MediaPackage ライブビデオチャネルとエンドポイントがあるオリジン。ドロップダウンリストから、ライブビデオ用の MediaPackage チャネルを選択します。MediaPackage オリジンの形式は ChannelID-OriginEndpointID-OriginEndpointURL です。1 つのチャネルを複数のオリジンにマップできます。

    別の AWS アカウントを使用してチャネルを作成した場合は、オリジンの URL 値をフィールドに入力します。オリジンは HTTPS URL であることが必要です。

    詳細については、「ディストリビューションを作成または更新する場合に指定する値」トピックの「オリジンドメイン名」を参照してください。

    オリジンのパス

    MediaPackage でオブジェクトが保存されるフォルダ構造です。ドロップダウンリストからチャネルを選択すると、パスが自動的に入力されます。

    [Origin Domain Name] (オリジンドメイン名) に別の AWS アカウントのチャネルを使用することを選択した場合、[Origin Path] (オリジンパス) フィールドは自動的に入力されません。別のアカウントにサインインし、正しいオリジンパスを入手して、手動で入力する必要があります。

    オリジンパスのしくみの詳細については、「ディストリビューションを作成または更新する場合に指定する値」トピックの「オリジンのパス」を参照してください。

    その他のディストリビューション設定には、他の技術的要件またはビジネスニーズに基づいて値を指定します。ウェブディストリビューションのすべてのオプションのリストとそれらの設定に関する情報については、「ディストリビューションを作成または更新する場合に指定する値」トピックを参照してください。

  5. オリジンに対して選択したチャネルの正しいキャッシュ動作設定を指定します。後で他のオリジンを 1 つ以上追加し、それらのキャッシュ動作設定を編集します。

  6. ディストリビューションの [Status] (ステータス) 列の値が [In Progress] (進行中) から [Deployed] (デプロイ済み) に変わり、CloudFront によってディストリビューションが作成されたことが示されるまで待ちます。

ステップ 2: ディストリビューションのオリジンとして他のエンドポイントを追加する

ここでの手順を繰り返して、各エンドポイントを追加します。

オリジンとして他のエンドポイントを追加するには

  1. CloudFront コンソールで、自分のチャネル用に作成したディストリビューションを選択し、[Distribution Settings] (ディストリビューション設定) を選択します。

  2. [Origins] (オリジン) タブで、[Create Origin] (オリジンの作成) を選択します。

  3. [Origin Domain Name] (オリジンドメイン名) で、ドロップダウンリストからチャネルの MediaPackage エンドポイントを選択します。[Origin Path] (オリジンパス) フィールドが自動的に入力されます。

  4. その他の設定には、他の技術的要件またはビジネスニーズに基づいて値を指定します。詳細については、「ディストリビューションを作成または更新する場合に指定する値」トピックの「オリジンの設定」を参照してください。

  5. [Create (作成)] を選択します。

ステップ 3: すべてのエンドポイントのキャッシュ動作を設定する

エンドポイントごとに、キャッシュ動作を設定して、リクエストを正しくルーティングするパスパターンを追加する必要があります。指定するパスパターンは、配信するビデオの形式によって異なります。このトピックの手順には、HLS、CMAF、DASH、および Microsoft Smooth 形式で使用するパスパターンの情報が含まれています。

通常、エンドポイントごとに 2 つのキャッシュ動作を設定します。

  • ファイルのインデックスになる親マニフェスト

  • ビデオコンテンツそのものになる子マニフェスト

エンドポイントのキャッシュ動作を作成するには

  1. CloudFront コンソールで、自分のチャネル用に作成したディストリビューションを選択し、[Distribution Settings] (ディストリビューション設定) を選択します。

  2. [Behaviors] (動作) タブで、[Create Behavior] (動作の作成) を選択します。

  3. [Cache Behavior Settings] (キャッシュ動作設定) セクションの [Path Pattern] (パスパターン) に、以下のパスパターンガイダンスを使用して、このオリジンのエンドポイントタイプの最初のパスパターンを入力します。たとえば、DASH エンドポイントの場合は、[Path Pattern] (パスパターン) に「*.mpd」と入力します。

    パスパターン

    HLS エンドポイントの場合、以下の 2 つのキャッシュ動作を作成します。

    • パスパターンが *.m3u8 のキャッシュ動作 (親マニフェスト用)

    • パスパターンが *.ts のキャッシュ動作 (セグメント用)

    CMAF エンドポイントの場合、以下の 2 つのキャッシュ動作を作成します。

    • パスパターンが *.m3u8 のキャッシュ動作 (親マニフェスト用)

    • パスパターンが *.mp4 のキャッシュ動作 (セグメント用)

    DASH エンドポイントの場合、以下の 2 つのキャッシュ動作を作成します。

    • パスパターンが *.mpd のキャッシュ動作 (親マニフェスト用)

    • パスパターンが *.mp4 のキャッシュ動作 (セグメント用)

    Microsoft Smooth Streaming エンドポイントの場合、マニフェストのみが使用されるため、1 つのキャッシュ動作のみを作成します。

    • パスパターンが index.ism/* のキャッシュ動作

    注記

    Microsoft Smooth Streaming エンドポイント以外のすべてのエンドポイントの形式では、以下の手順を繰り返して 2 つのキャッシュ動作を追加する必要があります。

  4. キャッシュ動作ごとに、以下の設定の値を指定します。

    ビューワープロトコルポリシー

    [Redirect HTTP to HTTPS] (HTTP から HTTPS へのリダイレクト) を選択します。

    選択されたリクエストヘッダーに基づいたキャッシュ

    [None (improves caching)] (なし (キャッシュを改善)) を選択します。

    キャッシュの改善の詳細については、「CloudFront エッジキャッシュから提供されるリクエストの比率の向上」を参照してください。

    クエリ文字列の転送とキャッシュ

    [Forward all, cache based on whitelist] (すべて転送 - ホワイトリストに基づいてキャッシュ) を選択します。

    クエリ文字列のホワイトリスト

    CloudFront によってキャッシュの基準として使用されるクエリ文字列パラメータとして文字 m を指定します。AWS Elemental MediaPackage レスポンスには、エンドポイントの変更時間を取得するためのタグ ?m=### が常に含まれます。コンテンツがすでにキャッシュされていて、このタグに別の値が設定されている場合、CloudFront はキャッシュされたバージョンを配信する代わりに新しいマニフェストをリクエストします。

    タイムシフト表示機能を MediaPackage で使用する場合は、マニフェストリクエスト (*.m3u8*.mpdindex.ism/*) のキャッシュ動作の追加のクエリ文字列パラメータとして startend を指定します。これにより、マニフェストリクエストで指定した期間に固有のコンテンツが配信されます。タイムシフト表示の詳細、コンテンツ開始および終了リクエストパラメータの形式の詳細については、『AWS Elemental MediaPackage ユーザーガイド』の「タイムシフト表示」を参照してください。

    オブジェクトキャッシュ

    MediaPackage によって、正しい再生動作のためのデフォルトの Cache-Control ヘッダーが設定されます。これらの値を使用する場合は、[Use Origin Cache Headers] (オリジンキャッシュヘッダーの使用) を選択します。ただし、ビデオセグメントのキャッシュ時間を長くすることができます。CloudFront キャッシュ内のオブジェクトの保持時間をカスタマイズする方法の詳細については、「ディストリビューションを作成または更新する場合に指定する値」トピックの「オブジェクトキャッシュ」を参照してください。

  5. [Create (作成)] を選択します。

  6. Microsoft Smooth エンドポイント以外のエンドポイントの場合は、[Create Behavior] (動作の作成) を選択し、ここまでの手順を繰り返して 2 つ目のキャッシュ動作を作成します。

ステップ 4: CloudFront を使用してライブストリームチャネルを配信する

ディストリビューションを作成し、オリジンを追加し、キャッシュ動作を作成したら、CloudFront を使用してライブストリームチャネルを配信できます。視聴者からのコンテンツのリクエストは、キャッシュ動作用に定義した設定に基づいて、正しい MediaPackage エンドポイントにルーティングされます。

アプリケーション (メディアプレーヤーなど) 内のリンクの場合は、CloudFront URL の標準形式でメディアファイルの URL を指定します。詳細については、「CloudFront でファイルの URL の形式をカスタマイズする」を参照してください。