🎥

Amazon Kinesis Video Streams with WebRTCについてまとめる

2022/12/12に公開

概要

re:Inventにて、Kinesis Video Streams with WebRTCを扱ったワークショップをしたが、
時間の関係上深く理解できてないので再学習としてまとめる

ドキュメンテーション

https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/what-is-kvswebrtc.html

Amazon Kinesis Vide Streams(KVS)について

資料はBlackBeltより拝借
https://d1.awsstatic.com/webinars/jp/pdf/services/20200930_BlackBelt_AmazonKinesisVideoStreams.pdf

超低遅延でのメディアストリーミングと100万台規模のデバイス感での双方向通信をサポート

2種類のストリーミング方法

メディア形式とWebRTCとの使い分け

KVS WebRTCにおける用語

WebRTCの接続フロー

WebRTCとは

リアルタイムコミュニケーションのためのオープンな標準規格
簡易なAPIを経由してブラウザとモバイルアプリケーションとの間でリアルタイム通信(RTC)が可能

メリット

  • パソコン、もしくはスマホがあれば利用
    • 機材を購入しなくてもできる
  • 新しいアプリケーションをインストールする必要がない
    • ブラウザの中で完結できる
  • 通信がとても軽い
    • 「UDPプロトコル」を採用。通信の開始や終了の処理がない分、通信が速くなる。

デメリット

  • セキュリティ面
    • 通信の軽さを実現している反面、UDPプロトコルのセキュリティ面で信頼性が低下
    • セキュアにしたいならSRTプロトコル
  • 接続できる人数に限界がある
    • 視聴者が増えれば増えるほど配信側のデータ送信の負担も増える

KVS WebRTC用語

シグナリング

接続のメタデータの交換

相互通信-Peer-to-peer(P2P)

Peer-to-peer接続の確率

メディア配信

低遅延でのメディアと任意のデータの双方向通信

暗号化

End-to-endでの暗号化

KVSを利用した構成例

BlackBeltより、ドローン・ロボットでの遠隔制御によるWebRTC構成

WebRTC SDK

WebRTCを備えたKinesis Video Streamには、次のSDKが含まれています。

詳細はこちら

https://docs.aws.amazon.com/ja_jp/kinesisvideostreams-webrtc-dg/latest/devguide/webrtc-sdks.html

WebRTCでのセキュリティ

WebRTCリソースを使用してKinesisビデオストリームを監視および保護について

  • WebRTCによるKVSへのアクセスの制御 IAMを使用するリソース
  • KVSのコンプライアンス検証 WebRTC
  • KVSの回復力 WebRTC
  • KVSのインフラストラクチャセキュリティ WebRTC
  • KVSのセキュリティベストプラクティス WebRTC

https://docs.aws.amazon.com/ja_jp/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-security.html

メディアの保存 - データの暗号化と保存期間

これはKVSのメディア形式での場合

  • データの暗号化
    • 常にサーバーサイドの暗号化が有効になっている
    • データはストレージレイヤーに書き込まれる前に暗号化され、ストレージから取得された後に復号される
    • ストリームの作成時に、暗号化に使⽤する AWS KMS カスタマーマスターキー
      (CMK) を指定できる(あとから変更はできない)
    • ストリームの作成時にユーザー指定のキーが指定されていない場合は、既定のキー (Kinesis Video Streams が提供) が使⽤される
  • データの保存期間
    • ストリーム作成時にデータの保存期間を指定できる(あとから変更もできる)
    • 設定可能な範囲は、最短は0(保存しない)で最⻑は10年(87600時間)
    • データの保存量に応じてサービス利⽤料⾦が発⽣する

録画について

Kinesis Video Streamsで録画する場合、WebRTCはサポートされてないためメディア形式で対応可能

AWS IoT for Developers Amazon Kinesis Video Streams with WebRTC Meetup

https://youtu.be/9YI4POQVUl8

モニタリング

Kinesis Video Stream WebRTCの監視手法について

  • WebRTCメトリックを使用したKVSの監視 CloudWatch
  • AWSを使用したWebRTC API CallによるKVSのログ CloudTrail

https://docs.aws.amazon.com/ja_jp/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-monitoring.html

KVS with WebRTCの制限

https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-limits.html

  • ConnectAsMaster
    • シグナリングチャネルごとのマスター接続の最大数1
  • ConnectAsViewer
    • チャネルごとのビューア接続の最大数10

カメラとなるマスターの接続は1対1となり、1カメラ映像へのビューワー接続が最大10までは可能。
ただし、ビューワー側の接続数をこれ以上増やしたい場合はメディアサービスとなるMediaConnectなどを利用する。

KVS WebRTCの料金について

https://aws.amazon.com/jp/kinesis/video-streams/pricing/

  • アクティブなシグナリングチャネル(チャネルあたりの月額) 0.04500USD
  • シグナリングメッセージ(100万あたり) 3.37500USD
  • TURN Streaming の時間 (分) (1000 あたり) 0.18000USD

サンプルアプリ

KVS WebRTCを利用したWeb用テストページが公開されている

https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html

Discussion