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

AWS::GameLift::Fleet

AWS::GameLift::Fleet 资源创建一个 Amazon GameLift (GameLift) 队列来托管游戏服务器。队列是一组 EC2 实例,每个实例可以托管多个游戏会话。

语法

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

JSON

{ "Type" : "AWS::GameLift::Fleet", "Properties" : { "BuildId" : String, "CertificateConfiguration" : CertificateConfiguration, "Description" : String, "DesiredEC2Instances" : Integer, "EC2InboundPermissions" : [ IpPermission, ... ], "EC2InstanceType" : String, "FleetType" : String, "InstanceRoleARN" : String, "LogPaths" : [ String, ... ], "MaxSize" : Integer, "MetricGroups" : [ String, ... ], "MinSize" : Integer, "Name" : String, "NewGameSessionProtectionPolicy" : String, "PeerVpcAwsAccountId" : String, "PeerVpcId" : String, "ResourceCreationLimitPolicy" : ResourceCreationLimitPolicy, "RuntimeConfiguration" : RuntimeConfiguration, "ScriptId" : String, "ServerLaunchParameters" : String, "ServerLaunchPath" : String } }

属性

BuildId

要在新队列上部署的内部版本的唯一标识符。如果要在队列中部署自定义游戏版本,您必须指定该属性。内部版本必须已成功上传到 Amazon GameLift 并处于 READY 状态。在创建队列之后,将无法更改此队列设置。

必需:条件

类型:字符串

模式^build-\S+|^arn:.*:build\/build-\S+

Update requires: Replacement

CertificateConfiguration

指示是否为新队列生成 TLS/SSL 证书。TLS 证书用于加密在 GameLift 上运行的游戏客户端和游戏服务器之间传输的流量。如果未设置该参数,则禁止生成证书。在创建队列之后,将无法更改此队列设置。要了解更多信息,请参阅保护客户端/服务器通信

注意:该功能需要使用 AWS Certificate Manager (ACM) 服务,在 AWS 全球分区中提供了该服务,但在所有其他分区中未提供该服务。在不支持该功能的分区中工作时,请求具有证书生成结果的新队列将失败并显示 4xx unsupported region 错误。

必需:否

类型CertificateConfiguration

Update requires: Replacement

Description

用户可读的队列描述。

必需:否

类型:字符串

最低1

最高1024

Update requires: No interruption

DesiredEC2Instances

您希望该队列托管的 EC2 实例数。在创建新队列时,GameLift 自动将该值设置为“1”并启动一个实例。在队列处于活动状态后,更新该值以触发 GameLift,从而在队列中添加或删除实例。

必需:否

类型:整数

最低0

Update requires: No interruption

EC2InboundPermissions

一系列 IP 地址和端口设置,允许入站流量连接到 Amazon GameLift 服务器上的服务器进程。

必需:否

类型IpPermission 的列表

最高50

Update requires: No interruption

EC2InstanceType

Amazon GameLift 中支持的 EC2 实例类型的名称。队列实例类型决定队列中每个实例的计算资源,包括 CPU、内存、存储和网络容量。Amazon GameLift 支持以下 EC2 实例类型。有关详细说明,请参阅 Amazon EC2 实例类型

必需:是

类型:字符串

允许的值c3.2xlarge | c3.4xlarge | c3.8xlarge | c3.large | c3.xlarge | c4.2xlarge | c4.4xlarge | c4.8xlarge | c4.large | c4.xlarge | c5.12xlarge | c5.18xlarge | c5.24xlarge | c5.2xlarge | c5.4xlarge | c5.9xlarge | c5.large | c5.xlarge | m3.2xlarge | m3.large | m3.medium | m3.xlarge | m4.10xlarge | m4.2xlarge | m4.4xlarge | m4.large | m4.xlarge | m5.12xlarge | m5.16xlarge | m5.24xlarge | m5.2xlarge | m5.4xlarge | m5.8xlarge | m5.large | m5.xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge | r3.large | r3.xlarge | r4.16xlarge | r4.2xlarge | r4.4xlarge | r4.8xlarge | r4.large | r4.xlarge | r5.12xlarge | r5.16xlarge | r5.24xlarge | r5.2xlarge | r5.4xlarge | r5.8xlarge | r5.large | r5.xlarge | t2.large | t2.medium | t2.micro | t2.small

