API Gateway에서 WebSocket API에 대한 데이터 매핑 설정 - Amazon API Gateway

API Gateway에서 WebSocket API에 대한 데이터 매핑 설정

데이터 매핑을 사용하면 라우팅 요청의 데이터를 백엔드 통합에 매핑할 수 있습니다.

참고

웹 소켓 API에 대한 데이터 매핑은 에서 지원되지 않습니다AWS Management Console 데이터 매핑을 구성하려면 AWS CLI, AWS CloudFormation 또는 SDK를 사용해야 합니다.

통합 요청 파라미터에 라우팅 요청 데이터 매핑

통합 요청 파라미터는 정의된 라우팅 요청 파라미터, 요청 본문, context 또는 stage 변수 및 정적 값에서 매핑될 수 있습니다.

다음 표에는 통합 요청 데이터 매핑 표현식이 나와 있습니다. 이 표에서 PARAM_NAME은 지정된 파라미터 유형의 라우팅 요청 파라미터 이름입니다. 정규식 '^[a-zA-Z0-9._$-]+$]'와 일치해야 합니다. JSONPath_EXPRESSION은 요청 본문의 JSON 필드에 대한 JSONPath 표현식입니다.

통합 요청 데이터 매핑 표현식
매핑된 데이터 원본 매핑 표현식
요청 쿼리 문자열($connect 라우팅의 경우에만 지원) route.request.querystring.PARAM_NAME
요청 헤더($connect 라우팅의 경우에만 지원) route.request.header.PARAM_NAME
다중 값 요청 쿼리 문자열($connect 라우팅의 경우에만 지원) route.request.multivaluequerystring.PARAM_NAME
다중 값 요청 헤더($connect 라우팅의 경우에만 지원) route.request.multivalueheader.PARAM_NAME
요청 본문 route.request.body.JSONPath_EXPRESSION
단계 변수 stageVariables.VARIABLE_NAME
컨텍스트 변수 context.VARIABLE_NAME지원되는 컨텍스트 변수 중 하나여야 합니다.
정적 값 'STATIC_VALUE'. STATIC_VALUE는 문자열 리터럴이며 작은따옴표로 묶여야 합니다.

다음 AWS CLI 예제에서는 데이터 매핑을 구성합니다. AWS CloudFormation 템플릿 예시를 보려면 websocket-data-mapping.yaml 단원을 참조하세요.

통합 요청의 헤더에 클라이언트의 connectionId 매핑

다음 예제 명령은 백엔드 통합에 대한 요청의 connectionId 헤더에 클라이언트의 connectionId를 매핑합니다.

aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.connectionId'='context.connectionId'

통합 요청의 헤더에 쿼리 문자열 파라미터 매핑

다음 예제 명령은 통합 요청의 authToken 헤더에 authToken 쿼리 문자열 파라미터를 매핑합니다.

먼저 라우팅의 요청 파라미터에 authToken 쿼리 문자열 파라미터를 추가합니다.

aws apigatewayv2 update-route --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameters '{"route.request.querystring.authToken": {"Required": false}}'

그런 다음 백엔드 통합에 대한 요청의 authToken 헤더에 쿼리 문자열 파라미터를 매핑합니다.

aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.authToken'='route.request.querystring.authToken'

필요한 경우 경로의 요청 파라미터에서 authToken 쿼리 문자열 파라미터를 삭제합니다.

aws apigatewayv2 delete-route-request-parameter \ --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameter-key 'route.request.querystring.authToken'