API Gateway WebSocket API 매핑 템플릿 참조 - Amazon API Gateway

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

API Gateway WebSocket API 매핑 템플릿 참조

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

파라미터 설명
$context.connectionId

클라이언트에 대한 콜백을 만드는 데 사용할 수 있는 고유한 연결 ID입니다.

$context.connectedAt

Epoch 형식 연결 시간입니다.

$context.domainName

WebSocket API의 도메인 이름입니다. 하드 코딩된 값 대신 클라이언트에 콜백하는 데 사용할 수 있습니다.

$context.eventType

이벤트 유형: CONNECT, MESSAGE 또는 DISCONNECT.

$context.messageId

메시지의 고유 서버 측 ID. $context.eventTypeMESSAGE인 경우에만 사용 가능합니다.

$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 맵을 반환합니다.

"context" : { "key": "value", "numKey": 1, "boolKey": true }

$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 자격 증명으로 요청을 서명한 경우에만 사용할 수 있습니다.

예를 들어, Amazon Cognito 사용자 풀의 자격 증명의 경우 cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim

자세한 내용은 Amazon Cognito 개발자 안내서연동 자격 증명 사용을 참조하세요.

$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 형식 요청 시간(dd/MMM/yyyy:HH:mm:ss +-hhmm)입니다.
$context.requestTimeEpoch Epoch 형식 요청 시간(밀리초)입니다.
$context.stage

API 호출의 개발 단계입니다(예: 베타 또는 프로덕션).

$context.status

응답 상태입니다.

$input.body

원시 페이로드를 문자열로 반환합니다.

$input.json(x)

이 함수는 JSONPath 표현식을 평가하고 결과를 JSON 문자열로 반환합니다.

예를 들어, $input.json('$.pets')은 반려 동물 구조를 나타내는 JSON 문자열을 반환합니다.

JSONPath에 대한 자세한 내용은 JSONPath 또는 Java용 JSONPath를 참조하십시오.

$input.path(x)

JSONPath 표현식 문자열 (x)을 가져와서 결과의 JSON 객체로 반환합니다. 이를 통해 기본적으로 Apache Velocity Template Language(VTL)에서 페이로드 요소에 액세스하고 조작할 수 있습니다.

예를 들어, $input.path('$.pets') 표현식이 다음과 같은 객체를 반환할 경우:

[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]

$input.path('$.pets').count()는 을 반환합니다."3"

JSONPath에 대한 자세한 내용은 JSONPath 또는 Java용 JSONPath를 참조하십시오.

$stageVariables.<variable_name>

<variable_name>은 단계 변수 이름을 나타냅니다.

$stageVariables['<variable_name>']

<variable_name>은 모든 단계 변수 이름을 나타냅니다.

${stageVariables['<variable_name>']}

<variable_name>은 모든 단계 변수 이름을 나타냅니다.

$util.escapeJavaScript()

JavaScript 문자열 규칙을 사용하여 문자열의 문자를 이스케이프합니다.

참고

이 함수는 일반 작은따옴표(')를 이스케이프된 작은따옴표(\')로 변환합니다. 그러나 이스케이프된 작은따옴표는 JSON에서 유효하지 않습니다. 따라서 이 함수의 결과를 JSON 속성에서 사용할 경우 이스케이프된 작은따옴표(\')를 다시 일반 작은따옴표(')로 변환해야 합니다. 방법은 다음 예제와 같습니다:

$util.escapeJavaScript(data).replaceAll("\\'","'")
$util.parseJson()

"문자열화된" JSON을 가져와서 결과의 객체 표현을 반환합니다. 이 함수의 결과를 사용하여 기본적으로 Apache VTL(Velocity Template Language)에서 페이로드 요소에 액세스하고 조작할 수 있습니다. 예를 들어 다음과 같은 페이로드가 있고

{"errorMessage":"{\"key1\":\"var1\",\"key2\":{\"arr\":[1,2,3]}}"}

다음 매핑 템플릿을 사용하는 경우

#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage'))) { "errorMessageObjKey2ArrVal" : $errorMessageObj.key2.arr[0] }

출력은 다음과 같습니다.

{ "errorMessageObjKey2ArrVal" : 1 }
$util.urlEncode()

문자열을 "application/x-www-form-urlencoded" 형식으로 변환합니다.

$util.urlDecode()

"application/x-www-form-urlencoded" 문자열을 디코딩합니다.

$util.base64Encode()

데이터를 base64 인코딩 문자열로 인코딩합니다.

$util.base64Decode()

데이터를 base64 인코딩 문자열에서 디코딩합니다.