ビルドインストールスクリプトを追加する - Amazon GameLift

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

ビルドインストールスクリプトを追加する

ゲームビルドのオペレーティングシステム (OS) 用のインストールスクリプトを作成します。

  • Windows:「install.bat」という名前のバッチファイルを作成します。

  • Linux:「install.sh」という名前のシェルスクリプトファイルを作成します。

インストールスクリプトを作成するときは、次の点に留意してください。

  • このスクリプトはユーザー入力を一切受け付けません。

  • Amazon はビルド GameLift をインストールし、次の場所のホスティングサーバーにビルドパッケージ内のファイルディレクトリを再作成します。

    • Windows フリート: C:\game

    • Linux フリート: /local/game

  • Linux フリートのインストールプロセスで、run-as ユーザーは、インスタンスのファイル構造へのアクセスが制限されます。このユーザーは、ビルドファイルがインストールされているディレクトリに対しては完全な権限があります。インストールスクリプトが管理者アクセス許可を必要とするアクションを実行する場合は、sudo を使用して管理者アクセスを指定します。Windows フリートの run-as ユーザーには、デフォルトで管理者アクセス許可があります。インストールスクリプトに関連するアクセス許可の失敗により、スクリプトに問題があることを示すイベントメッセージが生成されます。

  • Linux では、Amazon は bash などの一般的なシェルインタープリタ言語 GameLift をサポートしています。shebang (#!/bin/bash など) を、インストールスクリプトの先頭に追加します。目的のシェルコマンドのサポートについて確認するには、アクティブな Linux インスタンスにリモートにアクセスし、シェルコマンドを開きます。詳細については、「Amazon GameLift フリートインスタンスにリモート接続する」を参照してください。

  • インストールスクリプトはVPCピアリング接続に依存できません。VPC ピアリング接続は、Amazon がフリートインスタンスにビルド GameLift をインストールするまで使用できません。

例 Windows インストール bash ファイル

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

vcredist_x64.exe /install /quiet /norestart /log c:\game\vcredist_2013_x64.log
例 Linux インストールシェルスクリプト

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

#!/bin/bash echo 'Hello World' > install.log

このサンプルinstall.shファイルは、Amazon CloudWatch エージェントを使用してシステムレベルおよびカスタムメトリクスを収集し、ログローテーションを処理する方法を示しています。Amazon はサービス で GameLift 実行されるためVPC、ユーザーに代わって AWS Identity and Access Management (IAM) ロールを引き受けるアクセス GameLift 許可を Amazon に付与する必要があります。Amazon GameLift がロールを引き受けられるようにするには、 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. } } } 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