イベントハンドラの使用を開始する
注釈:本資料はAI技術を用いて翻訳されています。
Overview
この記事では、Extend Event Handler アプリのセットアップ方法について説明します。ここでは、Extend Event Handler アプリのテンプレートを使用します。このテンプレートは、AccelByte Gaming Services (AGS) の UserLogin イベントと UserThirdPartyLoggedIn イベントをリッスンし、ユーザーがログインしたときにゲーム内アイテムを付与します。
Prerequisites
- C#
- Go
- Java
- Python
-
以下のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14+ の環境。
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を有効にするため、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS 用の Docker Desktop のインストールに関する Docker のドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. .NET 8 SDK
-
Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0を実行します。 -
Windows または macOS の場合:
Windows または macOS への .NET のインストールに関する Microsoft のドキュメントに従ってください。
dotnet --version
8.0.119
e. Postman
- こちらから入手できるバイナリを使用してください。
- こちらから入手できるバイナリを使用してください。
-
-
以下のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14+ の環境。
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を有効にするため、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS 用の Docker Desktop のインストールに関する Docker のドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Go v1.24
- Go のインストールガイドに従ってください。
go version
go version go1.24.0 ...e. Postman
- こちらから入手できるバイナリを使用してください。
- こちらから入手できるバイナリを使用してください。
-
-
以下のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14+ の環境。
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を有効にするため、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS 用の Docker Desktop のインストールに関する Docker のドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. JDK 17
-
Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、次を実行します:
sudo apt update && sudo apt install openjdk-17-jdk。 -
Windows または macOS の場合:
Microsoft Build for OpenJDK のインストールに関する Microsoft のドキュメントに従ってください。
java --version
openjdk 17.0.10 2024-01-16
...
e. Postman
- こちらから入手できるバイナリを使用してください。
- こちらから入手できるバイナリを使用してください。
-
-
以下のツールがインストールされた Windows 11 WSL2/Linux Ubuntu 22.04 または macOS 14+ の環境。
a. Bash
-
Windows WSL2 または Linux Ubuntu の場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOS の場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2 または Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOS の場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を有効にするため、ログアウトしてから再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS 用の Docker Desktop のインストールに関する Docker のドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Python 3.10
-
Linux Ubuntu の場合:
Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install python3 python3-venvを実行します。 -
Windows または macOS の場合:
こちらから入手できるインストーラーを使用してください。
python3 --version
Python 3.10.12
e. Postman
- こちらから入手できるバイナリを使用してください。
- こちらから入手できるバイナリを使用してください。
-
-
AGS Admin Portal 環境へのアクセス。
- ベース URL:
<お使いの環境のドメイン URL>- AGS Public Cloud カスタマーの例:
https://spaceshooter.prod.gamingservices.accelbyte.io - AGS Private Cloud カスタマーの例:
https://dev.customer.accelbyte.io
- AGS Public Cloud カスタマーの例:
- まだお持ちでない場合は、ゲームネームスペースを作成してください。ネームスペース ID をメモしておいてください。
- 以下の権限を含む
confidentialクライアントタイプの OAuth クライアントを作成してください。- AGS Private Cloud カスタマーの場合:
ADMIN:NAMESPACE:{namespace}:USER:*:FULFILLMENT [CREATE]
- AGS Public Cloud カスタマーの場合:
- Platform Store -> Fulfillment (Create)
Client IDとClient Secretを保管しておいてください。
- Platform Store -> Fulfillment (Create)
- AGS Private Cloud カスタマーの場合:
- ベース URL:
-
ストアと付与するゲーム内アイテムをセットアップします。
Clone the app template
- C#
- Go
- Java
- Python
git clone https://github.com/AccelByte/extend-event-handler-csharp.git
git clone https://github.com/AccelByte/extend-event-handler-go.git
git clone https://github.com/AccelByte/extend-event-handler-java.git
git clone https://github.com/AccelByte/extend-event-handler-python.git
Set up, run, and test an Extend app
このセクションでは、Extend アプリのセットアップ、ビルド、実行、およびテストの方法について説明します。
Set up the Extend app
このアプリを実行できるようにするには、以下のセットアップ手順に従ってください。
-
.env.templateファイルの内容をコピーして、docker compose の.envファイルを作成します。注記ホスト OS の環境変数は、
.envファイルの変数よりも優先されます。.envファイル内の変数が正しく反映されない場合は、同じ名前のホスト OS の環境変数が存在するかどうかを確認してください。詳細については、docker compose の環境変数の優先順位に関する Docker のドキュメントを参照してください。 -
以下のように、
.envファイルに必要な環境変数を入力します。AB_BASE_URL=https://test.accelbyte.io # AGS 環境のベース URL
AB_CLIENT_ID='xxxxxxxxxx' # 前提条件セクションで取得した Client ID
AB_CLIENT_SECRET='xxxxxxxxxx' # 前提条件セクションで取得した Client Secret
AB_NAMESPACE='xxxxxxxxxx' # 前提条件セクションで取得した Namespace ID
ITEM_ID_TO_GRANT='xxxxxxxxxx' # 事前にメモした公開済みストアのゲーム内アイテム ID
Build the Extend app
このアプリをビルドするには、以下のコマンドを実行します。
make build
Run the Extend app
このアプリをコンテナ内で(ビルドして)実行するには、以下のコマンドを実行します。
docker compose up --build
Test the Extend app
このアプリは、Postman を使用してローカルでテストできます。
-
以下のコマンドを使用してこのアプリを実行します。
docker compose up --build -
Postmanを開き、新しいgRPC requestを作成し、URL にlocalhost:6565を入力します。
-
UserLogin イベントに注目しているため、
UserAuthenticationUserLoggedInService/OnMessageメソッドを選択します。
-
以下のサンプル Kafka イベント JSON をコピーして貼り付け、少なくとも
namespaceとuserIdを有効な値に置き換え、Invokeをクリックして、gRPC サーバーに UserLogin イベントを送信します。{
"payload": {
"user_account": {
"user_id": "string",
"email_address": "string",
"country": "string",
"namespace": "string"
},
"user_authentication": {
"platform_id": "string",
"refresh": true
}
},
"id": "string",
"version": 0,
"name": "string",
"namespace": "string",
"parent_namespace": "string",
"timestamp": "2019-08-24T14:15:22Z",
"client_id": "string",
"user_id": "string",
"trace_id": "string",
"session_id": "string"
} -
成功すると、以下のようなレスポンスが表示され、このテストで使用しているユーザーにゲーム内アイテムが付与されていることも確認できます。