Update requires: Replacement

FleetType

指示是在该队列中使用按需实例还是 Spot 实例。如果为空,则默认值为 ON_DEMAND。根据为该队列选择的实例类型,两种类别的实例使用相同的硬件和配置。要了解更多信息,请参阅按需实例与 Spot 实例

必需:否

类型:字符串

允许的值ON_DEMAND | SPOT

Update requires: Replacement

InstanceRoleARN

管理 AWS 服务访问的 AWS IAM 角色的唯一标识符。如果设置了实例角色 ARN,在该队列中的实例上运行的任何应用程序可以担任该角色,包括安装脚本、服务器进程和守护程序(后台进程)。在 AWS 管理控制台的 IAM 控制面板中创建一个角色或查找角色的 ARN。要了解在游戏服务器中使用现成凭证的更多信息,请参阅从游戏服务器中访问外部资源

必需:否

类型:字符串

最低1

Update requires: Replacement

LogPaths

不再使用此参数。在托管自定义游戏版本时,请使用 Amazon GameLift 服务器 API 调用 ProcessReady() 指定 Amazon GameLift 应在何处存储日志文件。有关更多信息,请参阅服务器 API 参考

必需:否

类型:字符串列表

Update requires: Replacement

MaxSize

允许的队列实例数最大值。在创建新的队列时,GameLift 自动将该值设置为“1”。在队列处于活动状态后,您可以更改该值。

必需:否

类型:整数

最低0

Update requires: No interruption

MetricGroups

Amazon CloudWatch 指标组的名称。指标组汇总该组中的所有队列的指标。请指定一个包含指标组名称的字符串。您可以使用现有的名称,或者使用新名称创建新的指标组。目前,该参数只能具有一个字符串。

必需:否

类型:字符串列表

最高1

Update requires: No interruption

MinSize

允许的队列实例数最小值。在创建新的队列时,GameLift 自动将该值设置为“0”。在队列处于活动状态后,您可以更改该值。

必需:否

类型:整数

最低0

Update requires: No interruption

Name

与队列关联的描述性标签。队列名称不必是唯一的。

必需:是

类型:字符串

最低1

最高1024

Update requires: No interruption

NewGameSessionProtectionPolicy

游戏会话保护策略,将应用于该队列中的实例上托管的所有游戏会话。如果受保护,则在缩减事件期间无法终止活动游戏会话。如果未设置该参数,则该队列中的实例默认为无保护。您可以更改队列的保护策略以影响队列上的将来游戏会话。此外,您还可以为单独的游戏会话设置保护。

必需:否

类型:字符串

允许的值FullProtection | NoProtection

Update requires: No interruption

PeerVpcAwsAccountId

具有要与 Amazon GameLift 队列对等使用的 VPC 的 AWS 账户的唯一标识符。可以在 AWS 管理控制台中的账户设置下面找到您的账户 ID。

必需:否

类型:字符串

最低1

最高1024

Update requires: Replacement

PeerVpcId

具有 Amazon GameLift 队列访问的资源的 VPC 的唯一标识符。VPC 必须与队列位于同一区域中。要查找 VPC ID,请使用 AWS 管理控制台中的 VPC 控制面板。要了解 VPC 对等的更多信息,请参阅将 VPC 与 Amazon GameLift 队列对等使用

必需:否

类型:字符串

最低1

最高1024

Update requires: Replacement

ResourceCreationLimitPolicy

限制单个玩家可以在一段时间内为该队列创建的游戏会话数的策略。

