AWS::GameLift::GameServerGroup - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::GameLift::GameServerGroup

AWS::GameLift::GameServerGroup 资源创建一个 GameLift FleetIQ 游戏服务器组,用于管理 Amazon EC2 实例集合上的游戏托管。此操作将创建游戏服务器组,此外,在您的 AWS 账户中创建关联的 EC2 Auto Scaling 组。创建组后,可以在 GameLift FleetIQ 游戏服务器组中查看和更新某些属性,而其他属性则直接在 Auto Scaling 组中进行管理。GameLift FleetIQ(作为其优化组实例以实现低成本游戏托管的平衡活动的一部分)定期更新某些 Auto Scaling 组属性。游戏服务器组指标和事件发到 Amazon CloudWatch。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::GameLift::GameServerGroup", "Properties" : { "AutoScalingPolicy" : AutoScalingPolicy, "BalancingStrategy" : String, "DeleteOption" : String, "GameServerGroupName" : String, "GameServerProtectionPolicy" : String, "InstanceDefinitions" : InstanceDefinitions, "LaunchTemplate" : LaunchTemplate, "MaxSize" : Double, "MinSize" : Double, "RoleArn" : String, "Tags" : Tags, "VpcSubnets" : VpcSubnets } }

属性

AutoScalingPolicy

用于定义针对游戏托管进行优化的扩展策略的配置设置。使用指标 "PercentUtilizedGameServers",此扩展策略旨在维护空闲游戏服务器的一个缓冲区,以满足玩家需求的高峰。创建游戏服务器组和 Auto Scaling 组后,直接使用 Auto Scaling 组 控制台或 API 更新扩展策略设置。

必需:否

类型AutoScalingPolicy

Update requires: Updates are not supported.

BalancingStrategy

指示 GameLift FleetIQ 如何平衡游戏服务器组中 Spot 实例和按需实例的使用。方法选项包含以下内容:

  • SPOT_ONLY - 游戏服务器组中仅使用 Spot 实例。如果 Spot 实例不可用或不适用于游戏托管,则游戏服务器组不提供托管容量,直至再次使用 Spot 实例。在此之前,不会启动任何新实例,现有不可行的 Spot 实例(在当前游戏结束后)将终止并且不会被替换。

  • SPOT_PREFERRED -(默认值)当 Spot 实例在游戏服务器组中可用时,使用此类实例。如果 Spot 实例不可用,游戏服务器组将继续通过回退到按需实例来提供托管容量。现有不可行的 Spot 实例(在当前游戏结束后)将终止,并替换为新的按需实例。

  • ON_DEMAND_ONLY - 游戏服务器组中仅使用按需实例。在此平衡策略生效期间,即使 Spot 实例可用,也不会使用此类实例。

必需:否

类型:字符串

允许的值ON_DEMAND_ONLY | SPOT_ONLY | SPOT_PREFERRED

Update requires: No interruption

DeleteOption

要执行的堆栈删除的类型。如果要删除具有非默认删除类型的堆栈,请先使用首选删除类型更新堆栈,然后删除堆栈。删除选项包括:

  • SAFE_DELETE –(默认)仅当游戏服务器组和 EC2 Auto Scaling 组没有处于 UTILIZED 状态的游戏服务器时,才终止游戏服务器组和 EC2 Auto Scaling 组。

  • FORCE_DELETE – 终止游戏服务器组,包括所有活动的游戏服务器(无论其利用率状态如何)以及 EC2 Auto Scaling 组。

  • RETAIN – 安全删除游戏服务器组,但按原样保留 EC2 Auto Scaling 组。

必需:否

类型:字符串

允许的值FORCE_DELETE | RETAIN | SAFE_DELETE

Update requires: No interruption

GameServerGroupName

开发人员定义的游戏服务器组的标识符。该名称对于每个 AWS 账户中的每个区域都是唯一的。

必需:是

类型:字符串

最低1

最高128

模式[a-zA-Z0-9-\.]+

Update requires: No interruption

GameServerProtectionPolicy

一个标志,指示游戏服务器组中的实例是否受到保护以免提前终止。正在运行活动的游戏服务器的未受保护的实例可能会在缩减事件期间终止,从而导致从游戏中删除玩家。除非强制删除游戏服务器组,否则在运行活动的游戏服务器时,无法终止受保护的实例。Spot 实例是一个例外,无论保护状态如何,AWS 都可以终止此类实例。

必需:否

类型:字符串

允许的值FULL_PROTECTION | NO_PROTECTION

Update requires: No interruption

InstanceDefinitions

GameLift FleetIQ 在重新平衡和自动扩展组中的实例时可以使用的一组 EC2 实例类型。游戏服务器组必须至少指定两种实例类型。

