Amazon Web Services ブログ
入力未検出時に AWS Elemental MediaLive チャネルを自動的に停止させる
はじめに
世界中の報道機関やメディア企業が AWS Elemental MediaLive を使用して、インフラストラクチャを管理することなく、高速で信頼性が高く、使いやすい高品質のライブ動画ストリームを配信しています。MediaLive は、ライブストリームの処理と配信のための取り込みとエンコーディング用コンポーネントの設定・管理を自動化することで、ライブ動画のオペレーションを効率化します。現時点では、MediaLive チャネルがアイドル状態で、出力をストリーミングしていないときに自動的に停止させる方法はありません。ライブストリーミングが停止しても、MediaLive チャネルは稼働し続けるため、コストがかかってしまいます。入力がない間はチャネルを停止させたい場合、お客様が手動で停止させる必要があります。
本記事では、MediaLive がどこにもストリーミング出力していないときに MediaLive チャネルを停止させるための完全に自動化されたソリューションを構築する方法、およびお客様がコストを節約できる方法について説明します。
一部の MediaLive リソースについては、アイドル時でも少額の料金が発生することにご留意ください。詳細については、MediaLive の料金を確認してください。
前提条件
本記事は、次の前提条件に基づいています。
1. Single pipeline の、RTMP プッシュ入力による MediaLive チャネルが構成済みである。
2. チャネルに冗長入力がアタッチされていない。
3. MediaLive チャネルにファイル入力が設定されていない
4. MediaLive チャネルの入力損失タイマーはユーザー定義で 10 分に設定されている。MediaLive チャネルのアラートを 10 分間監視した後にチャネルを停止する
5. MediaLive チャネルにアタッチされた入力は再利用できるため削除しない
アーキテクチャ
このブログでは、ライブストリーミングソフトウェアとして OBS Studio を使用しています。OBS は、Mac、Windows および Linux と互換性のある、オフラインビデオ録画とライブストリーミング用の無料のオープンソースソリューションです。
MediaLive はライブフィードを取り込み、リアルタイムでエンコードし、放送用の高品質のストリームに圧縮します。MediaLive チャネルには、Standard と Single pipeline の 2 種のチャネルクラスオプションがあります。今回のライブ信号の入力設定には、Single pipeline チャネルを使用します。チャネル設定には、入力を特定の出力にトランスコード (デコードおよびエンコード) してパッケージ化する方法を MediaLive に指示する詳細情報が含まれています。MediaLive は、チャネル内のいずれかのパイプラインで問題、または潜在的な問題が発生すると、アラートを生成します。各アラートの詳細は、MediaLive コンソールの [Alerts] タブに表示されます。
Amazon EventBridge は、コードを記述しなくても、AWS サービスのデータの変更や、独自のアプリケーション、およびサービスとしてのソフトウェア (SaaS) アプリケーションにリアルタイムでアクセスできるようにするサービスです。今回、EventBridge を使って、MediaLive チャネルのアラートを監視するルールを 2 つ作成します。1 つ目のルールは、アラート状態が「SET」でアラートタイプが「RTMP Has No Audio/Video」に一致した受信イベントパターンのアラートをターゲットの AWS Step Functions に送信します。そこでさらに処理が行われます。2つ目のルールは、アラートタイプが「RTMP Has No Audio/Video」に一致した受信イベントパターンをターゲットの Amazon CloudWatch に送信します。CloudWatch は、AWS のクラウドリソースやお客様が AWS で実行するアプリケーションを監視するサービスです。CloudWatch を使用して、メトリクスの収集と追跡、ログファイルの収集と監視、アラームの設定を行うことができます。
Step Functions は、視覚的なワークフローを使用して分散アプリケーションやマイクロサービスのコンポーネントを簡単に調整できるフルマネージドサービスです。ここでは、Step Functions内に、AWS Lambda 関数 2 つおよび待機状態 1 つから成るワークフローを作成します。
AWS Lambda を使うと、サーバーのプロビジョニングや管理をすることなく、コードを実行することができます。Lambda を使うことで、事実上あらゆるタイプのアプリケーションやバックエンドサービスのコードをインフラストラクチャ管理なしで実行できます。1 番目の Lambda 関数は、カスタムの Amazon SNS 通知 E メールをユーザーに送信します。Amazon SNS は、通知を簡単に設定、操作、送信できるウェブサービスです。Step Functionsワークフローはここで、2 番目のLambda関数を呼び出す前に10分間の待機状態に入ります。これは、MediaLive チャネルのユーザー定義の入力損失待機時間を 10 分にした前提条件に基づくものです。2 番目の Lambda 関数は、CloudWatch ログをフィルタリングして MediaLive アラートがクリアされたかどうかを確認し、クリアされていない場合には MediaLive チャネルを停止します。
事前準備
以下のサービスへのアクセス許可を持った AWS アカウントが必要です。
- AWS Elemental MediaLive
- AWS Elemental MediaPackage
- Amazon CloudFront
- AWS Lambda
- Amazon CloudWatch
- AWS Identity and Access Management (AWS IAM)
- AWS Step Functions
- Amazon SNS
- Amazon EventBridge
- AWS CloudFormation
本記事では、AWS Media Services を使用してライブストリーミングチャネルを準備する必要があります。こちらの記事に従い、フルマネージドの AWS Media Services を使用したエンドツーエンドのライブストリーミングチャネルを作成してください。
ステップ 1: CloudFormation テンプレートをデプロイする
AWS Console にサインインする
下の [Launch Stack] ボタンをクリックして、任意のリージョンに CloudFormation テンプレートをデプロイします。
お客様の E メールアドレスを入力してください。これは SNS 通知の宛先になります。
前提条件の手順で作成した MediaLive チャネルの ARN をコピーして、MediaLive Arn テキストボックスに貼り付けます。
次に、確認ボックスにチェックを入れ、[Create] をクリックします。
CloudFormation テンプレートは、お客様の AWS アカウントに以下のサービスをデプロイします。
ワークフローの流れ
まず始めるにあたり、MediaLive チャネルが稼働していて、OBS のソースからコンテンツがストリーミングされている必要があります。
- OBS からのストリーミングを停止します。すると、MediaLive チャネルにアラートが発生します。
- EventBridge ルールはアラートを監視し、受信イベントのパターンを照合して、イベントまたはペイロードをターゲット(Step Functions や CloudWatch ロググループ)に送信します。
- Step Functions のワークフローは、Lambda 関数 2 つおよび待機状態 1 つで構成されています。
- ワークフローが 1 番目の Lambda 関数を呼び出すことで、ユーザーに SNS 通知が送信されます。
- その後、ワークフローは 10 分間の待機状態に入ります(ユーザー定義の待機時間)。
- 待機状態の終了後、2 番目の Lambda 関数が呼び出され、CloudWatch ロググループをフィルタリングすることで、MediaLive チャネルによって生成されたアラートがクリアされたかどうかを確認します。クリアされていない場合には、MediaLive チャネルを停止します。
費用に関する免責事項
このワークフローの構築に必要な AWS リソースは無料利用枠の対象ではないため、実行中には追加費用が発生します。このワークフローの実行中に使用した AWS サービスの費用は、お客様のご負担となります。リソースの長時間稼働による料金が発生しないように、作業完了後は必ずリソースをクリーンアップしてください。
クリーンアップ
完了後にさらなる料金が発生しないように、AWS Lambda、Amazon SNS、Amazon EventBridge (CloudWatch Events)、MediaLive チャネル、MediaPackage、CloudFront ディストリビューションなど、本ブログ記事に従って作成されたリソースを削除してください。
まとめ
MediaLive チャネルを停止させるワークフローを自動化することで、チャネルを手動で監視する負担が軽減されます。自動化されたワークフローにより、以前よりもはるかに迅速にアラートを特定し、エラーを解決することができます。チャネルの分析と停止にかかる時間を短縮することの利点は、企業が、ストリーミング実行中でないチャネルにかかるコストを節約できることです。
エンジニアリングチームは、チャネルを手動で監視して停止させるという繰り返しの多い作業から解放されます。これは、冗長入力がアタッチされているチャネルや Standard パイプラインチャネル、ファイル入力を持つチャネルの分析へと、さらに拡張できます。
AWS は、メディア関連ワークフローの構築を支援するために設計された多数のサービスを提供しています。動画のストリーミング、処理、配信向けに、さらに他のアプリケーションを検討したい場合は、AWS Media Services をご覧ください。
参考リンク
AWS Media Services
AWS Media & Entertainment Blog (日本語)
AWS Media & Entertainment Blog (英語)
AWS のメディアチームの問い合わせ先: awsmedia@amazon.co.jp
※ 毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。
翻訳は BD 山口、SA 金目が担当しました。原文はこちらをご覧ください。