Recriar um mapeamento de API usando regras de roteamento - Amazon API Gateway

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:// api.example.com/orders/v2/items/categories/5 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.

AWS Management Console
Como definir o modo de roteamento como ROUTING_RULE_THEN_API_MAPPING
  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 seu nome de domínio personalizado.

  4. Em Detalhes do domínio, escolha Editar.

  5. Em Modo de roteamento, escolha ROUTING_RULE_THEN_API_MAPPING.

  6. Escolha Salvar

Depois de definir o modo de roteamento, crie a regra de roteamento.

Como criar a regra de roteamento
  1. Na guia Detalhes do roteamento, escolha Adicionar regra de roteamento.

  2. Escolha Adicionar condição e selecione Caminho.

  3. Em Caminho, insira orders/v2/items/categories/5.

  4. Em Remover caminho base, escolha Ativo.

  5. Em API de destino, escolha sua API de destino.

  6. Em Estágio de destino, escolha seu estágio de destino.

  7. Escolha Próximo.

  8. 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.

  9. 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
  1. Inicie uma sessão no console do API Gateway em https://console.aws.amazon.com/apigateway.

  2. Selecione a API.

  3. No painel de navegação principal, selecione Estágios.

  4. 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.

  5. 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.

  6. 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://api.example.com com o caminho base 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
  1. Use o comando update-domain-name indicado abaixo para atualizar o nome de domínio api.example.com e usar modo de roteamento ROUTING_RULE_THEN_API_MAPPING.

    aws apigatewayv2 update-domain-name \ --domain-name 'api.example.com' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING
  2. 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/5.

    aws 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 } } ]'
  3. 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.

  4. 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
  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 roteamento abc123.

    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.