必需:是

类型InstanceDefinitions

最高20

Update requires: No interruption

LaunchTemplate

EC2 启动模板,其中包含要部署到游戏服务器组中所有实例的配置设置和游戏服务器代码。您可以使用模板名称或 ID 指定模板。有关创建启动模板的帮助,请参阅 Amazon EC2 Auto Scaling 用户指南 中的为 Auto Scaling 组创建启动模板。创建游戏服务器和 Auto Scaling 组后,直接使用 Auto Scaling 组 控制台或 API 更新此属性。

必需:是

类型LaunchTemplate

Update requires: Updates are not supported.

MaxSize

EC2 Auto Scaling 组中允许的最大实例数。在自动扩展事件期间,GameLift FleetIQ 和 EC2 向上扩展组时不会超过此最大值。创建游戏服务器和 Auto Scaling 组后,直接使用 Auto Scaling 组 控制台或 API 更新此属性。

必需:否

类型:双精度

最低1

Update requires: Updates are not supported.

MinSize

EC2 Auto Scaling 组中允许的最小实例数。在自动扩展事件期间,GameLift FleetIQ 和 EC2 不会将组缩减至低于此最小值。在生产中,此值应至少设置为 1。创建游戏服务器和 Auto Scaling 组后,直接使用 Auto Scaling 组 控制台或 API 更新此属性。

必需:否

类型:双精度

最低0

Update requires: Updates are not supported.

RoleArn

IAM 角色的 Amazon 资源名称 (ARN),该角色允许 Amazon GameLift 访问您的 EC2 Auto Scaling 组。

必需:是

类型:字符串

最低1

最高256

模式^arn:.*:role\/[\w+=,.@-]+

Update requires: No interruption

Tags

要应用于此资源的键值对的数组。

有关更多信息,请参阅标签

必需:否

类型标签

最高200

Update requires: No interruption

VpcSubnets

用于游戏服务器组中实例的 Virtual Private Cloud (VPC) 子网列表。默认情况下,将使用 GameLift FleetIQ 支持的所有可用区。您可以使用此参数指定已设置的 VPC。创建游戏服务器组后无法更新此属性,并且相应的 Auto Scaling 组将始终使用通过此请求设置的属性值,即使直接更新 Auto Scaling 组也是如此。

必需:否

类型VpcSubnets

最高20

Update requires: Updates are not supported.

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回分配给游戏服务器组的唯一 Amazon 资源名称 (ARN)。

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

AutoScalingGroupArn

Not currently supported by AWS CloudFormation.

GameServerGroupArn

分配给游戏服务器组的唯一 Amazon 资源名称 (ARN)。

示例

创建一个 FleetIQ 游戏服务器组

以下示例创建一个游戏服务器组和 Auto Scaling 组,后者使用两种不同的实例类型将您的游戏服务器软件部署到 Spot 实例。游戏服务器组设置为仅使用 Spot 实例,因此,如果这些类型的 Spot 实例不可用,则在 Spot 资源再次可用之前,游戏服务器组实际上不会启动新的游戏服务器。示例请求还会触发创建目标跟踪 Auto Scaling 策略。使用此策略,Auto Scaling 组可以保持大约 75% 的游戏服务器利用率。25% 的空闲容量使游戏服务器组能够立即满足玩家需求的突然增长。

JSON

{ "Resources": { "GameServerGroupResource": { "Type": "AWS::GameLift::GameServerGroup", "Properties": { "GameServerGroupName": "MegaFrogServers_NA", "RoleArn": "arn:aws:iam:123456789012::role/GameLiftGsgRole", "MinSize": 1, "MaxSize": 1000, "GameServerProtectionPolicy": "NO_PROTECTION", "BalancingStrategy": "SPOT_ONLY", "LaunchTemplate": { "LaunchTemplateId": "lt-1234567890abcdef", }, "InstanceDefinitions": [ {"InstanceType": "c5.xlarge"}, {"InstanceType": "m5.xlarge"} ], "AutoScalingPolicy": { "TargetTrackingConfiguration": { "TargetValue": 75 } } } } } }

YAML

Resources: GameServerGroupResource: Type: AWS::GameLift::GameServerGroup Properties: GameServerGroupName: "MegaFrogServers_NA" RoleArn: !GetAtt IAMRole.Arn MinSize: 1 MaxSize: 1000 GameServerProtectionPolicy: "NO_PROTECTION" BalancingStrategy: "SPOT_ONLY" LaunchTemplate: LaunchTemplateId: "lt-1234567890abcdef" InstanceDefinitions: - InstanceType: "c5.xlarge" - InstanceType: "m5.xlarge" AutoScalingPolicy: TargetTrackingConfiguration: TargetValue: 75

另请参阅