Experimental
@aws-cdk/aws-gamelift-alpha is an experimental (alpha) package: its API may change in any release, without a major version bump.
GameSessionQueue L2 construct
The GameSessionQueue resource creates a placement queue that processes requests for new game sessions.
A queue uses FleetIQ algorithms to determine the best placement locations and find an available game server, then prompts the game server to start a new game session. Queues can have destinations (GameLift fleets or gameSessionQueuees), which determine where the queue can place new game sessions. A queue can have destinations with varied fleet type (Spot and On-Demand), instance type, and AWS Region.
Example
declare const fleet: gamelift.BuildFleet;
declare const alias: gamelift.Alias;
const queue = new gamelift.GameSessionQueue(this, 'GameSessionQueue', {
gameSessionQueueName: 'my-queue-name',
destinations: [fleet]
});
queue.addDestination(alias);
# fleet: gamelift.BuildFleet
# alias: gamelift.Alias
queue = gamelift.GameSessionQueue(self, "GameSessionQueue",
game_session_queue_name="my-queue-name",
destinations=[fleet]
)
queue.add_destination(alias)
BuildFleet fleet;
Alias alias;
GameSessionQueue queue = GameSessionQueue.Builder.create(this, "GameSessionQueue")
.gameSessionQueueName("my-queue-name")
.destinations(List.of(fleet))
.build();
queue.addDestination(alias);
// Install: dotnet add package Amazon.CDK.AWS.GameLift.Alpha
BuildFleet fleet;
Alias alias;
var queue = new GameSessionQueue(this, "GameSessionQueue", new GameSessionQueueProps {
GameSessionQueueName = "my-queue-name",
Destinations = new [] { fleet }
});
queue.AddDestination(alias);
// Install: go get github.com/aws/aws-cdk-go/awscdkgameliftalpha/v2
var fleet BuildFleet
var alias Alias
queue := gamelift.NewGameSessionQueue(this, jsii.String("GameSessionQueue"), &GameSessionQueueProps{
GameSessionQueueName: jsii.String("my-queue-name"),
Destinations: []IGameSessionQueueDestination{
fleet,
},
})
queue.AddDestination(alias)
Initializer
new GameSessionQueue(scope: Construct, id: string, props: GameSessionQueueProps)
GameSessionQueue(scope: Construct, id: str, props: GameSessionQueueProps)
new GameSessionQueue(Construct scope, String id, GameSessionQueueProps props)
new GameSessionQueue(Construct scope, string id, GameSessionQueueProps props)
NewGameSessionQueue(Scope Construct, Id *string, Props GameSessionQueueProps)
Construct Props
allowedLocationsoptionalstring[]allowed_locationsoptionaltyping.List[str]allowedLocationsoptionalList<String>AllowedLocationsoptionalstring[]AllowedLocationsoptional*[]*string#Default: game sessions can be placed in any queue location
Locations are specified in the form of AWS Region codes, such as us-west-2.
For queues that have multi-location fleets, you can use a filter configuration allow placement with some, but not all of these locations.
customEventDataoptionalstringcustom_event_dataoptionalstrcustomEventDataoptionalStringCustomEventDataoptionalstringCustomEventDataoptional*string#Default: no customer event data
destinationsIGameSessionQueueDestination[]destinationstyping.List[IGameSessionQueueDestination]destinationsList<IGameSessionQueueDestination>DestinationsIGameSessionQueueDestination[]Destinations*[]IGameSessionQueueDestinationrequired#Destinations are listed in order of placement preference.
gameSessionQueueNamestringgame_session_queue_namestrgameSessionQueueNameStringGameSessionQueueNamestringGameSessionQueueName*stringrequired#notificationTargetoptionalITopicnotification_targetoptionalITopicnotificationTargetoptionalITopicNotificationTargetoptionalITopicNotificationTargetoptionalITopic#Default: no notification
playerLatencyPoliciesoptionalPlayerLatencyPolicy[]player_latency_policiesoptionaltyping.List[PlayerLatencyPolicy]playerLatencyPoliciesoptionalList<PlayerLatencyPolicy>PlayerLatencyPoliciesoptionalPlayerLatencyPolicy[]PlayerLatencyPoliciesoptional*[]PlayerLatencyPolicy#Default: no player latency policy
notes
FleetIQ works to deliver low latency for most players in a game session. These policies ensure that no individual player can be placed into a game with unreasonably high latency. Use multiple policies to gradually relax latency requirements a step at a time. Multiple policies are applied based on their maximum allowed latency, starting with the lowest value.
priorityConfigurationoptionalPriorityConfigurationpriority_configurationoptionalPriorityConfigurationpriorityConfigurationoptionalPriorityConfigurationPriorityConfigurationoptionalPriorityConfigurationPriorityConfigurationoptionalPriorityConfiguration#Default: no priority configuration
This configuration replaces the FleetIQ default prioritization process.
Priority types that are not explicitly named will be automatically applied at the end of the prioritization process.
timeoutoptionalDurationtimeoutoptionalDurationtimeoutoptionalDurationTimeoutoptionalDurationTimeoutoptionalDuration#Default: 50 seconds
When a request exceeds this time, the game session placement changes to a TIMED_OUT status.
Properties
envResourceEnvironmentenvResourceEnvironmentenvResourceEnvironmentEnvResourceEnvironmentEnvResourceEnvironmentrequired#notes
For resources that are created and managed in a Stack (those created by creating new class instances like new Role(), new Bucket(), etc.), this is always the same as the environment of the stack they belong to.
For referenced resources (those obtained from referencing methods like Role.fromRoleArn(), Bucket.fromBucketName(), etc.), they might be different than the stack they were imported into.
gameSessionQueueArnstringgame_session_queue_arnstrgameSessionQueueArnStringGameSessionQueueArnstringGameSessionQueueArn*stringrequired#gameSessionQueueNamestringgame_session_queue_namestrgameSessionQueueNameStringGameSessionQueueNamestringGameSessionQueueName*stringrequired#PROPERTY_INJECTION_IDstringproperty_injection_idstrPROPERTY_INJECTION_IDStringPROPERTY_INJECTION_IDstringPROPERTY_INJECTION_ID*stringrequiredstatic#Methods
addDestination(destination: IGameSessionQueueDestination): voiddef add_destination(self, destination: IGameSessionQueueDestination) -> Nonepublic void addDestination(IGameSessionQueueDestination destination)public void AddDestination(IGameSessionQueueDestination destination)func AddDestination(Destination IGameSessionQueueDestination)#1 parameter
Parameters
destinationdestinationdestinationdestinationDestination— A destination to add.
applyCrossStackReferenceStrength(strength: ReferenceStrength): voiddef apply_cross_stack_reference_strength(self, strength: ReferenceStrength) -> Nonepublic void applyCrossStackReferenceStrength(ReferenceStrength strength)public void ApplyCrossStackReferenceStrength(ReferenceStrength strength)func ApplyCrossStackReferenceStrength(Strength ReferenceStrength)#notes · 1 parameter
When set, any cross-stack reference to this resource will use the specified mechanism instead of the global default determined by the @aws-cdk/core:defaultCrossStackReferences context key. This is useful for selectively weakening specific references to avoid the "deadly embrace" problem without changing the app-wide default.
Parameters
strengthstrengthstrengthstrengthStrength— - The reference strength to use for this resource.
applyRemovalPolicy(policy: RemovalPolicy): voiddef apply_removal_policy(self, policy: RemovalPolicy) -> Nonepublic void applyRemovalPolicy(RemovalPolicy policy)public void ApplyRemovalPolicy(RemovalPolicy policy)func ApplyRemovalPolicy(Policy RemovalPolicy)#notes
The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced.
The resource can be deleted (RemovalPolicy.DESTROY), or left in your AWS account for data recovery and cleanup later (RemovalPolicy.RETAIN).
fromGameSessionQueueArn(scope: Construct, id: string, gameSessionQueueArn: string): IGameSessionQueue@staticmethod def from_game_session_queue_arn(scope: Construct, id: str, game_session_queue_arn: str) -> IGameSessionQueuepublic static IGameSessionQueue fromGameSessionQueueArn(Construct scope, String id, String gameSessionQueueArn)public static IGameSessionQueue FromGameSessionQueueArn(Construct scope, string id, string gameSessionQueueArn)func FromGameSessionQueueArn(Scope Construct, Id *string, GameSessionQueueArn *string) IGameSessionQueuestatic#fromGameSessionQueueAttributes(scope: Construct, id: string, attrs: GameSessionQueueAttributes): IGameSessionQueue@staticmethod def from_game_session_queue_attributes(scope: Construct, id: str, attrs: GameSessionQueueAttributes) -> IGameSessionQueuepublic static IGameSessionQueue fromGameSessionQueueAttributes(Construct scope, String id, GameSessionQueueAttributes attrs)public static IGameSessionQueue FromGameSessionQueueAttributes(Construct scope, string id, GameSessionQueueAttributes attrs)func FromGameSessionQueueAttributes(Scope Construct, Id *string, Attrs GameSessionQueueAttributes) IGameSessionQueuestatic#fromGameSessionQueueName(scope: Construct, id: string, gameSessionQueueName: string): IGameSessionQueue@staticmethod def from_game_session_queue_name(scope: Construct, id: str, game_session_queue_name: str) -> IGameSessionQueuepublic static IGameSessionQueue fromGameSessionQueueName(Construct scope, String id, String gameSessionQueueName)public static IGameSessionQueue FromGameSessionQueueName(Construct scope, string id, string gameSessionQueueName)func FromGameSessionQueueName(Scope Construct, Id *string, GameSessionQueueName *string) IGameSessionQueuestatic#isConstruct(x: any): boolean@staticmethod def is_construct(x: Any) -> boolpublic static Boolean isConstruct(Object x)public static bool IsConstruct(object x)func IsConstruct(X interface{}) *boolstatic#notes · 1 parameter · returns
Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.
Parameters
xxxxX— Any object.
Returns: true if x is an object created from a class which extends Construct.
isOwnedResource(construct: IConstruct): boolean@staticmethod def is_owned_resource(construct: IConstruct) -> boolpublic static Boolean isOwnedResource(IConstruct construct)public static bool IsOwnedResource(IConstruct construct)func IsOwnedResource(Construct IConstruct) *boolstatic#isResource(construct: IConstruct): boolean@staticmethod def is_resource(construct: IConstruct) -> boolpublic static Boolean isResource(IConstruct construct)public static bool IsResource(IConstruct construct)func IsResource(Construct IConstruct) *boolstatic#metric(metricName: string, props?: MetricOptions): Metricdef metric(self, metric_name: str, props: typing.Optional[MetricOptions] = None) -> Metricpublic Metric metric(String metricName, MetricOptions props)public Metric Metric(string metricName, MetricOptions? props = null)func Metric(MetricName *string, Props MetricOptions) Metric#metricAverageWaitTime(props?: MetricOptions): Metricdef metric_average_wait_time(self, props: typing.Optional[MetricOptions] = None) -> Metricpublic Metric metricAverageWaitTime(MetricOptions props)public Metric MetricAverageWaitTime(MetricOptions? props = null)func MetricAverageWaitTime(Props MetricOptions) Metric#metricPlacementsCanceled(props?: MetricOptions): Metricdef metric_placements_canceled(self, props: typing.Optional[MetricOptions] = None) -> Metricpublic Metric metricPlacementsCanceled(MetricOptions props)public Metric MetricPlacementsCanceled(MetricOptions? props = null)func MetricPlacementsCanceled(Props MetricOptions) Metric#metricPlacementsFailed(props?: MetricOptions): Metricdef metric_placements_failed(self, props: typing.Optional[MetricOptions] = None) -> Metricpublic Metric metricPlacementsFailed(MetricOptions props)public Metric MetricPlacementsFailed(MetricOptions? props = null)func MetricPlacementsFailed(Props MetricOptions) Metric#metricPlacementsStarted(props?: MetricOptions): Metricdef metric_placements_started(self, props: typing.Optional[MetricOptions] = None) -> Metricpublic Metric metricPlacementsStarted(MetricOptions props)public Metric MetricPlacementsStarted(MetricOptions? props = null)func MetricPlacementsStarted(Props MetricOptions) Metric#metricPlacementsSucceeded(props?: MetricOptions): Metricdef metric_placements_succeeded(self, props: typing.Optional[MetricOptions] = None) -> Metricpublic Metric metricPlacementsSucceeded(MetricOptions props)public Metric MetricPlacementsSucceeded(MetricOptions? props = null)func MetricPlacementsSucceeded(Props MetricOptions) Metric#metricPlacementsTimedOut(props?: MetricOptions): Metricdef metric_placements_timed_out(self, props: typing.Optional[MetricOptions] = None) -> Metricpublic Metric metricPlacementsTimedOut(MetricOptions props)public Metric MetricPlacementsTimedOut(MetricOptions? props = null)func MetricPlacementsTimedOut(Props MetricOptions) Metric#toString(): stringdef to_string(self, ) -> strpublic String toString()public string ToString()func ToString() *string#with(...mixins: IMixin[]): IConstructdef with(self, mixins: IMixin) -> IConstructpublic IConstruct with(IMixin mixins)public IConstruct With(IMixin mixins)func With(Mixins IMixin) IConstruct#Mixins are applied in order. The list of constructs is captured at the start of the call, so constructs added by a mixin will not be visited. Use multiple with() calls if subsequent mixins should apply to added constructs.