updateGameServer method

Future<UpdateGameServerOutput> updateGameServer({
  1. required String gameServerGroupName,
  2. required String gameServerId,
  3. String? gameServerData,
  4. GameServerHealthCheck? healthCheck,
  5. GameServerUtilizationStatus? utilizationStatus,
})

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

Updates information about a registered game server to help GameLift FleetIQ to track game server availability. This operation is called by a game server process that is running on an instance in a game server group.

Use this operation to update the following types of game server information. You can make all three types of updates in the same request:

  • To update the game server's utilization status, identify the game server and game server group and specify the current utilization status. Use this status to identify when game servers are currently hosting games and when they are available to be claimed.
  • To report health status, identify the game server and game server group and set health check to HEALTHY. If a game server does not report health status for a certain length of time, the game server is no longer considered healthy. As a result, it will be eventually deregistered from the game server group to avoid affecting utilization metrics. The best practice is to report health every 60 seconds.
  • To change game server metadata, provide updated game server data.
Once a game server is successfully updated, the relevant statuses and timestamps are updated.

Learn more

GameLift FleetIQ Guide

Related operations

May throw InvalidRequestException. May throw NotFoundException. May throw UnauthorizedException. May throw InternalServiceException.

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 update.

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.

Parameter healthCheck : Indicates health status of the game server. A request that includes this parameter updates the game server's LastHealthCheckTime timestamp.

Parameter utilizationStatus : Indicates whether the game server is available or is currently hosting gameplay.

Implementation

Future<UpdateGameServerOutput> updateGameServer({
  required String gameServerGroupName,
  required String gameServerId,
  String? gameServerData,
  GameServerHealthCheck? healthCheck,
  GameServerUtilizationStatus? utilizationStatus,
}) 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,
  );
  _s.validateStringLength(
    'gameServerData',
    gameServerData,
    1,
    1024,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'GameLift.UpdateGameServer'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'GameServerGroupName': gameServerGroupName,
      'GameServerId': gameServerId,
      if (gameServerData != null) 'GameServerData': gameServerData,
      if (healthCheck != null) 'HealthCheck': healthCheck.toValue(),
      if (utilizationStatus != null)
        'UtilizationStatus': utilizationStatus.toValue(),
    },
  );

  return UpdateGameServerOutput.fromJson(jsonResponse.body);
}