Recriar um mapeamento de API usando regras de roteamento
Você pode recriar um mapeamento de API usando regras de roteamento. Para recriar um mapeamento de API, ative a remoção do caminho base. Isso preserva o comportamento dos mapeamentos de API. Para obter mais informações, consulte Remoção do caminho base com as condições do caminho base.
O tutorial a seguir mostra como recriar o mapeamento de API https://
como uma regra de roteamento e como atualizar os logs de acesso para registrar em log o ID da regra de roteamento que o API Gateway usa para enviar tráfego à sua API.api.example.com
/orders/v2/items/categories/5
- AWS Management Console
-
Como definir o modo de roteamento como ROUTING_RULE_THEN_API_MAPPING
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 seu nome de domínio personalizado.
-
Em Detalhes do domínio, escolha Editar.
-
Em Modo de roteamento, escolha ROUTING_RULE_THEN_API_MAPPING.
-
Escolha Salvar
Depois de definir o modo de roteamento, crie a regra de roteamento.
Como criar a regra de roteamento
-
Na guia Detalhes do roteamento, escolha Adicionar regra de roteamento.
-
Escolha Adicionar condição e selecione Caminho.
-
Em Caminho, insira
orders/v2/items/categories/5
. -
Em Remover caminho base, escolha Ativo.
Em API de destino, escolha sua API de destino.
Em Estágio de destino, escolha seu estágio de destino.
-
Escolha Próximo.
-
Em prioridade, insira a prioridade.
Mesmo que você mantiver o mapeamento de API existente, o API Gateway sempre usará a nova regra de roteamento, pois as regras de roteamento sempre têm prioridade sobre os mapeamentos de API.
Escolha Salvar alterações.
Depois de criar a regra de roteamento, atualize o formato do log de acesso do estágio ou crie um log para confirmar se o API Gateway usa sua regra de roteamento para enviar tráfego à sua API.
Como atualizar logs de acesso
Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway
. Selecione a API.
No painel de navegação principal, selecione Estágios.
Em Logs e rastreamento, escolha Editar.
Se você não tiver um grupo de logs, consulte Configurar o registro em log do CloudWatch para APIs REST no API Gateway.
Adicione
$context.customDomain.routingRuleIdMatched
ao formato do log.Esse grupo de logs registra o ID da regra de roteamento que o API Gateway usou para enviar tráfego à sua API. Para obter mais informações, consulte Não sei como o API Gateway enviou tráfego às minhas APIs.
Escolha Salvar.
Depois de atualizar os logs de acesso, invoque seu nome de domínio personalizado. Veja a seguir um exemplo de comando curl para invocar o nome de domínio personalizado
https://
com o caminho baseapi.example.com
orders/v2/items/categories/5
.curl "https://
api.example.com
/orders/v2/items/categories/5"Depois de invocar com sucesso seu nome de domínio personalizado, confirme se o CloudWatch Logs mostra
routingRuleIdMatched
. Para saber como usar o console do CloudWatch Logs para visualizar um grupo de logs, consulte Exibir eventos de log do API Gateway no console do CloudWatch. - AWS CLI
-
-
Use o comando update-domain-name indicado abaixo para atualizar o nome de domínio
e usar modo de roteamentoapi.example.com
ROUTING_RULE_THEN_API_MAPPING
.aws apigatewayv2 update-domain-name \ --domain-name '
api.example.com
' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING -
Use o comando create-routing-rule indicado abaixo para criar uma regra de roteamento e recriar o mapeamento de API
https://
.api.example.com
/orders/v2/items/categories/5aws apigatewayv2 create-routing-rule \ --domain-name '
api.example.com
' \ --priority 50 \ --conditions '[ { "MatchBasePaths": { "AnyOf": [ "orders/v2/items/categories/5" ] } } ]' \ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": true } } ]' -
Use o comando update-stage indicado abaixo para atualizar o formato dos logs de acesso e incluir a variável
$context.customDomain.routingRuleIdMatched
. Essa variável registra o ID da regra de roteamento que o API Gateway usou para enviar tráfego à sua API. Você usa esse log para confirmar se o API Gateway usa sua regra de roteamento para enviar tráfego à sua API. Para obter mais informações, consulte Não sei como o API Gateway enviou tráfego às minhas APIs.aws apigateway update-stage \ --rest-api-id
a1bc2c3
\ --stage-name prod \ --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"Se você não tiver um grupo de logs, consulte Configurar o registro em log do CloudWatch para APIs REST no API Gateway.
-
Use o exemplo de comando curl indicado abaixo para invocar o nome de domínio personalizado com o caminho base
orders/v2/items/categories/5
.curl "https://
api.example.com
/orders/v2/items/categories/5 -
Use o comando filter-log-events indicado abaixo para obter os eventos de logs do grupo de logs
access-log-group-orders
que contêm o ID da regra de roteamentoabc123
.aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
Isso confirma que o API Gateway usou a regra de roteamento para enviar tráfego à sua API.
-