ステップ1:Amazon IVSによるライブ配信基盤の構築
今回のステップの概要とライブ配信アプリとの関連について
このステップでは、ライブ配信アプリケーションの基盤となる**Amazon IVS(Interactive Video Service)**を使用して、基本的な配信・視聴機能を構築します。具体的には、IVSチャンネルの作成、S3バケットの準備、基本的な視聴画面の実装を行います。
ライブ配信アプリケーションにとって、Amazon IVSは「テレビ局の放送設備」のような役割を果たします。テレビ局が番組を全国に放送するために放送設備が必要なように、ライブ配信アプリも視聴者に映像を届けるための配信インフラが必要です。Amazon IVSは、この配信インフラを簡単に構築できるAWSのマネージドサービスです。
このステップで学ぶこと
- Amazon IVSの基本設定とチャンネル作成
- Amazon S3を使用したメタデータ保存領域の準備
- ライブ配信の基本概念と低遅延配信の実現
- グローバル配信インフラを活用した世界規模での配信
リソースの関わりと構成説明
ステップ1で作成するリソースは、ライブ配信アプリケーションの基盤機能を構築するものです。それぞれのリソースがライブ配信アプリケーションにどのように関わるのかを説明します。
Amazon IVSとライブ配信アプリの関わり
Amazon IVS「ライブ配信チャンネル」は、ライブ配信アプリケーションの「放送局」のような役割を果たします。配信者が映像・音声を送信すると、IVSがそれを世界中の視聴者に低遅延(5秒以下)で配信します。これにより、リアルタイムでの双方向コミュニケーションが可能になります。
Amazon S3とライブ配信アプリの関わり
Amazon S3「メタデータ保存バケット」は、ライブ配信アプリケーションの「資料保管庫」のような役割を果たします。配信に関連するサムネイル画像、配信情報、録画データなどを安全に保存します。これにより、配信履歴の管理や配信品質の向上が実現できます。
IVS Player SDKとライブ配信アプリの関わり
IVS Player SDK「視聴画面」は、ライブ配信アプリケーションの「テレビ受信機」のような役割を果たします。視聴者のデバイス(PC、スマートフォン、タブレット)で配信を再生し、高品質な視聴体験を提供します。これにより、視聴者は快適にライブ配信を楽しむことができます。
実際の手順
実際の手順では、たくさんの設定値を入力することになります。 本文中に設定値が指定されていない場合は、デフォルト値のまま作業を進めてください。
1. Amazon IVSチャンネルの作成
ライブ配信の基盤となるIVSチャンネルを作成します。
1-1. IVSチャンネルの基本設定
- AWSマネジメントコンソールで「Amazon IVS」サービスにアクセスします
- 「チャンネルを作成」ボタンをクリックします
- 以下の設定を行います:
- チャンネル名:
live-streaming-channel - 遅延モード:
低遅延 - チャンネルタイプ:
STANDARD - 録画設定:
無効(今回は無効にします)
- チャンネル名:

