Quando usar regras de roteamento - Amazon API Gateway

Quando usar regras de roteamento

Você pode criar uma regra de roteamento usando o AWS Management Console, a AWS CLI ou qualquer SDK da AWS. Depois que você criar um trabalho, não poderá mais alterar ou atualizar a respectiva prioridade.

Criar uma regra de roteamento

O procedimento a seguir mostra como criar uma regra de roteamento para um nome de domínio personalizado com um modo de roteamento definido como ROUTING_RULE_THEN_API_MAPPING ou ROUTING_RULE_ONLY.

AWS Management Console
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Escolha Custom Domain Names (Nomes de domínios personalizados) no painel de navegação principal.

  3. Escolha um nome de domínio personalizado.

  4. Na guia Detalhes do roteamento, escolha Adicionar regra de roteamento.

  5. Escolha Adicionar uma nova condição para adicionar uma nova condição.

    Você pode adicionar uma condição de cabeçalho ou de caminho base. Para fazer a correspondência de todas as solicitações recebidas com seu nome de domínio personalizado, não adicione uma condição.

  6. Em Ação, use o menu suspenso para selecionar a API e o estágio de destino.

  7. Escolha Próximo.

  8. No campo de prioridade, insira um número para sua prioridade.

    O API Gateway avalia as regras em ordem de prioridade, do valor mais baixo para o valor mais alto.

    Se você estiver criando uma regra sem uma condição, recomendamos usar uma prioridade com um valor alto.

  9. Selecione Criar regra de roteamento.

AWS CLI

O comando create-routing-rule indicado abaixo cria uma regra de roteamento com prioridade 50. Neste exemplo, o API Gateway roteia todas as solicitações recebidas que tenham os cabeçalhos Hello:World e x-version:beta e o caminho base PetStoreShopper para a API de destino a1b2c3.

aws apigatewayv2 create-routing-rule \ --domain-name 'api.example.com' \ --priority 50 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'

A saída será exibida da seguinte forma:

{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 50, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }

Alterar a prioridade de uma regra de roteamento

Você pode alterar a prioridade de uma regra de roteamento. Essa alteração entra em vigor imediatamente e pode afetar a forma como os consumidores da API invocam seus nomes de domínio personalizados. Recomendamos que, ao definir a prioridade de suas regras de roteamento, você deixe intervalos entre as regras.

Por exemplo, considere duas regras de roteamento, regra abc123 com prioridade 50 e regra zzz000 com prioridade 150. Para alterar a prioridade das regras de modo que o API Gateway avalie a regra zzz000 primeiro, você pode alterar a prioridade da regra zzz000 para 30.

AWS Management Console
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Escolha Custom Domain Names (Nomes de domínios personalizados) no painel de navegação principal.

  3. Escolha um nome de domínio personalizado.

  4. Na guia Detalhes do roteamento, escolha sua regra de roteamento e selecione Editar.

  5. Escolha Próximo.

  6. Em prioridade, insira a nova prioridade.

  7. Escolha Salvar alterações.

AWS CLI

O comando put-routing-rule indicado abaixo altera a prioridade de uma regra de roteamento abc123.

aws apigatewayv2 put-routing-rule \ --domain-name 'api.example.com' \ --priority 30 \ --routing-rule-id abc123 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'

A saída será exibida da seguinte forma:

{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 38, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }