Reglas de enrutamiento para conectar las etapas de API a un nombre de dominio personalizado para las API de REST
Una regla de enrutamiento es un conjunto de condiciones que, cuando coinciden, invocan una acción. Por ejemplo, una regla puede enrutar cualquier solicitud entrante a un nombre de dominio personalizado que contenga el encabezado Hello:World
y contenga la ruta base users
a la etapa production
de una API de REST.
Las reglas se evalúan por orden de prioridad, y si establece el modo de enrutamiento en ROUTING_RULE_THEN_API_MAPPING
, API Gateway siempre evalúa todas las reglas de enrutamiento antes de evaluar cualquier asignación de API. En la siguiente lista se describe cómo una regla de enrutamiento utiliza condiciones, acciones y prioridades.
- Condiciones
-
Cuando se cumplen las condiciones de una regla, se llevan a cabo sus acciones. API Gateway admite hasta dos condiciones de encabezado y una condición de ruta. API Gateway evalúa conjuntamente las condiciones de encabezado y las condiciones de ruta base.
Puede crear una regla sin condiciones. Cuando API Gateway evalúa esta regla, siempre se realiza la acción. Puede crear una regla sin ninguna condición como regla catch-all.
Para obtener más información sobre las condiciones de encabezado, consulte Condiciones de encabezado de coincidencia. Para obtener más información sobre las condiciones de ruta, consulte Coincidencia de condiciones de ruta base.
- Acciones
-
Las acciones son el resultado de la coincidencia de condiciones con una regla de enrutamiento. Actualmente, la única acción admitida es invocar una etapa de una API de REST.
Cada regla puede tener una acción.
- Priority (Prioridad)
-
La prioridad determina en qué orden se evalúan las reglas, del valor más bajo al más alto. Las reglas no pueden tener la misma prioridad.
Puede establecer la prioridad entre 1 y 1 000 000. Si una regla tiene una prioridad de uno, API Gateway la evalúa en primer lugar. Le recomendamos que, cuando cree una regla, agregue espacios en las prioridades. Esto lo ayuda a cambiar la prioridad de las reglas y a agregar nuevas reglas. Para obtener más información, consulte Cambio de la prioridad de una regla de enrutamiento.
Para ver ejemplos de cómo API Gateway evalúa las reglas de enrutamiento, consulte Ejemplos de cómo API Gateway evalúa las reglas de enrutamiento.
Tipos de condiciones de las reglas de enrutamiento de API Gateway
En la siguiente sección se describen los tipos de condiciones de las reglas de enrutamiento. API Gateway solo hace coincidir una regla si se cumplen todas las condiciones.
Condiciones de encabezado de coincidencia
Al crear una condición de encabezado, puede hacer coincidir el nombre del encabezado y el valor glob del encabezado, como Hello:World
. API Gateway utiliza una coincidencia literal para validar las condiciones de encabezado de coincidencia. La condición puede utilizar hasta dos encabezados con AND
entre ellos. Por ejemplo, la condición puede coincidir si una solicitud entrante contiene Hello:World
y x-version:beta
.
La coincidencia del nombre del encabezado no distingue entre mayúsculas y minúsculas, pero el valor glob del encabezado sí. Hello:World
coincidirá con hello:World
, pero no con Hello:world
.
Para ver una lista de valores de encabezado restringidos, consulte Restricciones.
Uso de caracteres comodín con condiciones de encabezado
Solo puede utilizar caracteres comodín en el valor glob del encabezado y el carácter comodín debe ser *prefix-match
, suffix-match*
o *contains*
. En la siguiente tabla se muestran ejemplos de cómo utilizar comodines para la coincidencia de condiciones de encabezado.
Condiciones de encabezado | Solicitudes que coinciden con la regla de enrutamiento | Solicitudes que no coinciden con la regla de enrutamiento |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ninguno |
Si crea condiciones para varios valores de encabezado, como Accept:application/json,text/xml
, le recomendamos que utilice *contains*
para las condiciones de encabezado y evite crear condiciones utilizando el carácter de coma (,
).
Dado que API Gateway enruta las condiciones de encabezado literalmente, las coincidencias semánticas podrían enrutarse de forma diferente. En la siguiente tabla se muestra la diferencia en los resultados de las reglas de enrutamiento.
Condiciones de encabezado | Solicitudes que coinciden con la regla de enrutamiento | Solicitudes que no coinciden con la regla de enrutamiento |
---|---|---|
|
|
|
|
|
Ninguno |
Coincidencia de condiciones de ruta base
Al crear una condición de ruta base, si la solicitud entrante contiene la ruta especificada, la regla coincide. La coincidencia distingue entre mayúsculas y minúsculas, por lo que la ruta New/Users
no coincidirá con new/users
.
Puede crear una condición de ruta base solo para una ruta base.
Para obtener una lista de condiciones de ruta base restringidas, Restricciones.
Eliminación de la ruta base con condiciones de ruta base
Cuando crea una condición de ruta base, puede elegir eliminar la ruta base. Cuando elimina la ruta base, API Gateway elimina la ruta base coincidente entrante cuando invoca la API de destino. Este es el mismo comportamiento que cuando utiliza una asignación de API. Si no elimina la ruta base, API Gateway reenvía toda la ruta base a la API de destino. Le recomendamos que solo elimine la ruta base cuando vuelva a crear una asignación de API.
En la siguiente tabla se muestran ejemplos de cómo API Gateway evalúa la condición de eliminación de la ruta base.
Condición | Eliminación de la ruta base | Solicitud entrante | Resultado |
---|---|---|---|
Si la ruta base contiene |
True |
|
API Gateway llama al método |
Si la ruta base contiene |
False |
|
API Gateway llama al método |
Si la ruta base contiene |
True |
|
API Gateway llama al método |
Si la ruta base contiene |
False |
|
API Gateway llama al método |
Si la ruta base contiene |
True |
|
API Gateway llama al método |
Si la ruta base contiene |
False |
|
API Gateway llama al método |
Restricciones
-
La API de destino y el nombre de dominio personalizado deben estar en la misma cuenta de AWS.
Cada regla puede tener una API de destino.
-
Solo puede crear una regla de enrutamiento para un nombre de dominio personalizado privado hacia una API privada y para un nombre de dominio personalizado público hacia una API pública. No puede mezclar recursos públicos y privados.
-
Si el nombre de dominio personalizado tiene asignaciones de API tanto a las API de REST como de HTTP, no se admiten las reglas de enrutamiento.
El número de prioridad máximo es 1 000 000.
-
Restricciones de encabezado:
Cada condición
anyOf
solo puede contener un valor de encabezado.-
Los únicos caracteres permitidos para los nombres de encabezado y los valores glob de encabezado están especificados por RFC 7230
, que son a-z
,A-Z
,0-9
y los siguientes caracteres especiales:*?-!#$%&'.^_`|~
. -
Puede utilizar un comodín en el valor glob del encabezado, pero el comodín debe ser
*prefix-match
,suffix-match*
o*contains*
. No puede utilizar*
en medio de un valor glob de encabezado. No se admiten nombres de encabezado con caracteres comodín.
El nombre del encabezado debe tener menos de 40 caracteres.
El valor glob del encabezado debe tener menos de 128 caracteres.
El valor glob del encabezado para una coincidencia de infijo debe tener menos de 40 caracteres.
Los siguientes encabezados no se admiten como condiciones:
access-control-*
apigw-*
Authorization
Connection
Content-Encoding
Content-Length
Content-Location
Forwarded
Keep-Alive
Origin
Proxy-Authenticate
Proxy-Authorization
TE
Trailers
Transfer-Encoding
Upgrade
x-amz-*
x-amzn-*
X-Forwarded-For
X-Forwarded-Host
X-Forwarded-Proto
Via
-
Restricciones de la ruta base:
La longitud de la ruta base debe ser inferior a 128 caracteres.
-
La ruta base debe contener solo letras, números y los siguientes caracteres:
$-_.+!*'()/
. La ruta base no puede empezar ni terminar por el carácter de barra invertida (
/
).