

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

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


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