Amazon IVSがAmazon EventBridgeと連携して送信するイベントでstream_idを確認してみた

AWSのライブストリーミングソリューションAmazon Interactive Video Service(Amazon IVS)でAmazon EventBridge連携時のイベント情報に追加されたstream_idフィールドについて確認してみました。
2020.12.10

はじめに

清水です。re:Invent 2020でのメディア系サービスアップデートの発表にヤキモキしながら、これまでの細かなメディア系アップデートを振り返るシリーズ(?)第2弾!!(第1弾はこちら)本エントリで扱う、発表からちょっと経ってしまったアップデートはこちらです!簡単にセットアップでき、しかも超低遅延な配信ができるAWSのライブストリーミングソリューションAmazon Interactive Video Service (Amazon IVS)でAmazon EventBridgeとの連携の際のEvent Fieldに新たにstream_idという項目が追加されました。

2020/11/12にAWS Developer Forumsにポストされた内容になります。またAmazon Interactive Video ServiceのUser Guide、Amazon IVS Release Notes内にも「New Event Field, stream_id」として記載があります。

本エントリではこのstream_idについて確認してみたのでまとめてみます。

EventBridgeのから送信されたイベントでstream_idの項目を確認してみた

それでは実際にIVSのEvent Fieldに追加されたstream_idの項目について確認してみます。まずはIVSとEventBridgeを連携させ、IVSのストリーミング状態変更のイベントを検知し、Amazon SNSのトピックをEメール受信できるようにしました。こちらの詳細な手順については下記ブログエントリをご参照ください。

実際にIVSでライブストリーミングを開始し、Eメールで受信できるSNS通知を確認してみます。stream_idの項目が追加されていますね!

JSON部分をjqコマンドで整形すると以下となります。

{
  "version": "0",
  "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "detail-type": "IVS Stream State Change",
  "source": "aws.ivs",
  "account": "123456789012",
  "time": "2020-12-09T09:51:52Z",
  "region": "us-west-2",
  "resources": [
    "arn:aws:ivs:us-west-2:123456789012:channel/HogcXXXXXXXX"
  ],
  "detail": {
    "event_name": "Stream Start",
    "channel_name": "my-channel-1",
    "stream_id": "st-1DCFRhGjGnuXXXXXXXXXXXX"
  }
}

なお、先ほど手順の際に示したブログエントリではこのアップデート追加前だったためevent_idの項目はありません。念のためこちらも再掲しておきましょう。

event_id追加前の通知

{
  "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"
  }
}

その後、ライブストリームを停止し、さらにライブストリームを開始/停止したところ、以下のように合計3つのイベントが通知されました。(いずれも受信したメールからJSON部分をjqコマンドで整形しています。)

ライブストリームを停止したイベント

{
  "version": "0",
  "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "detail-type": "IVS Stream State Change",
  "source": "aws.ivs",
  "account": "123456789012",
  "time": "2020-12-09T09:52:30Z",
  "region": "us-west-2",
  "resources": [
    "arn:aws:ivs:us-west-2:123456789012:channel/HogcXXXXXXXX"
  ],
  "detail": {
    "event_name": "Stream End",
    "channel_name": "my-channel-1",
    "stream_id": "st-1DCFRhGjGnuXXXXXXXXXXXX"
  }
}

ライブストリーム停止後に再開(再度開始)したイベント

{
  "version": "0",
  "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "detail-type": "IVS Stream State Change",
  "source": "aws.ivs",
  "account": "123456789012",
  "time": "2020-12-09T13:30:58Z",
  "region": "us-west-2",
  "resources": [
    "arn:aws:ivs:us-west-2:123456789012:channel/HogcXXXXXXXX"
  ],
  "detail": {
    "event_name": "Stream Start",
    "channel_name": "my-channel-1",
    "stream_id": "st-1ELU2fW29rkXXXXXXXXXXXX"
  }
}

再開したライブストリームを停止したイベント

{
  "version": "0",
  "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "detail-type": "IVS Stream State Change",
  "source": "aws.ivs",
  "account": "123456789012",
  "time": "2020-12-09T13:41:43Z",
  "region": "us-west-2",
  "resources": [
    "arn:aws:ivs:us-west-2:123456789012:channel/HogcXXXXXXXX"
  ],
  "detail": {
    "event_name": "Stream End",
    "channel_name": "my-channel-1",
    "stream_id": "st-1ELU2fW29rkXXXXXXXXXXXX"
  }
}

注目点は、2回目のライブストリーミング後のstream_idの値です。1回目と異なる値となっていますね。Amazon Interactive Video Service User Guideの「Using Amazon EventBridge with Amazon Interactive Video Service」には以下のように記載されています。

Note on stream IDs: The stream_id field (in many events) is a unique stream identifier assigned each time a channel goes live. For a given channel, each live stream has a new stream_id. Hence, each channel ARN can have many corresponding stream IDs. Stream IDs allow customers to distinguish different stream sessions on the same channel.

Using Amazon EventBridge with Amazon Interactive Video Service - Amazon Interactive Video Service

IVSのChannelがライブになる毎にユニークなIDが割り当てられます。ChannelのARNは同じでも、stream_idは複数が存在する、ということになりますね。SNSでユーザがライブストリーミングを新規に開始したらフォロワーに通知する、なんて仕組みがこのstream_idを使って実現できるのかな、などと思いました。

まとめ

Amazon Interactive Video Service (Amazon IVS)でAmazon EventBridgeと連携して確認できるストリームのステータス変更イベント、新たに追加されていたstream_idの項目について確認してみました。なお、これまでのIVSとEventBridge連携まわりのアップデートで追加されたフィールドを確認してみると、2020/09/14にchannel_nameが追加されていたようです。(ユーザガイドのRelease Notesより)今後も何かフィールド追加のアップデートがあれば、その使用用途とあわせて確認してみたいと思います。