-
UserThirdPartyLoggedIn イベントでも同様の手順を行うには、
UserAuthenticationUserThirdPartyLoggedInService/OnMessageを選択し、以下のサンプル Kafka イベント JSON を使用します。ここでも、少なくともnamespaceとuserIdの有効な値が必要です。{
"payload": {
"userAccount": {
"userId": "string",
"emailAddress": "string",
"userName": "string",
"country": "string",
"namespace": "string",
"platformId": "string",
"displayName": "string"
},
"userAuthentication": {
"platformId": "string",
"refresh": true,
"platformUserId": "string",
"simultaneousPlatformId": "string",
"simultaneousPlatformUserId": "string"
},
"loginLocation": {
"country": "string",
"state": "string",
"city": "string"
}
},
"id": "string",
"version": 0,
"name": "string",
"namespace": "string",
"parentNamespace": "string",
"timestamp": "2019-08-24T14:15:22Z",
"clientId": "string",
"userId": "string",
"traceId": "string",
"sessionId": "string"
}
Deploy in AGS
Create the Extend app
-
AGS Admin Portal で、Extend Event Handler アプリを作成したい
namespaceに移動します。 -
サイドバーメニューで Extend にカーソルを合わせ、Event Handler をクリックします。Create New をクリックして、新しい Extend Event Handler アプリを作成します。
-
アプリ作成ページで、App Name と Description を入力します。必要に応じてリソース設定を調整できます。その後、Create をクリックします。
Upload the Extend app
-
extend-helper-cli 用の IAM クライアントをセットアップします。クライアントタイプ
confidentialの IAM クライアントを作成し、以下に示す必要な権限を割り当てます。Client IDとClient Secretのコピーを保管しておいてください。- AGS Private Cloud カスタマーの場合:
ADMIN:NAMESPACE:{namespace}:EXTEND:REPOCREDENTIALS[READ]ADMIN:NAMESPACE:{namespace}:EXTEND:APP[READ]
- AGS Public Cloud カスタマーの場合:
- Extend > Extend app image repository access (Read)
- Extend > App (Read)
- AGS Private Cloud カスタマーの場合:
-
必要な環境変数をエクスポートし、extend-helper-cli を使用して Extend アプリのコンテナイメージをビルドして AGS にアップロードします。
<project-dir>が Extend アプリのプロジェクトディレクトリを指していることを確認してください<namespace>と<app-name>の値は、Extend アプリのApp Detailページで確認できます- 適切なイメージタグを使用してください(例:
v0.0.1)
- Linux
- Windows (WSL2)
- macOS
# AGS 環境のベース URL(例: https://spaceshooter.prod.gamingservices.accelbyte.io、https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli 用の OAuth クライアントの Client ID(ステップ 1 から)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli 用の OAuth クライアントの Client Secret(ステップ 1 から)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# AGS 環境のベース URL(例: https://spaceshooter.prod.gamingservices.accelbyte.io、https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli 用の OAuth クライアントの Client ID(ステップ 1 から)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli 用の OAuth クライアントの Client Secret(ステップ 1 から)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# AGS 環境のベース URL(例: https://spaceshooter.prod.gamingservices.accelbyte.io、https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli 用の OAuth クライアントの Client ID(ステップ 1 から)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli 用の OAuth クライアントの Client Secret(ステップ 1 から)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-darwin_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1important- 上記のコマンドは、Extend アプリのプロジェクトとは別のターミナルおよび異なる作業ディレクトリで実行することをお勧めします。これにより、extend-helper-cli が誤って Extend アプリ用の環境変数を使用してしまうことを防止できます。
- 以下のエラーが発生した場合は、解決方法についてトラブルシューティング: Docker のログインに失敗するを参照してください。
Error saving credentials: error storing credentials - err: exit status 1, out: `error storing credentials - err: exit status 1, out: `The stub received bad data.`
イメージが正常にアップロードされると、Image Version History ページに v0.0.1 のバージョンを持つイメージが表示されます。

Configure the Extend app
アップロードした Extend アプリをデプロイする前に、Extend アプリが必要とする環境変数を設定する必要があります。アプリの詳細ページで、Extend アプリをローカルで実行およびテストする際に使用したものと同じ値を持つ以下の環境変数を設定します。
AB_CLIENT_IDAB_CLIENT_SECRETITEM_ID_TO_GRANT
Deploy the Extend app
Extend アプリをデプロイするには、Deploy Latest Image をクリックします。アプリのステータスが RUNNING に更新されるまで待ちます。これは、Extend アプリが正常にデプロイされたことを示します。
Test the deployed Extend app
ネームスペース内に新しいユーザーを作成し、そのユーザーでログインします。Admin Portal のそのユーザーのエンタイトルメントページで Item ID が付与されているかを確認します。

Next steps
- アプリの開発を始める前に、メッセージ処理と冪等性を管理するの記事を確認して、Event Handler アプリを使用してメッセージ処理と冪等性を扱う方法についての理解を深めることをお勧めします。
- このテンプレートプロジェクトを変更して、独自のイベントハンドラを作成する手順に進みます。異なる AGS イベントをリッスンして処理するを参照してください。

