Unfortunately this is the best official description of how matchmaking works.
"To find player matches for a regular (non-large) match, the matchmaker makes continual passes through the ticket pool. On each pass, the matchmaker starts with the oldest ticket in the pool and evaluates the other tickets against it to find the best possible matches. A matchmaker’s rule set determines (1) how many teams to create for a match, (2) the number of players to assign to each team, and (3) how to evaluate each prospective player. Rules might set requirements for individual players, teams, or matches. For example, a rule might require all matched players to have a certain talent, or it might require at least one player on a team to play a certain character. A commonly used rule requires that all players in a match have similar skill ratings. "
Do you have an example of your
maxLatency rule so we can be clear about what you are trying to achieve? Because you could set it up to be for each player or based on some team aggregation.
Are you looking at something like: https://docs.aws.amazon.com/gamelift/latest/developerguide/match-examples.html#match-examples-3?
If you provide a map of player latencies, matchmaking will then use that data when making gamesessions in your queue: How to calculate player ping/latency for matchmaking?
Latency data can be provided in the matchmaking request as part of the Player object. It is not a player attribute, so it does not need to be listed as one. (See https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartMatchmaking.html and https://docs.aws.amazon.com/gamelift/latest/apireference/API_Player.html )
Docs could be a lot clearer here, so please use the provide feedback buttons to make suggestion/provide feedback.
Hope this helps, apologies that response is a little rushed, but I hope that gets you a little unblocked.
If you still have problems I can try and loop in more of a FlexMatch expert to help.