Establecimiento del modo de enrutamiento para el nombre de dominio personalizado - Amazon API Gateway

Establecimiento del modo de enrutamiento para el nombre de dominio personalizado

Puede elegir qué modo de enrutamiento utiliza API Gateway para enrutar el tráfico a las API. Para obtener más información, consulte Envío de tráfico a las API a través del nombre de dominio personalizado en API Gateway. En esta sección se explican los modos de enrutamiento para nombres de dominio personalizados. Debe establecer un modo de enrutamiento para el nombre de dominio personalizado a fin de enrutar el tráfico a las API. Se admiten los siguientes modos de enrutamiento:

  • ROUTING_RULE_THEN_API_MAPPING: utilice este modo para enviar tráfico a las API tanto con reglas de enrutamiento como con asignaciones de API. En este modo, todas las reglas de enrutamiento tienen prioridad sobre cualquier asignación de API. Para ver un ejemplo de este modo, consulte Ejemplo 2: reglas de enrutamiento y asignaciones de API.

  • ROUTING_RULE_ONLY: utilice este modo para permitir solo que las reglas de enrutamiento envíen tráfico a las API. Cuando el dominio personalizado utiliza este modo, no puede crear una asignación de API, pero puede utilizar el comando get-api-mappings para verlas. Los intermediarios que llaman a la API no pueden utilizar asignaciones de API para acceder a este nombre de dominio.

  • API_MAPPING_ONLY: utilice este modo para permitir solo que las asignaciones de API envíen tráfico a las API. Cuando el nombre de dominio personalizado utiliza este modo, no puede crear una regla de enrutamiento, pero puede utilizar el comando list-routing-rules para verlas. Los intermediarios que llaman a la API no pueden utilizar reglas de enrutamiento para acceder a este nombre de dominio.

    Este es el modo de enrutamiento predeterminado para todos los nombres de dominio existentes y para cualquier nombre de dominio nuevo que cree.

Cuando crea un nombre de dominio personalizado mediante apigateway, API_MAPPING_ONLY se llama BASE_PATH_MAPPING_ONLY y ROUTING_RULE_THEN_API_MAPPING se llama ROUTING_RULE_THEN_BASE_PATH_MAPPING. Este comportamiento solo está presente para la AWS CLI, AWS CloudFormation o cualquier SDK, no en la AWS Management Console.

El procedimiento siguiente muestra cómo cambiar el modo de enrutamiento de un nombre de dominio personalizado existente. Cuando cambie el modo de enrutamiento del nombre de dominio personalizado, los intermediarios que llamen a la API no podrán acceder al nombre de dominio con ningún modo de enrutamiento no admitido.

AWS Management Console
  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. Elija Custom domain names (Nombres de dominios personalizados) en el panel de navegación principal.

  3. Elija un nombre de dominio personalizado.

  4. En Detalles del dominio, elija Editar.

  5. En Modo de enrutamiento, elija ROUTING_RULE_THEN_API_MAPPING.

  6. Seleccione Save.

Si cambia el modo de enrutamiento a ROUTING_RULE_ONLY o API_MAPPING_ONLY, cualquier asignación de API o regla de enrutamiento que haya creado se eliminará de la página de detalles del nombre de dominio de la consola. Si cambia el modo de enrutamiento para que admita reglas de enrutamiento o asignaciones de API, estos recursos volverán a aparecer.

AWS CLI - apigatewayv2

El siguiente comando update-domain-name actualiza un nombre de dominio para utilizar el modo de enrutamiento ROUTING_RULE_THEN_API_MAPPING:

aws apigatewayv2 update-domain-name \ --domain-name 'api.example.com' \ --routing-mode "ROUTING_RULE_THEN_API_MAPPING"

El resultado será similar al siguiente:

{ "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

El siguiente comando update-domain-name actualiza un nombre de dominio personalizado privado para utilizar el modo de enrutamiento 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'"

El resultado será similar al siguiente:

{ "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" }