

# API Gateway の WebSocket API マッピングテンプレートのリファレンス
<a name="apigateway-websocket-api-mapping-template-reference"></a>

このセクションでは、API Gateway の WebSocket API で現在サポートされている一連の変数の概要を示します。


| パラメータ | 説明 | 
| --- | --- | 
| $context.connectionId | クライアントへのコールバックを行うために使用できる接続の一意の ID。 | 
| $context.connectedAt | [エポック](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 関数から返されたトークンと関連付けられたプリンシパルユーザー ID。 | 
| $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 開発者ガイド」の「[フェデレーティッド ID の使用](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 プール ID。リクエストが Amazon Cognito 認証情報で署名されている場合にのみ使用できます。 | 
| $context.identity.sourceIp | API Gateway エンドポイントへのリクエストを実行する即時 TCP 接続のソース IP アドレス。 | 
| $context.identity.user | リクエストを実行しているユーザーのプリンシパル ID です。 | 
| $context.identity.userAgent | API 発信者のユーザーエージェントです。 | 
| $context.identity.userArn | 認証後に識別された有効ユーザーの Amazon リソースネーム (ARN) です。 | 
| $context.requestTime | [CLF](https://httpd.apache.org/docs/current/logs.html#common) 形式の要求時間 (dd/MMM/yyyy:HH:mm:ss \+-hhmm)。 | 
| $context.requestTimeEpoch | [エポック](https://en.wikipedia.org/wiki/Unix_time)形式のリクエスト時間 (ミリ秒単位)。 | 
| $context.stage | API コールの開発ステージ (Beta、Prod など)。 | 
| $context.status | レスポンスステータス。 | 
| $input.body | 文字列として raw ペイロードを返します。 | 
| $input.json(x) | この関数は、JSONPath の式を評価し、結果を JSON 文字列で返します。<br />たとえば `$input.json('$.pets')` は、ペットの構造を表す JSON 文字列を返します。<br />JSONPath の詳細については、[JSONPath](https://goessner.net/articles/JsonPath/) または [JSONPath for Java](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/) または [JSONPath for Java](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() |  "stringified" JSON を受け取り、結果のオブジェクト表現を返します。この関数の結果を使用して、Apache Velocity Template Language (VTL) でペイロード要素にネイティブにアクセスしてこれらの要素を操作できるようになります。たとえば、次のペイロードがあるとします。<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 エンコードされた文字列からデータをデコードします。 | 