GameLift / Client / terminate_game_session

terminate_game_session#

GameLift.Client.terminate_game_session(**kwargs)#

Ends a game session that’s currently in progress. Use this action to terminate any game session that isn’t in ERROR status. Terminating a game session is the most efficient way to free up a server process when it’s hosting a game session that’s in a bad state or not ending properly. You can use this action to terminate a game session that’s being hosted on any type of Amazon GameLift fleet compute, including computes for managed EC2, managed container, and Anywhere fleets. The game server must be integrated with Amazon GameLift server SDK 5.x or greater.

Request options

Request termination for a single game session. Provide the game session ID and the termination mode. There are two potential methods for terminating a game session:

  • Initiate a graceful termination using the normal game session shutdown sequence. With this mode, the Amazon GameLift service prompts the server process that’s hosting the game session by calling the server SDK callback method OnProcessTerminate(). The callback implementation is part of the custom game server code. It might involve a variety of actions to gracefully end a game session, such as notifying players, before stopping the server process.

  • Force an immediate game session termination. With this mode, the Amazon GameLift service takes action to stop the server process, which ends the game session without the normal game session shutdown sequence.

Results

If successful, game session termination is initiated. During this activity, the game session status is changed to TERMINATING. When completed, the server process that was hosting the game session has been stopped and replaced with a new server process that’s ready to host a new game session. The old game session’s status is changed to TERMINATED with a status reason that indicates the termination method used.

Learn more

Add Amazon GameLift to your game server

