registerGameServer method

Future<RegisterGameServerOutput> registerGameServer({
  1. required String gameServerGroupName,
  2. required String gameServerId,
  3. required String instanceId,
  4. String? connectionInfo,
  5. String? gameServerData,
})

This operation is used with the Amazon GameLift FleetIQ solution and game server groups.

Creates a new game server resource and notifies GameLift FleetIQ that the game server is ready to host gameplay and players. This operation is called by a game server process that is running on an instance in a game server group. Registering game servers enables GameLift FleetIQ to track available game servers and enables game clients and services to claim a game server for a new game session.

To register a game server, identify the game server group and instance where the game server is running, and provide a unique identifier for the game server. You can also include connection and game server data. When a game client or service requests a game server by calling ClaimGameServer, this information is returned in the response.

Once a game server is successfully registered, it is put in status AVAILABLE. A request to register a game server may fail if the instance it is running on is in the process of shutting down as part of instance balancing or scale-down activity.

Learn more

GameLift FleetIQ Guide

Related operations

May throw InvalidRequestException. May throw ConflictException. May throw UnauthorizedException. May throw InternalServiceException. May throw LimitExceededException.

Parameter gameServerGroupName : A unique identifier for the game server group where the game server is running. Use either the GameServerGroup name or ARN value.

Parameter gameServerId : A custom string that uniquely identifies the game server to register. Game server IDs are developer-defined and must be unique across all game server groups in your AWS account.

Parameter instanceId : The unique identifier for the instance where the game server is running. This ID is available in the instance metadata. EC2 instance IDs use a 17-character format, for example: i-1234567890abcdef0.

Parameter connectionInfo : Information that is needed to make inbound client connections to the game server. This might include the IP address and port, DNS name, and other information.

Parameter gameServerData : A set of custom game server properties, formatted as a single string value. This data is passed to a game client or service when it requests information on game servers using ListGameServers or ClaimGameServer.

Implementation

Future<RegisterGameServerOutput> registerGameServer({
  required String gameServerGroupName,
  required String gameServerId,
  required String instanceId,
  String? connectionInfo,
  String? gameServerData,
}) async {
  ArgumentError.checkNotNull(gameServerGroupName, 'gameServerGroupName');
  _s.validateStringLength(
    'gameServerGroupName',
    gameServerGroupName,
    1,
    256,
    isRequired: true,
  );
  ArgumentError.checkNotNull(gameServerId, 'gameServerId');
  _s.validateStringLength(
    'gameServerId',
    gameServerId,
    3,
    128,
    isRequired: true,
  );
  ArgumentError.checkNotNull(instanceId, 'instanceId');
  _s.validateStringLength(
    'instanceId',
    instanceId,
    19,
    19,
    isRequired: true,
  );
  _s.validateStringLength(
    'connectionInfo',
    connectionInfo,
    1,
    512,
  );
  _s.validateStringLength(
    'gameServerData',
    gameServerData,
    1,
    1024,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'GameLift.RegisterGameServer'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'GameServerGroupName': gameServerGroupName,
      'GameServerId': gameServerId,
      'InstanceId': instanceId,
      if (connectionInfo != null) 'ConnectionInfo': connectionInfo,
      if (gameServerData != null) 'GameServerData': gameServerData,
    },
  );

  return RegisterGameServerOutput.fromJson(jsonResponse.body);
}