[SEO 小見出し]
このガイダンスは、軽量でスケーラブルなカスタムクロスプラットフォームのゲーム ID コンポーネントをデプロイする方法と、その ID を使用して AWS でカスタムゲームバックエンドコンポーネントに対して認証を行う手順を示します。このガイダンスは、ゲスト ID とさまざまなゲームプラットフォーム ID システムに対応しています。また、既存の統合をテンプレートとして使用することで、ゲームコンソールなど、追加のゲームプラットフォームにも拡張できます。
さらに、このガイダンスは、Unreal Engine 5、Unity 2021 (およびそれ以降)、Godot 4 ゲームエンジン用の Software Development Kit (SDK) とサンプルコードを提供します。SDK は、このガイダンスの ID コンポーネントおよびお客様のカスタムバックエンド機能と統合します。
注意: [免責事項]
アーキテクチャ図
[アーキテクチャ図の説明]
ステップ 1
AWS Lambda 関数 generate-keys が 7 日ごとに呼び出されます。
ステップ 2
Generate-keys が、最新のパブリック jwks.json ファイルを Amazon Simple Storage Service (Amazon S3) から取得し、新しいパブックキー (JSON Web Key Set (JWKS)) とプライベートキーを生成して、新しいパブリックキーと以前のキーで Amazon S3 を更新します。
ステップ 3
Generate-keys が、AWS Secrets Manager に JSON Web Token (JWT) を生成するために使用されたプライベートキーを更新します。
ステップ 4
ゲームクライアントが、提供された Software Development Kit (SDK) を使用して、新しいゲスト ID をリクエストします。または、ゲームクライアントが、AWS WAF ルールで保護されている Amazon API Gateway から guest_secret を送信することで、既存のゲスト ID でサインインできます。
ステップ 5
login-as-guest Lambda 関数がゲスト ID を検証します。または、この関数が新しいゲスト ID を Amazon DynamoDB の UserTable に作成します。
ステップ 6
Lambda 関数が Secrets Manager にプライベートキーをリクエストし、クライアント用の署名済み JWT トークンを生成して送信します。
ステップ 7
これで、ゲームクライアントは SDK を使用して Authorization ヘッダーの JWT トークンと共にリクエストを送信することで、カスタムバックエンドコンポーネントを呼び出すことができるようになります。
ステップ 8
バックエンドコンポーネントが Amazon CloudFront 経由で Amazon S3 からファイルを取得し、そのファイルを使用して JWKS パブリックキーをパブリックエンドポイントにリクエストし、トークンを検証します。
ステップ 9
API Gateway を介して refresh-access-token Lambda 関数を呼び出すことで、SDK が JWT アクセストークンを自動的に更新します。この関数は、Secrets Manager のプライベートキーを使用して新しいトークンを生成します。
ステップ 10
さらに、ゲームクライアントは、ゲームプラットフォーム固有の ID プロバイダーからアクセストークンを送信すると、既存のアカウントへのリンクや新しいアカウントの作成ができます。
Lambda 関数がトークンを検証し、特定の DynamoDB テーブルにユーザーアカウントへのリンクを作成します。次に、Secrets Manager のプライベートキーを使用してクライアント用の JWT トークンを作成します。
今すぐ始める
このガイダンスをデプロイ
Well-Architected の柱
AWS Well-Architected フレームワークは、クラウドでシステムを構築する際に行う決定の長所と短所を理解するのに役立ちます。フレームワークの 6 つの柱により、信頼性が高く、安全かつ効率的で、費用対効果が高く、持続可能なシステムを設計および運用するためのアーキテクチャのベストプラクティスを学ぶことができます。AWS マネジメントコンソールで無料で提供されている AWS Well-Architected Tool を使用し、各柱の一連の質問に回答することで、これらのベストプラクティスに照らしてワークロードを確認できます。
上記のアーキテクチャ図は、Well-Architected のベストプラクティスを念頭に置いて作成されたソリューションの例です。完全に Well-Architected であるためには、可能な限り多くの Well-Architected ベストプラクティスに従う必要があります。
-
オペレーショナルエクセレンス
このガイダンスのカスタム ID コンポーネントは、ユーザーリクエストを追跡する AWS X-Ray を利用し、Lambda Powertools を活用して、バックエンドロジック内から詳細な情報を提供します。さらに、このガイダンスのすべてのコンポーネントは、Amazon CloudWatch を使用して、仮想プライベートクラウド (VPC) フローのログ、API Gateway アクセス、Amazon S3 アクセス、Lambda の完了、AWS Fargate タスクを追跡します。最後に、AWS CDK では、環境全体で制御された変更と一貫した設定が可能なため、セキュリティとコンプライアンスのニーズを満たすことができます。
-
セキュリティ
このガイダンスのカスタム ID コンポーネントはプレイヤー ID と認証を管理して、強固な ID 管理をサポートしています。このガイダンスの他のすべての機能は、ID コンポーネントが提供するパブリックキーと JSON ウェブトークンを検証することにより、アクセスを保護します。カスタム ID コンポーネントは、一般的なウェブエクスプロイトからアプリケーションを保護するウェブアプリケーションファイアウォールである AWS WAF によって保護されます。また、すべてのデータは転送時だけでなく、保管時にも暗号化されます。
-
信頼性
このガイダンスでは主に、AWS リージョン内の複数のアベイラビリティーゾーン (AZ) で自動的に高可用性を実現するフルマネージドサービスを活用します。Fargate では、マルチ AZ 設定を使用して高可用性を実現し、DynamoDB のすべてのデータベーステーブルは、ポイントインタイムリカバリで保護されます。
-
パフォーマンス効率
このガイダンスは、多くの異なるアプローチを組み合わせて、パフォーマンスを向上させるさまざまな機能を提供します。まず、このガイダンスで選択されているサービスは、サーバーレスサービスの自動スケーリングコンポーネントを活用することで、ゲームの起動やその他のトラフィックのスパイクに対して大規模に対応できるように設計されています。次に、カスタム ID コンポーネントから提供される X-Ray データにより、開発者は混雑状況を見つけて、ニーズに合わせてガイダンスを調整してパフォーマンスを最適化できます。最後に、CloudFront が JSON ウェブトークンを検証するパブリックキーを提供し、バックエンドコンポーネントのレイテンシーを最適化します。
-
コストの最適化
このガイダンスでは、可能な限りサーバーレスコンポーネントを活用するため、請求は実際に使用したリソースに対してのみ発生します。コストをさらに抑えるには、Lambda と Fargate の両方のコストを最適化するために利用できる AWS Savings Plans を検討してください。 また、オンデマンドの DynamoDB テーブルから自動スケーリングプロビジョンドキャパシティに移行すると、ベースライントラフィックが既知の場合に DynamoDB のリザーブドキャパシティを使用してコストを削減できます。
API Gateway、Lambda、DynamoDB、Amazon S3、Fargate、Secrets Manager、AWS WAF など、このガイダンスで使用されているすべてのサービスは、需要に基づいてスケールするよう設定されており、必要なリソースは最小限です。
-
持続可能性
このガイダンスのサーバーレスサービスのコンポーネントは自動的にスケールするので、必要最小限のリソースだけで継続的に負荷に合わせながらコンポーネントをスケールできます。これにより、未使用の容量のプロビジョニングを回避し、インフラストラクチャの環境への影響を軽減できます。
関連コンテンツ
免責事項
サンプルコード、ソフトウェアライブラリ、コマンドラインツール、概念の実証、テンプレート、またはその他の関連技術 (私たちの担当者から提供される前述のものを含む) は、AWS カスタマーアグリーメント、またはお客様と AWS との間の関連文書契約 (いずれか該当する方) に基づき、AWS コンテンツとしてお客様に提供されるものです。お客様は、この AWS コンテンツを、お客様の本番アカウント、または本番データもしくはその他の重要なデータで使用すべきではありません。お客様は、サンプルコードなどの AWS コンテンツを、お客様固有の品質管理手法および基準に基づいて、本番グレードでの使用に適したテスト、セキュリティ確保、および最適化を行う責任を負います。AWS コンテンツのデプロイには、Amazon EC2 インスタンスの実行や Amazon S3 ストレージの使用など、AWS の課金対象リソースを作成または使用するための AWS 料金が発生する場合があります。
本ガイダンスにおける第三者のサービスまたは組織への言及は、Amazon または AWS と第三者との間の承認、後援、または提携を意味するものではありません。AWS からのガイダンスは技術的な出発点であり、アーキテクチャをデプロイするときにサードパーティのサービスとの統合をカスタマイズできます。