쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

연결된 사용자 및 클라이언트 앱 관리: $connect$disconnect 라우팅

포커스 모드
연결된 사용자 및 클라이언트 앱 관리: $connect 및 $disconnect 라우팅 - Amazon API Gateway

다음 섹션에서는 WebSocket API에 $connect$disconnect 라우팅을 사용하는 방법을 설명합니다.

$connect 라우팅

클라이언트 앱은 WebSocket 업그레이드 요청을 전송하여 WebSocket API에 연결합니다. 요청이 성공하면 연결이 설정되는 동안 $connect 라우팅이 실행됩니다.

WebSocket 연결은 상태 저장 연결이므로 $connect 라우팅에서만 권한 부여를 구성할 수 있습니다. AuthN/AuthZ은 연결 시점에만 수행됩니다.

$connect 라우팅과 연결된 통합 실행이 완료될 때까지 업그레이드 요청은 대기 중이고 실제 연결이 설정되지 않습니다. $connect 요청이 실패하면(예: AuthN/AuthZ 실패 또는 통합 실패로 인해) 연결이 이루어지지 않습니다.

참고

$connect에서 권한 부여에 실패하면 연결이 설정되지 않고 클라이언트는 401 또는 403 응답을 받게 됩니다.

$connect에 대한 통합 설정은 선택 사항입니다. 다음의 경우 $connect 통합 설정을 고려해야 합니다.

  • 클라이언트가 Sec-WebSocket-Protocol 필드를 사용하여 서브프로토콜을 지정할 수 있도록 하고 싶습니다. 예제 코드는 WebSocket 하위 프로토콜이 필요한 $connect 라우팅 설정 단원을 참조하세요.

  • 클라이언트가 연결될 때 알림을 받고 싶습니다.

  • 연결을 조절하거나 연결하는 사람을 통제하고 싶습니다.

  • 백엔드가 콜백 URL을 사용하여 클라이언트로 메시지를 다시 보내도록 하고 싶습니다.

  • 각 연결 ID 및 기타 정보를 데이터베이스(예: Amazon DynamoDB)에 저장하고 싶습니다.

$connect 라우팅에서 연결 정보 전달

프록시 및 비프록시 통합을 모두 사용하여 $connect 경로에서 데이터베이스 또는 기타 AWS 서비스 서비스로 정보를 전달할 수 있습니다.

프록시 통합을 사용하여 연결 정보 전달

이벤트의 Lambda 프록시 통합에서 연결 정보에 액세스할 수 있습니다. 다른 AWS 서비스 또는 AWS Lambda 함수를 사용하여 연결에 게시합니다.

다음 Lambda 함수는 requestContext 객체를 사용하여 연결 ID, 도메인 이름, 단계 이름 및 쿼리 문자열을 기록하는 방법을 보여줍니다.

Node.js
export const handler = async(event, context) => { const connectId = event["requestContext"]["connectionId"] const domainName = event["requestContext"]["domainName"] const stageName = event["requestContext"]["stage"] const qs = event['queryStringParameters'] console.log('Connection ID: ', connectId, 'Domain Name: ', domainName, 'Stage Name: ', stageName, 'Query Strings: ', qs ) return {"statusCode" : 200} };
Python
import json import logging logger = logging.getLogger() logger.setLevel("INFO") def lambda_handler(event, context): connectId = event["requestContext"]["connectionId"] domainName = event["requestContext"]["domainName"] stageName = event["requestContext"]["stage"] qs = event['queryStringParameters'] connectionInfo = { 'Connection ID': connectId, 'Domain Name': domainName, 'Stage Name': stageName, 'Query Strings': qs} logging.info(connectionInfo) return {"statusCode": 200}
export const handler = async(event, context) => { const connectId = event["requestContext"]["connectionId"] const domainName = event["requestContext"]["domainName"] const stageName = event["requestContext"]["stage"] const qs = event['queryStringParameters'] console.log('Connection ID: ', connectId, 'Domain Name: ', domainName, 'Stage Name: ', stageName, 'Query Strings: ', qs ) return {"statusCode" : 200} };

비프록시 통합을 사용하여 연결 정보 전달

  • 비프록시 통합으로 연결 정보에 액세스할 수 있습니다. 통합 요청을 설정하고 WebSocket API 요청 템플릿을 제공합니다. 다음 Velocity Template Language(VTL) 매핑 템플릿은 통합 요청을 제공합니다. 이 요청은 다음 세부 정보를 비프록시 통합에 전송합니다.

    • 연결 ID

    • 도메인 이름

    • 단계 이름

    • 경로

    • 헤더

    • 쿼리 문자열

    이 요청은 연결 ID, 도메인 이름, 단계 이름, 경로, 헤더 및 쿼리 문자열을 비프록시 통합으로 보냅니다.

    { "connectionId": "$context.connectionId", "domain": "$context.domainName", "stage": "$context.stage", "params": "$input.params()" }

    데이터 변환 설정에 대한 자세한 내용은 API Gateway에서 WebSocket API의 데이터 변환 섹션을 참조하세요.

    통합 요청을 완료하려면 통합 응답에 StatusCode: 200을 설정합니다. 통합 응답 설정에 대한 자세한 내용은 API Gateway 콘솔을 사용하여 통합 응답 설정 섹션을 참조하세요.

$disconnect 라우팅

연결이 종료된 후 $disconnect 라우팅이 실행됩니다.

서버 또는 클라이언트에 의해 연결이 종료될 수 있습니다. 실행될 때 연결이 이미 종결되었기 때문에, $disconnect가 최선의 이벤트입니다. API Gateway는 통합에 $disconnect 이벤트를 전달하기 위해 최선을 다하지만 전달을 보장할 수는 없습니다.

백엔드는 @connections API를 사용하여 연결 해제를 시작할 수 있습니다. 자세한 내용은 백엔드 서비스에서 @connections 명령 사용 단원을 참조하십시오.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.