Amazon GameLift server SDK 5 reference guide for OnProcessTerminate() ( C++) ( C#) ( Unreal) ( Go)

See also: AWS API Documentation

Request Syntax

response = client.terminate_game_session(
    GameSessionId='string',
    TerminationMode='TRIGGER_ON_PROCESS_TERMINATE'|'FORCE_TERMINATE'
)
Parameters:
  • GameSessionId (string) –

    [REQUIRED]

    A unique identifier for the game session to be terminated. A game session ARN has the following format: arn:aws:gamelift:<region>::gamesession/<fleet ID>/<custom ID string or idempotency token>.

  • TerminationMode (string) –

    [REQUIRED]

    The method to use to terminate the game session. Available methods include:

    • TRIGGER_ON_PROCESS_TERMINATE – Prompts the Amazon GameLift service to send an OnProcessTerminate() callback to the server process and initiate the normal game session shutdown sequence. The OnProcessTerminate method, which is implemented in the game server code, must include a call to the server SDK action ProcessEnding(), which is how the server process signals to Amazon GameLift that a game session is ending. If the server process doesn’t call ProcessEnding(), the game session termination won’t conclude successfully.

    • FORCE_TERMINATE – Prompts the Amazon GameLift service to stop the server process immediately. Amazon GameLift takes action (depending on the type of fleet) to shut down the server process without the normal game session shutdown sequence.

    Note

    This method is not available for game sessions that are running on Anywhere fleets unless the fleet is deployed with the Amazon GameLift Agent. In this scenario, a force terminate request results in an invalid or bad request exception.

Return type:

dict

Returns:

Response Syntax

{
    'GameSession': {
        'GameSessionId': 'string',
        'Name': 'string',
        'FleetId': 'string',
        'FleetArn': 'string',
        'CreationTime': datetime(2015, 1, 1),
        'TerminationTime': datetime(2015, 1, 1),
        'CurrentPlayerSessionCount': 123,
        'MaximumPlayerSessionCount': 123,
        'Status': 'ACTIVE'|'ACTIVATING'|'TERMINATED'|'TERMINATING'|'ERROR',
        'StatusReason': 'INTERRUPTED'|'TRIGGERED_ON_PROCESS_TERMINATE'|'FORCE_TERMINATED',
        'GameProperties': [
            {
                'Key': 'string',
                'Value': 'string'
            },
        ],
        'IpAddress': 'string',
        'DnsName': 'string',
        'Port': 123,
        'PlayerSessionCreationPolicy': 'ACCEPT_ALL'|'DENY_ALL',
        'CreatorId': 'string',
        'GameSessionData': 'string',
        'MatchmakerData': 'string',
        'Location': 'string'
    }
}

Response Structure

  • (dict) –

    • GameSession (dict) –

      Properties describing a game session.

      A game session in ACTIVE status can host players. When a game session ends, its status is set to TERMINATED.

      Amazon GameLift retains a game session resource for 30 days after the game session ends. You can reuse idempotency token values after this time. Game session logs are retained for 14 days.

      All APIs by task

      • GameSessionId (string) –

        A unique identifier for the game session. A game session ARN has the following format: arn:aws:gamelift:<region>::gamesession/<fleet ID>/<custom ID string or idempotency token>.

      • Name (string) –

        A descriptive label that is associated with a game session. Session names do not need to be unique.

      • FleetId (string) –

        A unique identifier for the fleet that the game session is running on.

      • FleetArn (string) –

        The Amazon Resource Name ( ARN) associated with the GameLift fleet that this game session is running on.

      • CreationTime (datetime) –

        A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").

      • TerminationTime (datetime) –

        A time stamp indicating when this data object was terminated. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").

      • CurrentPlayerSessionCount (integer) –

        Number of players currently in the game session.

      • MaximumPlayerSessionCount (integer) –

        The maximum number of players that can be connected simultaneously to the game session.

      • Status (string) –

        Current status of the game session. A game session must have an ACTIVE status to have player sessions.

      • StatusReason (string) –

        Provides additional information about game session status.

        • INTERRUPTED – The game session was hosted on an EC2 Spot instance that was reclaimed, causing the active game session to be stopped.

        • TRIGGERED_ON_PROCESS_TERMINATE – The game session was stopped by calling TerminateGameSession with the termination mode TRIGGER_ON_PROCESS_TERMINATE.

        • FORCE_TERMINATED – The game session was stopped by calling TerminateGameSession with the termination mode FORCE_TERMINATE.

      • GameProperties (list) –

        A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}.

        • (dict) –

          This key-value pair can store custom data about a game session. For example, you might use a GameProperty to track a game session’s map, level of difficulty, or remaining time. The difficulty level could be specified like this: {"Key": "difficulty", "Value":"Novice"}.

          You can set game properties when creating a game session. You can also modify game properties of an active game session. When searching for game sessions, you can filter on game property keys and values. You can’t delete game properties from a game session.

          For examples of working with game properties, see Create a game session with properties.

          • Key (string) –

            The game property identifier.

          • Value (string) –

            The game property value.

      • IpAddress (string) –

        The IP address of the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number.

      • DnsName (string) –

        The DNS identifier assigned to the instance that is running the game session. Values have the following format:

        • TLS-enabled fleets: <unique identifier>.<region identifier>.amazongamelift.com.

        • Non-TLS-enabled fleets: ec2-<unique identifier>.compute.amazonaws.com. (See Amazon EC2 Instance IP Addressing.)

        When connecting to a game session that is running on a TLS-enabled fleet, you must use the DNS name, not the IP address.

      • Port (integer) –

        The port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number.

      • PlayerSessionCreationPolicy (string) –

        Indicates whether the game session is accepting new players.

      • CreatorId (string) –

        A unique identifier for a player. This ID is used to enforce a resource protection policy (if one exists), that limits the number of game sessions a player can create.

      • GameSessionData (string) –

        A set of custom game session properties, formatted as a single string value. This data is passed to a game server process with a request to start a new game session. For more information, see Start a game session.

      • MatchmakerData (string) –

        Information about the matchmaking process that resulted in the game session, if matchmaking was used. Data is in JSON syntax, formatted as a string. Information includes the matchmaker ID as well as player attributes and team assignments. For more details on matchmaker data, see Match Data. Matchmaker data is updated whenever new players are added during a successful backfill (see StartMatchBackfill).

      • Location (string) –

        The fleet location where the game session is running. This value might specify the fleet’s home Region or a remote location. Location is expressed as an Amazon Web Services Region code such as us-west-2.

Exceptions