

# API Gateway용 WebSocket API 매핑 템플릿 참조
<a name="apigateway-websocket-api-mapping-template-reference"></a>

이 섹션에서는 현재 API Gateway에서 WebSocket API에 대해 지원되는 변수 집합을 요약합니다.


| 파라미터 | 설명 | 
| --- | --- | 
| $context.connectionId | 클라이언트에 대한 콜백을 만드는 데 사용할 수 있는 고유한 연결 ID입니다. | 
| $context.connectedAt | [Epoch](https://en.wikipedia.org/wiki/Unix_time) 형식 연결 시간입니다. | 
| $context.domainName | WebSocket API의 도메인 이름입니다. 하드 코딩된 값 대신 클라이언트에 콜백하는 데 사용할 수 있습니다. | 
| $context.eventType | 이벤트 유형: `CONNECT`, `MESSAGE` 또는 `DISCONNECT`. | 
| $context.messageId | 메시지의 고유 서버 측 ID. `$context.eventType`이 `MESSAGE`인 경우에만 사용 가능합니다. | 
| $context.routeKey | 선택한 라우팅 키. | 
| $context.requestId | `$context.extendedRequestId`와 동일합니다. | 
| $context.extendedRequestId | API 호출에 대해 자동으로 생성된 ID로 디버깅/문제 해결에 유용한 정보가 포함합니다. | 
| $context.apiId | 식별자 API Gateway가 API에 할당합니다. | 
| $context.authorizer.principalId | 클라이언트가 전송한 토큰과 연결되고 API Gateway Lambda 권한 부여자(이전에는 사용자 지정 권한 부여자라고 함) Lambda 함수에서 반환한 보안 주체 사용자 식별입니다. | 
| $context.authorizer.{{property}} | API Gateway Lambda 권한 부여자 함수에서 반환된 `context` 맵의 지정된 키-값 페어의 문자열화된 값입니다. 예를 들어, 권한 부여자는 다음 `context` 맵을 반환합니다.<pre>"context" : {<br />  "key": "value",<br />  "numKey": 1,<br />  "boolKey": true<br />}</pre><br />`$context.authorizer.key`를 호출하면 `"value"` 문자열이 반환되고, `$context.authorizer.numKey`를 호출하면 `"1"` 문자열이 반환되고, `$context.authorizer.boolKey`를 호출하면 `"true"` 문자열이 반환됩니다. | 
| $context.error.messageString | $context.error.message의 따옴표 붙은 값, 즉 "$context.error.message"입니다. | 
| $context.error.validationErrorString | 세부적인 검증 오류 메시지를 포함하는 문자열입니다. | 
| $context.identity.accountId | 요청과 연결된 AWS 계정 ID입니다. | 
| $context.identity.apiKey | 키가 활성화된 API 요청에 연결된 API 소유자 키입니다. | 
| $context.identity.apiKeyId | 키가 활성화된 API 요청에 연결된 API 키 ID입니다. | 
| $context.identity.caller | 요청을 작성한 호출자의 보안 주체 ID입니다. | 
| $context.identity.cognitoAuthenticationProvider | 요청을 작성한 직접 호출자가 사용한 모든 Amazon Cognito 인증 공급자의 쉼표로 구분된 목록입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다.<br />예를 들어, Amazon Cognito 사용자 풀의 자격 증명의 경우 `cognito-idp. {{region}}.amazonaws.com/{{user_pool_id}},cognito-idp.{{region}}.amazonaws.com/{{user_pool_id}}:CognitoSignIn:{{token subject claim}}`<br />사용 가능한 Amazon Cognito 인증 공급자에 대한 자세한 내용은 Amazon Cognito 개발자 안내서**의 [페더레이션 자격 증명 사용](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)을 참조하세요. | 
| $context.identity.cognitoAuthenticationType | 요청을 작성한 호출자의 Amazon Cognito 인증 유형입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다. 가능한 값에는 인증 자격 증명에 대한 `authenticated` 및 미인증 자격 증명에 대한 `unauthenticated`이(가) 포함됩니다. | 
| $context.identity.cognitoIdentityId | 요청을 작성한 호출자의 Amazon Cognito 자격 증명 ID입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다. | 
| $context.identity.cognitoIdentityPoolId | 요청을 작성한 호출자의 Amazon Cognito 자격 증명 풀 ID입니다. Amazon Cognito 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다. | 
| $context.identity.sourceIp | API Gateway 엔드포인트를 요청하는 즉시 TCP 연결의 소스 IP 주소입니다. | 
| $context.identity.user | 요청을 작성한 사용자의 보안 주체 ID입니다. | 
| $context.identity.userAgent | API 호출자의 사용자 에이전트입니다. | 
| $context.identity.userArn | 인증 후 식별된 실제 사용자의 ARN(Amazon Resource Name)입니다. | 
| $context.requestTime | [CLF](https://httpd.apache.org/docs/current/logs.html#common) 형식 요청 시간(dd/MMM/yyyy:HH:mm:ss \+-hhmm)입니다. | 
| $context.requestTimeEpoch | [Epoch](https://en.wikipedia.org/wiki/Unix_time) 형식 요청 시간(밀리초)입니다. | 
| $context.stage | API 호출의 개발 단계입니다(예: 베타 또는 프로덕션). | 
| $context.status | 응답 상태입니다. | 
| $input.body | 원시 페이로드를 문자열로 반환합니다. | 
| $input.json(x) | 이 함수는 JSONPath 표현식을 평가하고 결과를 JSON 문자열로 반환합니다.<br />예를 들어, `$input.json('$.pets')`은 반려 동물 구조를 나타내는 JSON 문자열을 반환합니다.<br />JSONPath에 대한 자세한 내용은 [JSONPath](https://goessner.net/articles/JsonPath/) 또는 [Java용 JSONPath](https://github.com/json-path/JsonPath)를 참조하십시오. | 
| $input.path(x) | JSONPath 표현식 문자열 (`x`)을 가져와서 결과의 JSON 객체로 반환합니다. 이를 통해 기본적으로 [Apache Velocity Template Language(VTL)](https://velocity.apache.org/engine/devel/vtl-reference.html)에서 페이로드 요소에 액세스하고 조작할 수 있습니다.<br />예를 들어, `$input.path('$.pets')` 표현식이 다음과 같은 객체를 반환할 경우:<pre>[<br />  { <br />    "id": 1, <br />    "type": "dog", <br />    "price": 249.99 <br />  }, <br />  { <br />    "id": 2, <br />    "type": "cat", <br />    "price": 124.99 <br />  }, <br />  { <br />    "id": 3, <br />    "type": "fish", <br />    "price": 0.99 <br />  } <br />]</pre><br />`$input.path('$.pets').count()`는 을 반환합니다.`"3"`<br />JSONPath에 대한 자세한 내용은 [JSONPath](http://goessner.net/articles/JsonPath/) 또는 [Java용 JSONPath](https://github.com/jayway/JsonPath)를 참조하십시오. | 
| $stageVariables.{{<variable\_name>}} | {{<variable\_name>}}은 단계 변수 이름을 나타냅니다. | 
| $stageVariables['{{<variable\_name>}}'] | {{<variable\_name>}}은 모든 단계 변수 이름을 나타냅니다. | 
| ${stageVariables['{{<variable\_name>}}']} | {{<variable\_name>}}은 모든 단계 변수 이름을 나타냅니다. | 
| $util.escapeJavaScript() | JavaScript 문자열 규칙을 사용하여 문자열의 문자를 이스케이프합니다. 이 함수는 일반 작은따옴표(`'`)를 이스케이프된 작은따옴표(`\'`)로 변환합니다. 그러나 이스케이프된 작은따옴표는 JSON에서 유효하지 않습니다. 따라서 이 함수의 결과를 JSON 속성에서 사용할 경우 이스케이프된 작은따옴표(`\'`)를 다시 일반 작은따옴표(`'`)로 변환해야 합니다. 방법은 다음 예제와 같습니다:  <pre> $util.escapeJavaScript({{data}}).replaceAll("\\'","'")</pre>  | 
| $util.parseJson() |  "문자열화된" JSON을 가져와서 결과의 객체 표현을 반환합니다. 이 함수의 결과를 사용하여 기본적으로 Apache VTL(Velocity Template Language)에서 페이로드 요소에 액세스하고 조작할 수 있습니다. 예를 들어 다음과 같은 페이로드가 있고 <pre>{"errorMessage":"{\"key1\":\"var1\",\"key2\":{\"arr\":[1,2,3]}}"}</pre><br /> 다음 매핑 템플릿을 사용하는 경우 <pre>#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage')))<br />{<br />   "errorMessageObjKey2ArrVal" : $errorMessageObj.key2.arr[0]<br />}<br /></pre><br />출력은 다음과 같습니다.<pre>{<br />   "errorMessageObjKey2ArrVal" : 1<br />}<br /></pre> | 
| $util.urlEncode() | 문자열을 "application/x-www-form-urlencoded" 형식으로 변환합니다. | 
| $util.urlDecode() | "application/x-www-form-urlencoded" 문자열을 디코딩합니다. | 
| $util.base64Encode() | 데이터를 base64 인코딩 문자열로 인코딩합니다. | 
| $util.base64Decode() | 데이터를 base64 인코딩 문자열에서 디코딩합니다. | 