Class GameServerGroup


  • public class GameServerGroup
    extends com.pulumi.resources.CustomResource
    Provides an GameLift Game Server Group resource. ## Example Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.gamelift.GameServerGroup;
     import com.pulumi.aws.gamelift.GameServerGroupArgs;
     import com.pulumi.aws.gamelift.inputs.GameServerGroupLaunchTemplateArgs;
     import com.pulumi.aws.gamelift.inputs.GameServerGroupInstanceDefinitionArgs;
     import com.pulumi.resources.CustomResourceOptions;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new GameServerGroup("example", GameServerGroupArgs.builder()
                 .launchTemplate(GameServerGroupLaunchTemplateArgs.builder()
                     .id(exampleAwsLaunchTemplate.id())
                     .build())
                 .instanceDefinitions(            
                     GameServerGroupInstanceDefinitionArgs.builder()
                         .instanceType("c5.large")
                         .build(),
                     GameServerGroupInstanceDefinitionArgs.builder()
                         .instanceType("c5a.large")
                         .build())
                 .gameServerGroupName("example")
                 .maxSize(1)
                 .minSize(1)
                 .roleArn(exampleAwsIamRole.arn())
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(exampleAwsIamRolePolicyAttachment)
                     .build());
     
         }
     }
     
     
    Full usage:
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.gamelift.GameServerGroup;
     import com.pulumi.aws.gamelift.GameServerGroupArgs;
     import com.pulumi.aws.gamelift.inputs.GameServerGroupAutoScalingPolicyArgs;
     import com.pulumi.aws.gamelift.inputs.GameServerGroupAutoScalingPolicyTargetTrackingConfigurationArgs;
     import com.pulumi.aws.gamelift.inputs.GameServerGroupLaunchTemplateArgs;
     import com.pulumi.aws.gamelift.inputs.GameServerGroupInstanceDefinitionArgs;
     import com.pulumi.resources.CustomResourceOptions;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new GameServerGroup("example", GameServerGroupArgs.builder()
                 .autoScalingPolicy(GameServerGroupAutoScalingPolicyArgs.builder()
                     .targetTrackingConfiguration(GameServerGroupAutoScalingPolicyTargetTrackingConfigurationArgs.builder()
                         .targetValue(75.0)
                         .build())
                     .estimatedInstanceWarmup(60)
                     .build())
                 .launchTemplate(GameServerGroupLaunchTemplateArgs.builder()
                     .id(exampleAwsLaunchTemplate.id())
                     .version("1")
                     .build())
                 .instanceDefinitions(            
                     GameServerGroupInstanceDefinitionArgs.builder()
                         .instanceType("c5.large")
                         .weightedCapacity("1")
                         .build(),
                     GameServerGroupInstanceDefinitionArgs.builder()
                         .instanceType("c5.2xlarge")
                         .weightedCapacity("2")
                         .build())
                 .balancingStrategy("SPOT_ONLY")
                 .gameServerGroupName("example")
                 .gameServerProtectionPolicy("FULL_PROTECTION")
                 .maxSize(1)
                 .minSize(1)
                 .roleArn(exampleAwsIamRole.arn())
                 .tags(Map.of("Name", "example"))
                 .vpcSubnets(            
                     "subnet-12345678",
                     "subnet-23456789")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(exampleAwsIamRolePolicyAttachment)
                     .build());
     
         }
     }
     
     
    ### Example IAM Role for GameLift Game Server Group
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.AwsFunctions;
     import com.pulumi.aws.inputs.GetPartitionArgs;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.iam.RolePolicyAttachment;
     import com.pulumi.aws.iam.RolePolicyAttachmentArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             final var current = AwsFunctions.getPartition(GetPartitionArgs.builder()
                 .build());
     
             final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers(                    
                             "autoscaling.amazonaws.com",
                             "gamelift.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var example = new Role("example", RoleArgs.builder()
                 .assumeRolePolicy(assumeRole.json())
                 .name("gamelift-game-server-group-example")
                 .build());
     
             var exampleRolePolicyAttachment = new RolePolicyAttachment("exampleRolePolicyAttachment", RolePolicyAttachmentArgs.builder()
                 .policyArn(String.format("arn:%s:iam::aws:policy/GameLiftGameServerGroupPolicy", current.partition()))
                 .role(example.name())
                 .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import GameLift Game Server Group using the `name`. For example: ```sh $ pulumi import aws:gamelift/gameServerGroup:GameServerGroup example example ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.lang.String> arn()  
      com.pulumi.core.Output<java.lang.String> autoScalingGroupArn()  
      com.pulumi.core.Output<java.util.Optional<GameServerGroupAutoScalingPolicy>> autoScalingPolicy()  
      com.pulumi.core.Output<java.lang.String> balancingStrategy()  
      com.pulumi.core.Output<java.lang.String> gameServerGroupName()  
      com.pulumi.core.Output<java.lang.String> gameServerProtectionPolicy()  
      static GameServerGroup get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, GameServerGroupState state, com.pulumi.resources.CustomResourceOptions options)
      Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
      com.pulumi.core.Output<java.util.List<GameServerGroupInstanceDefinition>> instanceDefinitions()  
      com.pulumi.core.Output<GameServerGroupLaunchTemplate> launchTemplate()  
      com.pulumi.core.Output<java.lang.Integer> maxSize()  
      com.pulumi.core.Output<java.lang.Integer> minSize()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.lang.String> roleArn()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()  
      com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> vpcSubnets()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • GameServerGroup

        public GameServerGroup​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • GameServerGroup

        public GameServerGroup​(java.lang.String name,
                               GameServerGroupArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • GameServerGroup

        public GameServerGroup​(java.lang.String name,
                               GameServerGroupArgs args,
                               @Nullable
                               com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the GameLift Game Server Group.
      • autoScalingGroupArn

        public com.pulumi.core.Output<java.lang.String> autoScalingGroupArn()
        Returns:
        ARN of the created EC2 Auto Scaling group.
      • balancingStrategy

        public com.pulumi.core.Output<java.lang.String> balancingStrategy()
        Returns:
        How GameLift FleetIQ balances the use of Spot Instances and On-Demand Instances. Valid values: `SPOT_ONLY`, `SPOT_PREFERRED`, `ON_DEMAND_ONLY`. Defaults to `SPOT_PREFERRED`.
      • gameServerGroupName

        public com.pulumi.core.Output<java.lang.String> gameServerGroupName()
        Returns:
        Name of the 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.
      • gameServerProtectionPolicy

        public com.pulumi.core.Output<java.lang.String> gameServerProtectionPolicy()
        Returns:
        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. Valid values: `NO_PROTECTION`, `FULL_PROTECTION`. Defaults to `NO_PROTECTION`.
      • maxSize

        public com.pulumi.core.Output<java.lang.Integer> maxSize()
        Returns:
        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.
      • minSize

        public com.pulumi.core.Output<java.lang.Integer> minSize()
        Returns:
        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.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • roleArn

        public com.pulumi.core.Output<java.lang.String> roleArn()
        Returns:
        ARN for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Key-value map of resource tags
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
      • vpcSubnets

        public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> vpcSubnets()
        Returns:
        List of VPC subnets to use with instances in the game server group. By default, all GameLift FleetIQ-supported Availability Zones are used.
      • get

        public static GameServerGroup get​(java.lang.String name,
                                          com.pulumi.core.Output<java.lang.String> id,
                                          @Nullable
                                          GameServerGroupState state,
                                          @Nullable
                                          com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.