こんにちはhagi@streampackです。
今回はMediaStoreを利用したMediaLive配信につきまして記述します。

MediaStoreとは?

AWSではこのように説明しています。

AWS Elemental MediaStore は、メディア向けに最適化された AWS ストレージサービスです。このサービスにより、ライブストリーミングによる動画コンテンツ配信に必要なパフォーマンス、整合性、低レイテンシーを実現できます。

MediaPackageとの違いは?

MediaPackageはMediaLiveからのHLSストリームを受けて複数の他のフォーマットで配信したり場合によっては提供するストリームを変えたりすることが可能です。
いわゆるパッケジングをするサービスとなります。
MediaStoreはストレージなのでMediaLiveの出力を変えず、MediaStore直またはCloudFrontなどから配信するために利用します。
イメージとしてはs3に格納するのと同じです。

はじめに

MediaLive+MediaPackageとセットアップ方法は似ているのでMediaLiveの説明は非常に簡易になっております。

構成

MediaLive + MediaStore

MediaStore

MediaLiveでデスティネーションが2つ必要なのでまずはMediaStoreのコンテナーを作成。
MediaPackageの時はchannelが2つ必須でしたがMediaStoreのコンテナーは1つでも可能。

コンテナー作成

AWSのコンソールにログインを行い右上に表示された、”Create Storage Container”で作成したいコンテナー名を入れ”Create Container”を押下。

以上!

といいたいとこですが実はこれではアクセスができない。

Container Policyの編集

Containerをクリック

Container Policyを編集

例など詳細はこちらをご参考ください。

誰でもhttpsで見れるようにしたいのでExample Container Policy: Public Read Access over HTTPSを利用
”region”、”owner acct number”、”container name”は環境に合わせてご設定ください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadOverHttps",
      "Effect": "Allow",
      "Action": ["mediastore:GetObject", "mediastore:DescribeObject"],
      "Principal": "*",
      "Resource": "arn:aws:mediastore:<region>:<owner acct number>:container/<container name>/*",
      "Condition": {
        "Bool": {
            "aws:SecureTransport": "true"
        }
      }
    }
  ]
}

MediaLive設定

MediaLiveはここの設定を行い、HLS Group Destination A/Bの設定はMediaStoreのコンテナーにする。

設定を先出しすると下記のような形となります。

URL

URLはMediaStoreのコンテナーのData Endpointを利用。

さらに、httpsではなくmediastoresslにする必要があります。

Destination A mediastoressl://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destA/test
Destination B mediastoressl://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destB/test

上記設定の場合配信先は下記となります。

Destination A https://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destA/test.m3u8
Destination B https://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destB/test.m3u8

同一のendpointを指定できないのでフォルダーを指定することでDestination AとBを別にしつつマニフェストを同じ名前の”test”としています。

最後に

これでMediaLive+MediaStoreの設定は完了です。
今回はMediaStoreのコンテナーを一つにしましたがこれには利点がいくつかあると思います。
例えば、

  • CloudFront ディストリビューションは一つでいい
  • MediaStoreはAWSのダッシュボードからもファイルを確認したり削除することができるので管理がしやすいかもしれない
  • Liveのデータファイルが全て入っているのでVODとしても提供可能だがライブごとにコンテナーを分ければ管理がしやすい

などなど

ちなみにコンテナーはファイルが入った状態では削除できないかつファイルを一気に削除することができないのでスクリプトなどを利用するかダッシュボードで一ずつポチポチするしかないです。

元記事はこちら

MediaLive->MediaStoreでライブ配信するには