connectionId 또는 사용자 지정 토큰을 VPC 링크 통합에 Amazon API Gateway WebSocket API의 헤더로 전달하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 10월 26일

connectionId 또는 사용자 지정 토큰을 VPC 링크 통합에 Amazon API Gateway WebSocket API의 헤더로 전달하려고 합니다. 어떻게 해야 합니까?

간략한 설명

WebSocket API의 경우 백엔드에서 콜백 응답을 보내려면 connectionId가 필요합니다. 기본적으로 WebSocket API는 ConnectionId를 VPC 링크 통합에 전달하지 않습니다.

해결 방법

Amazon API Gateway 콘솔 및 AWS CLI 사용

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

1.    지침에 따라 REST API VPC 링크를 생성하고 이를 Network Load Balancer에 연결합니다.

2.    지침에 따라 WebSocket API 통합을 설정하고 VPC 링크 프라이빗 통합 엔드포인트를 생성합니다.

3.    통합 ID를 검색하려면 다음과 유사한 AWS CLI 명령 get-integrations를 실행합니다.

aws apigatewayv2 get-integrations --api-id <api-id>

4.    다음과 같은 형식으로 integration.json이라는 JSON 파일을 생성하고 저장합니다.

{
    "ApiId": "<api-id>",
    "IntegrationId": "<integration id retrieved from previous step>",
    "RequestParameters": {
        "integration.request.header.ConnectionId": "context.connectionId", //passing context variable connectionId as ConnectionId header to backend
        "integration.request.header.<header-key>": "route.request.body.<parameter>", // passing a request body parameter as header to backend
        "integration.request.querystring.<querysting-key>": "'static value'" //passing static value as querystring to backend
    }
}

참고: 5단계로 진행하기 전에 앞부분에 슬래시 ‘//’로 표시된 주석을 제거하세요.

5.    통합을 업데이트하려면 다음과 유사한 AWS CLI 명령 update-integration을 실행합니다.

aws apigatewayv2 update-integration --cli-input-json file://integration.json
6.    이러한 변경 사항을 적용하려면 지침에 따라 REST API를 배포하세요.

AWS CloudFormation 사용

CloudFormation을 사용하여 Amazon API Gateway를 관리하는 경우 AWS::ApiGatewayV2::Integration 리소스를 사용하여 다음과 유사한 요청 파라미터를 구성할 수 있습니다.

Integration:
    Type: AWS::ApiGatewayV2::Integration
    Properties:
      ApiId: !Ref websocket
      ConnectionId: !Ref <VPC-Link-connection-id>
      ConnectionType: VPC_LINK
      IntegrationMethod: <HTTP method to backend >
      IntegrationType: <HTTP_PROXY/HTTP>
      IntegrationUri: "<endpoint-url>"
      RequestParameters:
        "integration.request.header.connectionId": "context.connectionId" #passing context variable 'connectionId' as ConnectionId header to backend
        "integration.request.header.<header-key>": "route.request.body.<parameter>"  #passing a request body parameter as header to backend
        "integration.request.querystring.<querystring-key>": "'static value'" #passing static value as querystring to backend

데이터 매핑을 사용하여 라우팅 요청의 데이터를 VPC 링크 백엔드 통합에 매핑할 수 있습니다. 자세한 내용은 통합 요청 파라미터에 라우트 요청 데이터 매핑을 참조하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?