
AWSアカウントなしでGameLift Streamsを使う方法:ローカルサーバー構築ガイド
こんにちは。ゲームソリューション部の出村です。
Amazon GameLift Streams(以降、GameLift Stremasと表記)は、ゲームやアプリケーションをクラウド上で実行し、その映像・音声をブラウザを経由して多数のユーザーに配信するためのサービスです。AWSからは利用方法や実装手法についても詳細なドキュメントが提供されています。
今回は、AWSコンソール(AWSの管理画面)にアクセスできないユーザーでも、GameLift Streamsで動作しているアプリケーションにアクセスできるようにする方法を紹介します。開発者だけでなく、テスターや一般ユーザーにもGameLift Streamsのコンテンツを共有したい場合に役立ちます。
GameLift Streamsのアクセス環境
AWSマネージドコンソール(AWS管理画面)にログインしてテストストリームを使うことでアプリケーションにアクセスできます。しかし、マネージドコンソールにログインせずともGameLift Streamsにアクセスする環境は構築できます。方法は2種類あります:
- ローカルPCにサーバーを立てて実行する方法
- CDK(AWS Cloud Development Kit)を利用して共有URLを発行する方法
本記事では「1. ローカルPCにサーバーを立てて実行する方法」を詳しく解説します。手元のPCにWebサーバーを構築し、そのサーバーに対してブラウザからアクセスすることで、GameLift Streamsで動作しているアプリケーションを利用できる環境を作ります。これにより、AWSアカウントを持たないユーザーでもGameLift Streamsのコンテンツにアクセスできるようになります。
実行環境
今回は以下の環境で構築しています:
- WSL2(Windows上で動作するLinux環境)
- Ubuntu 24.04
- node.js v23
- GameLift Streams SDK ver 1.0.0
- 東京リージョン(ap-northeast-1)
※本記事では、事前にGameLift Streamsでテストストリームが実行できる状態になっていることを前提としています。つまり、GameLift Streamsのストリームグループとアプリケーションが既に作成されていることが必要です。まだ準備ができていない場合は、こちらのエントリーを参考に構築してください。
構築手順
全体の流れは以下の通りです:
- 事前準備
- ローカルサーバー環境の構築
- ローカルサーバーの設定変更
- ローカルサーバーの起動
- ブラウザからのアクセス
1. 事前準備
AWS CLIの設定
AWS CLI(Command Line Interface)を利用してGameLift Streamsにアクセスできるように設定します。使用するIAMユーザー(AWSのアクセス権限を持つユーザー)には、GameLift Streamsのストリームセッションに対して取得と実行の権限を付与する必要があります。
必要なポリシー設定は以下の通りです:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"gameliftstreams:StartStreamSession",
"gameliftstreams:GetStreamSession"
],
"Resource": "*"
}
]
}
このポリシーをIAMユーザーにアタッチし、そのユーザーの認証情報をAWS CLIの設定に追加してください。
node.jsのインストール
ローカルサーバーを実行するためにnode.js環境が必要です。バージョンはv16以上が必須となりますので、あらかじめインストールしておきましょう。インストール方法はお使いのOSによって異なりますので、公式サイトの手順に従ってください。
2. ローカルサーバー環境の構築
ローカルサーバーを構築するには、AWSが提供しているGitHubで公開されているサンプルコードを利用します。
まず、サンプルコードをダウンロードします:
git clone https://github.com/aws-samples/sample-gameliftstreams-web-application.git
これにより、sample-gameliftstreams-web-application
フォルダが作成されます(今回はホームディレクトリ直下にダウンロードした前提で進めます)。
注意: このサンプルコードはデモンストレーション用であり、そのまま本番環境に利用しないでください。セキュリティやパフォーマンスの観点から、本番環境では適切な調整が必要です。
次にGameLift Streams SDKをダウンロードします。このSDKは、GameLift Streamsとブラウザ間の通信を管理するためのJavaScriptライブラリです。ダウンロードしたzipファイルを展開し、必要なファイルをサンプルアプリケーションのフォルダにコピーします:
unzip AmazonGameLiftStreamsWebSDK-v1.0.0.zip
cp gameliftstreams-1.0.0.mjs gameliftstreams-1.0.0.js ~/sample-gameliftstreams-web-application/server/public
※バージョンは適宜読み替えてください。SDKのバージョンが異なる場合は、ファイル名も適切に変更してください。
3. ローカルサーバーの設定変更
次に設定ファイルを変更します。サンプルコードのデフォルト設定では、実行リージョンがus-west-2
(オレゴン)となっているため、これをap-northeast-1
(東京)に変更します。
GameLift Streamsの起動画面でリージョンを指定できるUIがありますが、実行時に正しく反映されない場合があるため、この設定ファイルでの変更を行います。
sample-gameliftstreams-web-applicationフォルダにあるserver/config.js
ファイルのGAMELIFT_STREAMS_REGION
の値を変更します:
- GAMELIFT_STREAMS_REGION: 'us-west-2',
+ GAMELIFT_STREAMS_REGION: 'ap-northeast-1',
この変更により、ローカルサーバーが東京リージョンのGameLift Streamsサービスと通信するようになります。
4. ローカルサーバーの起動
ローカルサーバーを起動するには、サンプルコードに含まれているinstall_server.sh
スクリプトを実行します。このシェルスクリプトは、必要なnode.jsモジュールをインストールした後、ローカルWebサーバーを起動します:
cd ~/sample-gameliftstreams-web-application
chmod +x install_server.sh # スクリプトに実行権限を付与
./install_server.sh
スクリプトが正常に実行されると、ローカルサーバーが起動し、ポート5000でリクエストを待ち受けるようになります。コンソールに「Listening on HTTP port 5000」のメッセージが表示されれば成功です。
5. ブラウザからアクセス
ローカルサーバー起動後、Webブラウザからhttp://localhost:5000/にアクセスします。これにより、GameLift Streamsクライアントの初期画面が表示されます。
ローカルサーバーにアクセスすると、以下のような入力画面が表示されます:
ここで以下の情報を入力します:
- Stream Group ID(ストリームグループID):GameLift Streamsで作成したストリームグループの識別子
- Application ID(アプリケーションID):GameLift Streamsで設定したアプリケーションの識別子
- Locations(ロケーション):ap-northeast-1(東京リージョン)を指定
※User ID(ユーザーID)はデフォルトのままで構いません。
※Stream Group IDとApplication IDは、AWSのマネージドコンソールのGameLift Streams画面に表示されている文字列を指定してください。
入力後、「Click to Start」ボタンをクリックしてストリームセッションを開始します。
接続が開始されると「Connecting」と表示されますので、「Tap Here」と表示されますが、Connecting中にタップ(クリック)してください。サーバー接続が完了すると、「Connecting」の表示が消えます。
接続が完了すると、GameLift Streamsで動作しているアプリケーションの画面が表示されます:
これで、ブラウザを通してGameLift Streamsのアプリケーションを操作できるようになりました。キーボードやマウスの入力は、ストリーム経由でクラウド上で実行されているアプリケーションに送信され、その結果が映像として返されます。
まとめ
今回は、ローカルサーバーを構築してGameLift Streamsを表示する方法を紹介しました。この方法を使えば、AWSコンソールにアクセスできないユーザーでもGameLift Streamsで動作しているアプリケーションにアクセスできるようになります。
この方法の利点は、以下の通りです:
- AWSアカウントを持たないユーザーでもアクセス可能
- ソースコードをすべて確認できるため、クライアント開発時の参考になる
- カスタマイズが容易で、独自のUIやログイン機能を追加できる
ただし、本番環境で利用する場合は、セキュリティ対策やユーザー認証などの追加実装が必要です。
GameLift Streamsは、ゲームやアプリケーションをクラウド上で実行し、ブラウザから利用できるようにする強力なサービスです。ぜひ一度試してみて、その可能性を体験してください。