Gems/AWSGameLift/cdk/aws_gamelift/flexmatch/matchmaking.py (41 lines of code) (raw):
"""
Copyright (c) Contributors to the Open 3D Engine Project.
For complete copyright and license terms please see the LICENSE at the root of this distribution.
SPDX-License-Identifier: Apache-2.0 OR MIT
"""
import typing
from aws_cdk import (
CfnOutput,
Stack,
aws_gamelift as gamelift
)
from . import flexmatch_configurations
FLEX_MATCH_MODE = 'WITH_QUEUE'
class MatchmakingResources:
"""
Create a matchmaking rule set and matchmaking configuration for Gamelift FlexMatch.
For more information about Gamelift FlexMatch, please check
https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-intro.html
"""
def __init__(self, stack: Stack, game_session_queue_arns: typing.List[str]):
rule_set = gamelift.CfnMatchmakingRuleSet(
scope=stack,
id='MatchmakingRuleSet',
name=f'{stack.stack_name}-MatchmakingRuleSet',
rule_set_body=flexmatch_configurations.RULE_SET_BODY
)
matchmaking_configuration = gamelift.CfnMatchmakingConfiguration(
scope=stack,
id='MatchmakingConfiguration',
acceptance_required=flexmatch_configurations.ACCEPTANCE_REQUIRED,
name=f'{stack.stack_name}-MatchmakingConfiguration',
request_timeout_seconds=flexmatch_configurations.REQUEST_TIMEOUT_SECONDS,
rule_set_name=rule_set.name,
additional_player_count=flexmatch_configurations.ADDITIONAL_PLAYER_COUNT,
backfill_mode=flexmatch_configurations.BACKFILL_MODE,
flex_match_mode=FLEX_MATCH_MODE,
game_session_queue_arns=game_session_queue_arns if len(game_session_queue_arns) else None
)
matchmaking_configuration.node.add_dependency(rule_set)
# Export the matchmaking rule set and configuration names as stack outputs
CfnOutput(
stack,
id='MatchmakingRuleSetName',
description='Name of the matchmaking rule set',
export_name=f'{stack.stack_name}:MatchmakingRuleSet',
value=rule_set.name)
CfnOutput(
stack,
id='MatchmakingConfigurationName',
description='Name of the matchmaking configuration',
export_name=f'{stack.stack_name}:MatchmakingConfiguration',
value=matchmaking_configuration.name)