Cómo utilizar las reglas de enrutamiento - Amazon API Gateway

Cómo utilizar las reglas de enrutamiento

Puede crear una regla de enrutamiento mediante la AWS Management Console, la AWS CLI o cualquier AWS SDK. Después de crear una regla, puede cambiar la prioridad.

Creación de una regla de enrutamiento

El siguiente procedimiento muestra cómo crear una regla de enrutamiento para un nombre de dominio personalizado con un modo de enrutamiento establecido en ROUTING_RULE_THEN_API_MAPPING o ROUTING_RULE_ONLY.

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 la pestaña Detalles de enrutamiento, elija Agregar regla de enrutamiento.

  5. Elija Agregar una nueva condición para agregar una nueva condición.

    Puede agregar una condición de encabezado o de ruta base. Para hacer coincidir todas las solicitudes entrantes con el nombre de dominio personalizado, no agregue una condición.

  6. En Acción, utilice la lista desplegable para seleccionar la API de destino y la etapa de destino.

  7. Elija Siguiente.

  8. En el campo de prioridad, introduzca un número para la prioridad.

    API Gateway evalúa las reglas en orden de prioridad, del valor más bajo al más alto.

    Si va a crear una regla sin una condición, le recomendamos que utilice un valor de prioridad alto.

  9. Elija Crear regla de enrutamiento.

AWS CLI

El siguiente comando create-routing-rule crea una regla de enrutamiento con una prioridad de 50. En este ejemplo, API Gateway enruta cualquier solicitud entrante que tenga los encabezados Hello:World y x-version:beta y la ruta base PetStoreShopper a la API de destino a1b2c3.

aws apigatewayv2 create-routing-rule \ --domain-name 'api.example.com' \ --priority 50 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'

El resultado será similar al siguiente.

{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 50, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }

Cambio de la prioridad de una regla de enrutamiento

Puede cambiar la prioridad de una regla de enrutamiento. Esto tiene efecto inmediato y podría afectar el modo en que los consumidores de API invocan los nombres de dominio personalizados. Le recomendamos que, cuando establezca las prioridades de las reglas de enrutamiento, deje espacios entre las reglas.

Por ejemplo, considere dos reglas de enrutamiento, la regla abc123 con una prioridad de 50 y la regla zzz000 con una prioridad de 150. Para cambiar la prioridad de las reglas de modo que API Gateway evalúe primero la regla zzz000, puede cambiar la prioridad de la regla zzz000 a 30.

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 la pestaña Detalles de enrutamiento, elija la regla de enrutamiento y, a continuación, Editar.

  5. Elija Siguiente.

  6. Para la prioridad, introduzca la nueva prioridad.

  7. Seleccione Save changes (Guardar cambios).

AWS CLI

El siguiente comando put-routing-rule cambia la prioridad de una regla de enrutamiento abc123.

aws apigatewayv2 put-routing-rule \ --domain-name 'api.example.com' \ --priority 30 \ --routing-rule-id abc123 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'

El resultado será similar al siguiente:

{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 38, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }