extend-sql-database
注釈:本資料はAI技術を用いて翻訳されています。
Overview
Extend SQL Databaseを使用すると、Extend AppはAmazon Aurora PostgreSQLデータベースにデータを保存できます。独自のデータベースインフラストラクチャを構築・保守する複雑さを排除した、マネージド型でスケーラブルなデータベースソリューションです。これにより、開発者は革新的な機能の構築に集中できます。
Extend SQL Databaseは、すべての種類のExtend Appにアタッチできます。これにより、ACID準拠とリレーショナルデータモデリングを備えた永続的なデータストレージ機能を必要とする幅広いユースケースが実現します。
Extend SQLクラスターのプロビジョニング
Extend SQLクラスターは、PublisherまたはStudioのネームスペースレベルでプロビジョニングできます。
-
Extendメニューに移動し、Extend Databasesをクリックします。Extend SQL DatabaseカードのCreate Clusterをクリックします。

-
必要に応じてデータベースプロファイルを選択し、Create SQL Databaseボタンをクリックします。

-
クラスターがプロビジョニングされるまで5~10分待ちます。
-
クラスターがプロビジョニングされると、ステータスが
AVAILABLEに変わります。 -
Extend SQL DatabaseをExtend Appと統合するには、Extend AppでExtend SQL Databaseを設定するセクションに進みます。
Extend SQLクラスターのデータベースプロファイルの更新
クラスターサイズを変更する必要がある場合は、データベースプロファイルを更新できます。この操作は、PublisherまたはStudioのネームスペースレベルで実行できます。
-
Extend → Extend Databasesメニューで、SQLカードのManage Clusterをクリックし、Editボタンを見つけてクリックします。
-
必要に応じてExtend SQL Databaseプロファイルを選択し、Updateボタンをクリックします。

-
確認ダイアログで、
UPDATEと入力して更新操作を確認し、Updateボタンをクリックします。
-
クラスターが更新されるまで待ちます。
-
クラスターが更新されると、ステータスが再び
AVAILABLEに変わります。
Extend SQLクラスターの削除
不要になったクラスターは削除できますが、削除できるのはステータスがAVAILABLEの場合のみです。この操作は、PublisherまたはStudioのネームスペースレベルで実行できます。
-
Extend → Extend Databasesメニューで、SQLカードのManage Clusterをクリックし、Delete Clusterボタンを見つけてクリックします。

-
確認ダイアログで、
DELETEと入力して削除を確認し、Delete Instanceボタンをクリックします。
-
クラスターが削除されると、ページはExtend → Extend Databasesページに戻ります。
Extend AppでExtend SQL Databaseを設定する
この操作はGameネームスペースレベルで実行でき、SQLクラスターのステータスがAVAILABLEの場合のみデータベースを作成できます。
-
Extend Appの詳細ページで、Databasesタブに切り替え、SQL DatabaseカードのSet Upボタンをクリックします。

-
データベース名、ユーザー名、パスワードを入力し、認証情報を安全に管理することを確認するチェックボックスをオンにして、Addボタンをクリックします。

-
Database Summaryページの情報をメモしておきます。

