Amazon GameLift In C# 07: Amazon Cognitoを作成し、チャットソフト通信をGameLiftで検証する

Amazon GameLift Walkthrough in C# (with Unity) Tutorial 07

概要

前回のチャットクライアント記事ではローカルのテストができましたが、これからチャットソフトをネット環境の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に入って、ServicesCognitoを押します。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の権限を持つPolicyCoginito_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のリクエストを送る部分もさっきアップロードしたサーバー実行ファイルで作ったFleetIDに変更してください。

テスト

FleetActivatedになったら、テストを始めます。
改造したクライアントプロジェクトをコマンドツールでdotnet runで起動します。

 

手順通りここまで進めば、スクリーンショットのようにメッセージが出るなら、問題なしテスト完了となります。

ちなみに、Amazon GameLiftGameLift Localよりデバッグしにくいので、AWS CloudTrailというサービスでGameLiftのログを見れます。

以上でCognitoを作成した上で簡単なチャットソフトの通信ができました。

一つメッセージで通信が切るので、今後の記事で今までの作業を複数のユーザー継続的にチャットできるソフトに改造します。