# @aws-cdk/aws-gamelift-alpha 中文文档

规范地址：https://npmcn.com/package/%40aws-cdk/aws-gamelift-alpha/

版本：2\.275\.0-alpha\.0
npm 元数据更新时间：2026-10-26T19:18:15.260Z
中文译文更新时间：2026-11-07T19:27:26.237Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aws-cdk/aws-gamelift-alpha
原文对照：https://npmcn.com/package/%40aws-cdk/aws-gamelift-alpha/?lang=original
项目主页：https://github.com/aws/aws-cdk
源码仓库：https://github.com/aws/aws-cdk

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.3 MB，41 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 20\.0\.0
- 运行依赖：0 个
- peer 依赖：constructs ^10\.5\.0，aws-cdk-lib ^2\.275\.0
- 首次发布：2022-10-06T10:22:52.982Z
- 最新版本发布：2026-10-26T19:18:13.134Z
- 近 30 天下载量：2960（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：309（近 12 个月 64 个）

## 中文简介

AWS: GameLift 的 CDK 构造库

## 安装

```sh
npm install @aws-cdk/aws-gamelift-alpha
```

也可以使用：`pnpm add @aws-cdk/aws-gamelift-alpha`、`yarn add @aws-cdk/aws-gamelift-alpha`、`bun add @aws-cdk/aws-gamelift-alpha`

## README

# 亚马逊 GameLift 构造库

* * *

![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)

