添加构建安装脚本 - Amazon GameLift Servers

添加构建安装脚本

创建适用于您的游戏构建操作系统(OS)的安装脚本:

  • Windows:创建名为 install.bat 的批处理文件。

  • Linux:创建名为 install.sh 的 Shell 脚本文件。

在创建安装脚本时,请注意以下事项:

  • 该脚本不接受任何用户输入。

  • Amazon GameLift Servers 在托管服务器上的以下位置安装生成包并重新创建生成包中的文件目录:

    • Windows 实例集:C:\game

    • Linux 实例集:/local/game

  • 在 Linux 实例集安装过程中,run-as 用户具有对实例文件结构的有限访问权限。此用户对安装您的构建文件的目录拥有全部权限。如果您的安装脚本执行的操作需要管理员权限,请使用 sudo 指定管理员访问权限。默认情况下,Windows 实例集的 run-as 用户具有管理员权限。与安装脚本相关的权限失败会生成一条事件消息,此消息指示脚本出现问题。

  • 在 Linux 上,Amazon GameLift Servers 支持常用的 Shell 解释器语言,例如 bash。在安装脚本的顶部添加 shebang (例如 #!/bin/bash)。要验证对您的首选 Shell 命令的支持,可以远程访问活动的 Linux 实例并打开 Shell 提示符。有关更多信息,请参阅远程连接到 Amazon GameLift Servers 实例集实例

  • 安装脚本不能依赖于 VPC 对等连接。直到 Amazon GameLift Servers 在实例集实例上安装生成包后,VPC 对等连接才可用。

例 Windows 安装 bash 文件

此示例 install.bat 文件安装游戏服务器所需的 Visual C++ 运行时组件,然后将结果写入日志文件。脚本包含根目录下构建包中的组件文件。

vcredist_x64.exe /install /quiet /norestart /log c:\game\vcredist_2013_x64.log
例 Linux 安装 Shell 脚本

此示例 install.sh 文件在安装脚本中使用 bash 并将结果写入日志文件。

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

此示例 install.sh 文件展示了如何使用 Amazon CloudWatch 代理收集系统级和自定义指标以及处理日志轮换。由于 Amazon GameLift Servers 在服务 VPC 中运行,因此您必须向 Amazon GameLift Servers 授予代表您担任 AWS Identity and Access Management(IAM)角色的权限。要允许 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. } } } 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