Extend Key Value Store
注釈:本資料はAI技術を用いて翻訳されています。
概要
Extend Key Value Store は、AWS ElastiCache Valkey Serverless を基盤とした Redis 互換のキーバリューデータベースに、Extend App がデータを保存できるようにします。フルマネージドでスケーラブル、かつ低レイテンシーなデータストアを提供することで、独自のキャッシュやキーバリューインフラストラクチャを構築・維持する複雑さを排除します。これにより、開発者はインフラの管理ではなく、ゲーム機能の構築に集中できます。
Extend Key Value Store はすべての種類の Extend App にアタッチでき、キャッシュ、セッション状態、カウンター、その他のキーベースのルックアップなど、小さなデータへの高速かつ低レイテンシーなアクセスを必要とするユースケースに適しています。
Extend Key Value Store はクラスターごとに単一の論理データベースを使用します。複数の Extend App が同じクラスターに統合されている場合、それらのアプリは同じキースペースを共有します。アプリケーションごとのデータベース名やコレクションレベルの分離はありません。
Extend Key Value Store クラスターのプロビジョニング
Extend Key Value Store クラスターは、Publisher または Studio ネームスペースレベルでプロビジョニングできます。
-
Admin Portal の Extend Databases メニューに移動します。
-
Extend Databases ページで Key Value Store カードを見つけ、Create Cluster ボタンをクリックします。

-
Create New Cluster ボタンをクリックします。

-
必要に応じて Key Value Store データベースプロファイルを選択し、Create Cluster ボタンをクリックします。確認ダイアログで
CREATEと入力し、Create ボタンをクリックします。

-
クラスターがプロビジョニングされるまで5~10分ほど待ちます。

-
クラスターのプロビジョニングが完了すると、ステータスが
AVAILABLEに変わります。
-
Extend App を Extend Key Value Store と統合するには、Extend App 用に Extend Key Value Store を設定する セクションに進んでください。
Extend Key Value Store クラスターのデータベースプロファイルの更新
クラスターの容量やパフォーマンスを変更する必要がある場合は、データベースプロファイルを更新できます。この操作は Publisher または Studio ネームスペースレベルで実行できます。
-
Extend Databases メニューで Key Value Store カードをクリックし、次に Manage Cluster ボタンをクリックします。
-
更新したいクラスターをクリックし、Edit ボタンをクリックします。

-
必要に応じて新しい Key Value Store データベースプロファイルを選択し、Save ボタンをクリックします。

-
確認ダイアログで
UPDATEと入力してアクションを確認し、Update ボタンをクリックします。
-
クラスターが更新されるまで待ちます。

-
クラスターの更新が完了すると、ステータスが再び
AVAILABLEに変わります。
Extend Key Value Store クラスターの削除
不要になったクラスターは削除できます。クラスターは AVAILABLE ステータスまたは CREATE-FAILED ステータスのときのみ削除できます。この操作は Publisher または Studio ネームスペースレベルで実行できます。
-
Extend Databases メニューで Key Value Store カードをクリックし、次に Manage Cluster ボタンをクリックします。
-
選択したクラスターの Delete ボタンをクリックします。

-
確認ダイアログで
DELETEと入力してアクションを確認し、Delete Cluster ボタンをクリックします。
-
削除処理には約5~10分かかります。
クラスターの削除操作を行うと、統合されているすべての Extend App とともに、そのデータや認証情報も削除されます。
Extend App 用に Extend Key Value Store を設定する
この操作は Game ネームスペースレベルで実行できます。Key Value Store の統合を作成できるのは、クラスターが AVAILABLE ステータスのときのみです。
-
Extend App の詳細ページで Databases タブに切り替えます。
-
Key Value Store カードで Set Up ボタンをクリックします。

-
クラスターを選択し、ユーザー名とパスワードを生成した後、安全な認証情報の取り扱いに関する確認事項を確認し、Set Up ボタンをクリックします。

-
Database Summary ページに表示される接続情報を保存するには、Copy ボタンをクリックします。手順3で作成したユーザー名とパスワードを使用して、アプリや TCP Tunneling から接続できます。

接続情報は、次のように Extend App のシークレットと変数に自動的に追加されます。
REDIS_HOSTREDIS_PORTREDIS_USERNAMEREDIS_PASSWORD
これらの変数は、Extend App が Key Value Store クラスターに安全に接続するために使用されます。
-
Integration Status が Configuring から Ready に変わるまで待ちます。準備ができたら、Key Value Store の使用を開始したり、Extend App の新しいデプロイメントを作成したりできます。

Key Value Store はキーバリューサービスであり、SQL や NoSQL のようなデータベース名という概念はありません。すべてのデータはクラスターごとに単一の論理データストアに保存されます。
Key Value Store クラスターは単一の共有キースペースを使用します。複数の Extend App が同じクラスターに統合されている場合、すべてのアプリが同じキースペースで読み書きを行います(アプリごとのデータベース分離はありません)。キーの命名規則、キーの衝突の防止、およびアプリケーションレベルでの論理的な分離の実装(例: アプリ、ネームスペース、機能ごとのキープレフィックス)は、お客様の責任となります。
認証情報のローテーション
以下の手順では、Extend App の Key Value Store 認証情報をローテーションする方法を示します。
-
Extend App の詳細ページで Databases タブに切り替えます。
-
Key Value Store の詳細ページで Rotate Credentials をクリックします。

