class Aws::GameLift::Types::CreateGameServerGroupInput

@note When making an API call, you may pass CreateGameServerGroupInput

data as a hash:

    {
      game_server_group_name: "GameServerGroupName", # required
      role_arn: "IamRoleArn", # required
      min_size: 1, # required
      max_size: 1, # required
      launch_template: { # required
        launch_template_id: "LaunchTemplateId",
        launch_template_name: "LaunchTemplateName",
        version: "LaunchTemplateVersion",
      },
      instance_definitions: [ # required
        {
          instance_type: "c4.large", # required, accepts c4.large, c4.xlarge, c4.2xlarge, c4.4xlarge, c4.8xlarge, c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge, c5.12xlarge, c5.18xlarge, c5.24xlarge, c5a.large, c5a.xlarge, c5a.2xlarge, c5a.4xlarge, c5a.8xlarge, c5a.12xlarge, c5a.16xlarge, c5a.24xlarge, r4.large, r4.xlarge, r4.2xlarge, r4.4xlarge, r4.8xlarge, r4.16xlarge, r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r5.8xlarge, r5.12xlarge, r5.16xlarge, r5.24xlarge, r5a.large, r5a.xlarge, r5a.2xlarge, r5a.4xlarge, r5a.8xlarge, r5a.12xlarge, r5a.16xlarge, r5a.24xlarge, m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, m5.8xlarge, m5.12xlarge, m5.16xlarge, m5.24xlarge, m5a.large, m5a.xlarge, m5a.2xlarge, m5a.4xlarge, m5a.8xlarge, m5a.12xlarge, m5a.16xlarge, m5a.24xlarge
          weighted_capacity: "WeightedCapacity",
        },
      ],
      auto_scaling_policy: {
        estimated_instance_warmup: 1,
        target_tracking_configuration: { # required
          target_value: 1.0, # required
        },
      },
      balancing_strategy: "SPOT_ONLY", # accepts SPOT_ONLY, SPOT_PREFERRED, ON_DEMAND_ONLY
      game_server_protection_policy: "NO_PROTECTION", # accepts NO_PROTECTION, FULL_PROTECTION
      vpc_subnets: ["VpcSubnet"],
      tags: [
        {
          key: "TagKey", # required
          value: "TagValue", # required
        },
      ],
    }

@!attribute [rw] game_server_group_name

An identifier for the new game server group. This value is used to
generate unique ARN identifiers for the EC2 Auto Scaling group and
the GameLift FleetIQ game server group. The name must be unique per
Region per AWS account.
@return [String]

@!attribute [rw] role_arn

The Amazon Resource Name ([ARN][1]) for an IAM role that allows
Amazon GameLift to access your EC2 Auto Scaling groups.

[1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html
@return [String]

@!attribute [rw] min_size

The minimum number of instances allowed in the EC2 Auto Scaling
group. During automatic scaling events, GameLift FleetIQ and 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.
@return [Integer]

@!attribute [rw] max_size

The maximum number of instances allowed in the 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.
@return [Integer]

@!attribute [rw] launch_template

The EC2 launch template that contains configuration settings and
game server code to be deployed to all instances in the game server
group. You can specify the template using either the template name
or ID. For help with creating a launch template, see [Creating a
Launch Template for an Auto Scaling Group][1] in the *Amazon EC2
Auto Scaling User Guide*. After the Auto Scaling group is created,
update this value directly in the Auto Scaling group using the AWS
console or APIs.

<note markdown="1"> 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.

 </note>

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html
@return [Types::LaunchTemplateSpecification]

@!attribute [rw] instance_definitions

The EC2 instance types and sizes to use in the Auto Scaling group.
The instance definitions must specify at least two different
instance types that are supported by GameLift FleetIQ. For more
information on instance types, see [EC2 Instance Types][1] in the
*Amazon EC2 User Guide*. You can optionally specify capacity
weighting for each instance type. If no weight value is specified
for an instance type, it is set to the default value "1". For more
information about capacity weighting, see [ Instance Weighting for
Amazon EC2 Auto Scaling][2] in the Amazon EC2 Auto Scaling User
Guide.

[1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html
[2]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-weighting.html
@return [Array<Types::InstanceDefinition>]

@!attribute [rw] auto_scaling_policy

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.
@return [Types::GameServerGroupAutoScalingPolicy]

@!attribute [rw] balancing_strategy

Indicates how GameLift FleetIQ balances the use of Spot Instances
and On-Demand Instances in the game server group. Method options
include the following:

* `SPOT_ONLY` - Only Spot Instances are used in the game server
  group. If Spot Instances are unavailable or not viable for game
  hosting, the game server group provides no hosting capacity until
  Spot Instances can again be used. Until then, no new instances are
  started, and the existing nonviable Spot Instances are terminated
  (after current gameplay ends) and are not replaced.

* `SPOT_PREFERRED` - (default value) Spot Instances are used
  whenever available in the game server group. If Spot Instances are
  unavailable, the game server group continues to provide hosting
  capacity by falling back to On-Demand Instances. Existing
  nonviable Spot Instances are terminated (after current gameplay
  ends) and are replaced with new On-Demand Instances.

* `ON_DEMAND_ONLY` - Only On-Demand Instances are used in the game
  server group. No Spot Instances are used, even when available,
  while this balancing strategy is in force.
@return [String]

@!attribute [rw] game_server_protection_policy

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
(see ). An exception to this is with Spot Instances, which can be
terminated by AWS regardless of protection status. This property is
set to `NO_PROTECTION` by default.
@return [String]

@!attribute [rw] vpc_subnets

A list of virtual private cloud (VPC) subnets to use with instances
in the game server group. 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.
@return [Array<String>]

@!attribute [rw] tags

A list of labels to assign to the new game server group resource.
Tags are developer-defined key-value pairs. Tagging AWS resources is
useful for resource management, access management, and cost
allocation. For more information, see [ Tagging AWS Resources][1] in
the *AWS General Reference*. Once the resource is created, you can
use TagResource, UntagResource, and ListTagsForResource to add,
remove, and view tags, respectively. The maximum tag limit may be
lower than stated. See the AWS General Reference for actual tagging
limits.

[1]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html
@return [Array<Types::Tag>]

@see docs.aws.amazon.com/goto/WebAPI/gamelift-2015-10-01/CreateGameServerGroupInput AWS API Documentation

Constants

SENSITIVE