

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# デプロイ用にゲームサーバービルドをパッケージ化する
<a name="gamelift-build-intro"></a>

ゲームサーバーソフトウェアをホスティングリソースにデプロイする準備をします。デプロイされると、ソフトウェアが各ホスティングリソースにインストールされ、1 つ以上のゲームサーバープロセスが起動され、プレイヤーのゲームセッションをホストする準備が整います。

ゲームサーバービルドの準備は、使用している Amazon GameLift Servers ホスティングオプションのタイプによって異なります。[Amazon GameLift Servers でゲームサーバーの統合](gamelift-sdk-server.md)で説明されているように、すべてのゲームサーバービルドは Amazon GameLift Servers のサーバー SDK と統合する必要があります。

このセクションのトピックでは、以下のシナリオでソフトウェアのデプロイを準備する方法を説明します。
+ マネージド EC2 ホスティングの場合は、サーバーソフトウェアをパッケージ化し、デプロイのために Amazon GameLift Servers にアップロードします。
+ マネージドコンテナホスティングの場合は、サーバーソフトウェアを使用してコンテナイメージを構築し、Amazon Elastic Container Registry に保存してデプロイします。
+ Amazon GameLift Servers Anywhere でホスティングする場合は、必要に応じてサーバーソフトウェアをパッケージ化し、独自のホスティングリソースにインストールします。

**注記**  
Amazon GameLift Servers Realtime 設定済みスクリプトをデプロイする場合は、「[Amazon GameLift ServersRealtime 用スクリプトのアップロード](https://docs.aws.amazon.com/gameliftservers/latest/realtimeguide/realtime-script-uploading.html)」を参照してください。

**Topics**
+ [Amazon GameLift Servers のゲームサーバービルドを作成する](gamelift-build-cli-uploading.md)
+ [Amazon GameLift Servers 用のコンテナイメージを構築する](containers-prepare-images.md)

# Amazon GameLift Servers のゲームサーバービルドを作成する
<a name="gamelift-build-cli-uploading"></a>

ゲームサーバーを Amazon GameLift Servers と統合した後 ([Amazon GameLift Serversでホストするゲームを準備します](integration-intro.md) を参照)、ホスティング用のコンピューティングリソースにゲームサーバーソフトウェアをインストールします。このプロセスは、使用している Amazon GameLift Servers ホスティングのタイプによって異なります。

## マネージドホスティング用にデプロイする
<a name="gamelift-build-custom-upload"></a>

Amazon GameLift Servers のマネージド EC2 ホスティングを使用している場合、ゲームサーバーソフトウェアをパッケージ化し、Amazon GameLift Servers にアップロードする必要があります。マネージドフリートを作成すると、Amazon GameLift Serversはそのフリートを各フリートインスタンスに自動的にデプロイします。

このセクションのトピックでは、アップロード用にビルドファイルをパッケージ化し、オプションのビルドインストールスクリプトを作成してから、 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) または AWS SDK を使用してファイルをアップロードする方法について説明します。

## Anywhere ホスティング用にデプロイする
<a name="gamelift-build-custom-anywhere"></a>

ルフマネージドホスティングで Amazon GameLift Servers Anywhere フリートを使用する場合、フリート内の各コンピューティングにゲームサーバーソフトウェアをインストールし、最新の状態に保つのはユーザーの責任です。

合されたゲームサーバープロセスの実行が開始されると、Amazon GameLift Serversサービスとの通信が自動的に初期化され、確立されます。サーバープロセスは、Amazon GameLift Servers からのプロンプトでゲームセッションを開始し、アクティビティをサービスに報告します。

