Amazon GameLift In C# 07: Amazon Cognitoを作成し、チャットソフト通信をGameLiftで検証する
概要
前回のチャットクライアント記事ではローカルのテストができましたが、これからチャットソフトをネット環境のAmazon GameLiftでテストします。
今回の場合、ユーザーをAmazon GameLiftに接続するには、CognitoというサービスでIdentity Poolを作らなければならないので、これから紹介します。
マシン環境
CPU : Intel i7-6920HQ
GPU : AMD Radeon Pro 460
Memory : 16GB
System : Windows 10 (with .NET 5 installed)
IDE : Visual Studio 2019 Community
Editor : Visual Studio Code
Terminal : Windows Terminal (or Command Prompt)
Cognito Identity Pool の作成
まずAWS Consoleに入って、ServicesでCognitoを押します。Amazon Cognitoのページに入ったら、Manage Identity Poolsを押します。
適当なIdentity pool nameを入力し、Enable access to unauthenticated identitiesをチェックします。これをチェックしあたら、ログインなしでAmazon GameLiftにアクセスできるので、テストとしてはやりやすいと思います。そしてCreate Poolで次の画面に進みます。
今回の場合、ことページでは特にやれることがないですけど、View Detailsを展開したら、二つIAM Roleは勝手に作られます。Coginito_GameLiftLeanerUnauth_RoleというUauthのほうにGameLiftのポリシーが貼っていないので、ユーザーがアクセスするため、ポリシーを追加しなければならないです。Policyの追加方法はAmazon GameLift In C# 02でも紹介したので、そちの方に確認してください(Create Policyをキーワードとして検索してください)。今回もその前作ったGameLiftLearnerPolicyというすべてGameLiftの権限を持つPolicyをCoginito_GameLiftLeanerUnauth_RoleというIAM Roleに付けました。
サーバー実行ファイルをアップロードする
Amazon GameLift In C# 05: 簡単なチャットソフトサーバーを作りますで作ったサーバーソフトを使います。
サーバープロジェクトのGitHubリンク: AGLW-CSharp-BasicChatServerSample
Amazon GameLift In C# 03: Sample Codeをビルドし、実行ファイルをGameLift上動かす には実行ファイルをGameLiftに起動する手順も紹介したので、ビルドをGameLift上に実行するからの部分を参考してください。
サーバーサンプルをGameLiftに完全起動されるまでは20分以上をかかるのでご注意してください。
クライアントの改造
Identity Poolを作った直後も出たかもしれませんが、Amazon CongitoのページからManage Identity Poolsに入って、さっき作ったGameLiftLearnerに進みます。
Sample codeのセクションに入ると、Platform に .NET を選択したら、サンプルソースコードが出てきますので、一旦保存してください。
前回のチャットクライアント記事(GitHub Link)で作ったクライアントファイルChatClient.csを編集します。
// Create GameLift Local client gameLiftClient = new AmazonGameLiftClient("fakeAccessKeyId", "fakeSecretAccessKey", new AmazonGameLiftConfig() { ServiceURL = "http://localhost:9080" });
↓↓↓
// Initialize the Amazon Cognito credentials provider CognitoAWSCredentials credentials = new CognitoAWSCredentials( "ap-northeast-1:your_identity_pool_id", // Identity pool ID RegionEndpoint.APNortheast1 // Region ); // Create Amazon GameLift client gameLiftClient = new AmazonGameLiftClient(credentials, RegionEndpoint.APNortheast1);
さっき貰ったサンプルソースコードを使って、上記のように改造してください。RegionEndpointも一致してください。
request.FleetId = "fleet-fakeId";
↓↓↓
request.FleetId = "fleet-your_fleet_id";
そしてGameSession
のリクエストを送る部分もさっきアップロードしたサーバー実行ファイルで作ったFleetのIDに変更してください。
テスト
FleetがActivatedになったら、テストを始めます。
改造したクライアントプロジェクトをコマンドツールでdotnet run
で起動します。
手順通りここまで進めば、スクリーンショットのようにメッセージが出るなら、問題なしテスト完了となります。
ちなみに、Amazon GameLiftはGameLift Localよりデバッグしにくいので、AWS CloudTrailというサービスでGameLiftのログを見れます。
以上でCognitoを作成した上で簡単なチャットソフトの通信ができました。
一つメッセージで通信が切るので、今後の記事で今までの作業を複数のユーザー継続的にチャットできるソフトに改造します。