必需:否

类型ResourceCreationLimitPolicy

Update requires: No interruption

RuntimeConfiguration

用于在队列中的每个实例上启动服务器进程的指令。服务器进程运行自定义游戏版本可执行文件或实时脚本。运行时配置定义服务器可执行文件或启动脚本文件、启动参数以及在每个实例上同时运行的进程数。在创建队列时,运行时配置必须至少具有一个服务器进程配置;否则,请求将失败并发生无效的请求异常。

除非定义了 ServerLaunchPathServerLaunchParameters 参数,否则,该参数是必需的。运行时配置替换了这些参数,但使用它们的队列将继续正常工作。

必需:条件

类型RuntimeConfiguration

Update requires: No interruption

ScriptId

要在新的实时服务器队列上部署的实时脚本的唯一标识符。该脚本必须已成功上传到 Amazon GameLift 中。在创建队列之后,将无法更改此队列设置。

注意:目前,无法使用 !Ref 命令引用使用 CloudFormation 模板为队列属性 ScriptId 创建的脚本。应使用 Fn::GetAtt Script.ArnFn::GetAtt Script.Id 检索任一属性以作为 ScriptId 输入。或者,手动输入 ScriptId 字符串。

必需:条件

类型:字符串

模式^script-\S+|^arn:.*:script\/script-\S+

Update requires: Replacement

ServerLaunchParameters

不再使用该参数,保留该参数是为了保持向后兼容。应在 RuntimeConfiguration 参数中指定服务器启动参数。请求必须为 ServerLaunchParameters 和 ServerLaunchPath 指定运行时配置或值。

必需:条件

类型:字符串

最低1

最高1024

Update requires: Replacement

ServerLaunchPath

不再使用此参数。应使用 RuntimeConfiguration 参数指定服务器启动路径。如果请求指定服务器启动路径和启动参数而不是运行时配置,这些请求将继续正常工作。

必需:条件

类型:字符串

最低1

最高1024

Update requires: Replacement

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回队列 ID,例如 fleet-1111aaaa-22bb-33cc-44dd-5555eeee66ff

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

示例

为内部版本创建 GameLift 队列

以下示例为自定义游戏版本创建和配置 GameLift 队列。该队列使用 Ref 内部函数指定一个内部版本,它可在同一模板中的其他位置声明。日志路径和服务器启动路径的示例语法使用 Windows 内部版本的值。

注意:JSON 示例说明了如何转义正斜杠 (\\)。

JSON

{ "Resources": { "FleetResource": { "Type": "AWS::GameLift::Fleet", "Properties": { "BuildId": { "Ref": "BuildResource" }, "CertificateConfiguration": { "CertificateType": "DISABLED" }, "Description": "Description of my Fleet", "DesiredEc2Instances": 1, "EC2InboundPermissions": [ { "FromPort": "1234", "ToPort": "1324", "IpRange": "0.0.0.0/24", "Protocol": "TCP" }, { "FromPort": "1356", "ToPort": "1578", "IpRange": "192.168.0.0/24", "Protocol": "UDP" } ], "EC2InstanceType": "c4.large", "FleetType": "SPOT", "LogPaths": [ "c:\\game\\testlog.log", "c:\\game\\testlog2.log" ], "MetricGroups": [ "MetricGroupName" ], "Name": "MyGameFleet", "NewGameSessionProtectionPolicy": "FullProtection", "ResourceCreationLimitPolicy": { "NewGameSessionsPerCreator": 5, "PolicyPeriodInMinutes": 2 }, "RuntimeConfiguration": { "GameSessionActivationTimeoutSeconds": 300, "MaxConcurrentGameSessionActivations": 1, "ServerProcesses": [ { "ConcurrentExecutions": 1, "LaunchPath": "c:\\game\\TestApplicationServer.exe" } ] } } } } }

YAML

