[アップデート] AWS Elemental MediaPackageがLive Channelの冗長入力に対応しました

AWS Elemental MediaPackageでLive Channelの冗長入力に対応しました。これまで冗長化構成のため2つのChannelを作成する必要がありましたが、1つのChannelで冗長化に対応した配信が行えるようになりました。
2018.08.30

はじめに

清水です。AWS Media Servicesのアップデートを追っていくコーナー、今回はAWS Elemental MediaPackageがLive Channelの冗長入力対応に対応した件を取り上げます。現地時間2018/08/28付のアップデートで、これまでのライブ配信時の冗長構成がシンプルに変更できうる、割と大きめのアップデートだと感じました。

これまでAWS Elemental MediaPackageのChannelは1つのInputに対して、出力Endpointを1つ以上作成する、というかたちでした。例えばデフォルトで冗長構成を持ち、Channel作成時に2つの出力(Destination A、Destination B)を設定する必要があるAWS Elemental MediaLiveと連携してライブ配信基盤を構築する際は、AWS Elemental MediaPackage側も2つのChannelを作成する必要がありました。出力Endpointも2つという構成となるので、冗長構成を取り障害発生時にサブ系統に切り替える際にはPlayer側で参照するマニフェストファイルの切り替えなどを検討する必要がありました。

今回のAWS Elemental MediaPackageがLive Channelの冗長入力に対応したアップデートでは、1つのChannelを作成することで2つのAWS Elemental MediaPackageのInputが提供されます。出力Endpointは1つ以上作成するということで変わりはありません。障害発生時にサブ系統に切り替える際にもAWS Elemental MediaPackageが自動的に入力ストリームを切り替えるため参照するマニフェストファイルを変更するなどの対応が不要になります。

なお実際に冗長構成を取るにはいくつか制限事項、注意事項もあるようです。詳しくはドキュメントをご確認ください。

また本エントリでは構成の簡略化のためCDNについては省いた構成を示していますが、実際に動画配信を行う際にはCDNの導入をご検討ください。

AWS Elemental MediaPackageのChannelの冗長入力を確認してみた

それではさっそく冗長構成に対応したMediaPackageのChannelを作成してみます。作成直後の画面が以下となります。Inputが2つ作成されていることがわかりますね。

なお、数日前のMediaPackageでは以下の具合でした。Input URLは1つだけ提供されています。(2018年08月28日に投稿したエントリ、「[アップデート] AWS Elemental MediaPackageでマネージメントコンソールからCloudFrontディストリビューションが自動作成できるようになりました | Developers.IO」より。)

さらに詳しく見てみると、現段階で提供されるMediaPackageのChannel Inputは以下形式(が2つ)であるのに対し、

  • https://[ランダム文字列].mediapackage.[リージョン].amazonaws.com/in/v2/[ランダム文字列]/[ランダム文字列]/channel

以前の1つのみのChannel Inputは以下の形式だったことがわかります。

  • https://[ランダム文字列].mediapackage.[リージョン].amazonaws.com/in/v1/[ランダム文字列]/[ランダム文字列]/channel

途中、v1からv2に変更されていますね!ドキュメントを確認する限り、既存のChannelにも2つの目のURLが追加、更新されているようです。

When input redundancy became available, AWS Elemental MediaPackage added a second ingest URL to existing channels and updated the existing URL to a new format. You can use either the existing URL or the new URLs for content input. How Input Redundancy Works - AWS Elemental MediaPackage

続いて、MediaLive+MediaPackageの構成でライブ配信を行い、1つのEndpointで映像が切り替わることを確認してみます。構成は以下のようになります。機材の都合で2つの映像入力はできませんが、MediaLive側Inputを切り替えつつ、視聴用のEndpointは同じもので映像が引き続き視聴できることを確認してみます。

MeidaLiveでChannelを作成する際、Output groupsで先ほど作成したMediaPackage Channelの2つのInputをそれぞれ入力します。

MediaPackage側はHLS形式のEndpointを作成しておきます。実際にMacBook Pro上のOBS Studioから映像を配信、MediaPackageの1つのEndpoint URLで視聴してみて以下のことが確認できました。

  1. MediaLiveのChannelを一度Stop、Startし直してからOBS Stduio側配信先を変えても、MediaPackageの1つのEndpointで映像を視聴しつづけることができた(映像の一時的な中断はあり)
  2. MediaLiveのChannelのステータスはrunnningのままOBS Studioでの配信先を変更した場合、MediaPackageから配信される映像は黒の映像が流れ続けた(切り替わらなかった)

1.については想定した通りの挙動ですね。2.についてはMediaLive側でInputに入力がなくても、Channelからは微量ながらもデータが転送されているようなので、こちらの影響かと考えています。これは黒の映像が流れ続けていること、また以下のようにMediaLiveのHealth状態から確認できました。

MediaPackage側から確認できる情報でも、OBS Studioでの配信先を変更しただけではわずかに映像入力が残っていることが確認できます。

このようなMediaLive、MediaPackageそれぞれの冗長構成を取った場合の挙動については引き続き調査していきたいと思います。

まとめ

AWS Elemental MediaPackageの新機能、Live Channelの冗長入力対応について確認してみました。これまで冗長化の対応としてMediaPackageで2つのChannelを作成、それぞれのEndpointを扱う必要がありましたが、今回のアップデートで1つのChannelで冗長化されたEndpointを扱うことができ、構成などがシンプルになりますね。大変うれしいアップデートだと思います。引き続きAWS Elemental MediaPackage含めたAWS Media Servicesのサービスアップデートに注目していきたいと思います。