-
Change Database Password モーダルで新しいユーザー名とパスワードを生成し、Copy ボタンをクリックして認証情報を保存します。

-
Integration Status は Modifying に変わり、その後 Ready に変わるまで約5~10分かかります。

Extend App が現在実行中の場合、認証情報のローテーションによって自動的に再起動し、更新された認証情報が適用されます。
Extend App を Extend Key Value Store に接続する
この例では、注入された環境変数を使用して、Go ベースの Extend Service Extension を Key Value Store に接続する方法を示します。
-
Go 用の Redis クライアント(Valkey 互換)を Extend App に追加します。
- Go
以下の
go getコマンドを実行して、Redis Go ドライバーの最新バージョンをインストールします。go get github.com/redis/go-redis/v9その後、
go mod tidyコマンドを実行します。go mod tidy -
Redis/Valkey クライアントを Key Value Store に接続するように設定します。
REDIS_HOST、REDIS_PORT、REDIS_USERNAME、REDIS_PASSWORD環境変数を使用して、クライアント設定を構築します。- Go
import (
...
"context"
"crypto/tls"
"fmt"
"os"
"time"
"github.com/redis/go-redis/v9"
...
)
...
redisHost := os.Getenv("REDIS_HOST")
redisPort := os.Getenv("REDIS_PORT")
redisUsername := os.Getenv("REDIS_USERNAME")
redisPassword := os.Getenv("REDIS_PASSWORD")
addr := fmt.Sprintf("%s:%s", redisHost, redisPort)
client := redis.NewClient(&redis.Options{
Addr: addr,
Username: redisUsername,
Password: redisPassword,
TLSConfig: &tls.Config{
MinVersion: tls.VersionTLS12,
},
MinIdleConns: 5,
PoolSize: 30,
})
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := client.Ping(ctx).Err(); err != nil {
// replace with proper error handling in production
}
... -
ハンドラーやサービス内でクライアントを使用し、キーバリューデータを保存・取得します。
- Go
...
ctx := context.Background()
err := client.Set(ctx, "player:123:session", "active", 10*time.Minute).Err()
if err != nil {
// replace with proper error handling in production
}
value, err := client.Get(ctx, "player:123:session").Result()
if err != nil {
// replace with proper error handling in production
}
fmt.Println(value)
...
クラスターではデフォルトで TLS が有効になっています。Redis クライアントが TLS を使用するように設定されていることを確認してください。
その他のコマンドやパターンについて詳しく知るには、go-redis のドキュメントを参照してください。
Extend TCP Tunneling を通じて Extend Key Value Store にアクセスする
Extend Helper CLI を使用した Extend TCP Tunneling によって、ローカル開発環境から Extend Key Value Store に接続できます。この操作を実行できるのは、クラスターが AVAILABLE ステータスのときのみです。
-
Extend Helper CLI が設定済みであることを確認します。その後、使用する IAM クライアントに以下の権限を追加します。
- AGS Private Cloud のお客様の場合:
ADMIN:NAMESPACE:{namespace}:EXTEND:TUNNEL [READ]
- AGS Public Cloud のお客様の場合:
- Extend > TCP Tunneling (Read)
- AGS Private Cloud のお客様の場合:
-
Extend App の Key Value Store タブから Resource Name 情報をコピーします。

-
Extend Helper CLI を使用して、Key Value Store への Extend TCP Tunneling を開始します。手順2、または KVS Database の詳細ページから取得した Resource Name 情報を
--resource-nameオプションのパラメーターとして渡します。extend-helper-cli tunnel --resource-name <Resource Name> --namespace <namespace> --local-port <port>importantシステムクロックが同期されていない場合、認証が失敗することがあります。コマンドを実行する前に、ローカル時刻が正確であることを確認してください。
ヒントDatabases タブの KVS Database セクションにある Tunnel Command 情報から、完全なコマンドをコピーすることもできます。
-
Redis 互換のクライアント(
redis-cli、Valkey CLI、または TLS をサポートする GUI クライアントなど)を使用して、手順3で指定したローカルポートを通じて Key Value Store に接続します。KVS Database の詳細ページから Connection String をコピーするか、以下のような形式を使用してください。redis-cli -u "rediss://<username>:<password>@localhost:<port>"または、TLS を有効にした状態で
localhost:<port>に接続するようにクライアントを設定します。
サンプル
以下のサンプル Extend App は、Extend Key Value Store をキャッシュとキーバリュー操作に使用する Extend Service Extension です。
git clone https://github.com/AccelByte/extend-event-handler-with-kvs-go.git
オブザーバビリティ
Grafana の可観測性ダッシュボードを通じて、Key Value Store クラスターのパフォーマンスを監視できます。このダッシュボードには、CPU 使用率、レイテンシー、秒間コマンド数、キャッシュヒット率、接続統計など、主要なパフォーマンスメトリクスを表示するパネルが用意されており、ボトルネックを特定してアプリケーションの使用状況を最適化できます。
-
Extend App の Databases タブで、Key Value Store カードの追加の ... メニューボタンをクリックし、Database Dashboard を選択します。

-
Grafana のサインインページが新しいタブで開きます。Sign in with Admin Portal ボタンをクリックし、AccelByte の認証情報でログインします。

-
ログインが完了すると、Key Value Store のダッシュボードを表示できます。
