Menu
Amazon GameLift Service
API Reference (API Version 2015-10-01)

PutScalingPolicy

Creates or updates a scaling policy for a fleet. An active scaling policy prompts Amazon GameLift to track a certain metric for a fleet and automatically change the fleet's capacity in specific circumstances. Each scaling policy contains one rule statement. Fleets can have multiple scaling policies in force simultaneously.

A scaling policy rule statement has the following structure:

If [MetricName] is [ComparisonOperator] [Threshold] for [EvaluationPeriods] minutes, then [ScalingAdjustmentType] to/by [ScalingAdjustment].

For example, this policy: "If the number of idle instances exceeds 20 for more than 15 minutes, then reduce the fleet capacity by 10 instances" could be implemented as the following rule statement:

If [IdleInstances] is [GreaterThanOrEqualToThreshold] [20] for [15] minutes, then [ChangeInCapacity] by [-10].

To create or update a scaling policy, specify a unique combination of name and fleet ID, and set the rule values. All parameters for this action are required. If successful, the policy name is returned. Scaling policies cannot be suspended or made inactive. To stop enforcing a scaling policy, call DeleteScalingPolicy.

Fleet-related operations include:

Request Syntax

{
   "ComparisonOperator": "string",
   "EvaluationPeriods": number,
   "FleetId": "string",
   "MetricName": "string",
   "Name": "string",
   "ScalingAdjustment": number,
   "ScalingAdjustmentType": "string",
   "Threshold": number
}

Request Parameters

For information about the parameters that are common to all actions, see Common Parameters.

The request accepts the following data in JSON format.

Note

In the following list, the required parameters are described first.

ComparisonOperator

Comparison operator to use when measuring the metric against the threshold value.

Type: String

Valid Values: GreaterThanOrEqualToThreshold | GreaterThanThreshold | LessThanThreshold | LessThanOrEqualToThreshold

Required: Yes

EvaluationPeriods

Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered.

Type: Integer

Valid Range: Minimum value of 1.

Required: Yes

FleetId

Unique identifier for a fleet to apply this policy to.

Type: String

Pattern: ^fleet-\S+

Required: Yes

MetricName

Name of the Amazon GameLift-defined metric that is used to trigger an adjustment.

  • ActivatingGameSessions -- number of game sessions in the process of being created (game session status = ACTIVATING).

  • ActiveGameSessions -- number of game sessions currently running (game session status = ACTIVE).

  • CurrentPlayerSessions -- number of active or reserved player sessions (player session status = ACTIVE or RESERVED).

  • AvailablePlayerSessions -- number of player session slots currently available in active game sessions across the fleet, calculated by subtracting a game session's current player session count from its maximum player session count. This number includes game sessions that are not currently accepting players (game session PlayerSessionCreationPolicy = DENY_ALL).

  • ActiveInstances -- number of instances currently running a game session.

  • IdleInstances -- number of instances not currently running a game session.

Type: String

Valid Values: ActivatingGameSessions | ActiveGameSessions | ActiveInstances | AvailableGameSessions | AvailablePlayerSessions | CurrentPlayerSessions | IdleInstances | PercentAvailableGameSessions | PercentIdleInstances | QueueDepth | WaitTime

Required: Yes

Name

Descriptive label that is associated with a scaling policy. Policy names do not need to be unique. A fleet can have only one scaling policy with the same name.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 1024.

Required: Yes

ScalingAdjustment

Amount of adjustment to make, based on the scaling adjustment type.

Type: Integer

Required: Yes

ScalingAdjustmentType

Type of adjustment to make to a fleet's instance count (see FleetCapacity):

  • ChangeInCapacity -- add (or subtract) the scaling adjustment value from the current instance count. Positive values scale up while negative values scale down.

  • ExactCapacity -- set the instance count to the scaling adjustment value.

  • PercentChangeInCapacity -- increase or reduce the current instance count by the scaling adjustment, read as a percentage. Positive values scale up while negative values scale down; for example, a value of "-10" scales the fleet down by 10%.

Type: String

Valid Values: ChangeInCapacity | ExactCapacity | PercentChangeInCapacity

Required: Yes

Threshold

Metric value used to trigger a scaling event.

Type: Double

Required: Yes

Response Syntax

{
   "Name": "string"
}

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

Name

Descriptive label that is associated with a scaling policy. Policy names do not need to be unique.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 1024.

Errors

For information about the errors that are common to all actions, see Common Errors.

InternalServiceException

The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.

HTTP Status Code: 500

InvalidRequestException

One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.

HTTP Status Code: 400

NotFoundException

A service resource associated with the request could not be found. Clients should not retry such requests.

HTTP Status Code: 400

UnauthorizedException

The client failed authentication. Clients should not retry such requests.

HTTP Status Code: 400

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: