API Gateway で WebSocket API のデータマッピングを設定する
データマッピングを使用すると、ルートリクエストからバックエンド統合にデータをマッピングできます。
注記
WebSocket API のデータマッピングは、 ではサポートされていませんAWS マネジメントコンソール データマッピングを設定するには、AWS CLI、AWS CloudFormation、または SDK を使用する必要があります。
ルートリクエストデータを統合リクエストパラメータにマッピングする
統合リクエストパラメータは、定義されたルートリクエストパラメータ、リクエストボディ、context または stage 変数、静的値からマッピングできます。
次の表は、統合リクエストのデータマッピング式を示しています。表で、 は、特定のパラメータ型のルートリクエストパラメータの名前です。正規表現パターン PARAM_NAME'^[a-zA-Z0-9._$-]+$]' に一致する必要があります。JSONPath_EXPRESSION はリクエストボディの JSON フィールドの JSONPath 式です。
| マッピングされたデータソース | マッピング式 |
|---|---|
リクエストクエリ文字列 ($connect ルートでのみサポート) |
route.request.querystring. |
リクエストヘッダー ($connect ルートでのみサポート) |
route.request.header. |
複数値のリクエストクエリ文字列 ($connect ルートでのみサポート) |
route.request.multivaluequerystring. |
複数値のリクエストヘッダー ($connect ルートでのみサポート) |
route.request.multivalueheader. |
| リクエストボディ | route.request.body. |
| ステージ変数 | stageVariables. |
| コンテキスト変数 | サポートされるコンテキスト変数の 1 つである必要がある context.。 |
| 静的な値 | 。STATIC_VALUE はリテラル文字列であり、単一引用符で囲む必要があります。 |
データマッピングを作成するときは、AWS CLI を使用して、AWS CLI の文字列でリテラルを使用するための正しい形式に従ってください。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI で文字列に引用符とリテラルを使用する」を参照してください。
例
以下の AWS CLI の例では、データマッピングを設定しています。CloudFormation テンプレートの例については、「websocket-data-mapping.yaml」を参照してください。
クライアントの connectionId を統合リクエストのヘッダーにマッピングする
次の update-integration コマンドは、クライアントの connectionId をバックエンド統合へのリクエストの connectionId ヘッダーにマッピングします。
aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.connectionId'='context.connectionId'
クエリ文字列パラメータを統合リクエストのヘッダーにマッピングする
次の例では、authToken クエリ文字列パラメータを統合リクエストの authToken ヘッダーにマッピングします。
-
次の update-route コマンドを使用して、
authTokenクエリ文字列パラメータをルートのリクエストパラメータに追加します。aws apigatewayv2 update-route --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameters '{"route.request.querystring.authToken": {"Required": false}}' -
次の update-integration コマンドを使用して、クエリ文字列パラメータをバックエンド統合へのリクエストの
authTokenヘッダーにマッピングします。aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.authToken'='route.request.querystring.authToken' -
(オプション) 必要に応じて、次の delete-route-request-parameter を使用して、ルートのリクエストパラメータから
authTokenクエリ文字列パラメータを削除します。aws apigatewayv2 delete-route-request-parameter \ --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameter-key 'route.request.querystring.authToken'