{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"codeGuideFiles":[],"metadata":{"markdoc":{"tagList":["partial"]},"type":"markdown"},"seo":{"title":"Catena - AWS FlexMatch - Exisitng deployment","description":"Catena Tools - Your game backend tool kit. Built by game developers, for game developers to simplify your game's backend workflow."},"dynamicMarkdocComponents":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"catena---aws-flexmatch---exisitng-deployment"},"children":["Catena - AWS FlexMatch - Exisitng deployment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This document assumes you've already deployed Catena tools to AWS using ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/installation/aws-ec2"},"children":["AWS EC2 deplyoment docs"]},", and have a working ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena_deployment"]}," user and EC2 role."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you have not deployed to AWS yet and this is your first time, please refer too ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/features/matchmaking/aws-flex-match-new-deployment"},"children":["Flex Match New Deployment steps"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["AWS FlexMatch is responsible for grouping players together to form games or matches. Catena's integration into FlexMatch currently supports FlexMatch's \"standalone\" configuration, meaning that it only supports making matches and does not support provisioning game servers via AWS GameLift."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1.-preparations"},"children":["1. Preparations"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"1a.-create-an-aws-account"},"children":["1a. Create an AWS Account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To create an AWS account, follow ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://aws.amazon.com/resources/create-account/"},"children":["these instructions from AWS"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"1b.-extend-deployment-iam-user-and-policy"},"children":["1b. Extend deployment IAM User and Policy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You don't need a new IAM user. We can use the identities we created earlier for deployment, and our EC2 instance role."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Log into AWS and navigate to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IAM"]}," -> ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IAM Policies"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CatenaDeploymentPolicy"]}," we created to deploy Catena. (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CatenaDeploymentPolicy"]},", attached to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena_deployment"]}," IAM user). open the Json editor and add in these permissions:"]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"Sid\": \"CloudControlApiForGameLiftResources\",\n  \"Effect\": \"Allow\",\n  \"Action\": [\n    \"cloudformation:GetResource\",\n    \"cloudformation:CreateResource\",\n    \"cloudformation:UpdateResource\",\n    \"cloudformation:DeleteResource\",\n    \"cloudformation:ListResources\",\n    \"cloudformation:GetResourceRequestStatus\",\n    \"cloudformation:ListResourceRequests\"\n  ],\n  \"Resource\": \"*\"\n},\n{\n  \"Sid\": \"ManageCatenaSnsNotificationTopic\",\n  \"Effect\": \"Allow\",\n  \"Action\": [\n    \"sns:CreateTopic\", \n    \"sns:DeleteTopic\", \n    \"sns:GetTopicAttributes\",\n    \"sns:SetTopicAttributes\", \n    \"sns:TagResource\", \n    \"sns:ListTagsForResource\",\n    \"sns:Subscribe\", \n    \"sns:Unsubscribe\", \n    \"sns:GetSubscriptionAttributes\"\n  ],\n  \"Resource\": \"arn:aws:sns:*:*:*\"\n},\n{\n  \"Sid\": \"ManageCatenaSqsNotificationQueue\",\n  \"Effect\": \"Allow\",\n  \"Action\": [\n    \"sqs:CreateQueue\", \n    \"sqs:DeleteQueue\", \n    \"sqs:GetQueueAttributes\",\n    \"sqs:SetQueueAttributes\", \n    \"sqs:TagQueue\", \n    \"sqs:ListQueueTags\",\n    \"sqs:GetQueueUrl\", \n    \"sqs:AddPermission\"\n  ],\n  \"Resource\": \"arn:aws:sqs:*:*:*\"\n},\n{\n  \"Sid\": \"ManageCatenaGameLiftMatchmakingRuleSets\",\n  \"Effect\": \"Allow\",\n  \"Action\": [\n    \"gamelift:CreateMatchmakingRuleSet\", \n    \"gamelift:DeleteMatchmakingRuleSet\",\n    \"gamelift:DescribeMatchmakingRuleSets\", \n    \"gamelift:TagResource\", \n    \"gamelift:ListTagsForResource\"\n  ],\n  \"Resource\": \"*\"\n},\n{\n  \"Sid\": \"ManageCatenaGameLiftMatchmakingConfigurations\",\n  \"Effect\": \"Allow\",\n  \"Action\": [\n    \"gamelift:CreateMatchmakingConfiguration\", \n    \"gamelift:UpdateMatchmakingConfiguration\",\n    \"gamelift:DeleteMatchmakingConfiguration\", \n    \"gamelift:DescribeMatchmakingConfigurations\"\n  ],\n  \"Resource\": \"*\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," GameLift matchmaking actions don't support resource-level ARN scoping — AWS requires ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"Resource\": \"*\""]}," for these specific actions."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is one existing policy you will have to edit to add the ability to edit flexmatch runtime policies. Yuu should have this permission added from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena-tools-core"]}," deployment to manage your backup permissions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We should add the 2nd resource arn to allow managing the runtime policy for FlexMatch as well:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"Sid\": \"ManageCatenaPolicies\",\n  \"Effect\": \"Allow\",\n  \"Action\": [\n    \"iam:CreatePolicy\",\n    \"iam:DeletePolicy\",\n    \"iam:GetPolicy\",\n    \"iam:GetPolicyVersion\",\n    \"iam:ListPolicyVersions\",\n    \"iam:CreatePolicyVersion\",\n    \"iam:DeletePolicyVersion\",\n    \"iam:TagPolicy\",\n    \"iam:ListEntitiesForPolicy\"\n  ],\n  \"Resource\": [\n    \"arn:aws:iam::<ACCOUNT_ID>:policy/*catena-backup-policy\",\n    \"arn:aws:iam::<ACCOUNT_ID>:policy/*catena-flexmatch-runtime-policy\" # Add this Resource ARN here\n  ]\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once done, scroll down and click ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Next"]},". Review your changes and once confirmed you can scroll down and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Save Changes"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This will enable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena_deployment"]}," to provision FlexMatch's resources."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here is the breakdown of the deployment SIDs:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SID"},"children":["SID"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CloudControlApiForGameLiftResources"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create, read, update, delete, and poll the status of resources managed through AWS Cloud Control API. Terraforms awscc provider routes all operations through Cloud Control."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ManageCatenaSnsNotificationTopic"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create and configure the SNS topic FlexMatch uses to publish matchmaking events"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ManageCatenaSqsNotificationQueue"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create and configure the SQS queue subscribed to that topic, which Catena polls for matchmaking updates"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ManageCatenaGameLiftMatchmakingRuleSets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create/manage the GameLift rule sets defining team structure and match sizing"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ManageCatenaGameLiftMatchmakingConfigurations"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create/manage the GameLift matchmaking configurations that expose matchmaking to players"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ManageCatenaPolicies"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create, read, version, tag, and delete the FlexMatch runtime IAM policy"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Now that we have our deployment policy setup, we can apply our changes. Navigate to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aws/catena-core/"]}," in the infrastructure repo and run:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"terraform plan -var-file=\"vars.tfvars\"\nterraform apply -var-file=\"vars.tfvars\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your deployment policies should be configured and you should now have flexmatch deployed"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2.-configure-flexmatch"},"children":["2. Configure FlexMatch"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Now that you have everything prepped, it's time to configure FlexMatch in your AWS account. We will be using Terraform to configure the various components necessary for FlexMatch to operate. These include:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Matchmaking Ruleset(s)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-rulesets.html"},"children":["FlexMatch Rulesets"]}," define your game's team structure, size, and how to group players together for the best possible match."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Matchmaking Configuration(s)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-create-configuration.html"},"children":["FlexMatch Configurations"]}," expose matchmaking functionality to the outside world. These are how Catena makes matchmaking requests to AWS."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Simple Notification Service (SNS) Topic"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://aws.amazon.com/sns/"},"children":["AWS SNS"]}," gives FlexMatch a place to post matchmaking events as they occur (i.e. match created)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Simple Queue Service (SQS) Queue"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://aws.amazon.com/sqs/"},"children":["AWS SQS"]}," gives applications a way to subscribe to events that are sent to SNS topics. This is how Catena listens for matchmaking events for specific matchmaking tickets."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"2a.-provision-resources"},"children":["2a. Provision Resources"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Navigate to the Catena Infrastructure repository you cloned earlier."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Navigate to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aws/flex-match/"]}," directory"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Initialize Terraform"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"terraform init\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":4},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you would like to customize the matchmaking queues that are available, edit the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["matchmaking_queues"]}," variable in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["variables.tf"]},". For every queue name, you will need to define a corresponding ruleset in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rule_sets/"]}," directory. For more information on rule sets, refer to the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-rulesets.html"},"children":["match rulesets"]}," documentation from Amazon."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["(Optional) Run a Terraform plan. This will preview all of the AWS resources that are about to be provisioned."]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"terraform plan --var=\"catena_ec2_role_name=<your-ec2-role-name>\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Passing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena_ec2_role_name"]}," tells Terraform to attach the FlexMatch runtime policy to your existing EC2 instance role. Alongside that, it creates the SNS topic, SQS queue, GameLift rule sets, and matchmaking configurations."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your role name follows the pattern ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<workspace>-catena-ec2-role"]}," — for the default workspace, it's just ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena-ec2-role"]},"."]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":6},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Run a Terraform apply. This will preview all of the AWS resource that are about to be provisioned, and prompt you if you'd like to proceed."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"terraform apply --var=\"catena_ec2_role_name=<your-ec2-role-name>\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You should see a long list of output, with something resembling the following code block at the end."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Note: This is just example output."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"Apply complete! Resources: 6 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nsqs_queue_url = \"https://sqs.us-east-1.amazonaws.com/000000000000/matchmaking-events\"\nflexmatch_runtime_user_name = \"my_workspace_catena_flexmatch_runtime_policy\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":7},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Keep note of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sqs_queue_url"]}," that it outputs, as it will be used to configure your running instance of Catena in the next step."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Running terraform Apply will have created a new IAM Policy titled ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena_flexmatch_runtime_policy"]},". Here is a breakdown of it's SIDS:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SID"},"children":["SID"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CatenaRuntimeGameLiftMatchmaking"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Lets running Catena application start, stop, and check matchmaking status via GameLift"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CatenaRuntimeSqsNotifications"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Lets the running application read and acknowledge matchmaking event messages from the FlexMatch notification queue"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"2b.-configure-catena"},"children":["2b. Configure Catena"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you have your resources provisioned, you can configure Catena. Catena is configured using appsettings files in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["catena-tools-core"]},". You will need the following items for Catena to work with FlexMatch:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"Catena\": {\n        ...\n        \"Matchmaker\": {\n            \"FlexMatch\": {\n                \"SQSQueueUrl\": \"<your_sqs_url_from_terraform_output>\",\n                \"GameLiftConfig\": {\n                    \"Profile\": \"<your_aws_profile_from_aws_cli>\",\n                    \"Region\": \"<your_aws_region_from_aws_cli>\"\n                }\n            }\n        }\n        ...\n    },\n    \"PreferredImplementations\": {\n        ...\n        \"ICatenaMatchmaker\": \"!AwsFlexMatch\"\n        ...\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Alternatively, you can expose your access key/secret key directly, though you ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["should not"]}," check these values into source control."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"Catena\": {\n        ...\n        \"Matchmaker\": {\n            \"FlexMatch\": {\n                \"SQSQueueUrl\": \"<your_sqs_url_from_terraform_output>\",\n                \"GameLiftConfig\": {\n                    \"AccessKey\": \"<your_aws_access_key>\",\n                    \"SecretKey\": \"<your_aws_secret_key>\",\n                    \"Region\": \"<your_aws_region_from_aws_cli>\"\n                }\n            }\n        }\n        ...\n    },\n    \"PreferredImplementations\": {\n        ...\n        \"ICatenaMatchmaker\": \"!AwsFlexMatch\"\n        ...\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-next"},"children":["What Next?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Now that you have your matchmaker configured, it's time to integrate the matchmaker with your game engine."]},{"$$mdtype":"Tag","name":"Cards","attributes":{"columns":1,"cardMinWidth":240},"children":[{"$$mdtype":"Tag","name":"Card","attributes":{"title":"Unity Matchmaking","imagePosition":"start","iconPosition":"auto","layout":"vertical","align":"start","variant":"filled","to":"/engines/unity/matchmaking"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Integrate the Catena Matchmaker into your Unity Game"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Alternatively, if you are interested in matchmaking players into dedicated game servers, proceed to the game server documentation."]},{"$$mdtype":"Tag","name":"Cards","attributes":{"columns":1,"cardMinWidth":240},"children":[{"$$mdtype":"Tag","name":"Card","attributes":{"title":"Game Servers","imagePosition":"start","iconPosition":"auto","layout":"vertical","align":"start","variant":"filled","to":"/features/game-servers"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure dedicated game servers with Catena"]}]}]}]},"headings":[{"value":"Catena - AWS FlexMatch - Exisitng deployment","id":"catena---aws-flexmatch---exisitng-deployment","depth":1},{"value":"1. Preparations","id":"1.-preparations","depth":3},{"value":"1a. Create an AWS Account","id":"1a.-create-an-aws-account","depth":4},{"value":"1b. Extend deployment IAM User and Policy","id":"1b.-extend-deployment-iam-user-and-policy","depth":4},{"value":"2. Configure FlexMatch","id":"2.-configure-flexmatch","depth":3},{"value":"2a. Provision Resources","id":"2a.-provision-resources","depth":4},{"value":"2b. Configure Catena","id":"2b.-configure-catena","depth":4},{"value":"What Next?","id":"what-next","depth":2}],"frontmatter":{"markdown":{"toc":{"depth":4}},"seo":{"title":"Catena - AWS FlexMatch - Exisitng deployment"}},"lastModified":"2026-07-29T19:02:57.000Z"},"slug":"/features/matchmaking/aws-flex-match-existing-deployment","userData":{"isAuthenticated":false,"teams":["anonymous"]}}