Nueva creación de una asignación de API mediante reglas de enrutamiento
Puede volver a crear una asignación de API mediante reglas de enrutamiento. Para volver a crear una asignación de API, asegúrese de activar la separación de rutas base. Esto preserva el comportamiento de las asignaciones de API. Para obtener más información, consulte Eliminación de la ruta base con condiciones de ruta base.
En el siguiente tutorial se muestra cómo volver a crear la asignación de API https://
como una regla de enrutamiento y cómo actualizar los registros de acceso para registrar el ID de la regla de enrutamiento que API Gateway utiliza para enviar tráfico a la API.api.example.com
/orders/v2/items/categories/5
- AWS Management Console
-
Establecimiento del modo de enrutamiento en ROUTING_RULE_THEN_API_MAPPING
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. Elija Custom domain names (Nombres de dominios personalizados) en el panel de navegación principal.
-
Elija el nombre de dominio personalizado.
-
En Detalles del dominio, elija Editar.
-
En Modo de enrutamiento, elija ROUTING_RULE_THEN_API_MAPPING.
-
Seleccione Save.
Una vez establecido el modo de enrutamiento, cree la regla de enrutamiento.
Creación de la regla de enrutamiento
-
En la pestaña Detalles de enrutamiento, elija Agregar regla de enrutamiento.
-
Seleccione Agregar nueva condición y, a continuación, elija Ruta.
-
En Ruta, introduzca
orders/v2/items/categories/5
. -
En Eliminar ruta base, elija Activa.
En API de destino, elija la API de destino.
En Etapa de destino, elija la etapa de destino.
-
Elija Siguiente.
-
Para la prioridad, introduzca una prioridad.
Aunque mantenga la asignación de API existente, API Gateway utilizará siempre la nueva regla de enrutamiento, ya que las reglas de enrutamiento siempre tienen prioridad sobre las asignaciones de API.
Seleccione Save changes (Guardar cambios).
Después de crear la regla de enrutamiento, actualice el formato del registro de acceso de la etapa o cree un nuevo registro para confirmar que API Gateway utiliza la regla de enrutamiento para enviar tráfico a la API.
Actualización de registros de acceso
Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway
. Elija la API.
En el panel de navegación principal, elija Etapas.
En Registros y seguimiento, elija Editar.
Si no dispone de un grupo de registro, consulte Configuración del registro de CloudWatch para las API de REST en API Gateway.
Agregue
$context.customDomain.routingRuleIdMatched
al formato de registro.Este grupo de registro guarda el ID de la regla de enrutamiento que API Gateway utilizó para enviar tráfico a la API. Para obtener más información, consulte No puedo saber cómo API Gateway ha enviado tráfico a mis API.
Seleccione Save.
Después de actualizar los registros de acceso, invoque el nombre de dominio personalizado. El siguiente es un comando curl de ejemplo para invocar el nombre de dominio personalizado
https://
con la ruta baseapi.example.com
orders/v2/items/categories/5
.curl "https://
api.example.com
/orders/v2/items/categories/5"Una vez que haya invocado correctamente el nombre de dominio personalizado, confirme que CloudWatch Logs muestra
routingRuleIdMatched
. Para obtener información sobre cómo utilizar la consola de CloudWatch Logs para ver un grupo de registros, consulte Visualización de eventos de registro de API Gateway en la consola de CloudWatch. - AWS CLI
-
-
Utilice el siguiente comando update-domain-name para actualizar el nombre de dominio
y utilizar el modo de enrutamientoapi.example.com
ROUTING_RULE_THEN_API_MAPPING
.aws apigatewayv2 update-domain-name \ --domain-name '
api.example.com
' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING -
Utilice el siguiente comando create-routing-rule para crear una nueva regla de enrutamiento para volver a crear la asignación de la 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 } } ]' -
Utilice el siguiente comando update-stage para actualizar el formato de los registros de acceso e incluir la variable
$context.customDomain.routingRuleIdMatched
. Esta variable registra el ID de la regla de enrutamiento que API Gateway utilizó para enviar tráfico a la API. Utilice este registro para confirmar que API Gateway utiliza la regla de enrutamiento para enviar tráfico a la API. Para obtener más información, consulte No puedo saber cómo API Gateway ha enviado tráfico a mis API.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'"Si no dispone de un grupo de registro, consulte Configuración del registro de CloudWatch para las API de REST en API Gateway.
-
Utilice el siguiente comando curl de ejemplo para invocar el nombre de dominio personalizado con la ruta base
orders/v2/items/categories/5
.curl "https://
api.example.com
/orders/v2/items/categories/5 -
Utilice el siguiente comando filter-log-events para obtener los eventos de registro del grupo de registro
access-log-group-orders
que contengan el ID de regla de enrutamientoabc123
.aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
Esto confirma que API Gateway utilizó la regla de enrutamiento para enviar tráfico a la API.
-