> 本单元中更高层次的构件的API是实验性的并正在积极开发中. 在今后任何版本中,它们都须作非背向相容的修改或去除。 这些是 不适用 [语义版本](https://semver.org/) 模型和断开的更改 在发行笔记中宣布. 这意味着虽然你可能使用它们,但可能需要更新 当更新到此软件包的更新版本时,您的源代码.

* * *

[亚马逊GameLift](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-intro.html) 是所使用的服务 为基于会话的多人游戏在云中部署、操作和规模化专用低成本服务器。 已建成 在AWS全球计算基础设施上,GameLift帮助提供高性能,高可靠性的游戏服务器 同时动态地缩放您的资源使用量,以满足全球玩家的需求.

GameLift由三个主要部分组成:

-   GameLift FlexMatch 是自定义匹配服务 多人游戏. 通过FlexMatch,你可以 构建一套自定义规则,定义多人比赛的外观 用于您的游戏,并决定如何 为每场比赛评价和选择相容的玩家。 您也可以自定义 配对的关键方面 进程以适应您的游戏,包括调整匹配算法.
    
-   GameLift 自定义或实时服务器的托管, 帮助您部署, 操作,并缩放专用游戏服务器。 它管理所需资源,以便 主机游戏,找到可用的游戏服务器来托管新的游戏会话,并放置 玩游戏.
    
-   GameLift FleetIQ 优化低成本亚马逊弹性计算云的使用 (Amazon EC2) Spotexts用于基于云的游戏托管. 使用 GameLift 游戏 FleetIQ, 您可以直接使用您的主机资源在 Amazon EC2 和 亚马逊 EC2 自动放大,同时利用 GameLift 优化 为您的玩家提供廉价、有弹性的游戏托管服务
    

这个模块是 [AWS 云开发套件](https://github.com/aws/aws-cdk) 项目。 它允许您定义匹配的组件 配置或游戏服务器机队管理系统.

## GameLift 弹性游戏

### 定义匹配配置

FlexMatch作为GameLift游戏主机解决方案(包括 实时服务器)并作为一个独立的配对服务. 设立 FlexMatch 匹配者处理匹配请求, 您必须创建 基于 RulesSet 的匹配配置.

更多关于配对规则的细节被覆盖 [下级](https://npmcn.com/package/%40aws-cdk/aws-gamelift-alpha/#readme-matchmaking-ruleset)。 。 。 .

搭配配置有两种类型:

通过游戏会话排队系统让FlexMatch格式匹配,并使用指定的GameLift队列开始比赛的游戏会话.

```ts
declare const queue: gamelift.GameSessionQueue;
declare const ruleSet: gamelift.MatchmakingRuleSet;

new gamelift.QueuedMatchmakingConfiguration(this, 'QueuedMatchmakingConfiguration', {
  matchmakingConfigurationName: 'test-queued-config-name',
  gameSessionQueues: [queue],
  ruleSet: ruleSet,
});
```

或者通过一个独立的版本,让FlexMatch在某一事件中形成匹配并返回匹配的信息.

```ts
declare const ruleSet: gamelift.MatchmakingRuleSet;

new gamelift.StandaloneMatchmakingConfiguration(this, 'StandaloneMatchmaking', {
  matchmakingConfigurationName: 'test-standalone-config-name',
  ruleSet: ruleSet,
});
```

关于游戏会话队列的更多细节被覆盖 [下级](https://npmcn.com/package/%40aws-cdk/aws-gamelift-alpha/#readme-game-session-queue)。 。 。 .

### 匹配规则集

每个FlexMatch选手都必须有一套规则. 规则集决定 比赛的两个关键要素: 比赛的团队结构和大小,以及如何进行 组合玩家一起进行最佳匹配.

例如,规则集可以描述这样的匹配: 创建匹配 两队各由四到八名选手组成 一队是牛仔 另一队是牛仔 和外星人组队 团队可以有新手和经验丰富的球员,但 两个小组的平均技能必须相差10分。 如果没有 相配在30秒后完成,并逐渐放宽技能要求.

```ts
new gamelift.MatchmakingRuleSet(this, 'RuleSet', {
  matchmakingRuleSetName: 'my-test-ruleset',
  content: gamelift.RuleSetContent.fromJsonFile(path.join(__dirname, 'my-ruleset', 'ruleset.json')),
});
```

### FlexMatch 监视器

您可以监视 GameLift FlexMatch 的匹配配置活动和 使用亚马逊云表进行配对的规则。 这些统计数据用于提供 一个历史视角,关于你的 Gamelift FlexMatch 解决方案是如何运行的.

#### FlexMatch 计量

GameLift FlexMatch 向 Cloud Watch 发送度量衡, 以便您能够收集并且 分析您的匹配解决方案的活动,包括匹配接受度 工作流程、票价.

然后可以使用 Cloud Watch 提醒提醒您, 例如当匹配时 被拒绝( 潜在匹配被至少一个玩家拒绝) 自上次报告以来),超过了一定的节奏,这可能意味着你可以 你的配对规则有问题.

CDK提供了使用默认配置访问 GameLift FlexMatch 度量衡的方法, 例如 `metricRuleEvaluationsPassed`,或 `metricRuleEvaluationsFailed` (见 [`IMatchmakingRuleSet`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-gamelift.IMatchmakingRuleSet.html) 为完整的名单。 CDK 也提供了一个通用 `metric` 可使用的方法 a. 为GameLift FlexMatch提供的任何度量计生成度量配置; 配置预留了正确的尺寸 匹配配置.

```ts
declare const matchmakingRuleSet: gamelift.MatchmakingRuleSet;
// Alarm that triggers when the per-second average of not placed matches exceed 10%
const ruleEvaluationRatio = new cloudwatch.MathExpression({
  expression: '1 - (ruleEvaluationsPassed / ruleEvaluationsFailed)',
  usingMetrics: {
    ruleEvaluationsPassed: matchmakingRuleSet.metricRuleEvaluationsPassed({ statistic: cloudwatch.Statistic.SUM }),
    ruleEvaluationsFailed: matchmakingRuleSet.metric('ruleEvaluationsFailed'),
  },
});
new cloudwatch.Alarm(this, 'Alarm', {
  metric: ruleEvaluationRatio,
  threshold: 0.1,
  evaluationPeriods: 3,
});
```

见: [利用云表量表进行监测](https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html) 输入 _Amazon GameLift 开发者指南_。 。 。 .

## GameLift 托管

### 上传构建和脚本到 GameLift

在使用 GameLift 服务托管您的 GameLift 启用多人游戏服务器前, 您需要上传 您的游戏服务器文件。 本节为自定义游戏服务器的准备和上传提供指导 文件或实时服务器服务器脚本文件。 当上传文件时,您会创建 GameLift 构建或脚本资源 然后部署在托管资源的舰队中.

与服务器脚本相关的故障启动问题,请参见 [调试 GameLift 车队问题](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html)。 。 。 .

#### 上传自定义服务器构建到 GameLift

在将所配置的游戏服务器上传到GameLift托管之前,将游戏构建文件打包入构建目录. 此目录必须包括运行您的游戏服务器和主机游戏会话所需的所有组件,包括以下内容:

-   游戏服务器二进制 – 运行游戏服务器所需的二进制文件. 构建可以包含多个游戏的二进制 用于在同一平台运行的服务器。 关于所支持平台的列表,参见 [下载 Amazon GameLift SDKs](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-supported.html)。 。 。 .
    
-   依赖性 - 您的游戏服务器执行文件需要运行的任何依赖文件 。 实例包括资产、配置 文件,以及依赖的库.
    
-   安装脚本 – 一个脚本文件, 处理需要完全安装的基于 GameLift 主机的游戏的任务 服务器。 将此文件放置在构建目录的根上 。 GameLift运行安装脚本作为车队创建的一部分.
    

您可以在您的构建中设置任何应用程序, 包括您的安装脚本, 以便在其他 AWS 上安全访问您的资源 服务.

```ts
declare const bucket: s3.Bucket;
const build = new gamelift.Build(this, 'Build', {
  content: gamelift.Content.fromBucket(bucket, "sample-asset-key")
});

new CfnOutput(this, 'BuildArn', { value: build.buildArn });
new CfnOutput(this, 'BuildId', { value: build.buildId });
```

要指定您在将您的游戏服务器构建与 Amazon GameLift 合并时使用的 SDK 服务器版本 `serverSdkVersion` 参数 :

> 见 [将游戏与自定义游戏服务器整合](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-custom-intro.html) 更多细节.

```ts
declare const bucket: s3.Bucket;
const build = new gamelift.Build(this, 'Build', {
  content: gamelift.Content.fromBucket(bucket, "sample-asset-key"),
  serverSdkVersion: '5.0.0',
});
```

#### 上传一个实时服务器脚本

您的服务器脚本可以包含一个或数个合并为单个.zip文件的文件来上传. .zip 文件必须包含 您的脚本需要运行的所有文件.

您可以在本地文件目录或亚马逊简易存储服务( Amazon S3) 中存储您的已绑定的脚本文件 桶或定义目录资产,该目录资产作为.zip文件存档,并在部署时上传到S3.

在您创建了脚本资源后, GameLift 以新的实时服务器车队来部署脚本. GameLift 安装您的 将脚本文件放入 `/local/game`。 。 。 .

```ts
declare const bucket: s3.Bucket;
new gamelift.Script(this, 'Script', {
  content: gamelift.Content.fromBucket(bucket, "sample-asset-key")
});
```

### 定义 GameLift 船队

#### 创建自定义游戏服务器群

您上传的游戏服务器托管在 GameLift 虚拟计算资源上, 称为实例。 你通过建立一支由下列单位组成的车队来建立自己的托管资源: 实例,并用于运行您的游戏服务器。 你可以设计一个舰队 满足你的游戏需求.

```ts
new gamelift.BuildFleet(this, 'Game server fleet', {
  fleetName: 'test-fleet',
  content: gamelift.Build.fromAsset(this, 'Build', path.join(__dirname, 'CustomerGameServer')),
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  runtimeConfiguration: {
    serverProcesses: [{
      launchPath: 'test-launch-path',
    }],
  },
});
```

### 管理游戏服务器启动配置

GameLift 使用车队的运行时间配置来确定类型和数量 机队每个实例的流程。 至少,一个运行时间 配置包含一个代表一个的服务器进程配置 游戏服务器可执行文件 。 您也可以定义额外的服务器进程 用于运行与游戏有关的其他类型进程的配置。 每个 服务器进程配置包含以下信息:

-   您游戏构建中可执行文件的文件名和路径 .
    
-   可选参数在发射时传递给过程.
    
-   要同时运行的流程数 .
    

GameLift 实例仅限于同时运行的50个进程.

```ts
declare const build: gamelift.Build;
// Server processes can be delcared in a declarative way through the constructor
const fleet = new gamelift.BuildFleet(this, 'Game server fleet', {
  fleetName: 'test-fleet',
  content: build,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  runtimeConfiguration: {
    serverProcesses: [{
      launchPath: '/local/game/GameLiftExampleServer.x86_64',
      parameters: '-logFile /local/game/logs/myserver1935.log -port 1935',
      concurrentExecutions: 100,
    }]
  }
});
```

见 [管理游戏服务器如何启动托管](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-multiprocess.html) 输入 _Amazon GameLift 开发者指南_。 。 。 .

### 定义实例类型

GameLift 使用 Amazon 弹性计算云 (Amazon EC2) 资源,称为 实例,用于为您的玩家部署您的游戏服务器并托管游戏会话. 当设置新舰队时, 您会决定您需要什么样的实例 以及如何在它们上运行游戏服务器进程(使用运行时配置). 车队中的所有实例使用相同的资源类型和相同的运行时间 配置 。 您可以编辑车队运行时配置和其他车队 属性,但资源类型不能更改.

```ts
declare const build: gamelift.Build;
new gamelift.BuildFleet(this, 'Game server fleet', {
  fleetName: 'test-fleet',
  content: build,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE),
  runtimeConfiguration: {
    serverProcesses: [{
      launchPath: '/local/game/GameLiftExampleServer.x86_64',
    }]
  }
});
```

### 使用斑点实例

在设置您的主机资源时, 您可以选择使用 Spot 案例,即"待决案例",或组合.

默认情况下,机队正在按需使用容量.

```ts
declare const build: gamelift.Build;
new gamelift.BuildFleet(this, 'Game server fleet', {
  fleetName: 'test-fleet',
  content: build,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  runtimeConfiguration: {
    serverProcesses: [{
      launchPath: '/local/game/GameLiftExampleServer.x86_64',
    }]
  },
  useSpot: true
});
```

### 允许入侵

允许进入的 IP 地址范围和端口设置 访问本舰队的游戏会话.

新的游戏会话被指定为 IP 地址/ port 数字组合, 即 必须掉入舰队允许的射程 拥有自定义游戏构建的舰队必须 明确设置权限。 对于实时服务器车队, GameLift 自动打开两个端口范围,一个用于 TCP 消息,一个用于 UDP.

```ts
declare const build: gamelift.Build;

const fleet = new gamelift.BuildFleet(this, 'Game server fleet', {
  fleetName: 'test-fleet',
  content: build,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  runtimeConfiguration: {
    serverProcesses: [{
      launchPath: '/local/game/GameLiftExampleServer.x86_64',
    }]
  },
  ingressRules: [{
    source: gamelift.Peer.anyIpv4(),
    port: gamelift.Port.tcpRange(100, 200),
  }]
});
// Allowing a specific CIDR for port 1111 on UDP Protocol
fleet.addIngressRule(gamelift.Peer.ipv4('1.2.3.4/32'), gamelift.Port.udp(1111));
```

### 管理地点

Amazon GameLift车队默认拥有一个主区域(区域为您) 用于),但它可以将资源部署到任何获得支持的GameLift 地区。 根据您的玩家所在位置选择区域 需要时间.

默认情况下,主区域被用作默认位置,但如果需要,我们可以添加新的位置并定义期望的能力

```ts
declare const build: gamelift.Build;

// Locations can be added directly through constructor
const fleet = new gamelift.BuildFleet(this, 'Game server fleet', {
  fleetName: 'test-fleet',
  content: build,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  runtimeConfiguration: {
    serverProcesses: [{
      launchPath: '/local/game/GameLiftExampleServer.x86_64',
    }]
  },
  locations: [ {
    region: 'eu-west-1',
    capacity: {
      desiredCapacity: 5,
      minSize: 2,
      maxSize: 10
    }
  }, {
    region: 'us-east-1',
    capacity: {
      desiredCapacity: 5,
      minSize: 2,
      maxSize: 10
    }
  }]
});

// Or through dedicated methods
fleet.addLocation('ap-southeast-1', 5, 2, 10);
```

### 为舰队指定一个IAM角色

一些 GameLift 特性需要您将有限的访问扩展至您的 AWS 资源。 这是通过创建AWS IAM角色来实现的. GameLift 舰队级 自动创建具有所有最低必要权限的 IAM 角色 gameLift 访问您的资源。 如果你想的话,你可以 指定您自己的 IAM 角色 .

```ts
declare const build: gamelift.Build;
const role = new iam.Role(this, 'Role', {
  assumedBy: new iam.CompositePrincipal(new iam.ServicePrincipal('gamelift.amazonaws.com'))
});
role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('CloudWatchAgentServerPolicy'));

const fleet = new gamelift.BuildFleet(this, 'Game server fleet', {
  fleetName: 'test-fleet',
  content: build,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE),
  runtimeConfiguration: {
    serverProcesses: [{
      launchPath: '/local/game/GameLiftExampleServer.x86_64',
    }]
  },
  role: role
});

// Actions can also be grantted through dedicated method
fleet.grant(role, 'gamelift:ListFleets');
```

### 别名

一个GameLift的别名用于抽象舰队命名. 舰队名称 告诉 Amazon GameLift 在创建新资源时查找可用的资源 玩家的游戏会话。 通过使用化名而不是特定的舰队身份,你 更方便和无缝地将玩家的流量从一个车队切换到另一个车队 通过改变化名的目标位置.

```ts
declare const fleet: gamelift.BuildFleet;

// Add an alias to an existing fleet using a dedicated fleet method
const liveAlias = fleet.addAlias('live');

// You can also create a standalone alias
new gamelift.Alias(this, 'TerminalAlias', {
  aliasName: 'terminal-alias',
  terminalMessage: 'A terminal message',
});
```

见 [在 GameLift 机队中添加别名](https://docs.aws.amazon.com/gamelift/latest/developerguide/aliases-creating.html) 输入 _Amazon GameLift 开发者指南_。 。 。 .

### 监视你的舰队

GameLift 与 Cloud Watch 集成, 这样您就可以监视 您的游戏服务器通过日志和参数.

#### 车队计量

GameLift Fleet 向 Cloud Watch 发送度量衡, 以便您收集和分析 您的舰队的活动,包括游戏和玩家会话以及服务器 进程.

然后可以使用 Cloud Watch 提醒提醒您, 例如当匹配时 被拒绝( 潜在匹配被至少一个玩家拒绝) 自上次报告以来),超过一定限度,这可能意味着您可以 你的配对规则有问题.

CDK提供了默认配置的 GameLift Fleet 度量衡访问方法, 例如 `metricActiveInstances`,或 `metricIdleInstances` (见 [`IFleet`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-gamelift.IFleet.html) 为完整的名单。 CDK 也提供了一个通用 `metric` 可使用的方法 生成GameLift Fleet提供的任何度量的度量配置, 游戏会话或服务器进程; 配置会预选 匹配配置的正确尺寸.

```ts
declare const fleet: gamelift.BuildFleet;
// Alarm that triggers when the per-second average of not used instances exceed 10%
const instancesUsedRatio = new cloudwatch.MathExpression({
  expression: '1 - (activeInstances / idleInstances)',
  usingMetrics: {
    activeInstances: fleet.metric('ActiveInstances', { statistic: cloudwatch.Statistic.SUM }),
    idleInstances: fleet.metricIdleInstances(),
  },
});
new cloudwatch.Alarm(this, 'Alarm', {
  metric: instancesUsedRatio,
  threshold: 0.1,
  evaluationPeriods: 3,
});
```

见: [利用云表量表进行监测](https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html) 输入 _Amazon GameLift 开发者指南_。 。 。 .

## 游戏会话队列

游戏会话排队是处理新游戏会话的主要机制 请求并定位可用的游戏服务器以主机。 虽然如此 可能要求在特定舰队或地点主办新的游戏会话.

这个 `GameSessionQueue` 资源创建用于处理请求的放置队列 新游戏会话。 队列使用 FleetIQ 算法确定最佳位置 位置并找到可用的游戏服务器,然后提示游戏服务器启动 新游戏会话 。 队列可以有目的地(GameLift车队或别名),其中 确定队列可以放置新游戏会话。 队列可以有目的地 包括各种舰队类型(现场和现场)、实例类型和AWS区域.

```ts
declare const fleet: gamelift.BuildFleet;
declare const alias: gamelift.Alias;

const queue = new gamelift.GameSessionQueue(this, 'GameSessionQueue', {
  gameSessionQueueName: 'my-queue-name',
  destinations: [fleet]
});
queue.addDestination(alias);
```

还可以定义一个更复杂的配置,以凌驾于FleetIQ算法如何优先安排游戏会话位置,从而有利于基于 `Cost`, (中文(简体) ), `Latency`, (中文(简体) ), `Destination order`或者说 `Location`。 。 。 .

```ts
declare const fleet: gamelift.BuildFleet;
declare const topic: sns.Topic;

new gamelift.GameSessionQueue(this, 'MyGameSessionQueue', {
      gameSessionQueueName: 'test-gameSessionQueue',
      customEventData: 'test-event-data',
      allowedLocations: ['eu-west-1', 'eu-west-2'],
      destinations: [fleet],
      notificationTarget: topic,
      playerLatencyPolicies: [{
        maximumIndividualPlayerLatency: Duration.millis(100),
        policyDuration: Duration.seconds(300),
      }],
      priorityConfiguration: {
        locationOrder: [
          'eu-west-1',
          'eu-west-2',
        ],
        priorityOrder: [
          gamelift.PriorityType.LATENCY,
          gamelift.PriorityType.COST,
          gamelift.PriorityType.DESTINATION,
          gamelift.PriorityType.LOCATION,
        ],
      },
      timeout: Duration.seconds(300),
    });
```

见 [设置游戏会话设置的 GameLift 队列](https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-script-uploading.html) 输入 _Amazon GameLift 开发者指南_。 。 。 .

## GameLift FleetIQ (英语)

GameLift FleetIQ 解决方案是一个游戏托管层,可以补充完整 与 Amazon EC2 和 自动缩放。 此解决方案允许您直接管理您的 Amazon EC2 和 Auto 扩大资源,并视需要与其他AIS服务整合.

### 定义游戏服务器组

当使用 GameLift FleetIQ 时, 您准备启动 Amazon EC2 实例 常数 : 用您的游戏服务器软件制作一个 Amazon 机器图像( AMI), 创建 Amazon EC2 启动模板,并定义配置设置 自动缩放组 。 然而,与其创建自动缩放组 直接使用您的 Amazon EC2 创建 GameLift FleetIQ 游戏服务器组 和自动缩放资源和配置。 所有游戏服务器组必须拥有 至少为它定义了两种实例类型.

一旦游戏服务器组和自动缩放组与 已部署实例, 当更新 Game 服务器组实例时, 只指定 自动缩放组中的属性可能被覆盖。 用于所有其他自动 缩放组属性, 如 MinSize、 MaxSize 和 LaunchTemplate, 您可以 使用 AWS 控制台或 献上爱比.

```ts
declare const launchTemplate: ec2.ILaunchTemplate;
declare const vpc: ec2.IVpc;

new gamelift.GameServerGroup(this, 'Game server group', {
  gameServerGroupName: 'sample-gameservergroup-name',
  instanceDefinitions: [{
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE),
  },
  {
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  }],
  launchTemplate: launchTemplate,
  vpc: vpc
});
```

见 [管理游戏服务器组](https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-integrate-gameservergroup.html) 输入 _Amazon GameLift FleetIQ 开发者指南_。 。 。 .

### 缩放政策

缩放政策使用度量法 `PercentUtilizedGameServers` 维持a 缓冲可以立即容纳新游戏的闲置游戏服务器 玩家们.

```ts
declare const launchTemplate: ec2.ILaunchTemplate;
declare const vpc: ec2.IVpc;

new gamelift.GameServerGroup(this, 'Game server group', {
  gameServerGroupName: 'sample-gameservergroup-name',
  instanceDefinitions: [{
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE),
  },
  {
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  }],
  launchTemplate: launchTemplate,
  vpc: vpc,
  autoScalingPolicy: {
    estimatedInstanceWarmup: Duration.minutes(5),
    targetTrackingConfiguration: 5
  }
});
```

见 [管理游戏服务器组](https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-integrate-gameservergroup.html) 输入 _Amazon GameLift FleetIQ 开发者指南_。 。 。 .

### 指定 GameLift 的 IAM 角色

GameLift FleetIQ 类自动创建了 IAM 角色,并具有所有最低限度的必要 gameLift 访问您的 Amazon EC2 自动缩放组的权限。 如果你想的话,你可以 指定您自己的 IAM 角色 。 它必须拥有正确的权限,否则FleetIQ创建或资源使用可能失败.

```ts
declare const launchTemplate: ec2.ILaunchTemplate;
declare const vpc: ec2.IVpc;

const role = new iam.Role(this, 'Role', {
  assumedBy: new iam.CompositePrincipal(new iam.ServicePrincipal('gamelift.amazonaws.com'),
  new iam.ServicePrincipal('autoscaling.amazonaws.com'))
});
role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('GameLiftGameServerGroupPolicy'));

new gamelift.GameServerGroup(this, 'Game server group', {
  gameServerGroupName: 'sample-gameservergroup-name',
  instanceDefinitions: [{
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE),
  },
  {
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  }],
  launchTemplate: launchTemplate,
  vpc: vpc,
  role: role
});
```

见 [控制访问](https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-iam-permissions-roles.html) 输入 _Amazon GameLift FleetIQ 开发者指南_。 。 。 .

### 指定 VPC 子网

GameLift FleetIQ 默认使用, 均支持 GameLift FleetIQ 可用性 在你选择的地区 您可以覆盖此参数以指定 VPC 你设置的子网.

此属性在游戏服务器组创建后无法更新, 且 相应的自动缩放组将总是使用设置的属性值 ,即使自动缩放组直接更新.

```ts
declare const launchTemplate: ec2.ILaunchTemplate;
declare const vpc: ec2.IVpc;

new gamelift.GameServerGroup(this, 'GameServerGroup', {
  gameServerGroupName: 'sample-gameservergroup-name',
  instanceDefinitions: [{
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE),
  },
  {
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.C4, ec2.InstanceSize.LARGE),
  }],
  launchTemplate: launchTemplate,
  vpc: vpc,
  vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC }
});
```

### FleetIQ 监测

GameLift FleetIQ 向 Cloud Watch 发送度量衡,以便您可以收集并获取 分析您的游戏服务器机群的活动,包括 使用游戏服务器,以及由于 零星可用性有限.

然后可以使用 Cloud Watch 提醒提醒您, 例如当部分 目前支持游戏执行的游戏服务器超过一定的 阈值可能意味着您的自动缩放策略需要调整到 添加更多实例以匹配玩家需求.

CDK 提供了一个通用 `metric` 可使用的方法 (一) 为GameLift FleetIQ提供的任何度量衡生成度量配置; 配置预留了正确的尺寸 匹配配置.

```ts
declare const gameServerGroup: gamelift.IGameServerGroup;
// Alarm that triggers when the percent of utilized game servers exceed 90%
new cloudwatch.Alarm(this, 'Alarm', {
  metric: gameServerGroup.metric('UtilizedGameServers'),
  threshold: 0.9,
  evaluationPeriods: 2,
});
```

见: [用云表监测](https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-metrics.html) 输入 _Amazon GameLift FleetIQ 开发者指南_。 。 。 .

## 常见问题

### @aws-cdk/aws-gamelift-alpha 是什么？

AWS: GameLift 的 CDK 构造库

### 如何安装 @aws-cdk/aws-gamelift-alpha？

在项目目录运行 npm install @aws-cdk/aws-gamelift-alpha，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：constructs（^10\.5\.0）、aws-cdk-lib（^2\.275\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aws-cdk/aws-gamelift-alpha 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aws-cdk/aws-gamelift-alpha 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @aws-cdk/aws-gamelift-alpha 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>= 20\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @aws-cdk/aws-gamelift-alpha 可以商用吗？

@aws-cdk/aws-gamelift-alpha 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @aws-cdk/aws-gamelift-alpha 的下载量有多少？

根据 npm 官方下载统计，@aws-cdk/aws-gamelift-alpha 在 2026/10/08 – 2026/11/06 这 30 天内被下载 2,960 次，日均约 99 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aws-cdk/aws-gamelift-alpha 还在维护吗？

最新版本 2\.275\.0-alpha\.0 发布于 2026/10/27（12 天前）；至今共发布 309 个版本，其中过去 12 个月发布了 64 个；首次发布于 2022/10/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

