연결된 사용자 및 클라이언트 앱 관리: $connect
및 $disconnect
라우팅
다음 섹션에서는 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, 도메인 이름, 단계 이름 및 쿼리 문자열을 기록하는 방법을 보여줍니다.
비프록시 통합을 사용하여 연결 정보 전달
-
비프록시 통합으로 연결 정보에 액세스할 수 있습니다. 통합 요청을 설정하고 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 명령 사용 단원을 참조하십시오.