データベースのホスト、名前、ユーザー名、パスワードは、それぞれ
SQLDB_HOST、SQLDB_DATABASE_NAME、SQLDB_USERNAME、SQLDB_PASSWORDとしてExtend Appのシークレットと変数に自動的に追加されます。
Extend AppをExtend SQL Databaseに接続する
-
Extend AppにPostgreSQLドライバーを追加します。
- Go
次の
go getコマンドを実行して、pgx PostgreSQLドライバーと接続プールパッケージを取得します。go get github.com/jackc/pgx/v5その後、
go mod tidyコマンドを実行することをお勧めします。go mod tidy -
PostgreSQLドライバーを設定して、SQL Databaseに接続します。
SQLDB_HOST、SQLDB_USERNAME、SQLDB_PASSWORD、SQLDB_DATABASE_NAME、SQLDB_CA_CERT_FILE_PATH環境変数を使用して接続文字列を構築します。- Go
import (
...
"context"
"net/url"
"time"
"github.com/jackc/pgx/v5/pgxpool"
...
)
...
ctx := context.Background()
sqlDbHost := os.Getenv("SQLDB_HOST")
sqlDbUsername := os.Getenv("SQLDB_USERNAME")
sqlDbPassword := os.Getenv("SQLDB_PASSWORD")
sqlDbDatabaseName := os.Getenv("SQLDB_DATABASE_NAME")
sqlDbCaCertFilePath := os.Getenv("SQLDB_CA_CERT_FILE_PATH")
connectionString := fmt.Sprintf(
"postgresql://%s:%s@%s/%s?sslmode=verify-full&sslrootcert=%s",
url.QueryEscape(sqlDbUsername),
url.QueryEscape(sqlDbPassword),
sqlDbHost,
sqlDbDatabaseName,
sqlDbCaCertFilePath,
)
poolConfig, err := pgxpool.ParseConfig(connectionString)
if err != nil {
// replace with proper error handling in production
}
// Configure connection pool
poolConfig.MaxConns = 30
poolConfig.MinConns = 5
poolConfig.MaxConnLifetime = time.Hour
db, err := pgxpool.NewWithConfig(ctx, poolConfig)
if err != nil {
// replace with proper error handling in production
}
defer db.Close()
// Validate the connection
if err := db.Ping(ctx); err != nil {
// replace with proper error handling in production
}
...importantクラスターではTLSがデフォルトで有効になっています。
sslmodeオプションは、allow、prefer、require、verify-ca、verify-fullのいずれかに設定する必要があります。 TLS証明書は自動的に追加され、SQLDB_CA_CERT_FILE_PATH環境変数によって公開されます。この証明書はverify-caおよびverify-fullモードで必要です。 -
データベース接続を使用してSQLクエリを実行します。
- Go
...
ctx := context.Background()
// Create a table
_, err = db.Exec(ctx, `
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
`)
if err != nil {
// replace with proper error handling in production
}
// Insert data
_, err = db.Exec(
ctx,
"INSERT INTO users (username, email) VALUES ($1, $2)",
"player1",
"player1@example.com",
)
if err != nil {
// replace with proper error handling in production
}
// Query data
var username string
var email string
err = db.QueryRow(ctx, "SELECT username, email FROM users WHERE id = $1", 1).Scan(&username, &email)
if err != nil {
// replace with proper error handling in production
}
...ヒントGoでのPostgreSQLの操作について詳しくは、PostgreSQL公式ドキュメントとpgxドキュメントを参照してください。
Extend TCP TunnelingによるExtend SQL Databaseへのアクセス
Extend Helper CLIを使用したExtend TCP Tunneling経由で、ローカル開発環境からExtend SQL Databaseに接続できます。この操作は、SQLクラスターのステータスがAVAILABLEの場合のみ実行できます。
-
Extend Helper CLIがセットアップされていることを確認します。次に、使用するIAMクライアントに以下の権限を追加します。
- AGS Private Cloudのお客様の場合:
ADMIN:NAMESPACE:{namespace}:EXTEND:TUNNEL [READ]
- AGS Public Cloudのお客様の場合:
- Extend > TCP Tunneling (Read)
- AGS Private Cloudのお客様の場合:
-
SQL Databaseの詳細タブからResource Name情報をコピーします。


