share facebook facebook twitter menu hatena pocket slack

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

Kahoru Hagiya

WRITTEN BY Kahoru Hagiya

こんにちは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でライブ配信するには

Kahoru Hagiya

Kahoru Hagiya

タバコやめて絶賛ベイプ中な動画チームの初老

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。