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
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.
Escolha Custom Domain Names (Nomes de domínios personalizados) no painel de navegação principal.
-
Escolha um nome de domínio personalizado.
-
Na guia Detalhes do roteamento, escolha Adicionar regra de roteamento.
-
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.
Em Ação, use o menu suspenso para selecionar a API e o estágio de destino.
-
Escolha Próximo.
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.
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
-
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.
Escolha Custom Domain Names (Nomes de domínios personalizados) no painel de navegação principal.
-
Escolha um nome de domínio personalizado.
-
Na guia Detalhes do roteamento, escolha sua regra de roteamento e selecione Editar.
-
Escolha Próximo.
-
Em prioridade, insira a nova prioridade.
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"
}