-
Extend Helper CLIを使用して、Extend SQL DatabaseへのExtend TCP Tunnelingを開始します。ステップ2のResource Name情報を
--resource-nameオプションのパラメーターとして渡します。extend-helper-cli tunnel --resource-name <Resource Name> --namespace <namespace> --local-port <port>importantシステムクロックが同期されていない場合、認証が失敗することがあります。コマンドを実行する前に、ローカル時刻が正確であることを確認してください。
ヒントSQL DatabaseタブのTunnel Command情報から完全なコマンドをコピーすることもできます。
-
https://truststore.pki.rds.amazonaws.com/global/global-bundle.pemからAWS RDS TLS証明書をダウンロードしていることを確認します(TLSは有効になっており、verify-caおよびverify-fullモードでは証明書が必要です。それ以外の場合はオプションです)。 -
PostgreSQLクライアント(pgAdmin、DBeaver、psqlなど)を使用して、ステップ3で指定したローカルポートを介してExtend SQL Databaseに接続します。データベースをセットアップしたときにメモしたデータベース名、ユーザー名、パスワードを使用します。接続文字列は次のようになります。
postgresql://<username>:<password>@localhost:<port>/<database-name>?sslmode=verify-full&sslrootcert=<path-to-certs-file>psqlコマンドラインを使用する場合:psql "postgresql://<username>:<password>@localhost:<port>/<database-name>?sslmode=verify-full&sslrootcert=<path-to-certs-file>"
PostgreSQL拡張機能のインストール
トンネル接続を介して、Extend SQL DatabaseにPostgreSQL拡張機能をインストールできます。
データベースでCREATE EXTENSIONを実行して自分でインストールできるのは、信頼済み拡張機能のみです。自分でインストールできる拡張機能の一覧については、Amazon RDSドキュメントのPostgreSQL信頼済み拡張機能を参照してください。
Extend SQL DatabaseはAurora PostgreSQL 17で実行されます。このバージョンでサポートされているすべての拡張機能の名前とバージョンについては、Amazon RDSでサポートされているPostgreSQL拡張機能を参照してください。
前提条件
- Extend SQLクラスターのステータスが
AVAILABLEであること。 - Extend AppにExtend SQL Databaseがセットアップされていること。
- データベースユーザーが対象データベースで拡張機能を作成する権限を持っていること。新しいデータベースには、この権限が自動的に付与されます。
CREATE EXTENSIONの実行時にMust have CREATE privilege on current databaseと表示される場合は、AccelByte開発者サポートにお問い合わせください。
拡張機能のインストール
-
Extend TCP TunnelingによるExtend SQL Databaseへのアクセスの手順に従って、Extend TCP Tunnelingを開始します。
--namespaceパラメーターにはGameネームスペースを使用します。 -
psqlまたは他のPostgreSQLクライアントでデータベースに接続します。 -
拡張機能をインストールします。
CREATE EXTENSION IF NOT EXISTS pgcrypto; -
拡張機能がインストールされていることを確認します。
SELECT extname, extversion FROM pg_extension WHERE extname = 'pgcrypto';
ハイフンを含む拡張機能名
PostgreSQLでは、ハイフンを含む拡張機能名を二重引用符で囲む必要があります。
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
AccelByteサポートが必要な拡張機能
以下は自己インストールできません。
- 信頼済み拡張機能ではない拡張機能、またはインストールにスーパーユーザー権限が必要な拡張機能(例:
pg_stat_statements) - Trusted Language Extensions (TLE) — 現在、セルフサービスでのインストールはサポートされていません。詳細については、Amazon AuroraドキュメントのPostgreSQL用Trusted Language Extensionsの操作を参照してください。
信頼されていない拡張機能やTLEが必要な場合は、AccelByte開発者サポートにお問い合わせください。
サンプル
以下のサンプルExtend Appは、Extend SQL Databaseにデータを保存するExtend Service Extensionのギルドサービスです。
- Go
git clone https://github.com/AccelByte/extend-service-extension-with-sql-go.git
可観測性
Grafana の可観測性ダッシュボードを通じて、SQLクラスターのパフォーマンスを監視できます。このダッシュボードには、CPU使用率、レイテンシー、IOPS、データベース接続数などの主要なパフォーマンスメトリクスを表示するパネルが用意されており、ボトルネックを特定してアプリケーションのデータベース使用状況を最適化するのに役立ちます。
-
Databasesタブで、追加の**...**メニューボタンをクリックし、Database Dashboardを選択します。

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

-
ログインすると、ダッシュボードが表示されます。