Resources: FleetResource: Type: AWS::GameLift::Fleet Properties: BuildId: !Ref BuildResource CertificateConfiguration: CertificateType: DISABLED Description: Description of my Game Fleet DesiredEc2Instances: 1 EC2InboundPermissions: - FromPort: '1234' ToPort: '1324' IpRange: 0.0.0.0/24 Protocol: TCP - FromPort: '1356' ToPort: '1578' IpRange: 192.168.0.0/24 Protocol: UDP EC2InstanceType: c4.large FleetType: SPOT LogPaths: - c:\game\testlog.log - c:\game\testlog2.log MetricGroups: - MetricGroupName Name: MyGameFleet NewGameSessionProtectionPolicy: FullProtection ResourceCreationLimitPolicy: NewGameSessionsPerCreator: 5 PolicyPeriodInMinutes: 2 RuntimeConfiguration: GameSessionActivationTimeoutSeconds: 300 MaxConcurrentGameSessionActivations: 1 ServerProcesses: - ConcurrentExecutions: 1 LaunchPath: c:\game\TestApplicationServer.exe

使用脚本创建 GameLift 队列

以下示例创建并配置 GameLift 队列以运行实时服务器。队列使用 GetAtt 内部函数指定一个脚本,可以在同一模板中的其他位置声明该脚本。请注意,日志路径和服务器启动路径的语法示例适用于 Linux,因为所有实时服务器是使用 Linux 部署的。

JSON

{ "Resources": { "FleetResource": { "Type": "AWS::GameLift::Fleet", "Properties": { "CertificateConfiguration": { "CertificateType": "DISABLED" }, "Description": "Description of my Game Fleet", "DesiredEC2Instances": 1, "EC2InboundPermissions": [ { "FromPort": "1234", "ToPort": "1324", "IpRange": "0.0.0.0/24", "Protocol": "TCP" }, { "FromPort": "1356", "ToPort": "1578", "IpRange": "192.168.0.0/24", "Protocol": "UDP" } ], "EC2InstanceType": "c4.large", "FleetType": "SPOT", "LogPaths": [ "/local/game/testlog.log", "/local/game/testlog2.log" ], "MetricGroups": [ "MetricGroupName" ], "Name": "MyGameFleet", "NewGameSessionProtectionPolicy": "FullProtection", "ResourceCreationLimitPolicy": { "NewGameSessionsPerCreator": 5, "PolicyPeriodInMinutes": 2 }, "RuntimeConfiguration": { "GameSessionActivationTimeoutSeconds": 300, "MaxConcurrentGameSessionActivations": 1, "ServerProcesses": [ { "ConcurrentExecutions": 1, "LaunchPath": "/local/game/myscript.js" } ] }, "ScriptId": { "Fn::GetAtt": [ "ScriptResource", "Id" ] } } } } }

YAML

Resources: FleetResource: Type: AWS::GameLift::Fleet Properties: CertificateConfiguration: CertificateType: DISABLED Description: Description of my game fleet DesiredEC2Instances: 1 EC2InboundPermissions: - FromPort: '1234' ToPort: '1324' IpRange: 0.0.0.0/24 Protocol: TCP - FromPort: '1356' ToPort: '1578' IpRange: 192.168.0.0/24 Protocol: UDP EC2InstanceType: c4.large FleetType: SPOT LogPaths: - '/local/game/testlog.log' - '/local/game/testlog2.log' MetricGroups: - MetricGroupName Name: MyGameFleet NewGameSessionProtectionPolicy: FullProtection ResourceCreationLimitPolicy: NewGameSessionsPerCreator: 5 PolicyPeriodInMinutes: 2 RuntimeConfiguration: GameSessionActivationTimeoutSeconds: 300 MaxConcurrentGameSessionActivations: 1 ServerProcesses: - ConcurrentExecutions: 1 LaunchPath: '/local/game/myscript.js' ScriptId: !GetAtt ScriptResource.Id

另请参阅