---
id: "aws-gamelift-flexmatch"
type: "component"
kind: "matching-engine"
provider: "aws"
category: "compute"
docs: "https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateMatchmakingConfiguration.html"
url: "https://localhost:3000/catalogue/components/aws-gamelift-flexmatch"
---

# Amazon GameLift FlexMatch

Rule-set driven matchmaking service that forms balanced teams from a pool of player tickets.

| | |
|---|---|
| Provider | [aws](https://localhost:3000/catalogue?provider=aws) |
| Kind | [Matching engine](https://localhost:3000/catalogue/kinds/matching-engine) |
| Category | Compute |
| Official docs | [https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateMatchmakingConfiguration.html](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateMatchmakingConfiguration.html) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `acceptanceRequired` | boolean | — | no | — | inherited |
| `algorithm` | enum | `price-time`, `pro-rata` | no | "price-time" | inherited |
| `backfillMode` | enum | `automatic`, `manual` | no | — | inherited |
| `deterministic` | boolean | — | no | true | **false** |
| `failover` | enum | `none`, `manual`, `automatic` | no | "none" | inherited |
| `flexMatchMode` | enum | `standalone`, `with-queue` | no | — | inherited |
| `managed` | boolean | — | no | false | **true** |
| `maxAcceptanceTimeoutSeconds` | integer | — | no | 600 | inherited |
| `maxRequestTimeoutSeconds` | integer | — | no | 43200 | inherited |
| `role` | enum | `primary`, `standby` | no | "primary" | inherited |
| `singleThreaded` | boolean | — | no | true | **false** |

Bold values are the ones this component pins.

## Rules that apply · 2

### Stateful engine pinned to a single zone `stateful-engine-pinned-to-single-zone` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-engine-pinned-to-single-zone.md
- Why: A matching engine, coordination service or event store living in exactly one availability zone, with no failover and no replication, is lost with that zone. Everything that depends on it stops with it.
- Applies to: every node of kind matching-engine, coordination-service or event-store
- Message: '{{node.id}}' is pinned to a single availability zone with no failover or replication.

It fires when:

- all of these hold:
  - the node sits inside exactly 1 availability-zone group
  - any of these hold:
    - the node's `failover` is "none"
    - the node's `replicated` is false
    - the node's `replication` is "none"

### Stateful node without zone redundancy `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- all of these hold:
  - the node's `stateless` is false
  - the node sits inside exactly 1 availability-zone group
  - this does not hold:
    - the node sits inside at least one cell group

## Other products of the same kind · 2

- [Generic matching engine](https://localhost:3000/catalogue/components/matching-engine.md) `matching-engine` — default
- [Order-book matcher](https://localhost:3000/catalogue/components/order-book-matcher.md) `order-book-matcher` — default

## Use it in a design

```yaml
nodes:
  - { id: "aws-gamelift-flexmatch", component: "aws-gamelift-flexmatch" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Amazon GameLift FlexMatch: rule-set driven matchmaker that forms teams from a ticket pool and
# either returns the match or starts a game session through a game session queue. Matches are formed
# by rule sets rather than a price-time order book, so the kind's order-book defaults are overridden.
# The CreateMatchmakingConfiguration API reference makes AcceptanceRequired and
# RequestTimeoutSeconds (max 43200) required with no default, caps AcceptanceTimeoutSeconds at 600,
# and defines FlexMatchMode STANDALONE or WITH_QUEUE and BackfillMode AUTOMATIC or MANUAL.
schemaVersion: "1"
type: "component"
id: "aws-gamelift-flexmatch"
kind: "matching-engine"
provider: "aws"
docs: "https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateMatchmakingConfiguration.html"
defaults:
  managed: true
  singleThreaded: false
  deterministic: false
properties:
  flexMatchMode:
    type: "enum"
    values: ["standalone", "with-queue"]
  backfillMode:
    type: "enum"
    values: ["automatic", "manual"]
  acceptanceRequired:
    type: "boolean"
  maxRequestTimeoutSeconds:
    type: "integer"
    default: 43200
  maxAcceptanceTimeoutSeconds:
    type: "integer"
    default: 600
```

Human page: https://localhost:3000/catalogue/components/aws-gamelift-flexmatch
