API Gateway で WebSocket API のデータマッピングを設定する
データマッピングを使用すると、ルートリクエストからバックエンド統合にデータをマッピングできます。
注記
WebSocket API のデータマッピングは、 ではサポートされていませんAWS Management Console データマッピングを設定するには、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 CloudFormation テンプレートの例については、「websocket-data-mapping.yaml
」を参照してください。
クライアントの connectionId を統合リクエストのヘッダーにマッピングする
以下の例のコマンドは、クライアントの connectionId
をバックエンド統合へのリクエストの connectionId
ヘッダーにマッピングします。
aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.connectionId'='context.connectionId'
クエリ文字列パラメータを統合リクエストのヘッダーにマッピングする
以下の例のコマンドは、authToken
クエリ文字列パラメータを統合リクエストの authToken
ヘッダーにマッピングします。
まず、authToken
クエリ文字列パラメータをルートのリクエストパラメータに追加します。
aws apigatewayv2 update-route --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameters '{"route.request.querystring.authToken": {"Required": false}}'
次に、クエリ文字列パラメータを、バックエンド統合へのリクエストの authToken
ヘッダーにマッピングします。
aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.authToken'='route.request.querystring.authToken'
必要に応じて、ルートのリクエストパラメータから authToken
クエリ文字列パラメータを削除します。
aws apigatewayv2 delete-route-request-parameter \ --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameter-key 'route.request.querystring.authToken'