WebSocket 선택 표현식 - Amazon API Gateway

WebSocket 선택 표현식

API Gateway는 요청 및 응답 컨텍스트를 평가하고 키를 생성하는 방법의 하나로 선택 표현식을 사용합니다. 이 경우 키는 일반적으로 API 개발자가 제공하는 가능한 값 집합 중에서 선택하는 데 사용됩니다. 지원되는 변수 집합은 특정 표현식에 따라 달라집니다. 각 표현식에 대해서는 아래에서 자세히 설명합니다.

모든 표현식에 대해 언어는 동일한 규칙 세트를 따릅니다.

  • 변수에는 "$"라는 접두사가 붙습니다.

  • 중괄호를 사용하여 변수 경계를 명시적으로 정의할 수 있습니다(예: "${request.body.version}-beta").

  • 여러 변수가 지원되지만 평가는 한 번만 발생합니다(recursive 평가 없음).

  • 달러 문자($)는 "\"로 이스케이프될 수 있습니다. 예약된 $default 키에 매핑되는 표현식을 정의할 때 가장 유용합니다(예: "\$default").

  • 경우에 따라 패턴 형식이 필요합니다. 이 경우 표현식은 슬래시("/")로 래핑해야 합니다(예: "/2\d\d/" 상태 코드와 일치하도록 2XX).

라우팅 응답 선택 표현식

라우팅 응답은 백엔드에서 클라이언트로 응답을 모델링하는 데 사용됩니다. WebSocket API에서 라우팅 응답은 선택 사항입니다. 정의되면, WebSocket 메시지 수신 시 클라이언트에 응답을 반환해야 한다는 신호를 API Gateway에 보냅니다.

라우팅 응답 선택 표현식의 평가는 라우팅 응답 키를 생성합니다. 결국 이 키는 API와 연결된 RouteResponses 중에서 하나를 선택하는 데 사용됩니다. 그러나 현재는 $default 키만 지원됩니다.

API 키 선택 표현식

클라이언트가 유효한 API 키를 제공하는 경우에만 요청이 진행되어야 한다고 서비스가 판단할 때 이 표현식이 평가됩니다.

현재 지원되는 두 가지 값은 $request.header.x-api-key$context.authorizer.usageIdentifierKey입니다.

API 매핑 선택 표현식

이 표현식은 사용자 지정 도메인을 사용하여 요청이 이루어질 때 선택되는 API 스테이지를 결정하기 위해 평가됩니다.

현재 지원되는 값은 $request.basepath입니다.

WebSocket 선택 표현식 요약

다음 표는 WebSocket API의 선택 표현식 사용 사례를 요약한 것입니다.

선택 표현식 다음에 대한 키 평가 참고 사용 사례
Api.RouteSelectionExpression Route.RouteKey $default는 catch-all 라우팅으로 지원됩니다. 클라이언트 요청 컨텍스트를 기반으로 WebSocket 메시지를 라우팅합니다.
Route.ModelSelectionExpression Route.RequestModels에 대한 키

선택.

비 프록시 통합에 제공되는 경우 모델 확인이 이루어집니다.

$default는 catch-all로 지원됩니다.

동일한 라우팅 내에서 요청 확인을 동적으로 수행합니다.
Integration.TemplateSelectionExpression Integration.RequestTemplates에 대한 키

선택.

수신 페이로드를 조작하기 위해 비 프록시 통합에 제공될 수 있습니다.

${request.body.jsonPath} 및 정적 값이 지원됩니다.

$default는 catch-all로 지원됩니다.

요청의 동적 속성을 기반으로 호출자의 요청을 조작합니다.
Integration.IntegrationResponseSelectionExpression IntegrationResponse.IntegrationResponseKey

선택. 비 프록시 통합을 위해 제공될 수 있습니다.

오류 메시지(Lambda의) 또는 상태 코드(HTTP 통합의)에 대한 패턴 일치로 작동합니다.

$default는 비 프록시 통합이 성공적인 응답에 대한 catch-all 역할을 하는 데 필요합니다.

백엔드의 응답을 조작합니다.

백엔드의 동적 응답에 따라 수행할 작업을 선택하십시오(예: 특정 오류를 명확히 처리).

IntegrationResponse.TemplateSelectionExpression IntegrationResponse.ResponseTemplates에 대한 키 선택. 비 프록시 통합을 위해 제공될 수 있습니다.

$default가 지원됩니다.

경우에 따라 응답의 동적 속성은 동일한 라우팅 및 연결된 통합 내에서 다양한 변환을 지시할 수 있습니다.

${request.body.jsonPath} ${integration.response.statuscode} ,${integration.response.header.headerName},${integration.response.multivalueheader.headerName} ,및 정적 값이 지원됩니다.

$default는 catch-all로 지원됩니다.

Route.RouteResponseSelectionExpression RouteResponse.RouteResponseKey

WebSocket 라우팅에 대한 양방향 통신을 시작하기 위해 제공되어야 합니다.

현재 이 값은 $default로 제한됩니다.

RouteResponse.ModelSelectionExpression RouteResponse.RequestModels에 대한 키 현재 지원되지 않습니다.