【解説】遅延モードの選択について
IVSでは「低遅延」と「標準」の2つの遅延モードを選択できます。低遅延モードでは3-5秒の遅延で配信でき、視聴者とのリアルタイム交流が可能になります。
標準モードは10-30秒の遅延がありますが、より安定した配信が可能です。ライブコマースやゲーム実況など、視聴者との即座な反応が重要な場合は低遅延モードを選択しましょう。
今回は視聴者とのリアルタイム交流を重視するため、低遅延モードを選択します。
1-2. 配信キーの取得と設定
- 作成したチャンネルの詳細画面で「ストリームキー」をコピーして保存します
- 「取り込みサーバー」のURLをコピーして保存します
- 「再生URL」をコピーして保存します(視聴画面で使用)
# 取得する情報の例
取り込みサーバー: rtmps://a1b2c3d4e5f6.global-contribute.live-video.net/live/
ストリームキー: sk_us-west-2_XXXXXXXXXX_YYYYYYYYYYY
再生URL: https://a1b2c3d4e5f6.us-west-2.playback.live-video.net/api/video/v1/us-west-2.123456789012.channel.XXXXXXXXXX.m3u82. Amazon S3バケットの作成
配信関連データを保存するS3バケットを作成します。
2-1. S3バケットの基本設定
- AWSマネジメントコンソールで「Amazon S3」サービスにアクセスします
- 「バケットを作成」ボタンをクリックします
- 以下の設定を行います:
- バケット名:
live-streaming-metadata-[ランダム文字列] - リージョン: IVSチャンネルと同じリージョンを選択
- パブリックアクセスをブロック: 有効のまま(セキュリティのため)
- バケット名:
2-2. バケットポリシーの設定
- 作成したバケットの「アクセス許可」タブを開きます
- 「バケットポリシー」で以下のポリシーを設定します:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowIVSAccess",
"Effect": "Allow",
"Principal": {
"Service": "ivs.amazonaws.com"
},
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::live-streaming-metadata-[ランダム文字列]/*"
}
]
}3. 基本的な視聴画面の実装
IVS Player SDKを使用して、配信を視聴できる基本的なWebページを作成します。
3-1. HTML構造の作成
- ローカル環境で新しいHTMLファイル
viewer.htmlを作成します - 以下のコードを記述します:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ライブ配信視聴画面</title>
<script src="https://player.live-video.net/1.6.0/amazon-ivs-player.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 20px;
background-color: #f0f0f0;
}
.container {
max-width: 800px;
margin: 0 auto;
background-color: white;
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
#video-player {
width: 100%;
height: 450px;
background-color: #000;
border-radius: 8px;
}
.status {
margin-top: 20px;
padding: 10px;
border-radius: 4px;
font-weight: bold;
}
.live { background-color: #d4edda; color: #155724; }
.offline { background-color: #f8d7da; color: #721c24; }
</style>
</head>
<body>
<div class="container">
<h1>ライブ配信視聴画面</h1>
<div id="video-player"></div>
<div id="status" class="status offline">配信は開始されていません</div>
</div>
<script>
// IVSプレイヤーの初期化
const player = IVSPlayer.create();
player.attachHTMLVideoElement(document.getElementById('video-player'));
// 再生URL(先ほど取得したものに置き換えてください)
const playbackUrl = 'https://a1b2c3d4e5f6.us-west-2.playback.live-video.net/api/video/v1/us-west-2.123456789012.channel.XXXXXXXXXX.m3u8';
// 配信状態の監視
player.addEventListener(IVSPlayer.PlayerEventType.STATE_CHANGED, function(event) {
const statusElement = document.getElementById('status');
if (event.state === IVSPlayer.PlayerState.PLAYING) {
statusElement.textContent = '🔴 ライブ配信中';
statusElement.className = 'status live';
} else if (event.state === IVSPlayer.PlayerState.IDLE) {
statusElement.textContent = '配信は開始されていません';
statusElement.className = 'status offline';
}
});
// 配信の読み込み
player.load(playbackUrl);
</script>
</body>
</html>3-2. 配信テストの実行
- OBS Studio等の配信ソフトウェアを使用して、作成したIVSチャンネルに配信を開始します
- 配信設定:
- サーバー: 先ほど取得した取り込みサーバーURL
- ストリームキー: 先ほど取得したストリームキー
- 作成したviewer.htmlをブラウザで開き、配信が正常に表示されることを確認します
【解説】配信ソフトウェアの設定について
OBS Studioは無料で使用できる配信ソフトウェアです。IVSとの連携では、「設定」→「配信」で「カスタム」を選択し、サーバーとストリームキーを入力します。
配信品質は「出力」設定で調整できます。初回テストでは720p、30fps、2500kbps程度の設定から始めることをおすすめします。
配信が開始されると、視聴画面で3-5秒の遅延で映像が表示されます。
このステップで何をしたのか
このステップでは、Amazon IVSを使用してライブ配信の基盤システムを構築しました。具体的には、低遅延配信が可能なIVSチャンネルの作成、配信データ保存用のS3バケットの準備、IVS Player SDKを使用した基本的な視聴画面の実装を行いました。また、実際の配信テストを通じて、配信から視聴までの一連の流れを確認しました。
ライブ配信アプリでどのような影響があるのか
この構成により、ライブ配信アプリケーションは全世界の視聴者に対して低遅延(3-5秒)でのライブ配信が可能になりました。Amazon IVSの自動スケーリング機能により、視聴者数が急増しても安定した配信を維持できます。また、グローバル配信インフラを活用することで、世界中の視聴者に高品質な配信を提供できます。これは、テレビ局が全国ネットワークを通じて番組を放送するのと同様の効果を、個人や小規模な組織でも実現できることを意味します。
技術比較まとめ表
| 技術領域 | AWS | オンプレミス |
|---|---|---|
| 配信インフラ | Amazon IVS マネージドサービスで自動運用 | RTMP配信サーバー 手動構築・運用が必要 |
| グローバル配信 | IVSの内蔵エッジネットワーク 世界規模で自動最適化 | 複数CDNプロバイダー 契約・設定・管理が複雑 |
| スケーリング | 自動スケーリング 視聴者数に応じて自動調整 | 手動スケーリング 事前の容量計画が必要 |
学習において重要な技術的違い
1. 配信遅延の管理
- AWS:IVSの低遅延モードで3-5秒の遅延を自動実現
- オンプレミス:RTMPサーバーの設定とCDNの最適化で10-30秒の遅延
2. インフラの運用負荷
- AWS:マネージドサービスで運用作業が最小限
- オンプレミス:サーバー管理、ネットワーク設定、障害対応が必要
3. 配信品質の保証
- AWS:IVSが自動的に配信品質を最適化
- オンプレミス:エンコーダー設定とネットワーク帯域の手動調整
4. コスト構造
- AWS:使用した分だけの従量課金(配信時間・視聴時間ベース)
- オンプレミス:初期投資が大きく、利用量に関わらず固定費が発生
実践チェック:画面キャプチャで証明しよう
下記のチェック項目について、実際にAWSマネジメントコンソールで設定ができていることを確認し、各項目ごとに該当画面のスクリーンショットを撮影して提出してください。
-
Amazon IVSチャンネルが正常に作成され、「アクティブ」状態になっている
-
IVSチャンネルの詳細画面で、取り込みサーバーURL、ストリームキー、再生URLが表示されている
-
S3バケットが作成され、適切な命名規則(live-streaming-metadata-[ランダム文字列])で設定されている
-
S3バケットのバケットポリシーが正しく設定され、IVSサービスからのアクセスが許可されている
-
配信ソフトウェア(OBS Studio等)でIVSチャンネルに接続し、配信が開始できている
-
作成した視聴画面(viewer.html)でライブ配信が正常に再生されている
提出方法: 各項目ごとにスクリーンショットを撮影し、まとめて提出してください。 ファイル名やコメントで「どの項目か」が分かるようにしてください。
構成図による理解度チェック
このステップで作成したリソースの構成図を作成し、ライブ配信の流れを理解しましょう。
なぜ構成図を作成するのか?
ライブ配信システムでは、配信者から視聴者まで複数のコンポーネントが連携して動作します。構成図を作成することで、データの流れや各コンポーネントの役割を視覚的に理解できます。また、トラブルが発生した際に、どの部分で問題が起きているかを特定しやすくなります。
- 配信の流れの理解: 配信者のデバイスから視聴者のデバイスまでのデータの流れ
- コンポーネント間の関係: IVS、S3、Player SDKの相互関係
- トラブルシューティング: 問題発生時の原因特定ポイント
構成図の書き方
以下のコンポーネントとその関係を図示してみましょう。
- 配信者(OBS Studio): 映像・音声データの送信元
- Amazon IVS: 配信データの受信・処理・配信
- Amazon S3: メタデータ・サムネイルの保存
- 視聴者(Webブラウザ): IVS Player SDKによる配信再生
- データフロー: RTMPによる取り込み、HLSによる配信
💡 ヒント: 配信者から視聴者への一方向の流れと、各AWSサービスがどの段階で関与するかを明確に表現しましょう。
理解度チェック:なぜ?を考えてみよう
AWSの各リソースや設計には、必ず”理由”や”目的”があります。 下記の「なぜ?」という問いに自分なりの言葉で答えてみてみましょう。 仕組みや設計意図を自分で説明できることが、真の理解につながります。 ぜひ、単なる暗記ではなく「なぜそうなっているのか?」を意識して考えてみてください。
Q. なぜAmazon IVSでは「低遅延モード」と「標準モード」の2つの遅延設定が用意されているのでしょうか?それぞれどのような用途に適しているか説明してください。
Q. なぜライブ配信にはRTMP(取り込み)とHLS(配信)という異なるプロトコルを使用するのでしょうか?それぞれのプロトコルの特徴と役割を説明してください。
Q. なぜS3バケットにバケットポリシーを設定してIVSサービスからのアクセスを許可する必要があるのでしょうか?セキュリティの観点から説明してください。
今回のステップで利用したAWSサービス名一覧
- Amazon IVS:ライブ配信に特化したマネージドサービス、低遅延配信とグローバル配信インフラを提供
- Amazon S3:配信関連データの保存、メタデータとサムネイル画像の管理
- IVS Player SDK:Webブラウザでの配信再生、視聴者向けの配信プレイヤー機能