Expresiones de selección de WebSocket en API Gateway - Amazon API Gateway

Expresiones de selección de WebSocket en API Gateway

API Gateway utiliza expresiones de selección como forma de evaluar el contexto de solicitud y respuesta y producir una clave. La clave se utiliza para seleccionar un valor de un conjunto de valores posibles, normalmente proporcionados por el desarrollador de la API. El conjunto exacto de variables admitidas variará en función de la expresión dada. A continuación se describe con más detalle cada expresión.

En todas las expresiones, el lenguaje sigue el mismo conjunto de reglas:

  • Las variables tienen el prefijo "$".

  • Se pueden utilizar llaves para definir explícitamente los límites de las variables, por ejempl., "${request.body.version}-beta".

  • Se admite el uso de varias variables, pero la evaluación solo se produce una vez (sin evaluación recursiva).

  • A los signos de dólar ($) se les puede aplicar una secuencia de escape con "\". Esto resulta muy útil al definir una expresión que se asigna a la clave $default reservada, como, por ejemplo, "\$default".

  • En algunos casos, se requiere un patrón de formato. En este caso, la expresión debe encerrarse entre barras inclinadas ("/"), por ejemplo "/2\d\d/", para que coincida con los códigos de estado 2XX.

Expresiones de selección de respuesta de ruta

Las respuestas de ruta se utilizan para modelar una respuesta desde el backend al cliente. En la API de WebSocket, la respuesta de ruta es opcional. Si se define, indica a API Gateway que debe devolver una respuesta a un cliente al recibir un mensaje de WebSocket.

La evaluación de la expresión de selección de respuesta de ruta produce una clave de respuesta de ruta. Con el tiempo, esta clave se utilizará para elegir una de las respuestas RouteResponses asociadas a la API. Sin embargo, actualmente solo se admite la clave $default.

Expresiones de selección de clave de API

Esta expresión se evalúa cuando el servicio determina que la solicitud dada debe continuar solo si el cliente proporciona una clave de API válida.

Actualmente, los únicos dos valores admitidos son $request.header.x-api-key y $context.authorizer.usageIdentifierKey.

Expresiones de selección de asignación de API

Esta expresión se evalúa para determinar qué etapa de API está seleccionada cuando se realiza una solicitud mediante un dominio personalizado.

Actualmente el único valor admitido es $request.basepath.

Resumen de expresiones de selección de WebSocket

En la tabla siguiente, se resumen los casos de uso de las expresiones de selección en las API de WebSocket:

Expresión de selección Se evalúa como la clave para Notas Ejemplo de caso de uso
Api.RouteSelectionExpression Route.RouteKey $default se admite como una ruta catch-all. Direccionar los mensajes de WebSocket en función del contexto de una solicitud de cliente.
Route.ModelSelectionExpression Clave para Route.RequestModels

Opcional.

Si se proporciona para una integración que no sea de proxy, se produce la validación del modelo.

$default se admite como método catch-all.

Realizar la validación de solicitudes de forma dinámica dentro de la misma ruta.
Integration.TemplateSelectionExpression Clave para Integration.RequestTemplates

Opcional.

Se puede proporcionar para la integración que no sea de proxy con el fin de manipular las cargas entrantes.

${request.body.jsonPath}Se admiten y valores estáticos.

$default se admite como método catch-all.

Manipular la solicitud del intermediario en función de las propiedades dinámicas de la solicitud.
Integration.IntegrationResponseSelectionExpression IntegrationResponse.IntegrationResponseKey

Opcional. Se puede proporcionar para una integración que no sea de proxy.

Actúa como una coincidencia de patrones para los mensajes de error (de Lambda) o los códigos de estado (de las integraciones HTTP).

$default es necesario en las integraciones que no sean de proxy para que actúe como el método catch-all para las respuestas correctas.

Manipular la respuesta del backend.

Elegir la acción que debe realizarse en función de la respuesta dinámica del backend (por ejemplo, controlar de forma inequívoca determinados errores).

IntegrationResponse.TemplateSelectionExpression Clave para IntegrationResponse.ResponseTemplates Opcional. Se puede proporcionar para una integración que no sea de proxy.

Se admite $default.

En algunos casos, una propiedad dinámica de la respuesta puede dictar la necesidad de transformaciones diferentes dentro de la misma ruta y la integración asociada.

${request.body.jsonPath}, ${integration.response.statuscode}, ${integration.response.header.headerName}, ${integration.response.multivalueheader.headerName}, Se admiten , , , y valores estáticos.

$default se admite como método catch-all.

Route.RouteResponseSelectionExpression RouteResponse.RouteResponseKey

Debe proporcionarse para iniciar la comunicación bidireccional en una ruta de WebSocket.

Actualmente, este valor está restringido únicamente a $default.

RouteResponse.ModelSelectionExpression Clave para RouteResponse.RequestModels No se admite actualmente.