WebSocket API 對應範本參考 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

WebSocket API 對應範本參考

本節總結了 API Gateway 中目前支援 WebSocket API 的一組變數。

參數 描述
$context.connectionId

連線的唯一 ID,可用來回呼用戶端。

$context.connectedAt

Epoch 格式化連線時間。

$context.domainName

WebSocket API 的網域名稱。此可用於回呼用戶端 (非硬式編碼的值)。

$context.eventType

事件類型:CONNECTMESSAGEDISCONNECT

$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

提出請求之發起人的委託人識別符。

$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 身分驗證提供者的相關資訊,請參閱 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

提出請求之使用者的委託人識別符。

$context.identity.userAgent

API 發起人的使用者代理程式。

$context.identity.userArn

身分驗證之後識別之有效使用者的 Amazon Resource Name (ARN)。

$context.requestTime CLF 格式化請求時間 (dd/MMM/yyyy:HH:mm:ss +-hhmm)。
$context.requestTimeEpoch Epoch 格式化的要求時間,以毫秒為單位。
$context.stage

API 呼叫的部署階段 (例如,Beta 或 Prod)。

$context.status

回應狀態。

$input.body

傳回原始承載作為字串。

$input.json(x)

此函數會評估 JSONPath 表達式,並傳回結果作為 JSON 字串。

例如,$input.json('$.pets') 會傳回代表 pets 結構的 JSON 字串。

如需 JSONPath 的詳細資訊,請參閱 JSONPath適用於 Java 的 JSONPath

$input.path(x)

採用 JSONPath 表達式字串 (x),並傳回結果的 JSON 物件呈現。這可讓您存取和運用 Apache Velocity 範本語言 (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 Velocity 範本語言 (VTL) 中原生承載的元素。例如,如果您有下列承載:

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

並使用下列映射範本

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

您將會收到下列輸出:

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

將字符串轉換為「應用程序/x-www-form-urlencoded」格式。

$util.urlDecode()

解碼「應用程序/x-www-form-urlencoded」字符串。

$util.base64Encode()

將資料編碼為 base64 編碼字串。

$util.base64Decode()

解碼 base64 編碼字串中的資料。