Amazon CloudWatch Events で取得できる AWS Elemental MediaLive の Channel ステータス情報をまとめてみた

2020.06.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、大前です。

 

Amazon CloudWatch Events(以下 CloudWatch Events) を使うと AWS Elemental MediaLive(以下 MediaLive) のイベントを取得出来る事はご存知でしょうか?

下記ページだと MediaLive 上のアラート情報を検知する方法として紹介されていますが、MediaLive の Channel のステータスも取れたりします。

Amazon CloudWatch Events によるチャネルまたはマルチプレックスのモニタリング

 

Channel ステータスが変化する度にイベントを検知出来るので、上手く使えば何かと便利そうだと思い一度どんなステータス遷移になっているのか調べてみました。

(ザッと調べた限り CloudWatch Events で取得できるステータスに関するドキュメントが見つからなかったのでブログを書いていますが、もしあったら教えてください。。)

 

準備

構成

MediaLive のステータス遷移情報の調査について、以下の構成で実施しました。

Lambda の出力は CloudWatch Logs に吐かれるので、そこで確認していきます。

 

Lambda 関数の作成

検知したイベントを確認する為に、今回は Lambda を使用します。

Lambda コンソールより、「関数の作成」をクリックして新規関数を作成します。

ランタイムは Python3.8 にしました。ロールはデフォルトで問題ありません。

 

デフォルトで作成されている lambda_function.py のコードを、以下に書き換えて保存します。

取得されるイベントの中身が見れれば良いので、雑です。

import json

def lambda_handler(event, context):
    print(event)
    return

 

CloudWatch Events Rule の設定

続いて、MediaLive のイベントを検知する為に CloudWatch Events Rule の設定を行います。

CloudWatch コンソール > イベント > ルール より、「ルールの作成」をクリックします。

以下の設定を行います

  • イベントソース
    • サービス名 ... MediaLive
    • イベントタイプ ... MediaLive Channel State Change
  • ターゲット
    • 先ほど作成した Lambda 関数(MediaLive-EventCatch)

 

ルール名をよしなに入力し、作成を完了させます。

やってみた

では、MediaLive の Channel を作成したりしていきたいと思います。

ちなみに、MediaLive のコンソール画面から確認できる状態一覧は以下です。

  • 作成
  • 削除
  • アイドル状態
  • 復旧
  • 実行中
  • 開始中
  • 停止中
  • 更新中

AWS Elemental MediaLive コンソールによるチャネルのモニタリング

 

Channel 作成

まず最初に、MediaLive の Channel を作成しました。中身は適当です。  

 

CloudWatch Logs から Lambda の出力を確認すると、'state' : 'CREATED' が確認できました。

 

作成開始時にはイベントは取得されず、作成完了時CREATED が取得される様です。

 

Channel 設定変更

Channel の設定変更については色々試したのですが、確認した限りイベントが取得されませんでした。

もしかしたらイベントが発火するケースもあるかもしれませんが、基本的には Channel の設定変更ではイベントは取得されない認識で良さそうです。

 

Channel 開始

Channel を開始させてみます。

 

開始中・・・

 

開始完了!

 

ログを確認すると、'state' : 'RUNNING' が確認できました。

 

STARTING 的なステータスも出力されるのかと予想していましたが、されませんでした。

開始が完了した時のみイベントが取得される様です。

 

Channel 停止

では、逆に Channel を停止させてみます。

 

停止中・・・

 

停止完了!

 

ログを確認すると、'state' : 'STOPPING''state' : 'STOPPED' が確認できました。

STARTING はない一方で、STOPPING が取得されるのは少し面白い発見です。

 

Channel 削除

では、最後に Channel を削除します。

 

削除完了!

 

ログを確認すると、'state' : 'DELETED' が確認できました。

 

ステータスまとめ

まとめると、以下になりました。

コンソール上のステータスと CloudWatch Events で取得されるイベントでは取得されるタイミングや内容が微妙に異なっている事がわかりました。

操作 コンソール上ステータス(チャネルの状態) CloudWatch Events ステータス
作成開始 Creating (無し)
作成完了 Idle CREATED
更新 Updating (無し)
開始 Starting (無し)
開始完了 Running RUNNING
停止 Stopping STOPPING
停止完了 Idle STOPPED
削除 - DELETED

今回は確認できませんが、公式ドキュメントではコンソール上のステータスとして Recovering(MediaLive の再起動中) があるので、こちらが CloudWatch Events で取得されるかどうかは気になる所ではあります。

おわりに

CloudWatch Events で取得できる MediaLive の Channel ステータスをまとめてみました。

CloudWatch Events で取得できるタイミング=Lambda 等を発火できるという事にもなる為、上手く使えば面白そうな事が出来そうです。

 

以上、AWS 事業本部の大前でした。

参考