package awscdkgameliftalpha import ( "github.com/aws/aws-cdk-go/awscdk/v2/awsec2" "github.com/aws/aws-cdk-go/awscdk/v2/awsiam" ) // Properties for a new Gamelift FleetIQ Game server group. // // Example: // var launchTemplate iLaunchTemplate // var vpc iVpc // // // gamelift.NewGameServerGroup(this, jsii.String("GameServerGroup"), &GameServerGroupProps{ // GameServerGroupName: jsii.String("sample-gameservergroup-name"), // InstanceDefinitions: []instanceDefinition{ // &instanceDefinition{ // InstanceType: ec2.InstanceType_Of(ec2.InstanceClass_C5, ec2.InstanceSize_LARGE), // }, // &instanceDefinition{ // InstanceType: ec2.InstanceType_*Of(ec2.InstanceClass_C4, ec2.InstanceSize_LARGE), // }, // }, // LaunchTemplate: launchTemplate, // Vpc: vpc, // VpcSubnets: &SubnetSelection{ // SubnetType: ec2.SubnetType_PUBLIC, // }, // }) // // Experimental. type GameServerGroupProps struct { // A developer-defined identifier for the game server group. // // The name is unique for each Region in each AWS account. // Experimental. GameServerGroupName *string `field:"required" json:"gameServerGroupName" yaml:"gameServerGroupName"` // The set of Amazon EC2 instance types that GameLift FleetIQ can use when balancing and automatically scaling instances in the corresponding Auto Scaling group. // Experimental. InstanceDefinitions *[]*InstanceDefinition `field:"required" json:"instanceDefinitions" yaml:"instanceDefinitions"` // The Amazon EC2 launch template that contains configuration settings and game server code to be deployed to all instances in the game server group. // // After the Auto Scaling group is created, update this value directly in the Auto Scaling group using the AWS console or APIs. // // NOTE: // If you specify network interfaces in your launch template, you must explicitly set the property AssociatePublicIpAddress to `true`. // If no network interface is specified in the launch template, GameLift FleetIQ uses your account's default VPC. // See: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html // // Experimental. LaunchTemplate awsec2.ILaunchTemplate `field:"required" json:"launchTemplate" yaml:"launchTemplate"` // The VPC network to place the game server group in. // // By default, all GameLift FleetIQ-supported Availability Zones are used. // // You can use this parameter to specify VPCs that you've set up. // // This property cannot be updated after the game server group is created, // and the corresponding Auto Scaling group will always use the property value that is set with this request, // even if the Auto Scaling group is updated directly. // Experimental. Vpc awsec2.IVpc `field:"required" json:"vpc" yaml:"vpc"` // Configuration settings to define a scaling policy for the Auto Scaling group that is optimized for game hosting. // // The scaling policy uses the metric `PercentUtilizedGameServers` to maintain a buffer of idle game servers that can immediately accommodate new games and players. // // After the Auto Scaling group is created, update this value directly in the Auto Scaling group using the AWS console or APIs. // Experimental. AutoScalingPolicy *AutoScalingPolicy `field:"optional" json:"autoScalingPolicy" yaml:"autoScalingPolicy"` // Indicates how GameLift FleetIQ balances the use of Spot Instances and On-Demand Instances in the game server group. // Experimental. BalancingStrategy BalancingStrategy `field:"optional" json:"balancingStrategy" yaml:"balancingStrategy"` // The type of delete to perform. // // To delete a game server group, specify the DeleteOption. // Experimental. DeleteOption DeleteOption `field:"optional" json:"deleteOption" yaml:"deleteOption"` // The maximum number of instances allowed in the Amazon EC2 Auto Scaling group. // // During automatic scaling events, GameLift FleetIQ and EC2 do not scale up the group above this maximum. // // After the Auto Scaling group is created, update this value directly in the Auto Scaling group using the AWS console or APIs. // Experimental. MaxSize *float64 `field:"optional" json:"maxSize" yaml:"maxSize"` // The minimum number of instances allowed in the Amazon EC2 Auto Scaling group. // // During automatic scaling events, GameLift FleetIQ and Amazon EC2 do not scale down the group below this minimum. // // In production, this value should be set to at least 1. // // After the Auto Scaling group is created, update this value directly in the Auto Scaling group using the AWS console or APIs. // Experimental. MinSize *float64 `field:"optional" json:"minSize" yaml:"minSize"` // A flag that indicates whether instances in the game server group are protected from early termination. // // Unprotected instances that have active game servers running might be terminated during a scale-down event, causing players to be dropped from the game. // Protected instances cannot be terminated while there are active game servers running except in the event of a forced game server group deletion. // // An exception to this is with Spot Instances, which can be terminated by AWS regardless of protection status. // Experimental. ProtectGameServer *bool `field:"optional" json:"protectGameServer" yaml:"protectGameServer"` // The IAM role that allows Amazon GameLift to access your Amazon EC2 Auto Scaling groups. // See: https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-iam-permissions-roles.html // // Experimental. Role awsiam.IRole `field:"optional" json:"role" yaml:"role"` // Game server group subnet selection. // Experimental. VpcSubnets *awsec2.SubnetSelection `field:"optional" json:"vpcSubnets" yaml:"vpcSubnets"` }