Kinesis Video StreamsのWebRTCでブラウザ間ビデオ通話を試す

Kinesis Video Streamsを使うとWebRTCのシグナリングチャネルを簡単に作ることができます。



WebRTCはシグナリングサーバー建てたりの環境構築と理解のハードルがきついのが個人的にネックだったので、そこをマネージドサービスでクライアントだけを考えればいいのは助かります。

クライアント用のライブラリも公式で用意されています。

シグナリングチャネルの作成

マネコンから作るだけです。

クライアントから接続してみる

JavaScriptのSDKをローカルにcloneします。
/examples/index.htmlの188行目を変更します。
<!-- <script src="../kvs-webrtc.js"></script> -->
<script src="https://unpkg.com/amazon-kinesis-video-streams-webrtc/dist/kvs-webrtc.min.js"></script>
/examples/index.htmlをブラウザで2つ開きます。

リージョン、Kinesis Video Streamsの権限を与えたIAMのクレデンシャル、シグナリングチャネル名を入力し、マスターとビューアーそれぞれを開始すれば通信ができます。

Webサイトにホストしてスマホなどでアクセスしてもビデオ、音声通信が試せます。

このページはGithub Pagesにもホストされてるので取り急ぎローカルに落とさなくても試すことができます。
https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html

実際にサービスに組み込もうと思った時の認証情報の扱いですが、最低限のインラインポリシーを与えたIAMユーザーの一時クレデンシャルをSTSを使って発行するようなやり方にすれば、比較的安全なのかなと思いました。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "kvsViewerPolicy",
      "Action": [
        "kinesisvideo:ConnectAsViewer",
        "kinesisvideo:ConnectAsMaster",
        "kinesisvideo:DescribeSignalingChannel",
        "kinesisvideo:GetIceServerConfig",
        "kinesisvideo:GetSignalingChannelEndpoint"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}