Definir o modo de roteamento para o nome de domínio personalizado - Amazon API Gateway

Definir o modo de roteamento para o nome de domínio personalizado

Você pode escolher qual modo de roteamento o API Gateway deve usar para rotear o tráfego para as APIs. Para obter mais informações, consulte Encaminhar o tráfego às APIs por meio do nome de domínio personalizado no API Gateway. Esta seção aborda modos de roteamento para nomes de domínio personalizados. Você deve definir um modo de roteamento para o nome de domínio personalizado para rotear o tráfego para as APIs. Os seguintes modos de roteamento são permitidos:

  • ROUTING_RULE_THEN_API_MAPPING: use esse modo para enviar tráfego às APIs com regras de roteamento e mapeamentos de API. Nesse modo, todas as regras de roteamento têm prioridade sobre qualquer mapeamento de API. Para obter um exemplo desse modo, consulte Exemplo 2: regras de roteamento e mapeamentos de API.

  • ROUTING_RULE_ONLY: use esse modo para permitir que somente as regras de roteamento enviem tráfego às APIs. Quando o nome de domínio personalizado usa esse modo, não é possível criar um mapeamento de API, mas você pode usar o comando get-api-mappings para visualizá-lo. Os autores de chamada de API não podem usar mapeamentos de API para acessar esse nome de domínio.

  • API_MAPPING_ONLY: use esse modo para permitir que somente mapeamentos de API enviem tráfego às APIs. Quando o nome de domínio personalizado usa esse modo, não é possível criar um mapeamento de API, mas você pode usar o comando list-routing-rules para visualizá-lo. Os autores de chamada de API não podem usar regras de roteamento para acessar esse nome de domínio.

    Esse é o modo de roteamento padrão para todos os nomes de domínio existentes e quaisquer novos nomes de domínio que você criar.

Ao criar um nome de domínio personalizado usando apigateway, API_MAPPING_ONLY é chamado BASE_PATH_MAPPING_ONLY e ROUTING_RULE_THEN_API_MAPPING é chamado ROUTING_RULE_THEN_BASE_PATH_MAPPING. Esse comportamento ocorre somente na AWS CLI, no AWS CloudFormation ou em qualquer SDK, não no AWS Management Console.

O procedimento a seguir mostra como alterar o modo de roteamento para um nome de domínio personalizado existente. Ao alterar o modo de roteamento do nome de domínio personalizado, os autores de chamada de API não podem acessar seu nome de domínio usando nenhum modo de roteamento incompatível.

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. Em Detalhes do domínio, escolha Editar.

  5. Em Modo de roteamento, escolha ROUTING_RULE_THEN_API_MAPPING.

  6. Escolha Salvar.

Se você alterar o modo de roteamento para ROUTING_RULE_ONLY ouAPI_MAPPING_ONLY, todos os mapeamentos de API ou regras de roteamento que você criou serão removidos da página de detalhes do nome de domínio do console. Se você alterar o modo de roteamento para permitir o uso de regras de roteamento ou mapeamentos de API, esses recursos retornarão.

AWS CLI - apigatewayv2

O comando update-domain-name indicado abaixo atualiza um nome de domínio para usar o 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"

A saída será exibida da seguinte forma:

{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "api.example.com", "DomainNameArn": "arn:aws:apigateway:us-west-2::/domainnames/api.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-abcdefg.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/abcdefg-123456-abcdefg", "DomainNameStatus": "AVAILABLE", "EndpointType": "REGIONAL", "HostedZoneId": "Z2OJLYMUO9EFXC", "SecurityPolicy": "TLS_1_2" } ], "RoutingMode": "ROUTING_RULE_THEN_API_MAPPING", "Tags": {} }
AWS CLI - apigateway

O comando update-domain-name indicado abaixo atualiza um nome de domínio personalizado privado para usar o modo de roteamento ROUTING_RULE_THEN_BASE_PATH_MAPPING:

aws apigateway update-domain-name \ --domain-name 'private.example.com' \ --patch-operations "op='replace',path='/routingMode',value='ROUTING_RULE_THEN_BASE_PATH_MAPPING'"

A saída será exibida da seguinte forma:

{ "domainName": "private.example.com", "domainNameId": "abcd1234", "domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234", "certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef", "certificateUploadDate": "2024-09-10T10:31:20-07:00", "endpointConfiguration": { "types": [ "PRIVATE" ], "ipAddressType": "dualstack" }, "domainNameStatus": "AVAILABLE", "securityPolicy": "TLS_1_2", "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"execute-api:\/*\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\""execute-api:\/*\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-abcd1234efg\"}}}]}", "routingMode" : "ROUTING_RULE_THEN_BASE_PATH_MAPPING" }