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. MediaStore コンテナへのアクセスを Amazon CloudFront に許可する」の手順に従ってから、こちらのステップに戻ってディストリビューションを作成します。

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

    オリジンドメイン名

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

    オリジンのパス

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

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

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

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

    [Redirect HTTP to HTTPS (HTTP から HTTPS へのリダイレクト)] を選択します。詳細については、「ビューアープロトコルポリシー」を参照してください。

    オブジェクトキャッシュ

    使用するトランスコーダーがキャッシュコントロールをすべてのオブジェクトに指定できない場合は、[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 エンドポイントを追加します。オリジンごとに、ビデオコンテンツを正しくルーティングするようにキャッシュ動作を設定する必要があります。

MediaPackage にチャネルを保存する場合は、CloudFront で自動的にディストリビューションを作成することもできます。詳細については、AWS Elemental MediaPackage ユーザーガイド の「AWS Elemental MediaPackage からのディストリビューションの作成」を参照してください。

CloudFront で MediaPackage 用の CloudFront ディストリビューションを作成するには、次のステップに従います。

ステップ 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 キャッシュ内のオブジェクトの保持時間をカスタマイズする方法の詳細については、「ディストリビューションを作成または更新する場合に指定する値」トピックの「オブジェクトキャッシュ」を参照してください。

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

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

  5. Create を選択します。

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

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

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

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