こんにちは!
今回は Kinesis Video Streams with WebRTC (以下、WebRTC)の解説と実際にやってみた系の記事となります。ぜひ参考にしてください。
Kinesis Video Streams には動画を収集し分析する機能と、WebRTC の機能、合わせて2つの用途があります。今回は、リアルタイム通信で Zoom のような Web 会議を行いたい場合に利用する WebRTC について解説していきます。
AWS の公式には WebRTC の動作を確認できるサンプルページがあります。まずどんな風に動くのか気になる方は、こちらから動作を確認してみてください。
https://awslabs.github.io/amazon-kinesis-video-streams-webrtc-sdk-js/examples/index.html
リージョン、認証情報、チャンネル名(適当でOK)を入力したら、ページの最下部あたりにある「Create Channel」をクリックしたあとに「Start Master」をクリックして確認してみましょう。
Master が入室したら、次は同じアカウントの別の IAM ユーザーで、同じリージョン、チャンネル名を設定し、別の IAM ユーザーの認証情報と上記画像にあるようなチャンネル ID を設定してから、「Start Viewer」を選択して入室します。
これにより WebRTC の使用感がわかります。作成したチャンネルはご自身の AWS アカウントに作成されています。Kinesis Video Streams のコンソール画面を確認してください。
WebRTC は、簡易な API を経由してブラウザとモバイルアプリケーションとの間でリアルタイム通信 (RTC) ができるようにするためのオープンテクノロジー仕様です。接続されたピア同士でデータ交換をリアルタイムで行うためにピアリング技術を活用し、人間同士の通信に要するメディアストリーミングのレイテンシーを低くします。
https://aws.amazon.com/jp/kinesis/video-streams/faqs/?nc=sn&loc=5
つまり、ウェブブラウザ間で Zoom のような Web 会議ができるようになります。Kinesis Video Streams においては、WebRTC のシグナリングのためのマネージド型エンドポイントを提供しています。
WebRTC には様々な用語が登場します。そのためそれぞれの言葉の定義を事前に理解した上で、ドキュメントを読むことがいち早くキャッチアップすることに繋がります。ここでは登場する各用語を解説していきます。
アプリケーションが P2P 接続をセットアップおよび制御ができるリソースを指します。
接続の開始者を指します。
Master が開始した接続への参加者を指します。
パブリックアドレスを検出し、ピアとの直接接続を妨げるルーターの制限を判別するために使用されるプロトコルです。
TURN サーバーとの接続を開き、そのサーバーを介してすべての情報を中継することにより、対称 NAT 制限をバイパスするために使用されるサーバーを指します。
データが転送された後に双方のピアが相互に理解できるようにするためのものです。
セッションを作成または変更するために、セッション記述を生成するエージェントが送信する SDP メッセージです。
オファー側から受け取ったオファーに応答して、アンサー側が送信する SDP メッセージです。
Web ブラウザがピアと接続するためのフレームワークです。
ローカルコンピューターとリモートピア間の WebRTC コネクションです。
実装には提供されている SDK を用いて行います。下記のページをご覧ください。
WebRTC SDK in JavaScript for Web Applications
紹介したドキュメントの最後に先ほど紹介したサンプルアプリのソースコードがあります。今回はすべてを説明するとかなり長文になってしますので、全体の流れを簡単に紹介します。
これらをそれぞれ実装していくことで、WebRTC が利用できます。IAM の認証情報は、KVS クライアントを作成する際に設定します。
それぞれの実装方法はサンプルアプリを参考にすれば基礎的な面を習得できるかと思いますので、ぜひソースコードをご覧になってみてください。
最後に Kinesis Video Streams のユーザー管理についてです。
ユーザーのアクセスは、Cognito ユーザーか IAM ユーザーのどちらかを選択できますが、選択するならば Cognito ユーザーでしょう。やはり一時的な IAM ロールの付与のほうが IAM ユーザーの永続的な権限より、セキュリティ上好ましい対策となるからです。この点を意識して設計してみてください。
なお Cognito を利用した実装については、こちらを参考にしてください。
Kinesis Video Streams with WebRTC を利用する前に、WebRTC 自体を学ぶことによってさらに理解が深まるかと思われます。ぜひサンプルを参考に WebRTC を始めてみましょう!
このブログでは、AWS の記事をどんどん公開しておりますので、ご興味のある方は他の記事もご覧いただければと思います。
AWS に関する開発は、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