**Topics**
+ [マネージドホスティング用にデプロイする](#gamelift-build-custom-upload)
+ [Anywhere ホスティング用にデプロイする](#gamelift-build-custom-anywhere)
+ [ゲームビルドファイルをパッケージ化する](gamelift-build-packaging.md)
+ [ビルドインストールスクリプトを追加する](gamelift-build-cli-uploading-install.md)
+ [マネージドホスティング用のAmazon GameLift Serversビルドリソースを作成する](gamelift-build-cli-uploading-builds.md)

# ゲームビルドファイルをパッケージ化する
<a name="gamelift-build-packaging"></a>

設定したゲームサーバーを Amazon GameLift Servers にアップロードする前に、ゲームビルドファイルをビルドディレクトリにパッケージ化してください。このプロセスは、EC2 マネージドフリートでホスティングする場合の要件であり、Anywhere フリートでホスティングする場合のベストプラクティスです。ビルドディレクトリには、ゲームサーバーの実行とゲームセッションのホストに必要なすべてのコンポーネントが含まれている必要があります。これには次のものが含まる場合があります。
+ **ゲームサーバーバイナリ** - ゲームサーバーを実行するために必要なバイナリファイル。ビルドには、同じプラットフォームで実行するように構築された複数のゲームサーバーのバイナリを含めることができます。サポートされているプラットフォームのリストについては、「[Amazon GameLift Servers開発用ツールを取得する](gamelift-supported.md)」を参照してください。
+ **依存関係** - ゲームサーバー実行ファイルを実行するためのすべての依存関係ファイル。例として、アセット、設定ファイル、依存ライブラリがあります。
**注記**  
C\$1\$1 用サーバー SDK for Amazon GameLift Servers で作成されたゲームビルド (Unreal プラグインで作成されたものを含む) には、サーバー SDK を構築したのと同じバージョンの OpenSSL 用の OpenSSL DLL を含めてください。詳細については、サーバー SDK README ファイルを参照してください。
+ **インストールスクリプト** (オプション) — Amazon GameLift Servers ホスティングサーバーにゲームビルドをインストールするタスクを処理するスクリプトファイルです。このファイルをビルドディレクトリのルートに配置します。Amazon GameLift Servers はフリート作成の一環としてインストールスクリプトを実行します。

インストールスクリプトを含むビルド内の任意のアプリケーションを設定して、他の AWS サービスでリソースに安全にアクセスできます。これを行う方法については、「[Amazon GameLift Servers ホストされたゲームサーバーを他の AWS リソースに接続する](gamelift-sdk-server-resources.md)」を参照してください。

ビルドファイルをパッケージ化したら、ターゲット OS のクリーンインストールでゲームサーバーを実行できることを確認し、必要な依存関係がすべて含まれていることと、インストールスクリプトが正確であることを検証します。

# ビルドインストールスクリプトを追加する
<a name="gamelift-build-cli-uploading-install"></a>

ゲームビルドのオペレーティングシステム (OS) 用のインストールスクリプトを作成します。
+ Windows:「`install.bat`」という名前のバッチファイルを作成します。
+ Linux:「`install.sh`」という名前のシェルスクリプトファイルを作成します。

インストールスクリプトを作成するときは、次の点に留意してください。
+ このスクリプトはユーザー入力を一切受け付けません。
+ Amazon GameLift Servers はビルドをインストールし、以下のロケーションのホスティングサーバー上のビルドパッケージにファイルディレクトリを再作成します。
  + Windows フリート: `C:\game`
  + Linux フリート: `/local/game`
+ Linux フリートのインストールプロセスで、run-as ユーザーは、インスタンスのファイル構造へのアクセスが制限されます。このユーザーは、ビルドファイルがインストールされているディレクトリに対しては完全な権限があります。インストールスクリプトが管理者アクセス許可を必要とするアクションを実行する場合は、**sudo** を使用して管理者アクセスを指定します。Windows フリートの run-as ユーザーには、デフォルトで管理者アクセス許可があります。インストールスクリプトに関連するアクセス許可の失敗により、スクリプトに問題があることを示すイベントメッセージが生成されます。
+ Linux では、Amazon GameLift Servers は bash などの一般的なシェルインタープリタ言語をサポートします。shebang (`#!/bin/bash` など) を、インストールスクリプトの先頭に追加します。目的のシェルコマンドのサポートについて確認するには、アクティブな Linux インスタンスにリモートにアクセスし、シェルコマンドを開きます。詳細については、「[フリートインスタンスに接続する](fleets-remote-access.md)」を参照してください。
+ インストールスクリプトは VPC ピアリング接続に依存できません。VPC ピアリング接続は、Amazon GameLift Servers がフリートインスタンスにビルドをインストールするまで使用できません。

**Example Windows インストール bash ファイル**  
この `install.bat` ファイルの例では、ゲームサーバーに必要な Visual C\$1\$1 ランタイムコンポーネントをインストールし、結果をログファイルに書き込みます。スクリプトはルートのビルドパッケージにコンポーネントファイルを含めます。  

```
vcredist_x64.exe /install /quiet /norestart /log c:\game\vcredist_2013_x64.log
```

**Example Linux インストールシェルスクリプト**  
この `install.sh` ファイルの例では、インストールスクリプトで bash を使用し、結果をログファイルに書き込みます。  

```
#!/bin/bash
echo 'Hello World' > install.log
```
この `install.sh` ファイルの例では、Amazon CloudWatch エージェントを使用してシステムレベルおよびカスタムのメトリクスを収集し、ログローテーションを処理する方法を示します。Amazon GameLift Servers はサービス VPC で実行されているため、ユーザーに代わって AWS Identity and Access Management (IAM) ロールを引き受けられるように、Amazon GameLift Servers にアクセス許可を付与する必要があります。Amazon GameLift Servers がロールを引き受けることを許可するには、 AWS 管理ポリシー を含むロールを作成し`CloudWatchAgentAdminPolicy`、フリートの作成時にそのロールを使用します。  

```
sudo yum install -y amazon-cloudwatch-agent
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y collectd
cat <<'EOF' > /tmp/config.json
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root",
        "credentials": {
            "role_arn": "arn:aws:iam::account#:role/rolename"
        }
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/tmp/log",
                        "log_group_name": "gllog",
                        "log_stream_name": "{instance_id}"
                    }
                ]
            }
        }
    },
    "metrics": {
       "namespace": "GL_Metric",
        "append_dimensions": {
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            // Configure metrics you want to collect.
            // For more information, see [Manually create or edit the CloudWatch agent configuration file](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html).
        }
    }
}
EOF
sudo mv /tmp/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
sudo systemctl enable amazon-cloudwatch-agent.service
```

# マネージドホスティング用のAmazon GameLift Serversビルドリソースを作成する
<a name="gamelift-build-cli-uploading-builds"></a>

ビルドを作成してファイルをアップロードするときは、いくつかのオプションがあります。
+ [ファイルディレクトリから構築を作成する](gamelift-build-cli-uploading-upload-build.md)。これは、最もシンプルで一般的に使用されるオプションです。
+ [Amazon Simple Storage Service (Amazon S3) 内のファイルを使用してビルドを作成します](gamelift-build-cli-uploading-create-build.md)。このオプションを使用すると、Amazon S3 でビルドバージョンを管理できます。

どちらの方法でも、Amazon GameLift Servers は一意のビルド ID とその他のメタデータを持つ新しいビルドリソースを作成します。ビルドは **[初期化済み]** ステータスで開始されます。Amazon GameLift Servers によって正常にゲームサーバーファイルが取得されると、ビルドは **[準備完了] **ステータスに移行されます。

ビルドの準備ができたら、新しい Amazon GameLift Servers フリートにデプロイできます。詳細については、[Amazon GameLift Servers マネージド EC2 フリートを作成する](fleets-creating.md) を参照してください。Amazon GameLift Servers によって新しいフリートが設定されると、ビルドファイルが各フリートインスタンスにダウンロードされ、ビルドファイルがインストールされます。

# ファイルディレクトリから構築を作成する
<a name="gamelift-build-cli-uploading-upload-build"></a>

ローカルディレクトリを含む任意の場所に保存されたゲームビルドを作成するには、 [https://docs.aws.amazon.com/cli/latest/reference/gamelift/upload-build.html](https://docs.aws.amazon.com/cli/latest/reference/gamelift/upload-build.html) AWS CLI コマンドを使用します。このコマンドで Amazon GameLift Servers に新しいビルドレコードを作成し、指定した場所からファイルをアップロードします。

**アップロードリクエストを送信します。**コマンドラインウィンドウで、**upload-build** コマンドとパラメータを入力します。

```
aws gamelift upload-build \
    --name user-defined name of build \
    --operating-system supported OS \
    --server-sdk-version server SDK for Amazon GameLift Servers version \
    --build-root build path \
    --build-version user-defined build number \
    --region region name
```
+ **operating-system** – ゲームサーバービルドのランタイム環境。OS を指定する必要があります。これを後で更新することはできません。
+ **server-sdk-version** – ゲームサーバーが統合されている Amazon GameLift Serversサーバー SDK のバージョン。Amazon GameLift Servers の値を指定しない場合、`4.0.2` はデフォルト値を使用します。正しくないサーバー SDK バージョンを指定すると、Amazon GameLift Servers サービスへの接続を確立するために `InitSdk` を呼び出した際に、ゲームサーバービルドが失敗する可能性があります。
+ **build-root** – ビルドファイルのディレクトリパス。
+ **name** – 新しいビルドのわかりやすい名前。
+ **build-version** – ビルドファイルのバージョンの詳細。
+ **region** – ビルドを作成する AWS リージョン。フリートをデプロイする予定のリージョンにビルドを作成します。ゲームを複数のリージョンにデプロイする場合、各リージョンにビルドを作成します。
**注記**  
[https://docs.aws.amazon.com/cli/latest/reference/configure/get.html](https://docs.aws.amazon.com/cli/latest/reference/configure/get.html) を使用して現在のデフォルトのリージョンを表示します。デフォルトのリージョンを変更するには、[https://docs.aws.amazon.com/cli/latest/reference/configure/set.html](https://docs.aws.amazon.com/cli/latest/reference/configure/set.html) コマンドを使用します。

*例*

```
aws gamelift upload-build \
    --operating-system AMAZON_LINUX_2023 \
    --server-sdk-version "5.0.0" \
    --build-root "~/mygame" \
    --name "My Game Nightly Build" \
    --build-version "build 255" \
    --region us-west-2
```

```
aws gamelift upload-build \
    --operating-system WINDOWS_2022 \
    --server-sdk-version "5.0.0" \
    --build-root "C:\mygame" \
    --name "My Game Nightly Build" \
    --build-version "build 255" \
    --region us-west-2
```

アップロードリクエストに応じて、Amazon GameLift Servers はアップロードの進行状況を表示します。アップロードが成功すると、Amazon GameLift Servers は新しいビルドレコード ID を返します。アップロードの時間はゲームファイルのサイズおよび接続速度によって異なります。

# Amazon S3 内のファイルを使用して構築を作成する
<a name="gamelift-build-cli-uploading-create-build"></a>

ビルドファイルを Amazon S3 に保存し、そこから Amazon GameLift Servers にアップロードできます。ビルドを作成するときに、S3 バケットの場所を指定し、Amazon S3 から直接ビルドファイルAmazon GameLift Serversを取得します。

**ビルドリソースを作成するには**

1. **構築ファイルをAmazon S3 に保存する。**パッケージ化されたビルドファイルを含む .zip ファイルを作成し、 の S3 バケットにアップロードします AWS アカウント。バケットラベルとファイル名を書き留めておきます。Amazon GameLift Serversビルドを作成するときに必要になります。

1. **Amazon GameLift Servers にビルドファイルへのアクセスを許可します。**「[Amazon S3 でゲームビルドファイルにアクセスする](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-storage-loc)」の指示に従って IAM ロールを作成します。ロールを作成したら、新しいロールの Amazon リソースネーム (ARN) をメモしておきます。ビルドを作成するときにこれが必要になります。

1. **ビルドを作成します。**Amazon GameLift Servers コンソールまたは AWS CLI を使用して、新しいビルドレコードを作成します。「[Amazon GameLift Servers 向け IAM アクセス許可の例](gamelift-iam-policy-examples.md)」の説明の通り、`PassRole` アクセス許可が必要です。

------
#### [ Console ]

1. [[Amazon GameLift Servers コンソール]](https://console.aws.amazon.com/gamelift/) のナビゲーションペインで、**[ホスティング]**、**[ビルド]** を選択します。

1. **[ビルド]** ページで **[ビルドを作成]** を選択します。

1. **[ビルドを作成]** ページの **[ビルド設定]** で、次の操作を行います。

   1. **[名前]** にスクリプト名を入力します。

   1. **[バージョン]** に、バージョンを入力します。ビルドのコンテンツは更新できるので、バージョンデータは更新の追跡に役立ちます。

   1. **[オペレーティングシステム (OS])** では、ゲームサーバービルドの OS を選択します。この値を後で更新することはできません。

   1. **[ゲームサーバービルド]** では、Amazon S3 にアップロードしたビルドオブジェクトの **S3 URI** を入力し、**[オブジェクトのバージョン]** を選択します。Amazon S3 URI とオブジェクトのバージョンを覚えていない場合は、**[S3 の参照]** を選択し、ビルドオブジェクトを検索します。

   1. **[IAM ロール] **では、Amazon GameLift Servers に S3 バケットとビルドオブジェクトへのアクセスを許可するために作成したロールを選択します。

1. (オプション) **[タグ]** に **[キー]** と **[値]** のペアを入力して、ビルドにタグを追加します。

1. **[作成]** を選択します。

Amazon GameLift Serversは、ID を新しいビルドに割り当て、指定した zip ファイルをアップロードします。**[ビルド]** ページでは、ステータスを含めて新しいビルドを確認できます。

------
#### [ AWS CLI ]

新しいビルドを定義し、サーバービルドファイルをアップロードするには、[https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-build.html](https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-build.html) コマンドを使用します。

1. コマンドラインウィンドウを開き、 AWS CLIを使用できるディレクトリに切り替えます。

1. 次の **create-build** コマンドを入力します。

   ```
   aws gamelift create-build \
       --name user-defined name of build \
       --server-sdk-version server SDK for Amazon GameLift Servers version \
       --operating-system supported OS \
       --build-version user-defined build number \
       --storage-location "Bucket"=S3 bucket label,"Key"=Build .zip file name,"RoleArn"=Access role ARN} \
       --region region name
   ```
   + **name** – 新しいビルドのわかりやすい名前。
   + **server-sdk-version** – ゲームサーバーを Amazon GameLift Servers と統合するために使用したサーバー SDK for Amazon GameLift Servers のバージョンです。Amazon GameLift Servers の値を指定しない場合、`4.0.2` はデフォルト値を使用します。
   + **operating-system** – ゲームサーバービルドのランタイム環境。OS を指定する必要があります。これを後で更新することはできません。
   + **build-version** – ビルドファイルのバージョンの詳細。ゲームサーバーの新しいバージョンごとに新しいビルドリソースが必要になるため、この情報は役に立ちます。
   + **storage-location**
     + **Bucket** – ビルドを含む S3 バケットの名前。例:「my\$1build\$1files」。
     + **Key** – ビルドファイルを含む .zip ファイルの名前。例:「my\$1game\$1build\$17.0.1, 7.0.2」。
     + **RoleARN** – 作成した IAM ロールに割り当てられた ARN。例:「arn:aws:iam::111122223333:role/GameLiftAccess」。ポリシーの例については「[Amazon S3 でゲームビルドファイルにアクセスする](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-storage-loc)」を参照してください。
   + **region** – フリートをデプロイする予定の AWS リージョンにビルドを作成します。ゲームを複数のリージョンにデプロイする場合、各リージョンにビルドを作成します。
**注記**  
[https://docs.aws.amazon.com/cli/latest/reference/configure/get.html](https://docs.aws.amazon.com/cli/latest/reference/configure/get.html) コマンド [https://docs.aws.amazon.com/cli/latest/reference/configure/get.html](https://docs.aws.amazon.com/cli/latest/reference/configure/get.html) を使用して現在のデフォルトリージョンを確認することをおすすめします。デフォルトのリージョンを変更するには、[https://docs.aws.amazon.com/cli/latest/reference/configure/set.html](https://docs.aws.amazon.com/cli/latest/reference/configure/set.html) コマンドを使用します。

   *例*

   ```
   aws gamelift create-build \
       --operating-system WINDOWS_2022 \
       --storage-location "Bucket"="my_game_build_files","Key"="mygame_build_101.zip","RoleArn"="arn:aws:iam::111122223333:role/gamelift" \
       --name "My Game Nightly Build" \
       --build-version "build 101" \
       --region us-west-2
   ```

1. 新しいビルドを表示するには、[https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-build.html](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-build.html) コマンドを使用します。

------

# Amazon GameLift Servers 用のコンテナイメージを構築する
<a name="containers-prepare-images"></a>

このトピックでは、Amazon GameLift Servers で使用するゲームサーバーソフトウェアでコンテナイメージを作成する方法について説明します。ゲームサーバーコンテナイメージには、ゲームサーバー実行可能ファイルと実行する必要がある依存関係が含まれます。ゲームサーバーコンテナイメージは、Amazon GameLift Servers マネージドコンテナホスティングソリューションで使用されます。完全なソリューションの構築の詳細については、以下を参照してください。
+ [Amazon GameLift Servers マネージドコンテナでホスティングするための開発ロードマップ](gamelift-roadmap-containers.md)
+ [Amazon GameLift Servers におけるコンテナの仕組み](containers-howitworks.md)

ゲームサーバーコンテナイメージを Amazon GameLift Servers コンテナフリートにデプロイする準備を整えるには、次のタスクを実行します。これらのタスクを開始する前に、ゲームサーバーコードをAmazon GameLift Servers サーバー SDK と統合します。

**Topics**
+ [ゲームサーバーコンテナイメージを作成する](#containers-prepare-images-build)
+ [コンテナイメージを Amazon ECR にプッシュする](#containers-prepare-images-upload)

## ゲームサーバーコンテナイメージを作成する
<a name="containers-prepare-images-build"></a>

Linux ベースのプラットフォームで作業するとき、または Docker がインストールされている Windows Subsystem for Linux (WSL) を使用するときは、次の手順に従います。

**ゲームサーバーコンテナイメージを作成するには**

1. ゲームサーバーソフトウェアを使用して作業ディレクトリを準備します。ローカルマシンで、作業ディレクトリを作成して、ゲームサーバーコンテナのファイルを整理します。コンテナイメージは、ホスティング用の Amazon GameLift Servers リソースにコンテナをデプロイするときに、このファイル構造を使用します。例えば、次のようになります。

   ```
   [~/]$ mkdir -p work/glc/gamebuild && cd work && find .
   .
   ./glc
   ./glc/gamebuild
   ```
**注記**  
この機能を試みているが、ゲームサーバーをまだ構築していない場合は、GitHub で利用可能なサンプルゲームサーバー [SimpleServer](https://github.com/aws-solutions-library-samples/guidance-for-custom-game-backend-hosting-on-aws/tree/main/BackendFeatures/AmazonGameLiftIntegration/SimpleServer) をお試しください。

1. 提供されたテンプレートを使用して新しい Dockerfile を作成します。

1. Dockerfile テンプレートの指示に従って、独自の使用のために更新します。
   + 必要に応じてベースイメージを更新します。
   + ゲームサーバービルドの環境変数を設定します。

1. コンテナイメージを構築します。独自のリポジトリ名を指定して、`docker build` を実行します。例えば、次のようになります。

   ```
   [~/work/glc]$ docker build -t <local repository name>:<optional tag> .
   ```

   この例に示すように、`docker images` コマンドを使用してリポジトリとイメージ ID を表示できます。

## ゲームサーバーコンテナイメージの Dockerfile テンプレート
<a name="w2aab9c11c13c17c15b1"></a>

このテンプレートには、ゲームサーバーコンテナが Amazon GameLift Servers フリートで使用できるようにするために必要な最小限の手順が含まれています。ゲームサーバーに必要なコンテンツを変更します。

```
# Base image
# ----------
  # Add the base image that you want to use,
  # Make sure to use an image with the same architecture as the
  # Instance type you are planning to use on your fleets.
FROM public.ecr.aws/amazonlinux/amazonlinux
  #
# Game build directory
# --------------------
  # Add your gamebuild directory to the env variable below.
  # The game build provided here needs to be integrated with server sdk for Amazon GameLift Servers.
ENV GAME_BUILD_DIRECTORY="<ADD_GAME_BUILD_DIRECTORY>" \
  #
# Game executable and launch parameters
# ---------------
  # Add the relative path to your executable in the 'GAME_EXECUTABLE' env variable below.
  # The game build provided over here needs to be integrated with server sdk for Amazon GameLift Servers.
  # This template assumes that the executable path is relative to the game build directory.
  # Add any launch parameters to pass into your executable in the 'LAUNCH_PARAMS' env variable below.
  # Add 'HOME_DIR' to identify where the game executable and logs exist.
GAME_EXECUTABLE="<ADD NAME OF EXECUTABLE WITHIN THE GAME DIRECTORY>" \
LAUNCH_PARAMS=<ADD LAUNCH PARAMETERS> \
HOME_DIR="/local/game" \


# Install dependencies as necessary
RUN yum install -y shadow-utils
    
RUN mkdir -p $HOME_DIR
COPY ./$GAME_BUILD_DIRECTORY/ $HOME_DIR
    
# Change directory to home
WORKDIR $HOME_DIR
    
# Set up for 'gamelift' user
RUN useradd -m gamelift && \
  echo "gamelift ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
  chown -R gamelift:gamelift $HOME_DIR

# Add permissions to game build
RUN chmod +x ./$GAME_EXECUTABLE
    
USER gamelift
    
# Check directory before starting the container
RUN ls -lhrt .
    
# Check path before starting the container
RUN echo $PATH
    
# Start the game build
ENTRYPOINT ["/bin/sh", "-c", "./$GAME_EXECUTABLE", "$LAUNCH_PARAMS"]
```

## コンテナイメージを Amazon ECR にプッシュする
<a name="containers-prepare-images-upload"></a>

Amazon GameLift Servers にデプロイするコンテナイメージを作成したら、そのイメージを Amazon ECR のパブリックリポジトリまたはプライベートリポジトリに保存します。このリポジトリには URI 値が割り当てられ、Amazon GameLift Servers を使用してコンテナフリートにデプロイするためのイメージのスナップショットを作成します。

**注記**  
Amazon ECR プライベートリポジトリがまだない場合は、[作成します](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)。

**コンテナイメージを Amazon ECR にプッシュする**

1. Amazon ECR 認証情報を取得します。コンテナイメージを Amazon ECR にプッシュする前に、まず一時的な形式で AWS 認証情報を取得し、Docker に提供します。Docker では、ログインにこれらの認証情報が必要です。

   ```
   [~/work/glc]$ aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-west-2.amazonaws.com
   WARNING! Your password will be stored unencrypted in 
   /home/user-name/.docker/config.json.
   Configure a credential helper to remove this warning.
   See https://docs.docker.com/engine/reference/commandline/login/#credentials-store
   
   Login Succeeded
   ```

1. 使用する [Amazon ECR プライベートリポジトリ](https://console.aws.amazon.com/ecr/private-registry/repositories)の URI をコピーします。

1. コンテナイメージに Amazon ECR タグを付与します。  
**Example**  

   ```
   [~/work/glc]$ docker tag <IMAGE ID from above> <Amazon ECR private repository URI>:<optional tag>
   ```

1. コンテナイメージを Amazon ECR にプッシュする  
**Example**  

   ```
   [~/work/glc]$ docker image push  <Amazon ECR private repository URI>
   ```