【アップデート】Amazon GameLiftでコンテナゲームサーバーが使用できるようになりました(プレビュー機能)

2024.05.09

こんにちは、ゲームソリューション部の入井です。

先月4月24日にAmazon GameLiftでコンテナをゲームサーバーとして利用できるようになるプレビュー機能が発表されました。

Amazon GameLift now includes containers support (Preview)

今までAmazon GameLiftではゲームサーバーの実行ファイルを含んだディレクトリをアップロードし、それをインスタンス上で実行する方法しか基本的にできませんでした(FleetIQ利用の場合を除く)が、今回のアップデートによりコンテナイメージを取り扱うことができるようになりました。

従来はビルドされた実行ファイルが必要なため、コンテナ環境でゲームサーバーを開発していた場合、デプロイの際に都度ビルドを行う必要がありました。また、GameLiftでの運用時はコンテナ環境では無くなるため、微妙な環境差異による動作の違いが発生する可能性がありました。しかし、今回コンテナがサポートされたことにより、コンテナ開発環境をそのまま本番環境へデプロイできるようになった形となります。

コンテナフリートの構造

従来のGameLiftのゲームサーバーは、フリートと呼ばれるコンポーネントの中で稼働しているいくつかのインスタンス上で動いていました。今回対応したコンテナについても、基本的な構造については変わりません。

全体構成

以下のコンテナフリートの基本的な構造を表した図は、公式ドキュメントから引用したものです。フリートの中のインスタンス内で更に別のコンポーネントが作られているのが分かります。

Amazon GameLiftでのコンテナの仕組み - Amazon GameLift より

以下、コンテナフリート独特の要素について解説します。

コンテナグループ

インスタンスの中で各コンテナをどのように取り扱うかを管理するためのコンポーネントです。ECRに保存されているどのコンテナイメージを使うかの指定の他、グループ内のコンテナ全体で使用するCPU、メモリリソースの上限設定、コンテナAの起動前にコンテナBを起動完了させるといった形の依存関係の指定なども設定できます。

また、各インスタンスにどのようにグループ内のコンテナを配置するかについて、スケジューリング戦略という項目で以下の2種類を指定できます。

  • レプリカコンテナグループ
    • このグループはインスタンス内で複製(スケーリング)される
    • ゲームサーバーとそれをサポートするアプリケーションが動作するコンテナはこちらを指定
    • コンテナフリート内に必ず1つ以上必要。
  • デーモンコンテナグループ
    • このグループは各インスタンスに1つのみ存在する(複製されない)
    • モニタリング用プログラムなどを動作させるコンテナに使用できる

コンテナ

コンテナグループ内で動作する実際のコンテナです。以下の3種類があります。

  • エッセンシャルレプリカコンテナ
    • ゲームサーバープロセスを実行してゲームセッションのホストを行うコンテナ
  • 必須ではないレプリカコンテナ
    • ゲームサーバーをサポートするソフトウェアを実行するコンテナ
  • デーモンコンテナ
    • モニタリング用プログラムなどを動作させるコンテナ

Amazon GameLift Agent

コンテナ内のゲームサーバーのライフサイクルを管理するアプリケーションです。ゲームサーバーアプリケーションと同じコンテナに入れる必要があります。

具体的な処理内容としては、フリートのランタイム設定を元にコンテナ内のゲームサーバープロセスを起動・シャットダウンしたり、ゲームセッションログを出力したりします。

OSSとしてGitHubで公開されており、コンテナイメージ作成時にはここからビルドして使用できます。

aws/amazon-gamelift-agent: GameLiftAgent is a Java application that is used to launch game server processes on Amazon GameLift fleets.

コンテナグループの作成

マネジメントコンソールからコンテナグループを作成する流れを紹介します。

Amazon GameLiftのページを開くと、コンテナグループという項目が増えています。これをクリックすることで、コンテナグループの管理ページにアクセスできます。

コンテナグループの作成画面は以下のような形となっています。

スケジューリング戦略の選択や、グループ内のコンテナで使用できるCPU・メモリリソースの上限が設定できます。

コンテナグループで使用するコンテナについては、ECRイメージURIを入力する形で指定します。1つのコンテナグループ内に最大9個のコンテナ定義を設定可能です。

コンテナフリートの作成

コンテナフリートについては、フリート作成画面でコンピューティングタイプとしてContainersを選択すると作成可能です。

コンテナフリート作成画面では、従来のビルドかスクリプトを選択する部分で、フリート内で使用するコンテナグループを選択することができるようになっています。

まとめ

Amazon GameLiftで新たに使用できるようになったコンテナ機能について、その構成要素やマネジメントコンソールでの設定方法について解説しました。

なお、プレビュー中は以下のように機能が制限されています。

  • コンテナフリートで使用できるコンテナイメージはAmazon_Linux_2023のみ
    • Windowsは未サポート
  • ゲームサーバーSDKはバージョン5以降のみサポート
  • インスタンスはオンデマンドインスタンスのみ対応