Amazon IVSとAmazon EventBridgeを連携させてストリーミングの状態をAmazon SNSで通知してみた

Amazon IVSではAmazon EventBridgeと連携させ、ストリーミングの状態などをモニタリングすることが可能です。今回はストリーミングの開始・終了をEventBridgeからAmazon SNSで通知してみました。
2020.10.31

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

はじめに

清水です。素早く簡単にセットアップでき超低遅延なライブ配信ができるAmazon Interactive Video Service(Amazon IVS)ではAmazon EventBridgeと連携したストリーミング状態などのモニタリング機能が提供されています。 *1本エントリではAmazon IVSとAmazon EventBridgeを連携させ、Amazon IVSのストリーミングの状態変更のイベントを検知、これをAmazon SNSのトピックを使ってEメール受信する、ということをやってみます。

Amazon IVSリソースの作成

まずはAmazon IVSのChannelリソースを作成します。リージョンはus-west-2/Oregonを使用しました。Channel nameのみ指定して作成します。

Amazon SNSリソースの作成

続いて通知用のAmazon SNSリソースとして、トピックとサブスクリプションを作成します。こちらもus-west-2/Oregonリージョンを使用します。タイプはFIFOではなくスタンダードを選択、トピック名称と表示名を入力し、その他オプションの項目についてはデフォルトのまま作成しました。

続いて作成したトピックからサプスクリプションを作成、プロトコルとしてEメールを指定します。

サブスクリプション作成後、指定したEメールを確認してサブスクリプションを有効にしておきます。

Amazon EventBridgeリソースの作成

IVSならびにSNSの準備ができたら、続いてEventBridgeのルールを作成します。EventBridgeもus-west-2/Oregonリージョンでリソースを準備しました。ルールの作成画面で名前と説明を入力します。

パターンを定義では「イベントパターン」を選択します。さらにイベント一致パターンでは「サービスごとの事前定義パターン」を選択、サービスプロバイダーは「AWS」、サービス名で「Interactive Video Service (IVS)」を選択します。イベントのタイプで「IVS Stream State Change」を選択し、ストリーミングの状態が変わった場合に検知できるようにします。

イベントパスについてはデフォルトのまま進めます。ターゲットを選択の箇所では、ターゲットとして「SNSトピック」を選択、トピックは先ほど作成したものを指定します。入力の設定、再試行ポリシーとデットレターキュー設定はデフォルトのまま進めました。

IVSでストリーミングを行ってSNS通知を確認

IVS、SNS、そしてEventBridgeのリソースの準備ができたら、実際にIVSでライブストリーミングを行い、ストリーミング状態変更の通知を確認してみます。

ストリーミング開始後、すぐに以下のSNSメッセージがEメールにて受信できました。

JSON部分をjqコマンドで整形すると以下のようになります。"event_name": "Stream Start"となっていることが確認できますね。

{
  "version": "0",
  "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "detail-type": "IVS Stream State Change",
  "source": "aws.ivs",
  "account": "123456789012",
  "time": "2020-10-31T12:17:01Z",
  "region": "us-west-2",
  "resources": [
    "arn:aws:ivs:us-west-2:123456789012:channel/5FFkXXXXXXXX"
  ],
  "detail": {
    "event_name": "Stream Start",
    "channel_name": "ivs-channel"
  }
}

続いて、少し時間をおいたのち、ストリーミングを停止してみます。以下のSNSメッセージが受信できました。

こちらもJSON部分をjqコマンドで整形してみます。"event_name": "Stream End"が確認できます。

{
  "version": "0",
  "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "detail-type": "IVS Stream State Change",
  "source": "aws.ivs",
  "account": "123456789012",
  "time": "2020-10-31T12:21:58Z",
  "region": "us-west-2",
  "resources": [
    "arn:aws:ivs:us-west-2:123456789012:channel/5FFkXXXXXXXX"
  ],
  "detail": {
    "event_name": "Stream End",
    "channel_name": "ivs-channel"
  }
}

まとめ

Amazon IVSとAmazon EventBridgeを連携させ、ストリーミングの状態の変化をAmazon SNSで通知させてみました。今回はAmazon SNSを使ったEメールでの通知だけでしたが、EventBridgeからAWS Lambdaなどに連携させ、ストリーミングの開始/終了をトリガにアクションを起こす、なんてこともできそうですね。また今回はストリーミングの開始・終了のみを扱いましたが、そのほかにもストリーミングの正常性の監視やIVSのQuotas監視などもできるようです。こちらも引き続き確認してきたいと思います。

脚注

  1. リリース当時からあったかな?と思ったのですが、Document HistoryRelease Notesを確認すると、どうやら2020/07末〜2020/08頭ぐらいに機能追加されていたようです。