

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 添加构建安装脚本
<a name="gamelift-build-cli-uploading-install"></a>

创建适用于您的游戏构建操作系统（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 提示符。有关更多信息，请参阅[Connect 连接到舰队实例](fleets-remote-access.md)。
+ 安装脚本不能依赖于 VPC 对等连接。直到 Amazon GameLift Servers 在实例集实例上安装生成包后，VPC 对等连接才可用。

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

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

**Example 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](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
```